MCPcopy
hub / github.com/angular/angular / patchEventTargetMethods

Function patchEventTargetMethods

packages/zone.js/lib/common/events.ts:305–897  ·  view source on GitHub ↗
(obj: any, patchOptions?: PatchEventTargetOptions)

Source from the content-addressed store, hash-verified

303 };
304
305 function patchEventTargetMethods(obj: any, patchOptions?: PatchEventTargetOptions) {
306 if (!obj) {
307 return false;
308 }
309
310 let useGlobalCallback = true;
311 if (patchOptions && patchOptions.useG !== undefined) {
312 useGlobalCallback = patchOptions.useG;
313 }
314 const validateHandler = patchOptions && patchOptions.vh;
315
316 let checkDuplicate = true;
317 if (patchOptions && patchOptions.chkDup !== undefined) {
318 checkDuplicate = patchOptions.chkDup;
319 }
320
321 let returnTarget = false;
322 if (patchOptions && patchOptions.rt !== undefined) {
323 returnTarget = patchOptions.rt;
324 }
325
326 let proto = obj;
327 while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {
328 proto = ObjectGetPrototypeOf(proto);
329 }
330 if (!proto && obj[ADD_EVENT_LISTENER]) {
331 // somehow we did not find it, but we can see it. This happens on IE for Window properties.
332 proto = obj;
333 }
334
335 if (!proto) {
336 return false;
337 }
338 if (proto[zoneSymbolAddEventListener]) {
339 return false;
340 }
341
342 const eventNameToString = patchOptions && patchOptions.eventNameToString;
343
344 // We use a shared global `taskData` to pass data for `scheduleEventTask`,
345 // eliminating the need to create a new object solely for passing data.
346 // WARNING: This object has a static lifetime, meaning it is not created
347 // each time `addEventListener` is called. It is instantiated only once
348 // and captured by reference inside the `addEventListener` and
349 // `removeEventListener` functions. Do not add any new properties to this
350 // object, as doing so would necessitate maintaining the information
351 // between `addEventListener` calls.
352 const taskData: InternalGlobalTaskData = {};
353
354 const nativeAddEventListener = (proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]);
355 const nativeRemoveEventListener = (proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =
356 proto[REMOVE_EVENT_LISTENER]);
357
358 const nativeListeners = (proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =
359 proto[LISTENERS_EVENT_LISTENER]);
360 const nativeRemoveAllListeners = (proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =
361 proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]);
362

Callers 1

patchEventTargetFunction · 0.85

Calls 9

attachOriginToPatchedFunction · 0.90
makeAddListenerFunction · 0.85
findEventTasksFunction · 0.85
eventNameToStringFunction · 0.85
applyMethod · 0.65
cancelTaskMethod · 0.65
keysMethod · 0.65
compareFunction · 0.50
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…