From 6bc483c8cc115606fac721bd0332ae66f0b3136e Mon Sep 17 00:00:00 2001 From: Jyrno Ader Date: Fri, 7 Sep 2018 14:12:30 -0700 Subject: [PATCH] Fix crash on overlayColor usage (#20929) Summary: see snack for demo on the issue: https://snack.expo.io/jyrno42/overlaycolor-issue-snack Pull Request resolved: https://github.com/facebook/react-native/pull/20929 Differential Revision: D9727250 Pulled By: hramos fbshipit-source-id: 03c95d4b5a38ae51ecebb8615fda1af9599c0508 --- .../tests/ImageOverlayColorTestCase.java | 27 +++++++++++++++++ .../js/ImageOverlayColorTestApp.js | 29 +++++++++++++++++++ ReactAndroid/src/androidTest/js/TestBundle.js | 4 +++ .../react/views/image/ReactImageManager.java | 2 +- 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 ReactAndroid/src/androidTest/java/com/facebook/react/tests/ImageOverlayColorTestCase.java create mode 100644 ReactAndroid/src/androidTest/js/ImageOverlayColorTestApp.js diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ImageOverlayColorTestCase.java b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ImageOverlayColorTestCase.java new file mode 100644 index 00000000000..4dd334af88f --- /dev/null +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ImageOverlayColorTestCase.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.tests; + +import android.view.View; +import com.facebook.react.testing.ReactAppInstrumentationTestCase; + +/** + * Simple test case for passing overlayColor prop to the Image component + */ +public class ImageOverlayColorTestCase extends ReactAppInstrumentationTestCase { + + @Override + protected String getReactApplicationKeyUnderTest() { + return "ImageOverlayColorTestApp"; + } + + public void testOverlayColorDoesNotCrash() { + View image = getViewByTestId("image"); + assertNotNull(image); + } +} diff --git a/ReactAndroid/src/androidTest/js/ImageOverlayColorTestApp.js b/ReactAndroid/src/androidTest/js/ImageOverlayColorTestApp.js new file mode 100644 index 00000000000..0d0c9b5e818 --- /dev/null +++ b/ReactAndroid/src/androidTest/js/ImageOverlayColorTestApp.js @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +'use strict'; + +var React = require('React'); +var Image = require('Image'); + +class ImageOverlayColorTestApp extends React.Component { + render() { + const uri = + 'data:image/gif;base64,' + + 'R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapy' + + 'uvUUlvONmOZtfzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSpa/' + + 'TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJlZeGl9i2icVqaNVailT6F5' + + 'iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97V' + + 'riy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7'; + + return ; + } +} + +module.exports = ImageOverlayColorTestApp; diff --git a/ReactAndroid/src/androidTest/js/TestBundle.js b/ReactAndroid/src/androidTest/js/TestBundle.js index 59da7e6695b..7dd954bbf41 100644 --- a/ReactAndroid/src/androidTest/js/TestBundle.js +++ b/ReactAndroid/src/androidTest/js/TestBundle.js @@ -54,6 +54,10 @@ var apps = [ component: () => require('ScrollViewTestModule').HorizontalScrollViewTestApp, }, + { + appKey: 'ImageOverlayColorTestApp', + component: () => require('ImageOverlayColorTestApp'), + }, { appKey: 'InitialPropsTestApp', component: () => require('InitialPropsTestApp'), diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java index 2565e2294ef..439a61860f8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java @@ -109,7 +109,7 @@ public class ReactImageManager extends SimpleViewManager { } } - @ReactProp(name = "overlayColor") + @ReactProp(name = "overlayColor", customType = "Color") public void setOverlayColor(ReactImageView view, @Nullable Integer overlayColor) { if (overlayColor == null) { view.setOverlayColor(Color.TRANSPARENT);