Reverted commit D3528215
Summary: So `PanReponder.onPanResponderRelease/onPanResponderTerminate` receive a `gestureState` object containing a `onPanResponderTerminate.vx/vy` property. On Android and iOS, they appear to be orders of magnitude different, which appear to be due to the different scale of timestamps that are used when generating touch events. This pull request fixes the timestamps to be milliseconds on both platforms (since I assume iOS is the more authoritative one, and is the one that `react-native-viewpager`'s vx thresholds written written to compare against.) As far as I can tell, the RN code doesn't use the `vx/vy` properties, so they should be okay. And looks like the RN code only cares about relative values of `startTimestamp/currentTimestamp/previousTimestamp` though, so should be fine too. it's quite possible there will be downstream android breakage with this change, particularly for those who are already compensating for the RN discrepancy. Closes https://github.com/facebook/react-native/pull/8199 Differential Revision: D3528215 Pulled By: davidaurelio fbshipit-source-id: d81732e50a5ece2168e8347309d8d52a0db42951
This commit is contained in:
parent
97299260b6
commit
6779d13dcb
|
@ -116,7 +116,7 @@ public class TextInputTestCase extends ReactAppInstrumentationTestCase {
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextChangedEvent(
|
||||
reactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
newText.toString(),
|
||||
(int) PixelUtil.toDIPFromPixel(contentWidth),
|
||||
(int) PixelUtil.toDIPFromPixel(contentHeight),
|
||||
|
@ -125,7 +125,7 @@ public class TextInputTestCase extends ReactAppInstrumentationTestCase {
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputEvent(
|
||||
reactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
newText.toString(),
|
||||
"",
|
||||
start,
|
||||
|
@ -150,7 +150,7 @@ public class TextInputTestCase extends ReactAppInstrumentationTestCase {
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextChangedEvent(
|
||||
reactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
newText.toString(),
|
||||
(int) PixelUtil.toDIPFromPixel(contentWidth),
|
||||
(int) PixelUtil.toDIPFromPixel(contentHeight),
|
||||
|
@ -159,7 +159,7 @@ public class TextInputTestCase extends ReactAppInstrumentationTestCase {
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputEvent(
|
||||
reactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
moreText,
|
||||
"",
|
||||
start,
|
||||
|
@ -184,7 +184,7 @@ public class TextInputTestCase extends ReactAppInstrumentationTestCase {
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextChangedEvent(
|
||||
reactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
newText.toString(),
|
||||
(int) PixelUtil.toDIPFromPixel(contentWidth),
|
||||
(int) PixelUtil.toDIPFromPixel(contentHeight),
|
||||
|
@ -193,7 +193,7 @@ public class TextInputTestCase extends ReactAppInstrumentationTestCase {
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputEvent(
|
||||
reactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
moreText,
|
||||
"",
|
||||
start,
|
||||
|
|
|
@ -22,8 +22,4 @@ public class SystemClock {
|
|||
public static long nanoTime() {
|
||||
return System.nanoTime();
|
||||
}
|
||||
|
||||
public static long elapsedRealtime() {
|
||||
return android.os.SystemClock.elapsedRealtime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -244,7 +244,7 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
|
|||
return;
|
||||
}
|
||||
|
||||
long initialTargetTime = SystemClock.elapsedRealtime() + adjustedDuration;
|
||||
long initialTargetTime = SystemClock.nanoTime() / 1000000 + adjustedDuration;
|
||||
Timer timer = new Timer(executorToken, callbackID, initialTargetTime, duration, repeat);
|
||||
synchronized (mTimerGuard) {
|
||||
mTimers.add(timer);
|
||||
|
|
|
@ -82,7 +82,7 @@ public class JSTouchDispatcher {
|
|||
eventDispatcher.dispatchEvent(
|
||||
TouchEvent.obtain(
|
||||
mTargetTag,
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
TouchEventType.START,
|
||||
ev,
|
||||
mTargetCoordinates[0],
|
||||
|
@ -105,7 +105,7 @@ public class JSTouchDispatcher {
|
|||
eventDispatcher.dispatchEvent(
|
||||
TouchEvent.obtain(
|
||||
mTargetTag,
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
TouchEventType.END,
|
||||
ev,
|
||||
mTargetCoordinates[0],
|
||||
|
@ -117,7 +117,7 @@ public class JSTouchDispatcher {
|
|||
eventDispatcher.dispatchEvent(
|
||||
TouchEvent.obtain(
|
||||
mTargetTag,
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
TouchEventType.MOVE,
|
||||
ev,
|
||||
mTargetCoordinates[0],
|
||||
|
@ -128,7 +128,7 @@ public class JSTouchDispatcher {
|
|||
eventDispatcher.dispatchEvent(
|
||||
TouchEvent.obtain(
|
||||
mTargetTag,
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
TouchEventType.START,
|
||||
ev,
|
||||
mTargetCoordinates[0],
|
||||
|
@ -139,7 +139,7 @@ public class JSTouchDispatcher {
|
|||
eventDispatcher.dispatchEvent(
|
||||
TouchEvent.obtain(
|
||||
mTargetTag,
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
TouchEventType.END,
|
||||
ev,
|
||||
mTargetCoordinates[0],
|
||||
|
@ -180,7 +180,7 @@ public class JSTouchDispatcher {
|
|||
Assertions.assertNotNull(eventDispatcher).dispatchEvent(
|
||||
TouchEvent.obtain(
|
||||
mTargetTag,
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
TouchEventType.CANCEL,
|
||||
androidEvent,
|
||||
mTargetCoordinates[0],
|
||||
|
|
|
@ -45,7 +45,7 @@ public class OnLayoutEvent extends Event<OnLayoutEvent> {
|
|||
}
|
||||
|
||||
protected void init(int viewTag, int x, int y, int width, int height) {
|
||||
super.init(viewTag, SystemClock.elapsedRealtime());
|
||||
super.init(viewTag, SystemClock.nanoTime());
|
||||
mX = x;
|
||||
mY = y;
|
||||
mWidth = width;
|
||||
|
|
|
@ -188,25 +188,25 @@ public class ReactDrawerLayoutManager extends ViewGroupManager<ReactDrawerLayout
|
|||
@Override
|
||||
public void onDrawerSlide(View view, float v) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new DrawerSlideEvent(mDrawerLayout.getId(), SystemClock.elapsedRealtime(), v));
|
||||
new DrawerSlideEvent(mDrawerLayout.getId(), SystemClock.nanoTime(), v));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerOpened(View view) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new DrawerOpenedEvent(mDrawerLayout.getId(), SystemClock.elapsedRealtime()));
|
||||
new DrawerOpenedEvent(mDrawerLayout.getId(), SystemClock.nanoTime()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerClosed(View view) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new DrawerClosedEvent(mDrawerLayout.getId(), SystemClock.elapsedRealtime()));
|
||||
new DrawerClosedEvent(mDrawerLayout.getId(), SystemClock.nanoTime()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerStateChanged(int i) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new DrawerStateChangedEvent(mDrawerLayout.getId(), SystemClock.elapsedRealtime(), i));
|
||||
new DrawerStateChangedEvent(mDrawerLayout.getId(), SystemClock.nanoTime(), i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -192,7 +192,7 @@ public class ReactImageView extends GenericDraweeView {
|
|||
@Override
|
||||
public void onSubmit(String id, Object callerContext) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new ImageLoadEvent(getId(), SystemClock.elapsedRealtime(), ImageLoadEvent.ON_LOAD_START));
|
||||
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD_START));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -202,18 +202,18 @@ public class ReactImageView extends GenericDraweeView {
|
|||
@Nullable Animatable animatable) {
|
||||
if (imageInfo != null) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new ImageLoadEvent(getId(), SystemClock.elapsedRealtime(), ImageLoadEvent.ON_LOAD));
|
||||
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD));
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new ImageLoadEvent(getId(), SystemClock.elapsedRealtime(), ImageLoadEvent.ON_LOAD_END));
|
||||
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD_END));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(String id, Throwable throwable) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new ImageLoadEvent(getId(), SystemClock.elapsedRealtime(), ImageLoadEvent.ON_ERROR));
|
||||
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_ERROR));
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new ImageLoadEvent(getId(), SystemClock.elapsedRealtime(), ImageLoadEvent.ON_LOAD_END));
|
||||
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD_END));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -85,14 +85,14 @@ public class ReactModalHostManager extends ViewGroupManager<ReactModalHostView>
|
|||
new ReactModalHostView.OnRequestCloseListener() {
|
||||
@Override
|
||||
public void onRequestClose(DialogInterface dialog) {
|
||||
dispatcher.dispatchEvent(new RequestCloseEvent(view.getId(), SystemClock.elapsedRealtime()));
|
||||
dispatcher.dispatchEvent(new RequestCloseEvent(view.getId(), SystemClock.nanoTime()));
|
||||
}
|
||||
});
|
||||
view.setOnShowListener(
|
||||
new DialogInterface.OnShowListener() {
|
||||
@Override
|
||||
public void onShow(DialogInterface dialog) {
|
||||
dispatcher.dispatchEvent(new ShowEvent(view.getId(), SystemClock.elapsedRealtime()));
|
||||
dispatcher.dispatchEvent(new ShowEvent(view.getId(), SystemClock.nanoTime()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -157,7 +157,7 @@ public abstract class ReactPickerManager extends SimpleViewManager<ReactPicker>
|
|||
@Override
|
||||
public void onItemSelected(int position) {
|
||||
mEventDispatcher.dispatchEvent( new PickerItemSelectEvent(
|
||||
mReactPicker.getId(), SystemClock.elapsedRealtime(), position));
|
||||
mReactPicker.getId(), SystemClock.nanoTime(), position));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -344,7 +344,7 @@ public class RecyclerViewBackedScrollView extends RecyclerView {
|
|||
((ReactContext) getContext()).getNativeModule(UIManagerModule.class).getEventDispatcher()
|
||||
.dispatchEvent(ScrollEvent.obtain(
|
||||
getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
ScrollEventType.SCROLL,
|
||||
0, /* offsetX = 0, horizontal scrolling only */
|
||||
calculateAbsoluteOffset(),
|
||||
|
@ -359,7 +359,7 @@ public class RecyclerViewBackedScrollView extends RecyclerView {
|
|||
((ReactContext) getContext()).getNativeModule(UIManagerModule.class).getEventDispatcher()
|
||||
.dispatchEvent(new ContentSizeChangeEvent(
|
||||
getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
getWidth(),
|
||||
newTotalChildrenHeight));
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public class ReactScrollViewHelper {
|
|||
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
|
||||
ScrollEvent.obtain(
|
||||
scrollView.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
scrollEventType,
|
||||
scrollView.getScrollX(),
|
||||
scrollView.getScrollY(),
|
||||
|
|
|
@ -81,7 +81,7 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
|
|||
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
|
||||
new ReactSliderEvent(
|
||||
seekbar.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
((ReactSlider)seekbar).toRealProgress(progress),
|
||||
fromUser));
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
|
|||
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
|
||||
new ReactSlidingCompleteEvent(
|
||||
seekbar.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
((ReactSlider)seekbar).toRealProgress(seekbar.getProgress())));
|
||||
}
|
||||
};
|
||||
|
|
|
@ -89,7 +89,7 @@ public class SwipeRefreshLayoutManager extends ViewGroupManager<ReactSwipeRefres
|
|||
@Override
|
||||
public void onRefresh() {
|
||||
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher()
|
||||
.dispatchEvent(new RefreshEvent(view.getId(), SystemClock.elapsedRealtime()));
|
||||
.dispatchEvent(new RefreshEvent(view.getId(), SystemClock.nanoTime()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ public class ReactSwitchManager extends SimpleViewManager<ReactSwitch> {
|
|||
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
|
||||
new ReactSwitchEvent(
|
||||
buttonView.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
isChecked));
|
||||
}
|
||||
};
|
||||
|
|
|
@ -567,7 +567,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|||
mEventDispatcher.dispatchEvent(
|
||||
new ReactTextChangedEvent(
|
||||
mEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
s.toString(),
|
||||
(int) PixelUtil.toDIPFromPixel(contentWidth),
|
||||
(int) PixelUtil.toDIPFromPixel(contentHeight),
|
||||
|
@ -576,7 +576,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|||
mEventDispatcher.dispatchEvent(
|
||||
new ReactTextInputEvent(
|
||||
mEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
newText,
|
||||
oldText,
|
||||
start,
|
||||
|
@ -602,17 +602,17 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputFocusEvent(
|
||||
editText.getId(),
|
||||
SystemClock.elapsedRealtime()));
|
||||
SystemClock.nanoTime()));
|
||||
} else {
|
||||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputBlurEvent(
|
||||
editText.getId(),
|
||||
SystemClock.elapsedRealtime()));
|
||||
SystemClock.nanoTime()));
|
||||
|
||||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputEndEditingEvent(
|
||||
editText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
editText.getText().toString()));
|
||||
}
|
||||
}
|
||||
|
@ -630,7 +630,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|||
eventDispatcher.dispatchEvent(
|
||||
new ReactTextInputSubmitEditingEvent(
|
||||
editText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
editText.getText().toString()));
|
||||
}
|
||||
if (actionId == EditorInfo.IME_ACTION_NEXT ||
|
||||
|
@ -667,7 +667,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
|||
mEventDispatcher.dispatchEvent(
|
||||
new ReactTextInputSelectionEvent(
|
||||
mReactEditText.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
start,
|
||||
end
|
||||
)
|
||||
|
|
|
@ -131,7 +131,7 @@ public class ReactToolbarManager extends ViewGroupManager<ReactToolbar> {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new ToolbarClickEvent(view.getId(), SystemClock.elapsedRealtime(), -1));
|
||||
new ToolbarClickEvent(view.getId(), SystemClock.nanoTime(), -1));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -142,7 +142,7 @@ public class ReactToolbarManager extends ViewGroupManager<ReactToolbar> {
|
|||
mEventDispatcher.dispatchEvent(
|
||||
new ToolbarClickEvent(
|
||||
view.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
menuItem.getOrder()));
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -91,14 +91,14 @@ import com.facebook.react.uimanager.events.NativeGestureUtil;
|
|||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new PageScrollEvent(getId(), SystemClock.elapsedRealtime(), position, positionOffset));
|
||||
new PageScrollEvent(getId(), SystemClock.nanoTime(), position, positionOffset));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
if (!mIsCurrentItemFromJs) {
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new PageSelectedEvent(getId(), SystemClock.elapsedRealtime(), position));
|
||||
new PageSelectedEvent(getId(), SystemClock.nanoTime(), position));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ import com.facebook.react.uimanager.events.NativeGestureUtil;
|
|||
throw new IllegalStateException("Unsupported pageScrollState");
|
||||
}
|
||||
mEventDispatcher.dispatchEvent(
|
||||
new PageScrollStateChangedEvent(getId(), SystemClock.elapsedRealtime(), pageScrollState));
|
||||
new PageScrollStateChangedEvent(getId(), SystemClock.nanoTime(), pageScrollState));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||
webView,
|
||||
new TopLoadingStartEvent(
|
||||
webView.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
createWebViewEvent(webView, url)));
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||
|
||||
dispatchEvent(
|
||||
webView,
|
||||
new TopLoadingErrorEvent(webView.getId(), SystemClock.elapsedRealtime(), eventData));
|
||||
new TopLoadingErrorEvent(webView.getId(), SystemClock.nanoTime(), eventData));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -141,7 +141,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||
webView,
|
||||
new TopLoadingStartEvent(
|
||||
webView.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
createWebViewEvent(webView, url)));
|
||||
}
|
||||
|
||||
|
@ -150,7 +150,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
|
|||
webView,
|
||||
new TopLoadingFinishEvent(
|
||||
webView.getId(),
|
||||
SystemClock.elapsedRealtime(),
|
||||
SystemClock.nanoTime(),
|
||||
createWebViewEvent(webView, url)));
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ public class RootViewTest {
|
|||
|
||||
@Before
|
||||
public void setUp() {
|
||||
final long ts = SystemClock.elapsedRealtime();
|
||||
final long ts = SystemClock.nanoTime();
|
||||
PowerMockito.mockStatic(Arguments.class);
|
||||
PowerMockito.when(Arguments.createArray()).thenAnswer(new Answer<Object>() {
|
||||
@Override
|
||||
|
@ -80,7 +80,7 @@ public class RootViewTest {
|
|||
}
|
||||
});
|
||||
PowerMockito.mockStatic(SystemClock.class);
|
||||
PowerMockito.when(SystemClock.elapsedRealtime()).thenAnswer(new Answer<Object>() {
|
||||
PowerMockito.when(SystemClock.nanoTime()).thenAnswer(new Answer<Object>() {
|
||||
@Override
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
return ts;
|
||||
|
@ -116,7 +116,7 @@ public class RootViewTest {
|
|||
rootView.startReactApplication(instanceManager, "");
|
||||
rootView.simulateAttachForTesting();
|
||||
|
||||
long ts = SystemClock.elapsedRealtime();
|
||||
long ts = SystemClock.nanoTime();
|
||||
|
||||
// Test ACTION_DOWN event
|
||||
rootView.onTouchEvent(
|
||||
|
|
|
@ -74,7 +74,7 @@ public class TimingModuleTest {
|
|||
|
||||
PowerMockito.mockStatic(SystemClock.class);
|
||||
when(SystemClock.currentTimeMillis()).thenReturn(mCurrentTimeNs / 1000000);
|
||||
when(SystemClock.elapsedRealtime()).thenReturn(mCurrentTimeNs / 1000000);
|
||||
when(SystemClock.nanoTime()).thenReturn(mCurrentTimeNs);
|
||||
|
||||
mChoreographerMock = mock(ReactChoreographer.class);
|
||||
PowerMockito.mockStatic(ReactChoreographer.class);
|
||||
|
|
Loading…
Reference in New Issue