diff --git a/aio/scripts/_payload-limits.json b/aio/scripts/_payload-limits.json index ad9cc918ef..6de9bf06e5 100755 --- a/aio/scripts/_payload-limits.json +++ b/aio/scripts/_payload-limits.json @@ -28,8 +28,8 @@ "uncompressed": { "runtime-es5": 2932, "runtime-es2015": 2938, - "main-es5": 554068, - "main-es2015": 495320, + "main-es5": 552068, + "main-es2015": 493320, "polyfills-es5": 131024, "polyfills-es2015": 52433 } diff --git a/integration/_payload-limits.json b/integration/_payload-limits.json index a8de81aab5..58fb24e623 100644 --- a/integration/_payload-limits.json +++ b/integration/_payload-limits.json @@ -3,7 +3,7 @@ "master": { "uncompressed": { "runtime": 1497, - "main": 164387, + "main": 161490, "polyfills": 45399 } } @@ -21,7 +21,7 @@ "master": { "uncompressed": { "runtime": 1440, - "main": 130975, + "main": 128448, "polyfills": 45340 } } diff --git a/packages/core/test/linker/integration_spec.ts b/packages/core/test/linker/integration_spec.ts index e5b6dab56b..23727dbea7 100644 --- a/packages/core/test/linker/integration_spec.ts +++ b/packages/core/test/linker/integration_spec.ts @@ -19,7 +19,7 @@ import {EmbeddedViewRef} from '@angular/core/src/linker/view_ref'; import {Attribute, Component, ContentChildren, Directive, HostBinding, HostListener, Input, Output, Pipe} from '@angular/core/src/metadata'; import {TestBed, async, fakeAsync, getTestBed, tick} from '@angular/core/testing'; import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; -import {dispatchEvent, el, isCommentNode} from '@angular/platform-browser/testing/src/browser_util'; +import {createMouseEvent, dispatchEvent, el, isCommentNode} from '@angular/platform-browser/testing/src/browser_util'; import {expect} from '@angular/platform-browser/testing/src/matchers'; import {modifiedInIvy, obsoleteInIvy, onlyInIvy} from '@angular/private/testing'; @@ -1000,12 +1000,12 @@ function declareTests(config?: {useJit: boolean}) { TestBed.overrideComponent(MyComp, {set: {template}}); const fixture = TestBed.createComponent(MyComp); - const dispatchedEvent = getDOM().createMouseEvent('click'); - const dispatchedEvent2 = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); + const dispatchedEvent2 = createMouseEvent('click'); getDOM().dispatchEvent(fixture.debugElement.children[0].nativeElement, dispatchedEvent); getDOM().dispatchEvent(fixture.debugElement.children[1].nativeElement, dispatchedEvent2); - expect(getDOM().isPrevented(dispatchedEvent)).toBe(true); - expect(getDOM().isPrevented(dispatchedEvent2)).toBe(false); + expect(isPrevented(dispatchedEvent)).toBe(true); + expect(isPrevented(dispatchedEvent2)).toBe(false); expect(fixture.debugElement.children[0].nativeElement.checked).toBeFalsy(); expect(fixture.debugElement.children[1].nativeElement.checked).toBeTruthy(); }); @@ -1493,9 +1493,8 @@ function declareTests(config?: {useJit: boolean}) { expect(noSelectorComponentFactory.selector).toBe('ng-component'); - expect( - noSelectorComponentFactory.create(Injector.NULL).location.nativeElement.nodeName - .toLowerCase()) + expect(noSelectorComponentFactory.create(Injector.NULL) + .location.nativeElement.nodeName.toLowerCase()) .toEqual('ng-component'); }); }); @@ -1961,7 +1960,7 @@ function declareTests(config?: {useJit: boolean}) { fixture.detectChanges(); const dir = fixture.debugElement.children[0].injector.get(DirectiveWithPropDecorators); const native = fixture.debugElement.children[0].nativeElement; - getDOM().dispatchEvent(native, getDOM().createMouseEvent('click')); + getDOM().dispatchEvent(native, createMouseEvent('click')); expect(dir.target).toBe(native); }); @@ -2745,3 +2744,7 @@ export class ParentCmp { class SomeCmpWithInput { @Input() test$: any; } + +function isPrevented(evt: Event): boolean { + return evt.defaultPrevented || evt.returnValue != null && !evt.returnValue; +} diff --git a/packages/platform-browser/src/browser/browser_adapter.ts b/packages/platform-browser/src/browser/browser_adapter.ts index 29eba32db0..e68933fb8f 100644 --- a/packages/platform-browser/src/browser/browser_adapter.ts +++ b/packages/platform-browser/src/browser/browser_adapter.ts @@ -113,7 +113,6 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter { contains(nodeA: any, nodeB: any): boolean { return nodeContains.call(nodeA, nodeB); } querySelector(el: HTMLElement, selector: string): any { return el.querySelector(selector); } querySelectorAll(el: any, selector: string): any[] { return el.querySelectorAll(selector); } - on(el: Node, evt: any, listener: any) { el.addEventListener(evt, listener, false); } onAndCancel(el: Node, evt: any, listener: any): Function { el.addEventListener(evt, listener, false); // Needed to follow Dart's subscription semantic, until fix of @@ -121,23 +120,6 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter { return () => { el.removeEventListener(evt, listener, false); }; } dispatchEvent(el: Node, evt: any) { el.dispatchEvent(evt); } - createMouseEvent(eventType: string): MouseEvent { - const evt: MouseEvent = this.getDefaultDocument().createEvent('MouseEvent'); - evt.initEvent(eventType, true, true); - return evt; - } - createEvent(eventType: any): Event { - const evt: Event = this.getDefaultDocument().createEvent('Event'); - evt.initEvent(eventType, true, true); - return evt; - } - preventDefault(evt: Event) { - evt.preventDefault(); - evt.returnValue = false; - } - isPrevented(evt: Event): boolean { - return evt.defaultPrevented || evt.returnValue != null && !evt.returnValue; - } nextSibling(el: Node): Node|null { return el.nextSibling; } parentElement(el: Node): Node|null { return el.parentNode; } clearNodes(el: Node) { diff --git a/packages/platform-browser/src/dom/dom_adapter.ts b/packages/platform-browser/src/dom/dom_adapter.ts index 2303f684e8..b049f22947 100644 --- a/packages/platform-browser/src/dom/dom_adapter.ts +++ b/packages/platform-browser/src/dom/dom_adapter.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {Type} from '@angular/core'; let _DOM: DomAdapter = null !; @@ -45,13 +44,7 @@ export abstract class DomAdapter { abstract parse(templateHtml: string): any; abstract querySelector(el: any, selector: string): any; abstract querySelectorAll(el: any, selector: string): any[]; - abstract on(el: any, evt: any, listener: any): any; - abstract onAndCancel(el: any, evt: any, listener: any): Function; abstract dispatchEvent(el: any, evt: any): any; - abstract createMouseEvent(eventType: any): any; - abstract createEvent(eventType: string): any; - abstract preventDefault(evt: any): any; - abstract isPrevented(evt: any): boolean; // Used by Meta abstract remove(el: any): Node; @@ -95,6 +88,7 @@ export abstract class DomAdapter { abstract getHost(el: any): any; // Used by KeyEventsPlugin + abstract onAndCancel(el: any, evt: any, listener: any): Function; abstract getEventKey(event: any): string; abstract supportsDOMEvents(): boolean; diff --git a/packages/platform-browser/test/dom/events/event_manager_spec.ts b/packages/platform-browser/test/dom/events/event_manager_spec.ts index a1da0f2e49..3510d4f146 100644 --- a/packages/platform-browser/test/dom/events/event_manager_spec.ts +++ b/packages/platform-browser/test/dom/events/event_manager_spec.ts @@ -11,7 +11,8 @@ import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testin import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; import {DomEventsPlugin} from '@angular/platform-browser/src/dom/events/dom_events'; import {EventManager, EventManagerPlugin} from '@angular/platform-browser/src/dom/events/event_manager'; -import {el} from '../../../testing/src/browser_util'; + +import {createMouseEvent, el} from '../../../testing/src/browser_util'; (function() { if (isNode) return; @@ -63,8 +64,8 @@ import {el} from '../../../testing/src/browser_util'; // Workaround for https://bugs.webkit.org/show_bug.cgi?id=122755 getDOM().appendChild(doc.body, element); - const child = element.firstChild; - const dispatchedEvent = getDOM().createMouseEvent('click'); + const child = element.firstChild as Element; + const dispatchedEvent = createMouseEvent('click'); let receivedEvent: any /** TODO #9100 */ = null; const handler = (e: any /** TODO #9100 */) => { receivedEvent = e; }; const manager = new EventManager([domEventPlugin], new FakeNgZone()); @@ -77,7 +78,7 @@ import {el} from '../../../testing/src/browser_util'; it('should add and remove global event listeners', () => { const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvent: any /** TODO #9100 */ = null; const handler = (e: any /** TODO #9100 */) => { receivedEvent = e; }; const manager = new EventManager([domEventPlugin], new FakeNgZone()); @@ -97,7 +98,7 @@ import {el} from '../../../testing/src/browser_util'; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvent: any /** TODO #9100 */ = null; let receivedZone: any = null; const handler = (e: any /** TODO #9100 */) => { @@ -123,7 +124,7 @@ import {el} from '../../../testing/src/browser_util'; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvents: any[] /** TODO #9100 */ = []; let receivedZones: any[] = []; const handler1 = (e: any /** TODO #9100 */) => { @@ -158,7 +159,7 @@ import {el} from '../../../testing/src/browser_util'; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvents: any[] /** TODO #9100 */ = []; let receivedZones: any[] = []; const handler1 = (e: any /** TODO #9100 */) => { @@ -194,7 +195,7 @@ import {el} from '../../../testing/src/browser_util'; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvents: any[] /** TODO #9100 */ = []; let receivedZones: any[] = []; let remover1: any = null; @@ -230,7 +231,7 @@ import {el} from '../../../testing/src/browser_util'; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvents: any[] /** TODO #9100 */ = []; let receivedZones: any[] = []; const handler = (e: any /** TODO #9100 */) => { @@ -261,7 +262,7 @@ import {el} from '../../../testing/src/browser_util'; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('click'); + const dispatchedEvent = createMouseEvent('click'); let receivedEvents: any[] /** TODO #9100 */ = []; let receivedZones: any[] = []; const handler1 = (e: any /** TODO #9100 */) => { @@ -300,7 +301,7 @@ import {el} from '../../../testing/src/browser_util'; const Zone = (window as any)['Zone']; const element = el('
'); getDOM().appendChild(doc.body, element); - const dispatchedEvent = getDOM().createMouseEvent('scroll'); + const dispatchedEvent = createMouseEvent('scroll'); let receivedEvent: any /** TODO #9100 */ = null; let receivedZone: any = null; const handler = (e: any /** TODO #9100 */) => { diff --git a/packages/platform-browser/testing/src/browser_util.ts b/packages/platform-browser/testing/src/browser_util.ts index 54e91cdcaa..489013e313 100644 --- a/packages/platform-browser/testing/src/browser_util.ts +++ b/packages/platform-browser/testing/src/browser_util.ts @@ -91,7 +91,15 @@ export class BrowserDetection { BrowserDetection.setup(); export function dispatchEvent(element: any, eventType: any): void { - getDOM().dispatchEvent(element, getDOM().createEvent(eventType)); + const evt: Event = getDOM().getDefaultDocument().createEvent('Event'); + evt.initEvent(eventType, true, true); + getDOM().dispatchEvent(element, evt); +} + +export function createMouseEvent(eventType: string): MouseEvent { + const evt: MouseEvent = getDOM().getDefaultDocument().createEvent('MouseEvent'); + evt.initEvent(eventType, true, true); + return evt; } export function el(html: string): HTMLElement { diff --git a/packages/platform-webworker/src/web_workers/worker/worker_adapter.ts b/packages/platform-webworker/src/web_workers/worker/worker_adapter.ts index 3a54ce5a7a..903dfacdb9 100644 --- a/packages/platform-webworker/src/web_workers/worker/worker_adapter.ts +++ b/packages/platform-webworker/src/web_workers/worker/worker_adapter.ts @@ -54,13 +54,8 @@ export class WorkerDomAdapter extends DomAdapter { parse(templateHtml: string) { throw 'not implemented'; } querySelector(el: any, selector: string): HTMLElement { throw 'not implemented'; } querySelectorAll(el: any, selector: string): any[] { throw 'not implemented'; } - on(el: any, evt: any, listener: any) { throw 'not implemented'; } onAndCancel(el: any, evt: any, listener: any): Function { throw 'not implemented'; } dispatchEvent(el: any, evt: any) { throw 'not implemented'; } - createMouseEvent(eventType: any): any { throw 'not implemented'; } - createEvent(eventType: string): any { throw 'not implemented'; } - preventDefault(evt: any) { throw 'not implemented'; } - isPrevented(evt: any): boolean { throw 'not implemented'; } nextSibling(el: any): Node { throw 'not implemented'; } parentElement(el: any): Node { throw 'not implemented'; } clearNodes(el: any) { throw 'not implemented'; }