From 6e875b51ae4d07d9738f42eae18de49f9c013db4 Mon Sep 17 00:00:00 2001 From: Radeonares32 <56337258+Radeonares32@users.noreply.github.com> Date: Sat, 31 Aug 2024 23:24:27 +0300 Subject: [PATCH] Update JugglerFrameChild.jsm Signed-off-by: Radeonares32 <56337258+Radeonares32@users.noreply.github.com> --- .../juggler/content/JugglerFrameChild.jsm | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm b/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm index 47fcabbd81..73310dc110 100644 --- a/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm +++ b/browser_patches/firefox/juggler/content/JugglerFrameChild.jsm @@ -7,31 +7,31 @@ const Ci = Components.interfaces; const helper = new Helper(); let sameProcessInstanceNumber = 0; - const topBrowingContextToAgents = new Map(); class JugglerFrameChild extends JSWindowActorChild { constructor() { super(); - this._eventListeners = []; } handleEvent(aEvent) { const agents = this._agents(); - if (!agents) - return; - if (aEvent.type === 'DOMWillOpenModalDialog') { - agents.channel.pause(); - return; - } - if (aEvent.type === 'DOMModalDialogClosed') { - agents.channel.resumeSoon(); - return; - } - if (aEvent.target === this.document) { - agents.pageAgent.onWindowEvent(aEvent); - agents.frameTree.onWindowEvent(aEvent); + if (!agents) return; + + switch (aEvent.type) { + case 'DOMWillOpenModalDialog': + agents.channel.pause(); + break; + case 'DOMModalDialogClosed': + agents.channel.resumeSoon(); + break; + default: + if (aEvent.target === this.document) { + agents.pageAgent.onWindowEvent(aEvent); + agents.frameTree.onWindowEvent(aEvent); + } + break; } } @@ -46,41 +46,38 @@ class JugglerFrameChild extends JSWindowActorChild { this._agents()?.pageAgent.onWindowEvent(event); })); - if (this.document.documentURI.startsWith('moz-extension://')) - return; + if (this._isMozExtension()) return; - // Child frame events will be forwarded to related top-level agents. - if (this.browsingContext.parent) - return; - - let agents = topBrowingContextToAgents.get(this.browsingContext); - if (!agents) { - agents = initialize(this.browsingContext, this.docShell); - topBrowingContextToAgents.set(this.browsingContext, agents); + if (!this.browsingContext.parent) { + let agents = topBrowingContextToAgents.get(this.browsingContext); + if (!agents) { + agents = initialize(this.browsingContext, this.docShell); + topBrowingContextToAgents.set(this.browsingContext, agents); + } + agents.channel.bindToActor(this); + agents.actor = this; } - agents.channel.bindToActor(this); - agents.actor = this; } didDestroy() { helper.removeListeners(this._eventListeners); - if (this.browsingContext.parent) - return; + if (this.browsingContext.parent) return; const agents = topBrowingContextToAgents.get(this.browsingContext); - // The agents are already re-bound to a new actor. - if (agents.actor !== this) - return; + if (agents.actor !== this) return; topBrowingContextToAgents.delete(this.browsingContext); - agents.channel.resetTransport(); agents.pageAgent.dispose(); agents.frameTree.dispose(); } - receiveMessage() { } + _isMozExtension() { + return this.document.documentURI.startsWith('moz-extension://'); + } + + receiveMessage() {} } var EXPORTED_SYMBOLS = ['JugglerFrameChild'];