From c2a38c05aa898a872b82e57a2183bcd2d47c9da9 Mon Sep 17 00:00:00 2001 From: Jason Teplitz Date: Fri, 22 Jan 2016 14:10:20 -0800 Subject: [PATCH] fix(WebWorkers): Add support for transitionend events. Closes #6649 --- modules/angular2/src/web_workers/ui/event_dispatcher.ts | 6 +++++- modules/angular2/src/web_workers/ui/event_serializer.dart | 8 ++++++++ modules/angular2/src/web_workers/ui/event_serializer.ts | 7 +++++++ .../src/web_workers/worker/event_deserializer.dart | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/angular2/src/web_workers/ui/event_dispatcher.ts b/modules/angular2/src/web_workers/ui/event_dispatcher.ts index e31657785f..194036869c 100644 --- a/modules/angular2/src/web_workers/ui/event_dispatcher.ts +++ b/modules/angular2/src/web_workers/ui/event_dispatcher.ts @@ -3,7 +3,8 @@ import { serializeMouseEvent, serializeKeyboardEvent, serializeGenericEvent, - serializeEventWithTarget + serializeEventWithTarget, + serializeTransitionEvent } from 'angular2/src/web_workers/ui/event_serializer'; import {BaseException, WrappedException} from 'angular2/src/facade/exceptions'; import {StringMapWrapper} from 'angular2/src/facade/collection'; @@ -89,6 +90,9 @@ export class EventDispatcher { case "waiting": serializedEvent = serializeGenericEvent(event); break; + case "transitionend": + serializedEvent = serializeTransitionEvent(event); + break; default: throw new BaseException(eventName + " not supported on WebWorkers"); } diff --git a/modules/angular2/src/web_workers/ui/event_serializer.dart b/modules/angular2/src/web_workers/ui/event_serializer.dart index 3ecbc74269..88a2394917 100644 --- a/modules/angular2/src/web_workers/ui/event_serializer.dart +++ b/modules/angular2/src/web_workers/ui/event_serializer.dart @@ -86,6 +86,14 @@ Map serializeKeyboardEvent(dynamic e) { return serialized; } +Map serializeTransitionEvent(dynamic e) { + var serialized = serializeGenericEvent(e); + serialized['propertyName'] = e.propertyName; + serialized['elapsedTime'] = e.elapsedTime; + serialized['pseudoElement'] = e.pseudoElement; + return addTarget(e, serialized); +} + // TODO(jteplitz602): #3374. See above. Map addTarget( dynamic e, Map serializedEvent) { diff --git a/modules/angular2/src/web_workers/ui/event_serializer.ts b/modules/angular2/src/web_workers/ui/event_serializer.ts index 13beac3162..7fb743dc8a 100644 --- a/modules/angular2/src/web_workers/ui/event_serializer.ts +++ b/modules/angular2/src/web_workers/ui/event_serializer.ts @@ -32,6 +32,8 @@ const KEYBOARD_EVENT_PROPERTIES = [ 'which' ]; +const TRANSITION_EVENT_PROPERTIES = ['propertyName', 'elapsedTime', 'pseudoElement']; + const EVENT_PROPERTIES = ['type', 'bubbles', 'cancelable']; const NODES_WITH_VALUE = @@ -57,6 +59,11 @@ export function serializeKeyboardEvent(e: KeyboardEvent): {[key: string]: any} { return addTarget(e, serializedEvent); } +export function serializeTransitionEvent(e: TransitionEvent): {[key: string]: any} { + var serializedEvent = serializeEvent(e, TRANSITION_EVENT_PROPERTIES); + return addTarget(e, serializedEvent); +} + // TODO(jteplitz602): #3374. See above. function addTarget(e: Event, serializedEvent: {[key: string]: any}): {[key: string]: any} { if (NODES_WITH_VALUE.has((e.target).tagName.toLowerCase())) { diff --git a/modules/angular2/src/web_workers/worker/event_deserializer.dart b/modules/angular2/src/web_workers/worker/event_deserializer.dart index 9e3db72fb7..0941208b8a 100644 --- a/modules/angular2/src/web_workers/worker/event_deserializer.dart +++ b/modules/angular2/src/web_workers/worker/event_deserializer.dart @@ -31,6 +31,10 @@ class GenericEvent { Point get page => _getPoint('page'); Point get screen => _getPoint('screen'); + String get propertyName => properties['propertyName']; + num get elapsedTime => properties['elapsedTime']; + String get pseudoElement => properties['pseudoElement']; + EventTarget get target { if (_target != null) { return _target;