Do not send bogus vsync refresh information.

During foregrounding, the android choreographer seems to be sometimes
called twice with a very short interval in its parameters (24ns).

This CL prevents the sync provider to report any vsync refresh superior
to 1000Hz.

R=etiennej@chromium.org, etiennej
BUG=https://github.com/domokit/mojo/issues/758

Review URL: https://codereview.chromium.org/1910803002 .
diff --git a/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java b/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
index 6f83d87..31cc62a 100644
--- a/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
+++ b/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
@@ -19,6 +19,8 @@
     private static final long MAX_DRIFT_PERCENT = 5;
     // A refresh period of more than 1s is considered bogus.
     private static final long MAX_VSYNC_REFRESH_NANO = 1000000000L;
+    // A refresh period bigger than 1000Hz is considered bogus.
+    private static final long MIN_VSYNC_REFRESH_NANO = 1000000L;
     private final Choreographer mChoreographer;
     private boolean mMonitoring;
     private long mNativeAndroidVSyncProvider;
@@ -53,7 +55,7 @@
     }
 
     @Override
-    public void doFrame(long timeNano) {
+    public void doFrame(final long timeNano) {
         if (mNativeAndroidVSyncProvider == 0) {
             mMonitoring = false;
             return;
@@ -65,25 +67,25 @@
         }
 
         mChoreographer.postFrameCallback(this);
-        long currentTimeNano = timeNano;
         if (mLastTimeNano != 0) {
-            long currentRefreshNano = currentTimeNano - mLastTimeNano;
-            if (currentRefreshNano < MAX_VSYNC_REFRESH_NANO) {
+            long currentRefreshNano = timeNano - mLastTimeNano;
+            if (currentRefreshNano > MIN_VSYNC_REFRESH_NANO
+                    && currentRefreshNano < MAX_VSYNC_REFRESH_NANO) {
                 mVSyncRefreshNanoComputer.add(currentRefreshNano);
                 if (mLastSentTimeSynchronizationNano == 0
-                        || computeSynchronizationDriftPercent(currentTimeNano,
+                        || computeSynchronizationDriftPercent(timeNano,
                                    mLastSentTimeSynchronizationNano, mLastSentVSyncRefreshNano)
                                 > MAX_DRIFT_PERCENT
                         || computeRefreshDriftPercent(currentRefreshNano, mLastSentVSyncRefreshNano)
                                 > MAX_DRIFT_PERCENT) {
-                    mLastSentTimeSynchronizationNano = currentTimeNano;
+                    mLastSentTimeSynchronizationNano = timeNano;
                     mLastSentVSyncRefreshNano = mVSyncRefreshNanoComputer.getMedian();
-                    nativeOnSyncChanged(mNativeAndroidVSyncProvider, currentTimeNano / 1000,
+                    nativeOnSyncChanged(mNativeAndroidVSyncProvider, timeNano / 1000,
                             mLastSentVSyncRefreshNano / 1000);
                 }
             }
         }
-        mLastTimeNano = currentTimeNano;
+        mLastTimeNano = timeNano;
     }
 
     @CalledByNative