From 15e6943d5e950380d3fc9eb24f6a3161b460726a 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 --- .../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 | 1 - modules/examples/src/web_workers/images/loader.js | 1 - modules/examples/src/web_workers/message_broker/loader.js | 1 - modules/examples/src/web_workers/todo/loader.js | 1 - 6 files changed, 8 insertions(+), 9 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 135ea500896cb..3584f4407e611 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 63abc1b594e87..cc009c38db40d 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 e4764bd6a029f..7047932e77029 100644 --- a/modules/angular2/src/web_workers/worker/application.ts +++ b/modules/angular2/src/web_workers/worker/application.ts @@ -31,7 +31,6 @@ export function bootstrapWebWorker( Promise { var sink = new PostMessageBusSink({ postMessage: (message: any, transferrables?:[ArrayBuffer]) => { - console.log("Sending", message); _postMessage(message, transferrables); } }); diff --git a/modules/examples/src/web_workers/images/loader.js b/modules/examples/src/web_workers/images/loader.js index ff31c4d525c3a..2dcd2587e4eb0 100644 --- a/modules/examples/src/web_workers/images/loader.js +++ b/modules/examples/src/web_workers/images/loader.js @@ -13,7 +13,6 @@ System.config({ System.import("examples/src/web_workers/images/background_index") .then( function(m) { - console.log("running main"); try { m.main(); } catch (e) { diff --git a/modules/examples/src/web_workers/message_broker/loader.js b/modules/examples/src/web_workers/message_broker/loader.js index e86c1ba527db0..dda1d9c7c43b4 100644 --- a/modules/examples/src/web_workers/message_broker/loader.js +++ b/modules/examples/src/web_workers/message_broker/loader.js @@ -9,7 +9,6 @@ $SCRIPTS$ System.import("examples/src/web_workers/message_broker/background_index") .then( function(m) { - console.log("running main"); try { m.main(); } catch (e) { diff --git a/modules/examples/src/web_workers/todo/loader.js b/modules/examples/src/web_workers/todo/loader.js index d380c289b9599..022fdfbc4dbdf 100644 --- a/modules/examples/src/web_workers/todo/loader.js +++ b/modules/examples/src/web_workers/todo/loader.js @@ -11,7 +11,6 @@ System.config({ System.import("examples/src/web_workers/todo/background_index") .then( function(m) { - console.log("running main"); try { m.main(); } catch (e) {