| 1234567891011121314151617181920212223242526272829303132333435363738 |
- /**
- * @license
- * Copyright Google Inc. 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
- */
- export function patchCallbacks(
- api: _ZonePrivate, target: any, targetName: string, method: string, callbacks: string[]) {
- const symbol = Zone.__symbol__(method);
- if (target[symbol]) {
- return;
- }
- const nativeDelegate = target[symbol] = target[method];
- target[method] = function(name: any, opts: any, options?: any) {
- if (opts && opts.prototype) {
- callbacks.forEach(function(callback) {
- const source = `${targetName}.${method}::` + callback;
- const prototype = opts.prototype;
- if (prototype.hasOwnProperty(callback)) {
- const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback);
- if (descriptor && descriptor.value) {
- descriptor.value = api.wrapWithCurrentZone(descriptor.value, source);
- api._redefineProperty(opts.prototype, callback, descriptor);
- } else if (prototype[callback]) {
- prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);
- }
- } else if (prototype[callback]) {
- prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);
- }
- });
- }
- return nativeDelegate.call(target, name, opts, options);
- };
- api.attachOriginToPatched(target[method], nativeDelegate);
- }
|