Skip to content

Commit

Permalink
Revert "Add Event constructor polyfill (ampproject#10401)"
Browse files Browse the repository at this point in the history
This reverts commit 28f709f.
  • Loading branch information
William Chou committed Jul 29, 2017
1 parent 53925ed commit 383f871
Show file tree
Hide file tree
Showing 13 changed files with 112 additions and 169 deletions.
1 change: 0 additions & 1 deletion build-system/dep-check-config.js
Expand Up @@ -210,7 +210,6 @@ exports.rules = [
'src/polyfills.js->src/polyfills/object-assign.js',
'src/polyfills.js->src/polyfills/promise.js',
'src/polyfills.js->src/polyfills/array-includes.js',
'src/polyfills.js->src/polyfills/event.js',
'src/service/extensions-impl.js->src/polyfills/document-contains.js',
'src/service/extensions-impl.js->src/polyfills/domtokenlist-toggle.js',
],
Expand Down
12 changes: 8 additions & 4 deletions extensions/amp-access/0.1/test/test-amp-access.js
Expand Up @@ -1030,10 +1030,14 @@ describes.fakeWin('AccessService pingback', {
service.reportViewToServer_ = sandbox.spy();
const p = service.reportWhenViewed_(/* timeToView */ 2000);
return Promise.resolve().then(() => {
const clickEvent = new MouseEvent(
'click',
{bubbles: true, cancelable: true, view: window, detail: 1}
);
let clickEvent;
if (document.createEvent) {
clickEvent = document.createEvent('MouseEvent');
clickEvent.initMouseEvent('click', true, true, window, 1);
} else {
clickEvent = document.createEventObject();
clickEvent.type = 'click';
}
document.documentElement.dispatchEvent(clickEvent);
return p;
}).then(() => {}, () => {}).then(() => {
Expand Down
8 changes: 7 additions & 1 deletion extensions/amp-bind/0.1/bind-impl.js
Expand Up @@ -956,7 +956,13 @@ export class Bind {
*/
dispatchEventForTesting_(name) {
if (getMode().test) {
const event = new Event(name, {bubbles: true, cancelable: true});
let event;
if (typeof this.localWin_.Event === 'function') {
event = new Event(name, {bubbles: true, cancelable: true});
} else {
event = this.localWin_.document.createEvent('Event');
event.initEvent(name, /* bubbles */ true, /* cancelable */ true);
}
this.localWin_.dispatchEvent(event);
}
}
Expand Down
6 changes: 2 additions & 4 deletions extensions/amp-live-list/0.1/amp-live-list.js
Expand Up @@ -861,10 +861,8 @@ export class AmpLiveList extends AMP.BaseElement {
}

sendAmpDomUpdateEvent_() {
const event = new Event(
AmpEvents.DOM_UPDATE,
{bubbles: true, cancelable: true}
);
const event = this.win.document.createEvent('Event');
event.initEvent(AmpEvents.DOM_UPDATE, true, true);
this.itemsSlot_.dispatchEvent(event);
}
}
Expand Down
52 changes: 39 additions & 13 deletions extensions/amp-sidebar/0.1/test/test-amp-sidebar.js
Expand Up @@ -292,14 +292,16 @@ describes.realWin('amp-sidebar 0.1 version', {
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event(
'keydown',
{bubbles: true, cancelable: true}
);
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('keydown', true, true);
}
eventObj.keyCode = KeyCodes.ESCAPE;
eventObj.which = KeyCodes.ESCAPE;
const el = iframe.doc.documentElement;
el.dispatchEvent(eventObj);
el.dispatchEvent ?
el.dispatchEvent(eventObj) : el.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.false;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('true');
expect(sidebarElement.style.display).to.equal('none');
Expand Down Expand Up @@ -407,7 +409,11 @@ describes.realWin('amp-sidebar 0.1 version', {
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
sandbox.stub(sidebarElement, 'getAmpDoc', () => {
return {
win: {
Expand All @@ -417,7 +423,9 @@ describes.realWin('amp-sidebar 0.1 version', {
},
};
});
anchor.dispatchEvent(eventObj);
anchor.dispatchEvent ?
anchor.dispatchEvent(eventObj) :
anchor.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.false;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('true');
expect(sidebarElement.style.display).to.equal('none');
Expand All @@ -444,7 +452,11 @@ describes.realWin('amp-sidebar 0.1 version', {
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
sandbox.stub(sidebarElement, 'getAmpDoc', () => {
return {
win: {
Expand All @@ -455,7 +467,9 @@ describes.realWin('amp-sidebar 0.1 version', {
},
};
});
anchor.dispatchEvent(eventObj);
anchor.dispatchEvent ?
anchor.dispatchEvent(eventObj) :
anchor.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
expect(sidebarElement.style.display).to.equal('');
Expand All @@ -482,7 +496,11 @@ describes.realWin('amp-sidebar 0.1 version', {
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
sandbox.stub(sidebarElement, 'getAmpDoc', () => {
return {
win: {
Expand All @@ -494,7 +512,9 @@ describes.realWin('amp-sidebar 0.1 version', {
},
};
});
anchor.dispatchEvent(eventObj);
anchor.dispatchEvent ?
anchor.dispatchEvent(eventObj) :
anchor.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
expect(sidebarElement.style.display).to.equal('');
Expand All @@ -520,8 +540,14 @@ describes.realWin('amp-sidebar 0.1 version', {
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
li.dispatchEvent(eventObj);
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
li.dispatchEvent ?
li.dispatchEvent(eventObj) :
li.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
expect(sidebarElement.style.display).to.equal('');
Expand Down
55 changes: 39 additions & 16 deletions extensions/amp-sidebar/1.0/test/test-amp-sidebar.js
Expand Up @@ -345,14 +345,16 @@
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event(
'keydown',
{bubbles: true, cancelable: true}
);
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('keydown', true, true);
}
eventObj.keyCode = KeyCodes.ESCAPE;
eventObj.which = KeyCodes.ESCAPE;
const el = iframe.doc.documentElement;
el.dispatchEvent(eventObj);
el.dispatchEvent ?
el.dispatchEvent(eventObj) : el.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.false;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('true');
expect(sidebarElement.style.display).to.equal('none');
Expand Down Expand Up @@ -460,7 +462,11 @@
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
sandbox.stub(sidebarElement, 'getAmpDoc', () => {
return {
win: {
Expand All @@ -470,7 +476,9 @@
},
};
});
anchor.dispatchEvent(eventObj);
anchor.dispatchEvent ?
anchor.dispatchEvent(eventObj) :
anchor.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.false;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('true');
expect(sidebarElement.style.display).to.equal('none');
Expand Down Expand Up @@ -498,7 +506,11 @@
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
sandbox.stub(sidebarElement, 'getAmpDoc', () => {
return {
win: {
Expand All @@ -509,7 +521,9 @@
},
};
});
anchor.dispatchEvent(eventObj);
anchor.dispatchEvent ?
anchor.dispatchEvent(eventObj) :
anchor.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
expect(sidebarElement.style.display).to.equal('');
Expand All @@ -536,7 +550,11 @@
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event('click', {bubbles: true, cancelable: true});
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
sandbox.stub(sidebarElement, 'getAmpDoc', () => {
return {
win: {
Expand All @@ -548,7 +566,9 @@
},
};
});
anchor.dispatchEvent(eventObj);
anchor.dispatchEvent ?
anchor.dispatchEvent(eventObj) :
anchor.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
expect(sidebarElement.style.display).to.equal('');
Expand All @@ -574,11 +594,14 @@
impl.open_();
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
const eventObj = new Event(
'click',
{bubbles: true, cancelable: true}
);
li.dispatchEvent(eventObj);
const eventObj = document.createEventObject ?
document.createEventObject() : document.createEvent('Events');
if (eventObj.initEvent) {
eventObj.initEvent('click', true, true);
}
li.dispatchEvent ?
li.dispatchEvent(eventObj) :
li.fireEvent('onkeydown', eventObj);
expect(sidebarElement.hasAttribute('open')).to.be.true;
expect(sidebarElement.getAttribute('aria-hidden')).to.equal('false');
expect(sidebarElement.style.display).to.equal('');
Expand Down
5 changes: 4 additions & 1 deletion src/custom-element.js
Expand Up @@ -1103,8 +1103,11 @@ function createBaseCustomElementClass(win) {
*/
dispatchCustomEvent(name, opt_data) {
const data = opt_data || {};
const event = new Event(name, {bubbles: true, cancelable: true});
// Constructors of events need to come from the correct window. Sigh.
const win = this.ownerDocument.defaultView;
const event = win.document.createEvent('Event');
event.data = data;
event.initEvent(name, /* bubbles */ true, /* cancelable */ true);
this.dispatchEvent(event);
}

Expand Down
15 changes: 7 additions & 8 deletions src/polyfills.js
Expand Up @@ -16,17 +16,17 @@

// Importing the document-register-element module has the side effect
// of installing the custom elements polyfill if necessary.
import installCustomElements
from 'document-register-element/build/document-register-element.node';
import {getMode} from './mode';
import {install as installArrayIncludes} from './polyfills/array-includes';
import installCustomElements from
'document-register-element/build/document-register-element.node';
import {
install as installDOMTokenListToggle,
} from './polyfills/domtokenlist-toggle';
import {install as installDocContains} from './polyfills/document-contains';
import {install as installDOMTokenListToggle}
from './polyfills/domtokenlist-toggle';
import {install as installEvent} from './polyfills/event';
import {install as installMathSign} from './polyfills/math-sign';
import {install as installObjectAssign} from './polyfills/object-assign';
import {install as installPromise} from './polyfills/promise';
import {install as installArrayIncludes} from './polyfills/array-includes';
import {getMode} from './mode';

/**
Only install in closure binary and not in babel/browserify binary, since in
Expand All @@ -44,4 +44,3 @@ installObjectAssign(self);
installPromise(self);
installDocContains(self);
installArrayIncludes(self);
installEvent(self);
57 changes: 0 additions & 57 deletions src/polyfills/event.js

This file was deleted.

6 changes: 4 additions & 2 deletions test/functional/test-base-element.js
Expand Up @@ -177,9 +177,11 @@ describe('BaseElement', () => {
const timer = Services.timerFor(element.win);
target = document.createElement('div');

event1 = new Event('event1', {bubbles: false, cancelable: true});
event1 = document.createEvent('Event');
event1.initEvent('event1', false, true);

event2 = new Event('event2', {bubbles: false, cancelable: true});
event2 = document.createEvent('Event');
event2.initEvent('event2', false, true);

event1Promise = listenOncePromise(element.element, 'event1');
event1Promise = timer.timeoutPromise(TIMEOUT, event1Promise);
Expand Down

0 comments on commit 383f871

Please sign in to comment.