mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix Native Rotation Android (#18872)
Summary: Fixes #14161 Android crashes in some cases if an animated transform config contains a string value, like a rotation. This PR fixes that by ensuring all values sent to the native side are doubles. It adds `__transformDataType` to AnimatedTransform.js. Added integration test `ReactAndroid/src/androidText/js/AnimatedTransformTestModule.js` This test fails with the following error `INSTRUMENTATION_RESULT: longMsg=java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double`, if the changes to AnimatedTransform.js are reverted. [Android] [Fixed] - Fixes Android crash on animated style with string rotation Pull Request resolved: https://github.com/facebook/react-native/pull/18872 Differential Revision: D13894676 Pulled By: cpojer fbshipit-source-id: 297e8132563460802e53f3ac551c3ba9ed943736
This commit is contained in:
committed by
Facebook Github Bot
parent
02697291ff
commit
e405e84fc3
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.facebook.react.tests;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
|
||||
import com.facebook.react.testing.ReactInstanceSpecForTest;
|
||||
import com.facebook.react.testing.StringRecordingModule;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.testing.ReactAppInstrumentationTestCase;
|
||||
import com.facebook.react.testing.ReactTestHelper;
|
||||
|
||||
/**
|
||||
* Integration test for {@code removeClippedSubviews} property that verify correct scrollview
|
||||
* behavior
|
||||
*/
|
||||
public class AnimatedTransformTest extends ReactAppInstrumentationTestCase {
|
||||
|
||||
private StringRecordingModule mStringRecordingModule;
|
||||
|
||||
@Override
|
||||
protected String getReactApplicationKeyUnderTest() {
|
||||
return "AnimatedTransformTestApp";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReactInstanceSpecForTest createReactInstanceSpecForTest() {
|
||||
mStringRecordingModule = new StringRecordingModule();
|
||||
return super.createReactInstanceSpecForTest()
|
||||
.addNativeModule(mStringRecordingModule);
|
||||
}
|
||||
|
||||
public void testAnimatedRotation() {
|
||||
waitForBridgeAndUIIdle();
|
||||
|
||||
View button = ReactTestHelper.getViewWithReactTestId(
|
||||
getActivity().getRootView(),
|
||||
"TouchableOpacity");
|
||||
|
||||
// Tap the button which triggers the animated transform containing the
|
||||
// rotation strings.
|
||||
createGestureGenerator().startGesture(button).endGesture();
|
||||
waitForBridgeAndUIIdle();
|
||||
|
||||
// The previous cast error will prevent it from getting here
|
||||
assertEquals(2, mStringRecordingModule.getCalls().size());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user