Update the timestamp we send in touch events to be the more accurate timestamp we use
Summary: Use the more accurate timestamp that we have computed for the touch event rather than the event timestamp that Android provides. Reviewed By: andreicoman11 Differential Revision: D3292705 fbshipit-source-id: dad082ab74406d391481d16cdac19629751aa1eb
This commit is contained in:
Родитель
2525feb37f
Коммит
f2c1868b56
|
@ -62,7 +62,7 @@ import com.facebook.react.uimanager.PixelUtil;
|
||||||
touch.putDouble(LOCATION_X_KEY, PixelUtil.toDIPFromPixel(locationX));
|
touch.putDouble(LOCATION_X_KEY, PixelUtil.toDIPFromPixel(locationX));
|
||||||
touch.putDouble(LOCATION_Y_KEY, PixelUtil.toDIPFromPixel(locationY));
|
touch.putDouble(LOCATION_Y_KEY, PixelUtil.toDIPFromPixel(locationY));
|
||||||
touch.putInt(TARGET_KEY, reactTarget);
|
touch.putInt(TARGET_KEY, reactTarget);
|
||||||
touch.putDouble(TIMESTAMP_KEY, motionEvent.getEventTime());
|
touch.putDouble(TIMESTAMP_KEY, event.getTimestampMs());
|
||||||
touch.putDouble(POINTER_IDENTIFIER_KEY, motionEvent.getPointerId(index));
|
touch.putDouble(POINTER_IDENTIFIER_KEY, motionEvent.getPointerId(index));
|
||||||
touches.pushMap(touch);
|
touches.pushMap(touch);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import com.facebook.react.bridge.ReactTestHelper;
|
||||||
import com.facebook.react.bridge.JavaOnlyArray;
|
import com.facebook.react.bridge.JavaOnlyArray;
|
||||||
import com.facebook.react.bridge.JavaOnlyMap;
|
import com.facebook.react.bridge.JavaOnlyMap;
|
||||||
import com.facebook.react.bridge.WritableArray;
|
import com.facebook.react.bridge.WritableArray;
|
||||||
|
import com.facebook.react.common.SystemClock;
|
||||||
import com.facebook.react.uimanager.UIManagerModule;
|
import com.facebook.react.uimanager.UIManagerModule;
|
||||||
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
||||||
import com.facebook.react.uimanager.events.Event;
|
import com.facebook.react.uimanager.events.Event;
|
||||||
|
@ -51,7 +52,7 @@ import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@PrepareForTest(Arguments.class)
|
@PrepareForTest({Arguments.class, SystemClock.class})
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*"})
|
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*"})
|
||||||
public class RootViewTest {
|
public class RootViewTest {
|
||||||
|
@ -64,6 +65,7 @@ public class RootViewTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
final long ts = SystemClock.nanoTime();
|
||||||
PowerMockito.mockStatic(Arguments.class);
|
PowerMockito.mockStatic(Arguments.class);
|
||||||
PowerMockito.when(Arguments.createArray()).thenAnswer(new Answer<Object>() {
|
PowerMockito.when(Arguments.createArray()).thenAnswer(new Answer<Object>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -77,6 +79,13 @@ public class RootViewTest {
|
||||||
return new JavaOnlyMap();
|
return new JavaOnlyMap();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
PowerMockito.mockStatic(SystemClock.class);
|
||||||
|
PowerMockito.when(SystemClock.nanoTime()).thenAnswer(new Answer<Object>() {
|
||||||
|
@Override
|
||||||
|
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
return ts;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
mCatalystInstanceMock = ReactTestHelper.createMockCatalystInstance();
|
mCatalystInstanceMock = ReactTestHelper.createMockCatalystInstance();
|
||||||
mReactContext = new ReactApplicationContext(RuntimeEnvironment.application);
|
mReactContext = new ReactApplicationContext(RuntimeEnvironment.application);
|
||||||
|
@ -107,7 +116,7 @@ public class RootViewTest {
|
||||||
rootView.startReactApplication(instanceManager, "");
|
rootView.startReactApplication(instanceManager, "");
|
||||||
rootView.simulateAttachForTesting();
|
rootView.simulateAttachForTesting();
|
||||||
|
|
||||||
long ts = new Date().getTime();
|
long ts = SystemClock.nanoTime();
|
||||||
|
|
||||||
// Test ACTION_DOWN event
|
// Test ACTION_DOWN event
|
||||||
rootView.onTouchEvent(
|
rootView.onTouchEvent(
|
||||||
|
|
Загрузка…
Ссылка в новой задаче