Use nanoTime instead of currentTimeMillis for events

Reviewed By: foghina

Differential Revision: D2953917

fb-gh-sync-id: effd09849a5504c9eb7c684a510e616fdcfcdf6e
shipit-source-id: effd09849a5504c9eb7c684a510e616fdcfcdf6e
This commit is contained in:
Andrei Coman
2016-02-22 03:25:58 -08:00
committed by facebook-github-bot-7
parent cf3bd9f9a1
commit b5d26679c4
15 changed files with 64 additions and 71 deletions

View File

@@ -14,7 +14,6 @@ import javax.annotation.Nullable;
import android.content.Context;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -28,6 +27,7 @@ import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.common.ReactConstants;
import com.facebook.react.common.SystemClock;
import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.uimanager.DisplayMetricsHolder;
@@ -151,7 +151,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
eventDispatcher.dispatchEvent(
TouchEvent.obtain(
mTargetTag,
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
TouchEventType.START,
ev,
mTargetCoordinates[0],
@@ -173,7 +173,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
eventDispatcher.dispatchEvent(
TouchEvent.obtain(
mTargetTag,
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
TouchEventType.END,
ev,
mTargetCoordinates[0],
@@ -184,7 +184,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
eventDispatcher.dispatchEvent(
TouchEvent.obtain(
mTargetTag,
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
TouchEventType.MOVE,
ev,
mTargetCoordinates[0],
@@ -194,7 +194,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
eventDispatcher.dispatchEvent(
TouchEvent.obtain(
mTargetTag,
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
TouchEventType.START,
ev,
mTargetCoordinates[0],
@@ -204,7 +204,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
eventDispatcher.dispatchEvent(
TouchEvent.obtain(
mTargetTag,
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
TouchEventType.END,
ev,
mTargetCoordinates[0],
@@ -255,7 +255,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
Assertions.assertNotNull(eventDispatcher).dispatchEvent(
TouchEvent.obtain(
mTargetTag,
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
TouchEventType.CANCEL,
androidEvent,
mTargetCoordinates[0],

View File

@@ -9,11 +9,11 @@
package com.facebook.react.uimanager;
import android.os.SystemClock;
import android.support.v4.util.Pools;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.RCTEventEmitter;
@@ -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.uptimeMillis());
super.init(viewTag, SystemClock.nanoTime());
mX = x;
mY = y;
mWidth = width;

View File

@@ -75,14 +75,7 @@ public class EventDispatcher implements LifecycleEventListener {
return 1;
}
long diff = lhs.getTimestampMs() - rhs.getTimestampMs();
if (diff == 0) {
return 0;
} else if (diff < 0) {
return -1;
} else {
return 1;
}
return lhs.getTimestampMs() < rhs.getTimestampMs() ? -1 : 1;
}
};

View File

@@ -13,7 +13,6 @@ import javax.annotation.Nullable;
import java.util.Map;
import android.os.SystemClock;
import android.support.v4.widget.DrawerLayout;
import android.view.Gravity;
import android.view.View;
@@ -21,11 +20,12 @@ import android.view.View;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.views.drawer.events.DrawerClosedEvent;
import com.facebook.react.views.drawer.events.DrawerOpenedEvent;
@@ -151,25 +151,25 @@ public class ReactDrawerLayoutManager extends ViewGroupManager<ReactDrawerLayout
@Override
public void onDrawerSlide(View view, float v) {
mEventDispatcher.dispatchEvent(
new DrawerSlideEvent(mDrawerLayout.getId(), SystemClock.uptimeMillis(), v));
new DrawerSlideEvent(mDrawerLayout.getId(), SystemClock.nanoTime(), v));
}
@Override
public void onDrawerOpened(View view) {
mEventDispatcher.dispatchEvent(
new DrawerOpenedEvent(mDrawerLayout.getId(), SystemClock.uptimeMillis()));
new DrawerOpenedEvent(mDrawerLayout.getId(), SystemClock.nanoTime()));
}
@Override
public void onDrawerClosed(View view) {
mEventDispatcher.dispatchEvent(
new DrawerClosedEvent(mDrawerLayout.getId(), SystemClock.uptimeMillis()));
new DrawerClosedEvent(mDrawerLayout.getId(), SystemClock.nanoTime()));
}
@Override
public void onDrawerStateChanged(int i) {
mEventDispatcher.dispatchEvent(
new DrawerStateChangedEvent(mDrawerLayout.getId(), SystemClock.uptimeMillis(), i));
new DrawerStateChangedEvent(mDrawerLayout.getId(), SystemClock.nanoTime(), i));
}
}
}

View File

@@ -24,7 +24,6 @@ import android.graphics.Shader;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.SystemClock;
import com.facebook.common.util.UriUtil;
import com.facebook.drawee.controller.AbstractDraweeControllerBuilder;
@@ -44,6 +43,7 @@ import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
import com.facebook.imagepipeline.request.Postprocessor;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.events.EventDispatcher;
@@ -151,7 +151,7 @@ public class ReactImageView extends GenericDraweeView {
@Override
public void onSubmit(String id, Object callerContext) {
mEventDispatcher.dispatchEvent(
new ImageLoadEvent(getId(), SystemClock.uptimeMillis(), ImageLoadEvent.ON_LOAD_START)
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD_START)
);
}
@@ -162,10 +162,10 @@ public class ReactImageView extends GenericDraweeView {
@Nullable Animatable animatable) {
if (imageInfo != null) {
mEventDispatcher.dispatchEvent(
new ImageLoadEvent(getId(), SystemClock.uptimeMillis(), ImageLoadEvent.ON_LOAD_END)
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD_END)
);
mEventDispatcher.dispatchEvent(
new ImageLoadEvent(getId(), SystemClock.uptimeMillis(), ImageLoadEvent.ON_LOAD)
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD)
);
}
}
@@ -173,7 +173,7 @@ public class ReactImageView extends GenericDraweeView {
@Override
public void onFailure(String id, Throwable throwable) {
mEventDispatcher.dispatchEvent(
new ImageLoadEvent(getId(), SystemClock.uptimeMillis(), ImageLoadEvent.ON_LOAD_END)
new ImageLoadEvent(getId(), SystemClock.nanoTime(), ImageLoadEvent.ON_LOAD_END)
);
}
};

View File

@@ -12,7 +12,6 @@ package com.facebook.react.views.picker;
import javax.annotation.Nullable;
import android.content.Context;
import android.os.SystemClock;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -23,11 +22,12 @@ import android.widget.TextView;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewProps;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.views.picker.events.PickerItemSelectEvent;
@@ -157,7 +157,7 @@ public abstract class ReactPickerManager extends SimpleViewManager<ReactPicker>
@Override
public void onItemSelected(int position) {
mEventDispatcher.dispatchEvent( new PickerItemSelectEvent(
mReactPicker.getId(), SystemClock.uptimeMillis(), position));
mReactPicker.getId(), SystemClock.nanoTime(), position));
}
}
}

View File

@@ -6,7 +6,6 @@ import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.os.SystemClock;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MotionEvent;
@@ -15,6 +14,7 @@ import android.view.ViewGroup;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.SystemClock;
import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.events.NativeGestureUtil;
@@ -344,7 +344,7 @@ public class RecyclerViewBackedScrollView extends RecyclerView {
((ReactContext) getContext()).getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(ScrollEvent.obtain(
getId(),
SystemClock.uptimeMillis(),
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.uptimeMillis(),
SystemClock.nanoTime(),
getWidth(),
newTotalChildrenHeight));
}

View File

@@ -9,11 +9,11 @@
package com.facebook.react.views.scroll;
import android.os.SystemClock;
import android.view.View;
import android.view.ViewGroup;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.UIManagerModule;
/**
@@ -57,7 +57,7 @@ public class ReactScrollViewHelper {
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
ScrollEvent.obtain(
scrollView.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
scrollEventType,
scrollView.getScrollX(),
scrollView.getScrollY(),

View File

@@ -14,17 +14,17 @@ import javax.annotation.Nullable;
import java.util.Map;
import android.graphics.Color;
import android.os.SystemClock;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.ViewProps;
import com.facebook.react.uimanager.annotations.ReactProp;
/**
* ViewManager for {@link ReactSwipeRefreshLayout} which allows the user to "pull to refresh" a
@@ -91,7 +91,7 @@ public class SwipeRefreshLayoutManager extends ViewGroupManager<ReactSwipeRefres
@Override
public void onRefresh() {
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(new RefreshEvent(view.getId(), SystemClock.uptimeMillis()));
.dispatchEvent(new RefreshEvent(view.getId(), SystemClock.nanoTime()));
}
});
}

View File

@@ -5,6 +5,7 @@ android_library(
srcs = glob(['*.java']),
deps = [
react_native_target('java/com/facebook/react/bridge:bridge'),
react_native_target('java/com/facebook/react/common:common'),
react_native_target('java/com/facebook/csslayout:csslayout'),
react_native_target('java/com/facebook/react/uimanager:uimanager'),
react_native_target('java/com/facebook/react/uimanager/annotations:annotations'),

View File

@@ -10,7 +10,6 @@
// switchview because switch is a keyword
package com.facebook.react.views.switchview;
import android.os.SystemClock;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
@@ -18,12 +17,13 @@ import android.widget.CompoundButton;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.MeasureOutput;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.LayoutShadowNode;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewProps;
import com.facebook.react.uimanager.annotations.ReactProp;
/**
* View manager for {@link ReactSwitch} components.
@@ -71,7 +71,7 @@ public class ReactSwitchManager extends SimpleViewManager<ReactSwitch> {
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
new ReactSwitchEvent(
buttonView.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
isChecked));
}
};

View File

@@ -15,7 +15,6 @@ import java.util.LinkedList;
import java.util.Map;
import android.graphics.PorterDuff;
import android.os.SystemClock;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
@@ -33,6 +32,7 @@ import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.BaseViewManager;
import com.facebook.react.uimanager.LayoutShadowNode;
import com.facebook.react.uimanager.PixelUtil;
@@ -427,7 +427,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
mEventDispatcher.dispatchEvent(
new ReactTextChangedEvent(
mEditText.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
s.toString(),
(int) PixelUtil.toDIPFromPixel(contentWidth),
(int) PixelUtil.toDIPFromPixel(contentHeight),
@@ -436,7 +436,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
mEventDispatcher.dispatchEvent(
new ReactTextInputEvent(
mEditText.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
newText,
oldText,
start,
@@ -462,17 +462,17 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
eventDispatcher.dispatchEvent(
new ReactTextInputFocusEvent(
editText.getId(),
SystemClock.uptimeMillis()));
SystemClock.nanoTime()));
} else {
eventDispatcher.dispatchEvent(
new ReactTextInputBlurEvent(
editText.getId(),
SystemClock.uptimeMillis()));
SystemClock.nanoTime()));
eventDispatcher.dispatchEvent(
new ReactTextInputEndEditingEvent(
editText.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
editText.getText().toString()));
}
}
@@ -490,7 +490,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
eventDispatcher.dispatchEvent(
new ReactTextInputSubmitEditingEvent(
editText.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
editText.getText().toString()));
}
return false;
@@ -520,7 +520,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
mEventDispatcher.dispatchEvent(
new ReactTextInputSelectionEvent(
mReactEditText.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
start,
end
)

View File

@@ -17,7 +17,6 @@ import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.SystemClock;
import android.util.LayoutDirection;
import android.view.MenuItem;
import android.view.View;
@@ -26,11 +25,12 @@ import com.facebook.react.R;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.views.toolbar.events.ToolbarClickEvent;
@@ -131,7 +131,7 @@ public class ReactToolbarManager extends ViewGroupManager<ReactToolbar> {
@Override
public void onClick(View v) {
mEventDispatcher.dispatchEvent(
new ToolbarClickEvent(view.getId(), SystemClock.uptimeMillis(), -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.uptimeMillis(),
SystemClock.nanoTime(),
menuItem.getOrder()));
return true;
}

View File

@@ -12,7 +12,6 @@ package com.facebook.react.views.viewpager;
import java.util.ArrayList;
import java.util.List;
import android.os.SystemClock;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.MotionEvent;
@@ -20,6 +19,7 @@ import android.view.View;
import android.view.ViewGroup;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.SystemClock;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.uimanager.events.NativeGestureUtil;
@@ -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.uptimeMillis(), position, positionOffset));
new PageScrollEvent(getId(), SystemClock.nanoTime(), position, positionOffset));
}
@Override
public void onPageSelected(int position) {
if (!mIsCurrentItemFromJs) {
mEventDispatcher.dispatchEvent(
new PageSelectedEvent(getId(), SystemClock.uptimeMillis(), 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.uptimeMillis(), pageScrollState));
new PageScrollStateChangedEvent(getId(), SystemClock.nanoTime(), pageScrollState));
}
}

View File

@@ -9,9 +9,14 @@
package com.facebook.react.views.webview;
import javax.annotation.Nullable;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.SystemClock;
import android.text.TextUtils;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@@ -27,6 +32,7 @@ import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.SystemClock;
import com.facebook.react.common.build.ReactBuildConfig;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
@@ -35,13 +41,6 @@ import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.EventDispatcher;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
/**
* Manages instances of {@link WebView}
*
@@ -106,7 +105,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
webView,
new TopLoadingStartEvent(
webView.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
createWebViewEvent(webView, url)));
}
@@ -129,7 +128,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
dispatchEvent(
webView,
new TopLoadingErrorEvent(webView.getId(), SystemClock.uptimeMillis(), eventData));
new TopLoadingErrorEvent(webView.getId(), SystemClock.nanoTime(), eventData));
}
@Override
@@ -140,7 +139,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
webView,
new TopLoadingStartEvent(
webView.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
createWebViewEvent(webView, url)));
}
@@ -149,7 +148,7 @@ public class ReactWebViewManager extends SimpleViewManager<WebView> {
webView,
new TopLoadingFinishEvent(
webView.getId(),
SystemClock.uptimeMillis(),
SystemClock.nanoTime(),
createWebViewEvent(webView, url)));
}