Joey Perrott d1ea1f4c7f build: update license headers to reference Google LLC ()
Update the license headers throughout the repository to reference Google LLC
rather than Google Inc, for the required license headers.

PR Close 
2020-05-26 14:26:58 -04:00

148 lines
3.8 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/*
* Usage:
*
* function supportsOnClick() {
* const div = document.createElement('div');
* const clickPropDesc = Object.getOwnPropertyDescriptor(div, 'onclick');
* return !(EventTarget &&
* div instanceof EventTarget &&
* clickPropDesc && clickPropDesc.value === null);
* }
* (<any>supportsOnClick).message = 'Supports Element#onclick patching';
*
*
* ifEnvSupports(supportsOnClick, function() { ... });
*/
import {isNode, zoneSymbol} from '../lib/common/utils';
// Re-export for convenience.
export {zoneSymbol};
declare const global: any;
export function ifEnvSupports(test: any, block: Function): () => void {
return _ifEnvSupports(test, block);
}
export function ifEnvSupportsWithDone(test: any, block: Function): (done: Function) => void {
return _ifEnvSupports(test, block, true);
}
function _ifEnvSupports(test: any, block: Function, withDone = false) {
if (withDone) {
return function(done?: Function) {
_runTest(test, block, done);
};
} else {
return function() {
_runTest(test, block, undefined);
};
}
}
function _runTest(test: any, block: Function, done?: Function) {
const message = (test.message || test.name || test);
if (typeof test === 'string' ? !!global[test] : test()) {
if (done) {
block(done);
} else {
block();
}
} else {
console.log('WARNING: skipping ' + message + ' tests (missing this API)');
done && done();
}
}
export function supportPatchXHROnProperty() {
let desc = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'onload');
if (!desc && (window as any)['XMLHttpRequestEventTarget']) {
desc = Object.getOwnPropertyDescriptor(global['XMLHttpRequestEventTarget'].prototype, 'onload');
}
if (!desc || !desc.configurable) {
return false;
}
return true;
}
let supportSetErrorStack = true;
export function isSupportSetErrorStack() {
try {
throw new Error('test');
} catch (err) {
try {
err.stack = 'new stack';
supportSetErrorStack = err.stack === 'new stack';
} catch (error) {
supportSetErrorStack = false;
}
}
return supportSetErrorStack;
}
(isSupportSetErrorStack as any).message = 'supportSetErrorStack';
export function asyncTest(this: unknown, testFn: Function, zone: Zone = Zone.current) {
const AsyncTestZoneSpec = (Zone as any)['AsyncTestZoneSpec'];
return (done: Function) => {
let asyncTestZone: Zone = zone.fork(new AsyncTestZoneSpec(() => {}, (error: Error) => {
fail(error);
}, 'asyncTest'));
asyncTestZone.run(testFn, this, [done]);
};
}
export function getIEVersion() {
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf('msie') != -1) {
return parseInt(userAgent.split('msie')[1]);
}
return null;
}
export function isFirefox() {
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf('firefox') != -1) {
return true;
}
return false;
}
export function isSafari() {
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf('safari') != -1) {
return true;
}
return false;
}
export function isEdge() {
const userAgent = navigator.userAgent.toLowerCase();
return userAgent.indexOf('edge') !== -1;
}
export function getEdgeVersion() {
const ua = navigator.userAgent.toLowerCase();
const edge = ua.indexOf('edge/');
if (edge === -1) {
return -1;
}
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}
export function isPhantomJS() {
if (isNode) {
return false;
}
const ua = navigator.userAgent.toLowerCase();
return ua.indexOf('phantomjs') !== -1;
}