Work around crash when default colors are null

Summary:
Work around crash in Android TextInput when default colors are null.

This likely indicates that the Context is corrupted in some way, so this is not a permanent solution.

Changelog: [Internal] Raise soft exception is default platform text color isn't defined

Reviewed By: mdvacca

Differential Revision: D20351080

fbshipit-source-id: d912c9348272c2f3a3b8d571d465d482060efe5a
This commit is contained in:
Joshua Gross 2020-03-09 20:41:50 -07:00 коммит произвёл Facebook Github Bot
Родитель 08c338eebf
Коммит 3cc69d2e2b
1 изменённых файлов: 16 добавлений и 1 удалений

Просмотреть файл

@ -9,6 +9,8 @@ package com.facebook.react.views.textinput;
import static com.facebook.react.uimanager.UIManagerHelper.getReactContext;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Build;
@ -35,6 +37,7 @@ import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.react.bridge.JavaOnlyArray;
import com.facebook.react.bridge.JavaOnlyMap;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactSoftException;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableNativeMap;
@ -496,7 +499,19 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
@ReactProp(name = ViewProps.COLOR, customType = "Color")
public void setColor(ReactEditText view, @Nullable Integer color) {
if (color == null) {
view.setTextColor(DefaultStyleValuesUtil.getDefaultTextColor(view.getContext()));
ColorStateList defaultContextTextColor =
DefaultStyleValuesUtil.getDefaultTextColor(view.getContext());
if (defaultContextTextColor != null) {
view.setTextColor(defaultContextTextColor);
} else {
Context c = view.getContext();
ReactSoftException.logSoftException(
TAG,
new IllegalStateException(
"Could not get default text color from View Context: "
+ (c != null ? c.getClass().getCanonicalName() : "null")));
}
} else {
view.setTextColor(color);
}