From 8485ef9230919074b4ebcc85774400263d0ded34 Mon Sep 17 00:00:00 2001 From: Jason Teplitz Date: Fri, 11 Sep 2015 10:31:14 -0700 Subject: [PATCH] fix(WebWorker): Don't send messages when the buffer is empty Closes #4138 --- .../src/web_workers/shared/generic_message_bus.dart | 6 ++++-- .../angular2/src/web_workers/shared/post_message_bus.ts | 7 ++++--- modules/angular2/src/web_workers/worker/application.ts | 6 ++---- modules/playground/src/web_workers/images/loader.js | 1 - modules/playground/src/web_workers/kitchen_sink/loader.js | 1 - modules/playground/src/web_workers/todo/loader.js | 1 - 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/modules/angular2/src/web_workers/shared/generic_message_bus.dart b/modules/angular2/src/web_workers/shared/generic_message_bus.dart index 135ea50089..3584f4407e 100644 --- a/modules/angular2/src/web_workers/shared/generic_message_bus.dart +++ b/modules/angular2/src/web_workers/shared/generic_message_bus.dart @@ -46,8 +46,10 @@ abstract class GenericMessageBusSink implements MessageBusSink { void attachToZone(NgZone zone) { _zone = zone; _zone.overrideOnEventDone(() { - sendMessages(_messageBuffer); - _messageBuffer.clear(); + if (_messageBuffer.length > 0) { + sendMessages(_messageBuffer); + _messageBuffer.clear(); + } }, false); } diff --git a/modules/angular2/src/web_workers/shared/post_message_bus.ts b/modules/angular2/src/web_workers/shared/post_message_bus.ts index 1c2c404b70..0d528d2a30 100644 --- a/modules/angular2/src/web_workers/shared/post_message_bus.ts +++ b/modules/angular2/src/web_workers/shared/post_message_bus.ts @@ -73,9 +73,10 @@ export class PostMessageBusSink implements MessageBusSink { } private _handleOnEventDone() { - // TODO: Send all buffered messages in one postMessage call - this._sendMessages(this._messageBuffer); - this._messageBuffer = []; + if (this._messageBuffer.length > 0) { + this._sendMessages(this._messageBuffer); + this._messageBuffer = []; + } } private _sendMessages(messages: Array) { this._postMessageTarget.postMessage(messages); } diff --git a/modules/angular2/src/web_workers/worker/application.ts b/modules/angular2/src/web_workers/worker/application.ts index 99e5ecf94b..e836a97957 100644 --- a/modules/angular2/src/web_workers/worker/application.ts +++ b/modules/angular2/src/web_workers/worker/application.ts @@ -32,10 +32,8 @@ export function bootstrapWebWorker( componentInjectableProviders: Array = null): Promise { Parse5DomAdapter.makeCurrent(); var sink = new PostMessageBusSink({ - postMessage: (message: any, transferrables?:[ArrayBuffer]) => { - console.log("Sending", message); - _postMessage(message, transferrables); - } + postMessage: + (message: any, transferrables?:[ArrayBuffer]) => { _postMessage(message, transferrables); } }); var source = new PostMessageBusSource(); var bus = new PostMessageBus(sink, source); diff --git a/modules/playground/src/web_workers/images/loader.js b/modules/playground/src/web_workers/images/loader.js index 3010c68fce..2d760938e0 100644 --- a/modules/playground/src/web_workers/images/loader.js +++ b/modules/playground/src/web_workers/images/loader.js @@ -10,7 +10,6 @@ System.config({ System.import("playground/src/web_workers/images/background_index") .then( function(m) { - console.log("running main"); try { m.main(); } catch (e) { diff --git a/modules/playground/src/web_workers/kitchen_sink/loader.js b/modules/playground/src/web_workers/kitchen_sink/loader.js index d6eaefcbb9..b910440723 100644 --- a/modules/playground/src/web_workers/kitchen_sink/loader.js +++ b/modules/playground/src/web_workers/kitchen_sink/loader.js @@ -8,7 +8,6 @@ System.config({ System.import("playground/src/web_workers/kitchen_sink/background_index") .then( function(m) { - console.log("running main"); try { m.main(); } catch (e) { diff --git a/modules/playground/src/web_workers/todo/loader.js b/modules/playground/src/web_workers/todo/loader.js index 6c62089a1e..26947faa50 100644 --- a/modules/playground/src/web_workers/todo/loader.js +++ b/modules/playground/src/web_workers/todo/loader.js @@ -8,7 +8,6 @@ System.config({ System.import("playground/src/web_workers/todo/background_index") .then( function(m) { - console.log("running main"); try { m.main(); } catch (e) {