From 457eb5d69cdc0c0b317bf64df00911674121c7a6 Mon Sep 17 00:00:00 2001 From: Tim Blasi Date: Wed, 26 Aug 2015 13:25:00 -0700 Subject: [PATCH] fix(WebWorker): Return boolean from `dispatchRenderEvent` Update web_worker `dispatchRenderEvent` to return a boolean, which [view.ts](https://github.com/angular/angular/blob/master/modules/angular2/src/core/render/dom/view/view.ts#L85) expects. --- modules/angular2/src/core/render/api.ts | 3 ++- modules/angular2/src/web_workers/ui/event_dispatcher.ts | 6 +++++- modules/angular2/test/core/render/dom/dom_testbed.ts | 2 +- .../test/web_workers/worker/event_dispatcher_spec.ts | 3 ++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/angular2/src/core/render/api.ts b/modules/angular2/src/core/render/api.ts index 6833085639..fe1693f41e 100644 --- a/modules/angular2/src/core/render/api.ts +++ b/modules/angular2/src/core/render/api.ts @@ -510,6 +510,7 @@ export interface RenderEventDispatcher { * Called when an event was triggered for a on-* attribute on an element. * @param {Map} locals Locals to be used to evaluate the * event expressions + * @return {boolean} False if `preventDefault` should be called on the DOM event. */ - dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map); + dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map): boolean; } diff --git a/modules/angular2/src/web_workers/ui/event_dispatcher.ts b/modules/angular2/src/web_workers/ui/event_dispatcher.ts index b6588ff668..a969192bc2 100644 --- a/modules/angular2/src/web_workers/ui/event_dispatcher.ts +++ b/modules/angular2/src/web_workers/ui/event_dispatcher.ts @@ -17,7 +17,7 @@ export class EventDispatcher implements RenderEventDispatcher { constructor(private _viewRef: RenderViewRef, private _sink: EventEmitter, private _serializer: Serializer) {} - dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map) { + dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map): boolean { var e = locals.get('$event'); var serializedEvent; // TODO (jteplitz602): support custom events #3350 @@ -106,5 +106,9 @@ export class EventDispatcher implements RenderEventDispatcher { "eventName": eventName, "locals": serializedLocals }); + + // TODO(kegluneq): Eventually, we want the user to indicate from the UI side whether the event + // should be canceled, but for now just call `preventDefault` on the original DOM event. + return false; } } diff --git a/modules/angular2/test/core/render/dom/dom_testbed.ts b/modules/angular2/test/core/render/dom/dom_testbed.ts index 2793f932a6..0130d1b69a 100644 --- a/modules/angular2/test/core/render/dom/dom_testbed.ts +++ b/modules/angular2/test/core/render/dom/dom_testbed.ts @@ -52,7 +52,7 @@ class LoggingEventDispatcher implements RenderEventDispatcher { constructor(log: List>) { this.log = log; } - dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map) { + dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map): boolean { this.log.push([elementIndex, eventName, locals]); return true; } diff --git a/modules/angular2/test/web_workers/worker/event_dispatcher_spec.ts b/modules/angular2/test/web_workers/worker/event_dispatcher_spec.ts index 1eab8de5ed..729efb04fa 100644 --- a/modules/angular2/test/web_workers/worker/event_dispatcher_spec.ts +++ b/modules/angular2/test/web_workers/worker/event_dispatcher_spec.ts @@ -69,7 +69,8 @@ export function main() { class SpyEventDispatcher implements RenderEventDispatcher { constructor(private _callback: Function) {} - dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map) { + dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map): boolean { this._callback(elementIndex, eventName, locals); + return false; } }