Web Inspector: Provide a flag for technology preview builds
https://bugs.webkit.org/show_bug.cgi?id=203164
<rdar://problem/56202164>
Reviewed by Devin Rousso.
Source/WebCore:
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::isExperimentalBuild):
* inspector/InspectorFrontendHost.h:
* inspector/InspectorFrontendHost.idl:
Source/WebInspectorUI:
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Test/Test.js:
* UserInterface/Base/Main.js:
* UserInterface/Base/Setting.js:
(WI.isTechnologyPreviewBuild):
(WI.arePreviewFeaturesEnabled):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
In non-TechnologyPreview builds, if there are Preview Features provide a
setting switch that can be used to match the TechnologyPreview features.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251379 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 4bea45e..ba2b679 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,16 @@
+2019-10-21 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Provide a flag for technology preview builds
+ https://bugs.webkit.org/show_bug.cgi?id=203164
+ <rdar://problem/56202164>
+
+ Reviewed by Devin Rousso.
+
+ * inspector/InspectorFrontendHost.cpp:
+ (WebCore::InspectorFrontendHost::isExperimentalBuild):
+ * inspector/InspectorFrontendHost.h:
+ * inspector/InspectorFrontendHost.idl:
+
2019-10-21 Said Abou-Hallawa <sabouhallawa@apple.com>
[SVG2]: Add 'auto' behavior to the 'width' and 'height' properties of the SVG <image> element
diff --git a/Source/WebCore/inspector/InspectorFrontendHost.cpp b/Source/WebCore/inspector/InspectorFrontendHost.cpp
index 5a93f3b..eeb41d7 100644
--- a/Source/WebCore/inspector/InspectorFrontendHost.cpp
+++ b/Source/WebCore/inspector/InspectorFrontendHost.cpp
@@ -446,6 +446,15 @@
return m_client && m_client->isUnderTest();
}
+bool InspectorFrontendHost::isExperimentalBuild()
+{
+#if ENABLE(EXPERIMENTAL_FEATURES)
+ return true;
+#else
+ return false;
+#endif
+}
+
void InspectorFrontendHost::unbufferedLog(const String& message)
{
// This is used only for debugging inspector tests.
diff --git a/Source/WebCore/inspector/InspectorFrontendHost.h b/Source/WebCore/inspector/InspectorFrontendHost.h
index 56b89df..0aa3183 100644
--- a/Source/WebCore/inspector/InspectorFrontendHost.h
+++ b/Source/WebCore/inspector/InspectorFrontendHost.h
@@ -111,6 +111,7 @@
void dispatchEventAsContextMenuEvent(Event&);
bool isUnderTest();
+ bool isExperimentalBuild();
void unbufferedLog(const String& message);
void beep();
diff --git a/Source/WebCore/inspector/InspectorFrontendHost.idl b/Source/WebCore/inspector/InspectorFrontendHost.idl
index 90b3afc..55e55f0 100644
--- a/Source/WebCore/inspector/InspectorFrontendHost.idl
+++ b/Source/WebCore/inspector/InspectorFrontendHost.idl
@@ -83,6 +83,7 @@
void unbufferedLog(DOMString message);
boolean isUnderTest();
+ boolean isExperimentalBuild();
void beep();
void inspectInspector();
diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog
index 09510e4..50c8ba6 100644
--- a/Source/WebInspectorUI/ChangeLog
+++ b/Source/WebInspectorUI/ChangeLog
@@ -1,3 +1,23 @@
+2019-10-21 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Provide a flag for technology preview builds
+ https://bugs.webkit.org/show_bug.cgi?id=203164
+ <rdar://problem/56202164>
+
+ Reviewed by Devin Rousso.
+
+ * Localizations/en.lproj/localizedStrings.js:
+
+ * UserInterface/Test/Test.js:
+ * UserInterface/Base/Main.js:
+ * UserInterface/Base/Setting.js:
+ (WI.isTechnologyPreviewBuild):
+ (WI.arePreviewFeaturesEnabled):
+ * UserInterface/Views/SettingsTabContentView.js:
+ (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
+ In non-TechnologyPreview builds, if there are Preview Features provide a
+ setting switch that can be used to match the TechnologyPreview features.
+
2019-10-21 Devin Rousso <drousso@apple.com>
Web Inspector: replace all uses of `window.*Agent` with a target-specific call
diff --git a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
index 5a47303..57256b5 100644
--- a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
+++ b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
@@ -441,6 +441,7 @@
localizedStrings["Enable Layers Tab"] = "Enable Layers Tab";
localizedStrings["Enable Local Override"] = "Enable Local Override";
localizedStrings["Enable New Tab Bar"] = "Enable New Tab Bar";
+localizedStrings["Enable Preview Features"] = "Enable Preview Features";
localizedStrings["Enable Program"] = "Enable Program";
localizedStrings["Enable Rule"] = "Enable Rule";
localizedStrings["Enable all breakpoints (%s)"] = "Enable all breakpoints (%s)";
@@ -1063,6 +1064,7 @@
localizedStrings["Specificity: (%d, %d, %d)"] = "Specificity: (%d, %d, %d)";
localizedStrings["Specificity: No value for selected element"] = "Specificity: No value for selected element";
localizedStrings["Spelling"] = "Spelling";
+localizedStrings["Staging:"] = "Staging:";
localizedStrings["Stalled"] = "Stalled";
localizedStrings["Start"] = "Start";
localizedStrings["Start Time"] = "Start Time";
diff --git a/Source/WebInspectorUI/UserInterface/Base/Main.js b/Source/WebInspectorUI/UserInterface/Base/Main.js
index 4070fbe..b8b3a7a 100644
--- a/Source/WebInspectorUI/UserInterface/Base/Main.js
+++ b/Source/WebInspectorUI/UserInterface/Base/Main.js
@@ -3235,6 +3235,7 @@
};
WI.isEngineeringBuild = false;
+WI.isExperimentalBuild = InspectorFrontendHost.isExperimentalBuild();
// OpenResourceDialog delegate
diff --git a/Source/WebInspectorUI/UserInterface/Base/Setting.js b/Source/WebInspectorUI/UserInterface/Base/Setting.js
index b3874ee..7831a6b 100644
--- a/Source/WebInspectorUI/UserInterface/Base/Setting.js
+++ b/Source/WebInspectorUI/UserInterface/Base/Setting.js
@@ -186,6 +186,7 @@
zoomFactor: new WI.Setting("zoom-factor", 1),
// Experimental
+ experimentalEnablePreviewFeatures: new WI.Setting("experimental-enable-preview-features", false),
experimentalEnableLayersTab: new WI.Setting("experimental-enable-layers-tab", false),
experimentalEnableNewTabBar: new WI.Setting("experimental-enable-new-tab-bar", false),
experimentalEnableStylesIcons: new WI.Setting("experimental-styles-icons", false),
@@ -211,3 +212,21 @@
debugEnableUncaughtExceptionReporter: new WI.Setting("debug-enable-uncaught-exception-reporter", true),
debugLayoutDirection: new WI.Setting("debug-layout-direction-override", "system"),
};
+
+WI.previewFeatures = [];
+
+WI.isTechnologyPreviewBuild = function()
+{
+ return WI.isExperimentalBuild && !WI.isEngineeringBuild;
+};
+
+WI.arePreviewFeaturesEnabled = function()
+{
+ if (WI.isExperimentalBuild)
+ return true;
+
+ if (WI.settings.experimentalEnablePreviewFeatures.value)
+ return true;
+
+ return false;
+};
diff --git a/Source/WebInspectorUI/UserInterface/Test/Test.js b/Source/WebInspectorUI/UserInterface/Test/Test.js
index b318ddd..c234220 100644
--- a/Source/WebInspectorUI/UserInterface/Test/Test.js
+++ b/Source/WebInspectorUI/UserInterface/Test/Test.js
@@ -184,6 +184,9 @@
WI.isDebugUIEnabled = () => false;
+WI.isEngineeringBuild = false;
+WI.isExperimentalBuild = true;
+
WI.unlocalizedString = (string) => string;
WI.UIString = (string, key, comment) => string;
diff --git a/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js b/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
index 0c9f8d4..1a582fc 100644
--- a/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
+++ b/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
@@ -346,6 +346,14 @@
let initialValues = new Map;
+ // WebKit may by default enable certain features in a Technology Preview that are not enabled in trunk.
+ // Provide a switch that will make non-preview builds behave like an experimental build, for those preview features.
+ let hasPreviewFeatures = WI.previewFeatures.length > 0;
+ if (hasPreviewFeatures && (WI.isTechnologyPreviewBuild() || WI.isEngineeringBuild)) {
+ experimentalSettingsView.addSetting(WI.UIString("Staging:"), WI.settings.experimentalEnablePreviewFeatures, WI.UIString("Enable Preview Features"));
+ experimentalSettingsView.addSeparator();
+ }
+
if (InspectorBackend.hasDomain("LayerTree")) {
experimentalSettingsView.addSetting(WI.UIString("Layers:"), WI.settings.experimentalEnableLayersTab, WI.UIString("Enable Layers Tab"));
experimentalSettingsView.addSeparator();
@@ -381,6 +389,7 @@
});
}
+ listenForChange(WI.settings.experimentalEnablePreviewFeatures);
listenForChange(WI.settings.experimentalEnableLayersTab);
listenForChange(WI.settings.experimentalEnableNewTabBar);