Title: [284958] trunk/Source/WebInspectorUI
- Revision
- 284958
- Author
- [email protected]
- Date
- 2021-10-27 14:23:40 -0700 (Wed, 27 Oct 2021)
Log Message
Web Inspector: extension iframes leak when disabling an extension
https://bugs.webkit.org/show_bug.cgi?id=232049
Reviewed by Timothy Hatcher.
Since shouldNotRemoveFromDOMWhenHidden() is true, the <iframe> will not
be detached and unload its document in the normal tab-closing code path.
Add a `dispose()` method for cleaning up the tab when its extension is
unregistered.
* UserInterface/Controllers/WebInspectorExtensionController.js:
(WI.WebInspectorExtensionController.prototype.unregisterExtension):
* UserInterface/Views/WebInspectorExtensionTabContentView.js:
(WI.WebInspectorExtensionTabContentView.prototype.dispose):
Modified Paths
Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (284957 => 284958)
--- trunk/Source/WebInspectorUI/ChangeLog 2021-10-27 21:06:24 UTC (rev 284957)
+++ trunk/Source/WebInspectorUI/ChangeLog 2021-10-27 21:23:40 UTC (rev 284958)
@@ -1,3 +1,20 @@
+2021-10-27 BJ Burg <[email protected]>
+
+ Web Inspector: extension iframes leak when disabling an extension
+ https://bugs.webkit.org/show_bug.cgi?id=232049
+
+ Reviewed by Timothy Hatcher.
+
+ Since shouldNotRemoveFromDOMWhenHidden() is true, the <iframe> will not
+ be detached and unload its document in the normal tab-closing code path.
+ Add a `dispose()` method for cleaning up the tab when its extension is
+ unregistered.
+
+ * UserInterface/Controllers/WebInspectorExtensionController.js:
+ (WI.WebInspectorExtensionController.prototype.unregisterExtension):
+ * UserInterface/Views/WebInspectorExtensionTabContentView.js:
+ (WI.WebInspectorExtensionTabContentView.prototype.dispose):
+
2021-10-21 Devin Rousso <[email protected]>
[css-values-4] Support small (sv*), large (lv*) and dynamic (dv*) viewport units
Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js (284957 => 284958)
--- trunk/Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js 2021-10-27 21:06:24 UTC (rev 284957)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js 2021-10-27 21:23:40 UTC (rev 284958)
@@ -68,7 +68,10 @@
let extensionTabIDsToRemove = this._tabIDsForExtensionIDMap.take(extensionID) || [];
for (let extensionTabID of extensionTabIDsToRemove) {
let tabContentView = this._extensionTabContentViewForExtensionTabIDMap.take(extensionTabID);
+
+ // Ensure that the iframe is actually detached and does not leak.
WI.tabBrowser.closeTabForContentView(tabContentView, {suppressAnimations: true});
+ tabContentView.dispose();
}
this.dispatchEventToListeners(WI.WebInspectorExtensionController.Event.ExtensionRemoved, {extension});
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js (284957 => 284958)
--- trunk/Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js 2021-10-27 21:06:24 UTC (rev 284957)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js 2021-10-27 21:23:40 UTC (rev 284958)
@@ -87,6 +87,11 @@
super.detached();
}
+ dispose()
+ {
+ this.element?.remove();
+ }
+
tabInfo()
{
return this._tabInfo;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes