- Revision
- 283212
- Author
- [email protected]
- Date
- 2021-09-28 23:32:29 -0700 (Tue, 28 Sep 2021)
Log Message
Web Inspector: add settings option for 'Show Mock Web Extension Tab' in engineering builds
https://bugs.webkit.org/show_bug.cgi?id=230923
Reviewed by Devin Rousso.
This is an engineering-only facility to quickly check the behavior of
WebInspectorExtensionTabContentView (aka Web Extension Tabs). The behavior
of these tabs differs from other tabs, so it is important to make this easy to verify.
* UserInterface/Base/Setting.js: Add new setting.
* UserInterface/Debug/Bootstrap.js:
(updateMockWebExtensionTab):
(WI.runBootstrapOperations):
Call the InspectorFrontendAPI commands that would be called by WebInspectorUIExtensionController
to register an extension and create a tab for it.
* UserInterface/Debug/MockWebExtensionTab.html: Added.
This is adapted from InspectorExtension-basic-tab.html as used in TestWebKitAPI.
* UserInterface/Protocol/InspectorFrontendAPI.js: Fix a typo in the headerdoc
for createTabForExtension.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createEngineeringSettingsView):
Modified Paths
Added Paths
Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (283211 => 283212)
--- trunk/Source/WebInspectorUI/ChangeLog 2021-09-29 06:23:31 UTC (rev 283211)
+++ trunk/Source/WebInspectorUI/ChangeLog 2021-09-29 06:32:29 UTC (rev 283212)
@@ -1,5 +1,32 @@
2021-09-28 BJ Burg <[email protected]>
+ Web Inspector: add settings option for 'Show Mock Web Extension Tab' in engineering builds
+ https://bugs.webkit.org/show_bug.cgi?id=230923
+
+ Reviewed by Devin Rousso.
+
+ This is an engineering-only facility to quickly check the behavior of
+ WebInspectorExtensionTabContentView (aka Web Extension Tabs). The behavior
+ of these tabs differs from other tabs, so it is important to make this easy to verify.
+
+ * UserInterface/Base/Setting.js: Add new setting.
+ * UserInterface/Debug/Bootstrap.js:
+ (updateMockWebExtensionTab):
+ (WI.runBootstrapOperations):
+ Call the InspectorFrontendAPI commands that would be called by WebInspectorUIExtensionController
+ to register an extension and create a tab for it.
+
+ * UserInterface/Debug/MockWebExtensionTab.html: Added.
+ This is adapted from InspectorExtension-basic-tab.html as used in TestWebKitAPI.
+
+ * UserInterface/Protocol/InspectorFrontendAPI.js: Fix a typo in the headerdoc
+ for createTabForExtension.
+
+ * UserInterface/Views/SettingsTabContentView.js:
+ (WI.SettingsTabContentView.prototype._createEngineeringSettingsView):
+
+2021-09-28 BJ Burg <[email protected]>
+
[Cocoa] Add SPI to select a tab created by _WKInspectorExtension
https://bugs.webkit.org/show_bug.cgi?id=230580
<rdar://problem/83372851>
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Setting.js (283211 => 283212)
--- trunk/Source/WebInspectorUI/UserInterface/Base/Setting.js 2021-09-29 06:23:31 UTC (rev 283211)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Setting.js 2021-09-29 06:32:29 UTC (rev 283212)
@@ -245,6 +245,7 @@
engineeringShowInternalObjectsInHeapSnapshot: new WI.EngineeringSetting("engineering-show-internal-objects-in-heap-snapshot", false),
engineeringShowPrivateSymbolsInHeapSnapshot: new WI.EngineeringSetting("engineering-show-private-symbols-in-heap-snapshot", false),
engineeringAllowEditingUserAgentShadowTrees: new WI.EngineeringSetting("engineering-allow-editing-user-agent-shadow-trees", false),
+ engineeringShowMockWebExtensionTab: new WI.EngineeringSetting("engineering-show-mock-web-extension-tab", false),
// Debug
debugShowConsoleEvaluations: new WI.DebugSetting("debug-show-console-evaluations", false),
Modified: trunk/Source/WebInspectorUI/UserInterface/Debug/Bootstrap.js (283211 => 283212)
--- trunk/Source/WebInspectorUI/UserInterface/Debug/Bootstrap.js 2021-09-29 06:23:31 UTC (rev 283211)
+++ trunk/Source/WebInspectorUI/UserInterface/Debug/Bootstrap.js 2021-09-29 06:32:29 UTC (rev 283212)
@@ -139,6 +139,36 @@
WI.tabBar.needsLayout();
}
+ function updateMockWebExtensionTab() {
+ let mockData = {
+ extensionID: "1234567890ABCDEF",
+ displayName: WI.unlocalizedString("Mock Extension"),
+ tabName: WI.unlocalizedString("Mock"),
+ tabIconURL: "Images/Info.svg",
+ sourceURL: "Debug/MockWebExtensionTab.html",
+ };
+
+ // Simulates the steps taken by WebInspectorUIExtensionController to create an extension tab in WebInspectorUI.
+ if (!WI.settings.engineeringShowMockWebExtensionTab.value) {
+ InspectorFrontendAPI.unregisterExtension(mockData.extensionID);
+ return;
+ }
+
+ let error = InspectorFrontendAPI.registerExtension(mockData.extensionID, mockData.displayName);
+ if (error) {
+ WI.reportInternalError("Problem creating mock web extension: " + error);
+ return;
+ }
+
+ let result = InspectorFrontendAPI.createTabForExtension(mockData.extensionID, mockData.tabName, mockData.tabIconURL, mockData.sourceURL);
+ if (!result?.extensionTabID) {
+ WI.reportInternalError("Problem creating mock web extension tab: " + result);
+ return;
+ }
+ }
+ WI.settings.engineeringShowMockWebExtensionTab.addEventListener(WI.Setting.Event.Changed, updateMockWebExtensionTab, WI.settings.engineeringShowMockWebExtensionTab);
+ updateMockWebExtensionTab();
+
WI.showDebugUISetting.addEventListener(WI.Setting.Event.Changed, function(event) {
updateDebugUI();
}, groupNavigationItem);
Added: trunk/Source/WebInspectorUI/UserInterface/Debug/MockWebExtensionTab.html (0 => 283212)
--- trunk/Source/WebInspectorUI/UserInterface/Debug/MockWebExtensionTab.html (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Debug/MockWebExtensionTab.html 2021-09-29 06:32:29 UTC (rev 283212)
@@ -0,0 +1,24 @@
+<html>
+<head>
+<script>
+window._secretValue = {answer:42};
+
+window.getUniqueValue = function() {
+ if (!window._cachedUniqueValue)
+ window._cachedUniqueValue = Math.floor(Math.random() * 10e9);
+
+ return window._cachedUniqueValue;
+}
+
+function initialize() {
+ document.getElementById("uniqueValueField").innerText = window.getUniqueValue();
+};
+</script>
+<body _onload_="initialize()">
+<h1>This is a test extension.</h1>
+<p>In a normal extension, this area would show the extension's user interface.</p>
+<p>The unique value for this iframe's execution context is:
+ <span id="uniqueValueField">TBD</span>
+</p>
+</body>
+</html>
Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js (283211 => 283212)
--- trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js 2021-09-29 06:23:31 UTC (rev 283211)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js 2021-09-29 06:32:29 UTC (rev 283212)
@@ -211,7 +211,7 @@
},
// Returns a WI.WebInspectorExtension.ErrorCode if an error occurred, otherwise an object
- // with an 'inspectorExtensionID' key representing the tab identifier for the newly created tab.
+ // with an 'extensionTabID' key representing the tab identifier for the newly created tab.
createTabForExtension(extensionID, tabName, tabIconURL, sourceURL)
{
return WI.sharedApp.extensionController.createTabForExtension(extensionID, tabName, tabIconURL, sourceURL);
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js (283211 => 283212)
--- trunk/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js 2021-09-29 06:23:31 UTC (rev 283211)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js 2021-09-29 06:32:29 UTC (rev 283212)
@@ -465,6 +465,9 @@
heapSnapshotGroup.addSetting(WI.settings.engineeringShowInternalObjectsInHeapSnapshot, WI.unlocalizedString("Show Internal Objects"));
heapSnapshotGroup.addSetting(WI.settings.engineeringShowPrivateSymbolsInHeapSnapshot, WI.unlocalizedString("Show Private Symbols"));
+ let extensionsGroup = engineeringSettingsView.addGroup(WI.unlocalizedString("Web Extensions:"));
+ extensionsGroup.addSetting(WI.settings.engineeringShowMockWebExtensionTab, WI.unlocalizedString("Show Mock Web Extension tab"));
+
this.addSettingsView(engineeringSettingsView);
}