Skip to content

Commit

Permalink
Revert "feat(WebWorkers): Add WebWorker Todo Example. Add support for…
Browse files Browse the repository at this point in the history
… more DOM events."

This reverts commit d44827a.

This broke master due to a race condition in our presubmit queue.
  • Loading branch information
tbosch authored and Steve Mao committed Aug 3, 2015
1 parent 46ac902 commit f76022e
Show file tree
Hide file tree
Showing 33 changed files with 27 additions and 919 deletions.
41 changes: 8 additions & 33 deletions modules/angular2/src/web-workers/shared/serializer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ import {
RenderFragmentRef,
RenderElementRef,
ViewType,
ViewEncapsulation,
PropertyBindingType
ViewEncapsulation
} from "angular2/src/render/api";
import {WorkerElementRef} from 'angular2/src/web-workers/shared/api';
import {AST, ASTWithSource} from 'angular2/src/change_detection/change_detection';
Expand Down Expand Up @@ -58,13 +57,6 @@ export class Serializer {
viewEncapsulationMap[1] = ViewEncapsulation.NATIVE;
viewEncapsulationMap[2] = ViewEncapsulation.NONE;
this._enumRegistry.set(ViewEncapsulation, viewEncapsulationMap);

var propertyBindingTypeMap = new Map<int, any>();
propertyBindingTypeMap[0] = PropertyBindingType.PROPERTY;
propertyBindingTypeMap[1] = PropertyBindingType.ATTRIBUTE;
propertyBindingTypeMap[2] = PropertyBindingType.CLASS;
propertyBindingTypeMap[3] = PropertyBindingType.STYLE;
this._enumRegistry.set(PropertyBindingType, propertyBindingTypeMap);
}

serialize(obj: any, type: Type): Object {
Expand Down Expand Up @@ -101,8 +93,6 @@ export class Serializer {
return this._renderViewStore.serializeRenderFragmentRef(obj);
} else if (type == WorkerElementRef) {
return this._serializeWorkerElementRef(obj);
} else if (type == ElementPropertyBinding) {
return this._serializeElementPropertyBinding(obj);
} else if (type == EventBinding) {
return this._serializeEventBinding(obj);
} else {
Expand Down Expand Up @@ -147,8 +137,6 @@ export class Serializer {
return this._deserializeWorkerElementRef(map);
} else if (type == EventBinding) {
return this._deserializeEventBinding(map);
} else if (type == ElementPropertyBinding) {
return this._deserializeElementPropertyBinding(map);
} else {
throw new BaseException("No deserializer for " + type.toString());
}
Expand Down Expand Up @@ -177,7 +165,7 @@ export class Serializer {
if (isPresent(type)) {
var map: Map<string, any> = new Map();
StringMapWrapper.forEach(obj,
(val, key) => { map.set(key, this.deserialize(val, type, data)); });
(key, val) => { map.set(key, this.deserialize(val, type, data)); });
return map;
} else {
return MapWrapper.createFromStringMap(obj);
Expand All @@ -186,29 +174,13 @@ export class Serializer {

allocateRenderViews(fragmentCount: number) { this._renderViewStore.allocate(fragmentCount); }

private _serializeElementPropertyBinding(binding:
ElementPropertyBinding): StringMap<string, any> {
return {
'type': serializeEnum(binding.type),
'astWithSource': this.serialize(binding.astWithSource, ASTWithSource),
'property': binding.property,
'unit': binding.unit
};
}

private _deserializeElementPropertyBinding(map: StringMap<string, any>): ElementPropertyBinding {
var type = deserializeEnum(map['type'], this._enumRegistry.get(PropertyBindingType));
var ast = this.deserialize(map['astWithSource'], ASTWithSource, "binding");
return new ElementPropertyBinding(type, ast, map['property'], map['unit']);
}

private _serializeEventBinding(binding: EventBinding): StringMap<string, any> {
return {'fullName': binding.fullName, 'source': this.serialize(binding.source, ASTWithSource)};
}

private _deserializeEventBinding(map: StringMap<string, any>): EventBinding {
return new EventBinding(map['fullName'],
this.deserialize(map['source'], ASTWithSource, "action"));
this.deserialize(map['source'], ASTWithSource, "binding"));
}

private _serializeWorkerElementRef(elementRef: RenderElementRef): StringMap<string, any> {
Expand Down Expand Up @@ -251,12 +223,15 @@ export class Serializer {
// TODO: make ASTs serializable
var ast: AST;
switch (data) {
case "action":
ast = this._parser.parseAction(obj['input'], obj['location']);
case "interpolation":
ast = this._parser.parseInterpolation(obj['input'], obj['location']);
break;
case "binding":
ast = this._parser.parseBinding(obj['input'], obj['location']);
break;
case "simpleBinding":
ast = this._parser.parseSimpleBinding(obj['input'], obj['location']);
break;
case "interpolation":
ast = this._parser.parseInterpolation(obj['input'], obj['location']);
break;
Expand Down
35 changes: 1 addition & 34 deletions modules/angular2/src/web-workers/ui/event_serializer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -52,45 +52,12 @@ final Map KEYBOARD_EVENT_PROPERTIES = {
#type: String
};

final Map EVENT_PROPERTIES = {
#bubbles: bool,
#cancelable: bool,
#defaultPrevented: bool,
#eventPhase: int,
#timeStamp: int,
#type: String
};

// List of all elements with HTML value attribute.
// Taken from: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
final Set<String> NODES_WITH_VALUE =
new Set<String>.from(["input", "select", "option", "button", "li", "meter", "progress", "param"]);

Map<String, dynamic> serializeGenericEvent(dynamic e) {
return serializeEvent(e, EVENT_PROPERTIES);
}

// TODO(jteplitz602): Allow users to specify the properties they need rather than always
// adding value #3374
Map<String, dynamic> serializeEventWithValue(dynamic e) {
var serializedEvent = serializeEvent(e, EVENT_PROPERTIES);
return addValue(e, serializedEvent);
}
Map<String, dynamic> serializeMouseEvent(dynamic e) {
return serializeEvent(e, MOUSE_EVENT_PROPERTIES);
}

Map<String, dynamic> serializeKeyboardEvent(dynamic e) {
var serializedEvent = serializeEvent(e, KEYBOARD_EVENT_PROPERTIES);
return addValue(e, serializedEvent);
}

// TODO(jteplitz602): #3374. See above.
Map<String, dynamic> addValue(dynamic e, Map<String, dynamic> serializedEvent) {
if (NODES_WITH_VALUE.contains(e.target.tagName.toLowerCase())){
serializedEvent['target'] = {'value': e.target.value};
}
return serializedEvent;
return serializeEvent(e, KEYBOARD_EVENT_PROPERTIES);
}

Map<String, dynamic> serializeEvent(dynamic e, Map<Symbol, Type> PROPERTIES) {
Expand Down
29 changes: 2 additions & 27 deletions modules/angular2/src/web-workers/ui/event_serializer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {StringMap, Set} from 'angular2/src/facade/collection';
import {StringMap} from 'angular2/src/facade/collection';

const MOUSE_EVENT_PROPERTIES = [
"altKey",
Expand Down Expand Up @@ -31,37 +31,12 @@ const KEYBOARD_EVENT_PROPERTIES = [
'which'
];

const EVENT_PROPERTIES = ['type', 'bubbles', 'cancelable'];

const NODES_WITH_VALUE =
new Set(["input", "select", "option", "button", "li", "meter", "progress", "param"]);

export function serializeGenericEvent(e: Event): StringMap<string, any> {
return serializeEvent(e, EVENT_PROPERTIES);
}

// TODO(jteplitz602): Allow users to specify the properties they need rather than always
// adding value #3374
export function serializeEventWithValue(e: Event): StringMap<string, any> {
var serializedEvent = serializeEvent(e, EVENT_PROPERTIES);
return addValue(e, serializedEvent);
}

export function serializeMouseEvent(e: MouseEvent): StringMap<string, any> {
return serializeEvent(e, MOUSE_EVENT_PROPERTIES);
}

export function serializeKeyboardEvent(e: KeyboardEvent): StringMap<string, any> {
var serializedEvent = serializeEvent(e, KEYBOARD_EVENT_PROPERTIES);
return addValue(e, serializedEvent);
}

// TODO(jteplitz602): #3374. See above.
function addValue(e: Event, serializedEvent: StringMap<string, any>): StringMap<string, any> {
if (NODES_WITH_VALUE.has((<HTMLElement>e.target).tagName.toLowerCase())) {
serializedEvent['target'] = {'value': (<HTMLInputElement>e.target).value};
}
return serializedEvent;
return serializeEvent(e, KEYBOARD_EVENT_PROPERTIES);
}

function serializeEvent(e: any, properties: List<string>): StringMap<string, any> {
Expand Down
61 changes: 2 additions & 59 deletions modules/angular2/src/web-workers/ui/impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ import {BrowserDomAdapter} from 'angular2/src/dom/browser_adapter';
import {DOM} from 'angular2/src/dom/dom_adapter';
import {
serializeMouseEvent,
serializeKeyboardEvent,
serializeGenericEvent,
serializeEventWithValue
serializeKeyboardEvent
} from 'angular2/src/web-workers/ui/event_serializer';

/**
Expand Down Expand Up @@ -238,8 +236,7 @@ class EventDispatcher implements RenderEventDispatcher {
dispatchRenderEvent(elementIndex: number, eventName: string, locals: Map<string, any>) {
var e = locals.get('$event');
var serializedEvent;
// TODO (jteplitz602): support custom events #3350
switch (e.type) {
switch (eventName) {
case "click":
case "mouseup":
case "mousedown":
Expand All @@ -258,60 +255,6 @@ class EventDispatcher implements RenderEventDispatcher {
case "keyup":
serializedEvent = serializeKeyboardEvent(e);
break;
case "input":
case "change":
case "blur":
serializedEvent = serializeEventWithValue(e);
break;
case "abort":
case "afterprint":
case "beforeprint":
case "cached":
case "canplay":
case "canplaythrough":
case "chargingchange":
case "chargingtimechange":
case "close":
case "dischargingtimechange":
case "DOMContentLoaded":
case "downloading":
case "durationchange":
case "emptied":
case "ended":
case "error":
case "fullscreenchange":
case "fullscreenerror":
case "invalid":
case "languagechange":
case "levelfchange":
case "loadeddata":
case "loadedmetadata":
case "obsolete":
case "offline":
case "online":
case "open":
case "orientatoinchange":
case "pause":
case "pointerlockchange":
case "pointerlockerror":
case "play":
case "playing":
case "ratechange":
case "readystatechange":
case "reset":
case "seeked":
case "seeking":
case "stalled":
case "submit":
case "success":
case "suspend":
case "timeupdate":
case "updateready":
case "visibilitychange":
case "volumechange":
case "waiting":
serializedEvent = serializeGenericEvent(e);
break;
default:
throw new BaseException(eventName + " not supported on WebWorkers");
}
Expand Down
2 changes: 0 additions & 2 deletions modules/angular2/src/web-workers/worker/broker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {Injectable} from "angular2/di";
import {Type} from "angular2/src/facade/lang";
import {RenderViewRef, RenderEventDispatcher} from 'angular2/src/render/api';
import {NgZone} from 'angular2/src/core/zone/ng_zone';
import {deserializeGenericEvent} from './event_deserializer';

@Injectable()
export class MessageBroker {
Expand Down Expand Up @@ -97,7 +96,6 @@ export class MessageBroker {
private _dispatchEvent(eventData: RenderEventData): void {
var dispatcher = this._eventDispatchRegistry.get(eventData.viewRef);
this._zone.run(() => {
eventData.locals['$event'] = deserializeGenericEvent(eventData.locals['$event']);
dispatcher.dispatchRenderEvent(eventData.elementIndex, eventData.eventName, eventData.locals);
});
}
Expand Down
69 changes: 0 additions & 69 deletions modules/angular2/src/web-workers/worker/event_deserializer.dart

This file was deleted.

8 changes: 0 additions & 8 deletions modules/angular2/src/web-workers/worker/event_deserializer.ts

This file was deleted.

2 changes: 1 addition & 1 deletion modules/angular2/src/web-workers/worker/renderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ export class WorkerRenderer implements Renderer {
*/
dehydrateView(viewRef: RenderViewRef) {
var fnArgs = [new FnArg(viewRef, RenderViewRef)];
var args = new UiArguments("renderer", "dehydrateView", fnArgs);
var args = new UiArguments("renderer", "deyhdrateView", fnArgs);
this._messageBroker.runOnUiThread(args, null);
}

Expand Down
3 changes: 1 addition & 2 deletions modules/angular2/test/web-workers/worker/broker_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ export function main() {
'value': {
'viewRef': viewRef.serialize(),
'elementIndex': elementIndex,
'eventName': eventName,
'locals': {'$event': {'target': {value: null}}}
'eventName': eventName
}
}
});
Expand Down

This file was deleted.

5 changes: 0 additions & 5 deletions modules/examples/e2e_test/web_workers/todo/todo_spec.dart

This file was deleted.

0 comments on commit f76022e

Please sign in to comment.