- 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;