Make ReactDefaultPerf work server-side

We were reading from window which was throwing when ReactDefaultPerf was injected.
This commit is contained in:
Pete Hunt
2013-08-30 13:20:53 -07:00
committed by Paul O’Shannessy
parent 4d8f0449d9
commit c41e86c990
2 changed files with 47 additions and 14 deletions
+5 -14
View File
@@ -19,6 +19,8 @@
"use strict";
var performanceNow = require('performanceNow');
var ReactDefaultPerf = {};
if (__DEV__) {
@@ -186,9 +188,9 @@ if (__DEV__) {
var fnArgs = _getFnArguments(func);
return function() {
var timeBeforeFn = now();
var timeBeforeFn = performanceNow();
var fnReturn = func.apply(this, arguments);
var timeAfterFn = now();
var timeAfterFn = performanceNow();
/**
* Hold onto arguments in a readable way: args[1] -> args.component.
@@ -224,7 +226,7 @@ if (__DEV__) {
var callback = _getCallback(objName, fnName);
callback && callback(this, args, fnReturn, log, info);
log.timing.timeToLog = now() - timeAfterFn;
log.timing.timeToLog = performanceNow() - timeAfterFn;
return fnReturn;
};
@@ -400,17 +402,6 @@ if (__DEV__) {
var _microTime = function(time) {
return Math.round(time * 1000) / 1000;
};
/**
* Shim window.performance.now
* We can't assign window.performance.now and then call it, so need to bind.
* TODO: Support Firefox < 15 for now
*/
var performance = window && (window.performance || window.webkitPeformance);
if (!performance || !performance.now) {
performance = Date;
}
var now = performance.now.bind(performance);
}
module.exports = ReactDefaultPerf;
+42
View File
@@ -0,0 +1,42 @@
/**
* Copyright 2013 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @providesModule performanceNow
* @typechecks static-only
*/
"use strict";
var ExecutionEnvironment = require('ExecutionEnvironment');
/**
* Detect if we can use window.performance.now() and gracefully
* fallback to Date.now() if it doesn't exist.
* We need to support Firefox < 15 for now due to Facebook's webdriver
* infrastructure.
*/
var performance = null;
if (ExecutionEnvironment.canUseDOM) {
performance = window.performance || window.webkitPerformance;
}
if (!performance || !performance.now) {
performance = Date;
}
var performanceNow = performance.now.bind(performance);
module.exports = performanceNow;