@ -10,76 +10,80 @@
|
||||
|
||||
'use strict';
|
||||
(function(global: any) {
|
||||
// add custom properties to Native Error
|
||||
const NativeError = global['Error'];
|
||||
NativeError.customProperty = 'customProperty';
|
||||
NativeError.customFunction = function() {};
|
||||
// add custom properties to Native Error
|
||||
const NativeError = global['Error'];
|
||||
NativeError.customProperty = 'customProperty';
|
||||
NativeError.customFunction = function() {};
|
||||
|
||||
// add fake cordova polyfill for test
|
||||
const fakeCordova = function() {};
|
||||
// add fake cordova polyfill for test
|
||||
const fakeCordova = function() {};
|
||||
|
||||
(fakeCordova as any).exec = function(
|
||||
success: Function, error: Function, service: string, action: string, args: any[]) {
|
||||
if (action === 'successAction') {
|
||||
success();
|
||||
} else {
|
||||
error();
|
||||
(fakeCordova as any).exec = function(
|
||||
success: Function, error: Function, service: string, action: string, args: any[]) {
|
||||
if (action === 'successAction') {
|
||||
success();
|
||||
} else {
|
||||
error();
|
||||
}
|
||||
};
|
||||
|
||||
global.cordova = fakeCordova;
|
||||
|
||||
const TestTarget = global.TestTarget = function() {};
|
||||
|
||||
Object.defineProperties(TestTarget.prototype, {
|
||||
'onprop1': {configurable: true, writable: true},
|
||||
'onprop2': {configurable: true, writable: true},
|
||||
'onprop3': {
|
||||
configurable: true,
|
||||
get: function() {
|
||||
return this._onprop3;
|
||||
},
|
||||
set: function(_value) {
|
||||
this._onprop3 = _value;
|
||||
}
|
||||
};
|
||||
|
||||
global.cordova = fakeCordova;
|
||||
|
||||
const TestTarget = global.TestTarget = function() {};
|
||||
|
||||
Object.defineProperties(TestTarget.prototype, {
|
||||
'onprop1': {configurable: true, writable: true},
|
||||
'onprop2': {configurable: true, writable: true},
|
||||
'onprop3': {
|
||||
configurable: true,
|
||||
get: function() { return this._onprop3; },
|
||||
set: function(_value) { this._onprop3 = _value; }
|
||||
},
|
||||
'_onprop3': {configurable: true, writable: true, value: function() {}},
|
||||
'addEventListener': {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: function(eventName: string, callback: Function) {
|
||||
if (!this.events) {
|
||||
this.events = {};
|
||||
}
|
||||
const Zone = global.Zone;
|
||||
this.events.eventName = {zone: Zone.current, callback: callback};
|
||||
}
|
||||
},
|
||||
'removeEventListener': {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: function(eventName: string, callback: Function) {
|
||||
if (!this.events) {
|
||||
return;
|
||||
}
|
||||
this.events.eventName = null;
|
||||
}
|
||||
},
|
||||
'dispatchEvent': {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: function(eventName: string) {
|
||||
const zoneCallback = this.events && this.events.eventName;
|
||||
zoneCallback && zoneCallback.zone.run(zoneCallback.callback, this, [{type: eventName}]);
|
||||
},
|
||||
'_onprop3': {configurable: true, writable: true, value: function() {}},
|
||||
'addEventListener': {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: function(eventName: string, callback: Function) {
|
||||
if (!this.events) {
|
||||
this.events = {};
|
||||
}
|
||||
const Zone = global.Zone;
|
||||
this.events.eventName = {zone: Zone.current, callback: callback};
|
||||
}
|
||||
});
|
||||
},
|
||||
'removeEventListener': {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: function(eventName: string, callback: Function) {
|
||||
if (!this.events) {
|
||||
return;
|
||||
}
|
||||
this.events.eventName = null;
|
||||
}
|
||||
},
|
||||
'dispatchEvent': {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: function(eventName: string) {
|
||||
const zoneCallback = this.events && this.events.eventName;
|
||||
zoneCallback && zoneCallback.zone.run(zoneCallback.callback, this, [{type: eventName}]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Zone symbol prefix may be set in *-env-setup.ts (browser & node),
|
||||
// but this file is used in multiple scenarios, and Zone isn't loaded at this point yet.
|
||||
const zoneSymbolPrefix = global['__Zone_symbol_prefix'] || '__zone_symbol__';
|
||||
// Zone symbol prefix may be set in *-env-setup.ts (browser & node),
|
||||
// but this file is used in multiple scenarios, and Zone isn't loaded at this point yet.
|
||||
const zoneSymbolPrefix = global['__Zone_symbol_prefix'] || '__zone_symbol__';
|
||||
|
||||
global['__Zone_ignore_on_properties'] =
|
||||
[{target: TestTarget.prototype, ignoreProperties: ['prop1']}];
|
||||
global[zoneSymbolPrefix + 'FakeAsyncTestMacroTask'] = [{source: 'TestClass.myTimeout'}];
|
||||
// will not monkey patch scroll and wheel event.
|
||||
global[zoneSymbolPrefix + 'UNPATCHED_EVENTS'] = ['scroll', 'wheel'];
|
||||
// touchstart and scroll will be passive by default.
|
||||
global[zoneSymbolPrefix + 'PASSIVE_EVENTS'] = ['touchstart', 'scroll'];
|
||||
global['__Zone_ignore_on_properties'] =
|
||||
[{target: TestTarget.prototype, ignoreProperties: ['prop1']}];
|
||||
global[zoneSymbolPrefix + 'FakeAsyncTestMacroTask'] = [{source: 'TestClass.myTimeout'}];
|
||||
// will not monkey patch scroll and wheel event.
|
||||
global[zoneSymbolPrefix + 'UNPATCHED_EVENTS'] = ['scroll', 'wheel'];
|
||||
// touchstart and scroll will be passive by default.
|
||||
global[zoneSymbolPrefix + 'PASSIVE_EVENTS'] = ['touchstart', 'scroll'];
|
||||
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
|
||||
|
Reference in New Issue
Block a user