fix(WebWorker): WebWorkerRenderer removes views after they're destroyed

closes #3240

Closes #3894
This commit is contained in:
Jason Teplitz
2015-08-27 10:39:39 -07:00
parent fa2c6791b4
commit 9619636ba7
5 changed files with 62 additions and 19 deletions

View File

@ -29,8 +29,7 @@ export class MessageBasedRenderer {
bind(this._createRootHostView, this));
broker.registerMethod("createView", [RenderProtoViewRef, PRIMITIVE, PRIMITIVE],
bind(this._createView, this));
broker.registerMethod("destroyView", [RenderViewRef],
bind(this._renderer.destroyView, this._renderer));
broker.registerMethod("destroyView", [RenderViewRef], bind(this._destroyView, this));
broker.registerMethod("attachFragmentAfterFragment", [RenderFragmentRef, RenderFragmentRef],
bind(this._renderer.attachFragmentAfterFragment, this._renderer));
broker.registerMethod("attachFragmentAfterElement", [WebWorkerElementRef, RenderFragmentRef],
@ -57,6 +56,11 @@ export class MessageBasedRenderer {
bind(this._setEventDispatcher, this));
}
private _destroyView(viewRef: RenderViewRef): void {
this._renderer.destroyView(viewRef);
this._renderViewWithFragmentsStore.remove(viewRef);
}
private _createRootHostView(ref: RenderProtoViewRef, fragmentCount: number, selector: string,
startIndex: number) {
var renderViewWithFragments = this._renderer.createRootHostView(ref, fragmentCount, selector);