RN: Change Time Drift Error into Warning

Summary: Changes the time drift error into a warning that will only get logged once per debugging session.

Reviewed By: jingc

Differential Revision: D3539067

fbshipit-source-id: 357db15750d867a91c39b5fc5fd6ed4ae2852bc7
This commit is contained in:
Tim Yung 2016-07-11 10:28:03 -07:00 committed by Facebook Github Bot 8
parent 6d3c7b8a4c
commit ed4db631fa
3 changed files with 19 additions and 5 deletions

View File

@ -16,6 +16,8 @@ var performanceNow = require('fbjs/lib/performanceNow');
var warning = require('fbjs/lib/warning'); var warning = require('fbjs/lib/warning');
var Systrace = require('Systrace'); var Systrace = require('Systrace');
let hasEmittedTimeDriftWarning = false;
/** /**
* JS implementation of timer functions. Must be completely driven by an * JS implementation of timer functions. Must be completely driven by an
* external clock signal, all that's stored here is timerID, timer type, and * external clock signal, all that's stored here is timerID, timer type, and
@ -147,6 +149,17 @@ var JSTimersExecution = {
} }
}, },
/**
* Called from native (in development) when environment times are out-of-sync.
*/
emitTimeDriftWarning: function(warningMessage) {
if (hasEmittedTimeDriftWarning) {
return;
}
hasEmittedTimeDriftWarning = true;
console.warn(warningMessage);
},
_clearIndex: function(i) { _clearIndex: function(i) {
JSTimersExecution.timerIDs[i] = null; JSTimersExecution.timerIDs[i] = null;
JSTimersExecution.callbacks[i] = null; JSTimersExecution.callbacks[i] = null;

View File

@ -17,4 +17,6 @@ import com.facebook.react.bridge.WritableArray;
public interface JSTimersExecution extends JavaScriptModule { public interface JSTimersExecution extends JavaScriptModule {
public void callTimers(WritableArray timerIDs); public void callTimers(WritableArray timerIDs);
public void emitTimeDriftWarning(String warningMessage);
} }

View File

@ -226,11 +226,10 @@ public final class Timing extends ReactContextBaseJavaModule implements Lifecycl
if (mDevSupportManager.getDevSupportEnabled()) { if (mDevSupportManager.getDevSupportEnabled()) {
long driftTime = Math.abs(remoteTime - deviceTime); long driftTime = Math.abs(remoteTime - deviceTime);
if (driftTime > 60000) { if (driftTime > 60000) {
throw new RuntimeException( getReactApplicationContext().getJSModule(executorToken, JSTimersExecution.class)
"Debugger and device times have drifted by more than 60s." + .emitTimeDriftWarning(
"Please correct this by running adb shell " + "Debugger and device times have drifted by more than 60s. Please correct this by " +
"\"date `date +%m%d%H%M%Y.%S`\" on your debugger machine." "running adb shell \"date `date +%m%d%H%M%Y.%S`\" on your debugger machine.");
);
} }
} }