mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Make ReactDefaultPerf work server-side
We were reading from window which was throwing when ReactDefaultPerf was injected.
This commit is contained in:
committed by
Paul O’Shannessy
parent
4d8f0449d9
commit
c41e86c990
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user