Title: [103714] trunk/Source/WebCore
Revision
103714
Author
[email protected]
Date
2011-12-27 10:23:08 -0800 (Tue, 27 Dec 2011)

Log Message

Web Inspector: Introduce support for experimental settings.
https://bugs.webkit.org/show_bug.cgi?id=75250

Reviewed by Pavel Feldman.

* English.lproj/localizedStrings.js:
* inspector/front-end/ScriptsPanel.js:
* inspector/front-end/Settings.js:
(WebInspector.ExperimentsSettings):
(WebInspector.ExperimentsSettings.prototype.get experiments):
(WebInspector.ExperimentsSettings.prototype.get experimentsEnabled):
(WebInspector.ExperimentsSettings.prototype._createExperiment):
(WebInspector.ExperimentsSettings.prototype.set _cleanUpSetting.get var):
(WebInspector.ExperimentsSettings.prototype.set _cleanUpSetting):
(set WebInspector.Experiment):
(WebInspector.Experiment.prototype.get name):
(WebInspector.Experiment.prototype.get title):
(WebInspector.Experiment.prototype.isEnabled):
(WebInspector.Experiment.prototype.setEnabled):
(set WebInspector):
* inspector/front-end/SettingsScreen.js:
(WebInspector.SettingsScreen):
(WebInspector.SettingsScreen.prototype._createExperimentsWarningSubsection):
(WebInspector.SettingsScreen.prototype._createExperimentCheckbox.listener):
(WebInspector.SettingsScreen.prototype._createExperimentCheckbox):
* inspector/front-end/helpScreen.css:
(.settings-experiments-warning-subsection-warning):
(.settings-experiments-warning-subsection-message):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (103713 => 103714)


--- trunk/Source/WebCore/ChangeLog	2011-12-27 17:47:38 UTC (rev 103713)
+++ trunk/Source/WebCore/ChangeLog	2011-12-27 18:23:08 UTC (rev 103714)
@@ -1,3 +1,34 @@
+2011-12-27  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Introduce support for experimental settings.
+        https://bugs.webkit.org/show_bug.cgi?id=75250
+
+        Reviewed by Pavel Feldman.
+
+        * English.lproj/localizedStrings.js:
+        * inspector/front-end/ScriptsPanel.js:
+        * inspector/front-end/Settings.js:
+        (WebInspector.ExperimentsSettings):
+        (WebInspector.ExperimentsSettings.prototype.get experiments):
+        (WebInspector.ExperimentsSettings.prototype.get experimentsEnabled):
+        (WebInspector.ExperimentsSettings.prototype._createExperiment):
+        (WebInspector.ExperimentsSettings.prototype.set _cleanUpSetting.get var):
+        (WebInspector.ExperimentsSettings.prototype.set _cleanUpSetting):
+        (set WebInspector.Experiment):
+        (WebInspector.Experiment.prototype.get name):
+        (WebInspector.Experiment.prototype.get title):
+        (WebInspector.Experiment.prototype.isEnabled):
+        (WebInspector.Experiment.prototype.setEnabled):
+        (set WebInspector):
+        * inspector/front-end/SettingsScreen.js:
+        (WebInspector.SettingsScreen):
+        (WebInspector.SettingsScreen.prototype._createExperimentsWarningSubsection):
+        (WebInspector.SettingsScreen.prototype._createExperimentCheckbox.listener):
+        (WebInspector.SettingsScreen.prototype._createExperimentCheckbox):
+        * inspector/front-end/helpScreen.css:
+        (.settings-experiments-warning-subsection-warning):
+        (.settings-experiments-warning-subsection-message):
+
 2011-12-27  Alexander Pavlov  <[email protected]>
 
         Web Inspector: exception when scrolling in _javascript_Outline dialog with empty query

Modified: trunk/Source/WebCore/English.lproj/localizedStrings.js


(Binary files differ)

Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (103713 => 103714)


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-12-27 17:47:38 UTC (rev 103713)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-12-27 18:23:08 UTC (rev 103714)
@@ -59,7 +59,7 @@
     this.debugSidebarResizeWidgetElement.id = "scripts-debug-sidebar-resizer-widget";
     this.splitView.installResizer(this.debugSidebarResizeWidgetElement);
 
-    if (Preferences.useScriptNavigator) {
+    if (WebInspector.experimentsSettings.useScriptsNavigator.isEnabled()) {
         const initialNavigatorWidth = 225;
         const minimalViewsContainerWidthPercent = 50;
         this.editorView = new WebInspector.SplitView(WebInspector.SplitView.SidebarPosition.Left, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth);

Modified: trunk/Source/WebCore/inspector/front-end/Settings.js (103713 => 103714)


--- trunk/Source/WebCore/inspector/front-end/Settings.js	2011-12-27 17:47:38 UTC (rev 103713)
+++ trunk/Source/WebCore/inspector/front-end/Settings.js	2011-12-27 18:23:08 UTC (rev 103714)
@@ -43,8 +43,6 @@
     exposeDisableCache: false,
     exposeWorkersInspection: false,
     applicationTitle: "Web Inspector - %s",
-    // FIXME: Remove once navigator is production-ready.
-    useScriptNavigator: false,
     showHeapSnapshotObjectsHiddenProperties: false
 }
 
@@ -156,4 +154,133 @@
     }
 }
 
+/**
+ * @constructor
+ */
+WebInspector.ExperimentsSettings = function()
+{
+    this._setting = WebInspector.settings.createSetting("experiments", {});
+    this._experiments = [];
+    
+    // Add currently running experiments here.
+    // FIXME: Move out from experiments once navigator is production-ready.
+    this.useScriptsNavigator = this._createExperiment("useScriptsNavigator", WebInspector.UIString("Use file navigator and tabbed editor container in scripts panel"));
+    
+    this._cleanUpSetting();
+}
+
+WebInspector.ExperimentsSettings.prototype = {
+    /**
+     * @type {Array.<WebInspector.Experiment>}
+     */
+    get experiments()
+    {
+        return this._experiments.slice();
+    },
+    
+    /**
+     * @type {boolean}
+     */
+    get experimentsEnabled()
+    {
+        return "experiments" in WebInspector.queryParamsObject;
+    },
+    
+    /**
+     * @param {string} experimentName
+     * @param {string} experimentTitle
+     * @return {WebInspector.Experiment}
+     */
+    _createExperiment: function(experimentName, experimentTitle)
+    {
+        var experiment = new WebInspector.Experiment(this, experimentName, experimentTitle);
+        this._experiments.push(experiment);
+        return experiment;
+    },
+    
+    /**
+     * @param {string} experimentName
+     * @return {boolean}
+     */
+    isEnabled: function(experimentName)
+    {
+        if (!this.experimentsEnabled)
+            return false;
+        
+        var experimentsSetting = this._setting.get();
+        return experimentsSetting[experimentName];
+    },
+    
+    /**
+     * @param {string} experimentName
+     * @param {boolean} enabled
+     */
+    setEnabled: function(experimentName, enabled)
+    {
+        var experimentsSetting = this._setting.get();
+        experimentsSetting[experimentName] = enabled;
+        this._setting.set(experimentsSetting);
+    },
+    
+    _cleanUpSetting: function()
+    {
+        var experimentsSetting = this._setting.get();
+        var cleanedUpExperimentSetting = {};
+        for (var i = 0; i < this._experiments.length; ++i) {
+            var experimentName = this._experiments[i].name;
+            if (experimentsSetting[experimentName])
+                cleanedUpExperimentSetting[experimentName] = true;
+        }
+        this._setting.set(cleanedUpExperimentSetting);
+    }
+}
+
+/**
+ * @constructor
+ * @param {WebInspector.ExperimentsSettings} experimentsSettings
+ * @param {string} name
+ * @param {string} title
+ */
+WebInspector.Experiment = function(experimentsSettings, name, title)
+{
+    this._name = name;
+    this._title = title;
+    this._experimentsSettings = experimentsSettings;
+}
+
+WebInspector.Experiment.prototype = {
+    /**
+     * @return {string}
+     */
+    get name()
+    {
+        return this._name;
+    },
+    
+    /**
+     * @return {string}
+     */
+    get title()
+    {
+        return this._title;
+    },
+    
+    /**
+     * @return {boolean}
+     */
+    isEnabled: function()
+    {
+        return this._experimentsSettings.isEnabled(this._name);
+    },
+    
+    /**
+     * @param {boolean} enabled
+     */
+    setEnabled: function(enabled)
+    {
+        return this._experimentsSettings.setEnabled(this._name, enabled);
+    }
+}
+
 WebInspector.settings = new WebInspector.Settings();
+WebInspector.experimentsSettings = new WebInspector.ExperimentsSettings();

Modified: trunk/Source/WebCore/inspector/front-end/SettingsScreen.js (103713 => 103714)


--- trunk/Source/WebCore/inspector/front-end/SettingsScreen.js	2011-12-27 17:47:38 UTC (rev 103713)
+++ trunk/Source/WebCore/inspector/front-end/SettingsScreen.js	2011-12-27 18:23:08 UTC (rev 103714)
@@ -79,6 +79,15 @@
         p = this._appendSection(WebInspector.UIString("Extensions"), true);
         p.appendChild(this._createCustomSetting(WebInspector.UIString("Open links in"), handlerSelector.element));
     }
+
+    var experiments = WebInspector.experimentsSettings.experiments;
+    if (WebInspector.experimentsSettings.experimentsEnabled && experiments.length) {
+        var experimentsSection = this._appendSection(WebInspector.UIString("Experiments"), true);
+        experimentsSection.appendChild(this._createExperimentsWarningSubsection());
+        for (var i = 0; i < experiments.length; ++i)
+            experimentsSection.appendChild(this._createExperimentCheckbox(experiments[i]));
+    }
+    
     var table = document.createElement("table");
     table.className = "help-table";
     var tr = document.createElement("tr");
@@ -105,6 +114,20 @@
         return p;
     },
 
+    /**
+     * @return {Element} element
+     */
+    _createExperimentsWarningSubsection: function()
+    {
+        var subsection = document.createElement("div");
+        var warning = subsection.createChild("span", "settings-experiments-warning-subsection-warning");
+        warning.textContent = WebInspector.UIString("WARNING:");
+        subsection.appendChild(document.createTextNode(" "));
+        var message = subsection.createChild("span", "settings-experiments-warning-subsection-message");
+        message.textContent = WebInspector.UIString("These experiments could be dangerous and may require restart.");
+        return subsection;
+    },
+
     _columnElement: function(right)
     {
         return right ? this._rightColumnElement : this._leftColumnElement;
@@ -130,6 +153,26 @@
         return p;
     },
 
+    _createExperimentCheckbox: function(experiment)
+    {
+        var input = document.createElement("input");
+        input.type = "checkbox";
+        input.name = experiment.name;
+        input.checked = experiment.isEnabled();
+        function listener()
+        {
+            experiment.setEnabled(input.checked);
+        }
+        input.addEventListener("click", listener, false);
+
+        var p = document.createElement("p");
+        var label = document.createElement("label");
+        label.appendChild(input);
+        label.appendChild(document.createTextNode(experiment.title));
+        p.appendChild(label);
+        return p;
+    },
+
     _createSelectSetting: function(name, options, setting)
     {
         var fieldsetElement = document.createElement("fieldset");

Modified: trunk/Source/WebCore/inspector/front-end/helpScreen.css (103713 => 103714)


--- trunk/Source/WebCore/inspector/front-end/helpScreen.css	2011-12-27 17:47:38 UTC (rev 103713)
+++ trunk/Source/WebCore/inspector/front-end/helpScreen.css	2011-12-27 18:23:08 UTC (rev 103714)
@@ -188,6 +188,15 @@
     color: yellow;
 }
 
+.settings-experiments-warning-subsection-warning {
+    color: rgb(200, 0, 0);
+}
+
+.settings-experiments-warning-subsection-message {
+    color: rgb(150, 150, 150);
+}
+
+
 .help-content input[type=checkbox] {
     height: 13px;
     width: 13px;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to