Prevent a crash when no cursor drawable is set

Summary:
React Native 0.43 added additional functionality to setSelectionColor that also tints the cursor drawable of the View. However, some views may not have a cursor drawable set in which case, the code will crash when attempting to load a drawable with resource id 0.

We encountered this in our RN 0.45 upgrade in the Airbnb app.

lelandrichardson
Closes https://github.com/facebook/react-native/pull/14789

Differential Revision: D6386076

Pulled By: shergin

fbshipit-source-id: faa5a1edb3be8d08988f46205c0f22d17b63b5bc
This commit is contained in:
Gabriel Peal 2017-11-21 10:31:44 -08:00 committed by Facebook Github Bot
parent d7ab9496bc
commit 1e18d907bf
1 changed files with 5 additions and 0 deletions

View File

@ -332,6 +332,11 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
cursorDrawableResField.setAccessible(true);
int drawableResId = cursorDrawableResField.getInt(view);
// The view has no cursor drawable.
if (drawableResId == 0) {
return;
}
Drawable drawable = ContextCompat.getDrawable(view.getContext(), drawableResId);
if (color != null) {
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);