Add freeGlobal.self checks to benchmark.js and quinit-extras to support browserified code running in a web worker.

This commit is contained in:
John-David Dalton
2014-01-22 23:48:29 -08:00
parent ee90f730b5
commit 05fa301ecb
2 changed files with 28 additions and 17 deletions

View File

@@ -5,17 +5,16 @@
* Modified by John-David Dalton <http://allyoucanleet.com/>
* Available under MIT license <http://mths.be/mit>
*/
;(function(undefined) {
;(function() {
'use strict';
/** Used as a safe reference for `undefined` in pre ES5 environments */
var undefined;
/** Used to determine if values are of the language type Object */
var objectTypes = {
'boolean': false,
'function': true,
'object': true,
'number': false,
'string': false,
'undefined': false
'object': true
};
/** Used as a reference to the global object */
@@ -27,9 +26,9 @@
/** Detect free variable `exports` */
var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
/** Detect free variable `global`, from Node.js or Browserified code, and use it as `root` */
/** Detect free variable `global` from Node.js or Browserified code and use it as `root` */
var freeGlobal = objectTypes[typeof global] && global;
if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {
if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {
root = freeGlobal;
}

View File

@@ -4,9 +4,15 @@
* Based on a gist by Jörn Zaefferer <https://gist.github.com/722381>
* Available under MIT license <http://mths.be/mit>
*/
;(function(root, undefined) {
;(function() {
'use strict';
/** Used as a safe reference for `undefined` in pre ES5 environments */
var undefined;
/** Used as a horizontal rule in console output */
var hr = '----------------------------------------';
/** Native method shortcut */
var unshift = Array.prototype.unshift;
@@ -27,15 +33,21 @@
'&#39;': "'"
};
/** Used as a horizontal rule in console output */
var hr = '----------------------------------------';
/** Used to determine if values are of the language type Object */
var objectTypes = {
'function': true,
'object': true
};
/** Used as a reference to the global object */
var root = (objectTypes[typeof window] && window) || this;
/** Detect free variable `exports` */
var freeExports = typeof exports == 'object' && exports;
var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
/** Detect free variable `global`, from Node.js or Browserified code, and use it as `root` */
var freeGlobal = typeof global == 'object' && global;
if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
/** Detect free variable `global` from Node.js or Browserified code and use it as `root` */
var freeGlobal = objectTypes[typeof global] && global;
if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {
root = freeGlobal;
}
@@ -562,9 +574,9 @@
/*--------------------------------------------------------------------------*/
// expose QUnit extras
if (freeExports && !freeExports.nodeType) {
if (freeExports) {
freeExports.runInContext = runInContext;
} else {
runInContext(root);
}
}(this));
}.call(this));