y: defaultTabsFactory }) { super(); this.tabsFactory = tabsFactory; } actorCreated() { ASRouterParent.tabs = ASRouterParent.tabs || this.tabsFactory(); this.tabsFactory = null; this.tabId = ++ASRouterParent.nextTabId; ASRouterParent.tabs.registerActor(this); } didDestroy() { ASRouterParent.tabs.unregisterActor(this); if (ASRouterParent.tabs.size < 1) { ASRouterParent.tabs.destroy(); ASRouterParent.tabs = null; } } getTab() { return { id: this.tabId, browser: this.browsingContext.embedderElement, }; } receiveMessage({ name, data }) { return ASRouterParent.tabs.loadingMessageHandler.then(handler => { return handler.handleMessage(name, data, this.getTab()); }); } } PK