(obj: any, patchOptions?: PatchEventTargetOptions)
| 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 |
no test coverage detected
searching dependent graphs…