Skip to content

Commit f81e7b0

Browse files
committed
fix(browser): patch Window when EventTarget is missing.
In browsers without EventTarget, window.addEventListener() is not patched. Fixes angular#367.
1 parent bf77fbb commit f81e7b0

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

lib/browser/event-target.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {patchEventTargetMethods} from '../common/utils';
22

33
const WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';
4-
const NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex'.split(',');
4+
const NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex'.split(',');
55
const EVENT_TARGET = 'EventTarget';
66

77
export function eventTargetPatch(_global) {

test/browser/browser.spec.ts

+22
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,28 @@ describe('Zone', function () {
7272
expect(eventListenerSpy).toHaveBeenCalled();
7373
});
7474

75+
it('should support addEventListener on window', function () {
76+
var hookSpy = jasmine.createSpy('hook');
77+
var eventListenerSpy = jasmine.createSpy('eventListener');
78+
var zone = rootZone.fork({
79+
name: 'spy',
80+
onScheduleTask: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone,
81+
task: Task): any => {
82+
hookSpy();
83+
return parentZoneDelegate.scheduleTask(targetZone, task);
84+
}
85+
});
86+
87+
zone.run(function() {
88+
window.addEventListener('click', eventListenerSpy);
89+
});
90+
91+
window.dispatchEvent(clickEvent);
92+
93+
expect(hookSpy).toHaveBeenCalled();
94+
expect(eventListenerSpy).toHaveBeenCalled();
95+
});
96+
7597
it('should support removeEventListener', function () {
7698
var hookSpy = jasmine.createSpy('hook');
7799
var eventListenerSpy = jasmine.createSpy('eventListener');

0 commit comments

Comments
 (0)