Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1181)

Unified Diff: Source/devtools/front_end/common/Settings.js

Issue 1088093002: Revert of DevTools: allow storing devtools preferences on the browser side. [blink] (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/devtools/front_end/common/Settings.js
diff --git a/Source/devtools/front_end/common/Settings.js b/Source/devtools/front_end/common/Settings.js
index 779d42ce826fc51bde077d5c3ae8f3649d51034b..c0ebb65c39fe3eee70b1cadfa77cb4b3d57bc1a2 100644
--- a/Source/devtools/front_end/common/Settings.js
+++ b/Source/devtools/front_end/common/Settings.js
@@ -30,11 +30,9 @@
/**
* @constructor
- * @param {!Object<string, string>} prefs
- */
-WebInspector.Settings = function(prefs)
+ */
+WebInspector.Settings = function()
{
- this._settingsStorage = prefs;
this._eventSupport = new WebInspector.Object();
/** @type {!Map<string, !WebInspector.Setting>} */
this._registry = new Map();
@@ -53,8 +51,7 @@
var settingName = descriptor["settingName"];
var settingType = descriptor["settingType"];
var defaultValue = descriptor["defaultValue"];
- var isLocal = !!descriptor["local"];
- var setting = settingType === "regex" ? this.createRegExpSetting(settingName, defaultValue, undefined, isLocal) : this.createSetting(settingName, defaultValue, isLocal);
+ var setting = settingType === "regex" ? this.createRegExpSetting(settingName, defaultValue) : this.createSetting(settingName, defaultValue);
this._moduleSettings.set(settingName, setting);
},
@@ -85,63 +82,39 @@
/**
* @param {string} key
* @param {*} defaultValue
- * @param {boolean=} isLocal
* @return {!WebInspector.Setting}
*/
- createSetting: function(key, defaultValue, isLocal)
+ createSetting: function(key, defaultValue)
{
if (!this._registry.get(key))
- this._registry.set(key, new WebInspector.Setting(this, key, defaultValue, this._eventSupport, isLocal ? (window.localStorage || {}) : this._settingsStorage));
+ this._registry.set(key, new WebInspector.Setting(key, defaultValue, this._eventSupport, window.localStorage));
return /** @type {!WebInspector.Setting} */ (this._registry.get(key));
- },
-
- /**
- * @param {string} key
- * @param {*} defaultValue
- * @return {!WebInspector.Setting}
- */
- createLocalSetting: function(key, defaultValue)
- {
- return this.createSetting(key, defaultValue, true);
},
/**
* @param {string} key
* @param {string} defaultValue
* @param {string=} regexFlags
- * @param {boolean=} isLocal
* @return {!WebInspector.RegExpSetting}
*/
- createRegExpSetting: function(key, defaultValue, regexFlags, isLocal)
+ createRegExpSetting: function(key, defaultValue, regexFlags)
{
if (!this._registry.get(key))
- this._registry.set(key, new WebInspector.RegExpSetting(this, key, defaultValue, this._eventSupport, isLocal ? (window.localStorage || {}) : this._settingsStorage, regexFlags));
+ this._registry.set(key, new WebInspector.RegExpSetting(key, defaultValue, this._eventSupport, window.localStorage, regexFlags));
return /** @type {!WebInspector.RegExpSetting} */ (this._registry.get(key));
- },
-
- clearAll: function()
- {
- if (window.localStorage)
- window.localStorage.clear();
- for (var key in this._settingsStorage)
- delete this._settingsStorage[key];
- var versionSetting = WebInspector.settings.createSetting(WebInspector.VersionController._currentVersionName, 0);
- versionSetting.set(WebInspector.VersionController.currentVersion);
}
}
/**
* @constructor
- * @param {!WebInspector.Settings} settings
* @param {string} name
* @param {V} defaultValue
* @param {!WebInspector.Object} eventSupport
- * @param {!Object} storage
+ * @param {?Storage} storage
* @template V
*/
-WebInspector.Setting = function(settings, name, defaultValue, eventSupport, storage)
+WebInspector.Setting = function(name, defaultValue, eventSupport, storage)
{
- this._settings = settings;
this._name = name;
this._defaultValue = defaultValue;
this._eventSupport = eventSupport;
@@ -181,11 +154,11 @@
return this._value;
this._value = this._defaultValue;
- if (this._name in this._storage) {
+ if (this._storage && this._name in this._storage) {
try {
this._value = JSON.parse(this._storage[this._name]);
} catch(e) {
- this.remove();
+ delete this._storage[this._name];
}
}
return this._value;
@@ -197,24 +170,19 @@
set: function(value)
{
this._value = value;
- try {
- var settingString = JSON.stringify(value);
+ if (this._storage) {
try {
- this._storage[this._name] = settingString;
+ var settingString = JSON.stringify(value);
+ try {
+ this._storage[this._name] = settingString;
+ } catch(e) {
+ this._printSettingsSavingError(e.message, this._name, settingString);
+ }
} catch(e) {
- this._printSettingsSavingError(e.message, this._name, settingString);
+ WebInspector.console.error("Cannot stringify setting with name: " + this._name + ", error: " + e.message);
}
- } catch(e) {
- WebInspector.console.error("Cannot stringify setting with name: " + this._name + ", error: " + e.message);
}
this._eventSupport.dispatchEventToListeners(this._name, value);
- },
-
- remove: function()
- {
- this._settings._registry.delete(this._name);
- this._settings._moduleSettings.delete(this._name);
- delete this._storage[this._name];
},
/**
@@ -231,7 +199,7 @@
var sizes = { __proto__: null };
for (var key in this._storage)
- sizes[key] = this._storage[key].length;
+ sizes[key] = this._storage.getItem(key).length;
var keys = Object.keys(sizes);
function comparator(key1, key2)
@@ -243,22 +211,21 @@
for (var i = 0; i < 10 && i < keys.length; ++i)
WebInspector.console.log("Setting: '" + keys[i] + "', size: " + sizes[keys[i]]);
- }
+ },
}
/**
* @constructor
* @extends {WebInspector.Setting}
- * @param {!WebInspector.Settings} settings
* @param {string} name
* @param {string} defaultValue
* @param {!WebInspector.Object} eventSupport
- * @param {!Object<string, string>} storage
+ * @param {?Storage} storage
* @param {string=} regexFlags
*/
-WebInspector.RegExpSetting = function(settings, name, defaultValue, eventSupport, storage, regexFlags)
+WebInspector.RegExpSetting = function(name, defaultValue, eventSupport, storage, regexFlags)
{
- WebInspector.Setting.call(this, settings, name, defaultValue ? [{ pattern: defaultValue }] : [], eventSupport, storage);
+ WebInspector.Setting.call(this, name, defaultValue ? [{ pattern: defaultValue }] : [], eventSupport, storage);
this._regexFlags = regexFlags;
}
@@ -332,13 +299,12 @@
{
}
-WebInspector.VersionController._currentVersionName = "inspectorVersion";
-WebInspector.VersionController.currentVersion = 12;
+WebInspector.VersionController.currentVersion = 11;
WebInspector.VersionController.prototype = {
updateVersion: function()
{
- var versionSetting = WebInspector.settings.createSetting(WebInspector.VersionController._currentVersionName, 0);
+ var versionSetting = WebInspector.settings.createSetting("inspectorVersion", 0);
var currentVersion = WebInspector.VersionController.currentVersion;
var oldVersion = versionSetting.get();
var methodsToRun = this._methodsToRunToUpdateVersion(oldVersion, currentVersion);
@@ -361,29 +327,33 @@
_updateVersionFrom0To1: function()
{
- this._clearBreakpointsWhenTooMany(WebInspector.settings.createLocalSetting("breakpoints", []), 500000);
+ this._clearBreakpointsWhenTooMany(WebInspector.settings.createSetting("breakpoints", []), 500000);
},
_updateVersionFrom1To2: function()
{
- WebInspector.settings.createSetting("previouslyViewedFiles", []).set([]);
+ var versionSetting = WebInspector.settings.createSetting("previouslyViewedFiles", []);
+ versionSetting.set([]);
},
_updateVersionFrom2To3: function()
{
- WebInspector.settings.createSetting("fileSystemMapping", {}).set({});
- WebInspector.settings.createSetting("fileMappingEntries", []).remove();
+ var fileSystemMappingSetting = WebInspector.settings.createSetting("fileSystemMapping", {});
+ fileSystemMappingSetting.set({});
+ if (window.localStorage)
+ delete window.localStorage["fileMappingEntries"];
},
_updateVersionFrom3To4: function()
{
- var advancedMode = WebInspector.settings.createSetting("showHeaSnapshotObjectsHiddenProperties", false);
- WebInspector.moduleSetting("showAdvancedHeapSnapshotProperties").set(advancedMode.get());
- advancedMode.remove();
+ var advancedMode = WebInspector.settings.createSetting("showHeaSnapshotObjectsHiddenProperties", false).get();
+ WebInspector.moduleSetting("showAdvancedHeapSnapshotProperties").set(advancedMode);
},
_updateVersionFrom4To5: function()
{
+ if (!window.localStorage)
+ return;
var settingNames = {
"FileSystemViewSidebarWidth": "fileSystemViewSplitViewState",
"elementsSidebarWidth": "elementsPanelSplitViewState",
@@ -405,50 +375,52 @@
"profilesSidebarWidth": "profilesPanelSplitViewState",
"resourcesSidebarWidth": "resourcesPanelSplitViewState"
};
- var empty = {};
for (var oldName in settingNames) {
var newName = settingNames[oldName];
var oldNameH = oldName + "H";
var newValue = null;
- var oldSetting = WebInspector.settings.createSetting(oldName, empty);
- if (oldSetting.get() !== empty) {
+ var oldSetting = WebInspector.settings.createSetting(oldName, undefined).get();
+ if (oldSetting) {
newValue = newValue || {};
newValue.vertical = {};
- newValue.vertical.size = oldSetting.get();
- oldSetting.remove();
+ newValue.vertical.size = oldSetting;
+ delete window.localStorage[oldName];
}
- var oldSettingH = WebInspector.settings.createSetting(oldNameH, empty);
- if (oldSettingH.get() !== empty) {
+ var oldSettingH = WebInspector.settings.createSetting(oldNameH, undefined).get();
+ if (oldSettingH) {
newValue = newValue || {};
newValue.horizontal = {};
- newValue.horizontal.size = oldSettingH.get();
- oldSettingH.remove();
+ newValue.horizontal.size = oldSettingH;
+ delete window.localStorage[oldNameH];
}
+ var newSetting = WebInspector.settings.createSetting(newName, {});
if (newValue)
- WebInspector.settings.createSetting(newName, {}).set(newValue);
+ newSetting.set(newValue);
}
},
_updateVersionFrom5To6: function()
{
+ if (!window.localStorage)
+ return;
+
var settingNames = {
"debuggerSidebarHidden": "sourcesPanelSplitViewState",
"navigatorHidden": "sourcesPanelNavigatorSplitViewState",
"WebInspector.Drawer.showOnLoad": "Inspector.drawerSplitViewState"
};
- var empty = {};
for (var oldName in settingNames) {
var newName = settingNames[oldName];
- var oldSetting = WebInspector.settings.createSetting(oldName, empty);
+ var oldSetting = WebInspector.settings.createSetting(oldName, undefined).get();
var invert = "WebInspector.Drawer.showOnLoad" === oldName;
- var hidden = (oldSetting.get() !== empty) !== invert;
- oldSetting.remove();
+ var hidden = !!oldSetting !== invert;
+ delete window.localStorage[oldName];
var showMode = hidden ? "OnlyMain" : "Both";
- var newSetting = WebInspector.settings.createSetting(newName, empty);
+ var newSetting = WebInspector.settings.createSetting(newName, null);
var newValue = newSetting.get() || {};
newValue.vertical = newValue.vertical || {};
newValue.vertical.showMode = showMode;
@@ -460,6 +432,9 @@
_updateVersionFrom6To7: function()
{
+ if (!window.localStorage)
+ return;
+
var settingNames = {
"sourcesPanelNavigatorSplitViewState": "sourcesPanelNavigatorSplitViewState",
"elementsPanelSplitViewState": "elementsPanelSplitViewState",
@@ -467,11 +442,12 @@
"sourcesPanelDebuggerSidebarSplitViewState": "sourcesPanelDebuggerSidebarSplitViewState"
};
- var empty = {};
for (var name in settingNames) {
- var setting = WebInspector.settings.createSetting(name, empty);
+ if (!(name in window.localStorage))
+ continue;
+ var setting = WebInspector.settings.createSetting(name, undefined);
var value = setting.get();
- if (value === empty)
+ if (!value)
continue;
// Zero out saved percentage sizes, and they will be restored to defaults.
if (value.vertical && value.vertical.size && value.vertical.size < 1)
@@ -484,35 +460,63 @@
_updateVersionFrom7To8: function()
{
+ var settingName = "deviceMetrics";
+ if (!window.localStorage || !(settingName in window.localStorage))
+ return;
+ var setting = WebInspector.settings.createSetting(settingName, undefined);
+ var value = setting.get();
+ if (!value)
+ return;
+
+ var components = value.split("x");
+ if (components.length >= 3) {
+ var width = parseInt(components[0], 10);
+ var height = parseInt(components[1], 10);
+ var deviceScaleFactor = parseFloat(components[2]);
+ if (deviceScaleFactor) {
+ components[0] = "" + Math.round(width / deviceScaleFactor);
+ components[1] = "" + Math.round(height / deviceScaleFactor);
+ }
+ }
+ value = components.join("x");
+ setting.set(value);
},
_updateVersionFrom8To9: function()
{
+ if (!window.localStorage)
+ return;
+
var settingNames = [
"skipStackFramesPattern",
"workspaceFolderExcludePattern"
];
for (var i = 0; i < settingNames.length; ++i) {
- var setting = WebInspector.settings.createSetting(settingNames[i], "");
- var value = setting.get();
- if (!value)
- return;
- if (typeof value === "string")
- value = [value];
- for (var j = 0; j < value.length; ++j) {
- if (typeof value[j] === "string")
- value[j] = { pattern: value[j] };
+ var settingName = settingNames[i];
+ if (!(settingName in window.localStorage))
+ continue;
+ try {
+ var value = JSON.parse(window.localStorage[settingName]);
+ if (!value)
+ continue;
+ if (typeof value === "string")
+ value = [value];
+ for (var j = 0; j < value.length; ++j) {
+ if (typeof value[j] === "string")
+ value[j] = { pattern: value[j] };
+ }
+ window.localStorage[settingName] = JSON.stringify(value);
+ } catch(e) {
}
- setting.set(value);
}
},
_updateVersionFrom9To10: function()
{
- // This one is localStorage specific, which is fine.
if (!window.localStorage)
return;
+
for (var key in window.localStorage) {
if (key.startsWith("revision-history"))
window.localStorage.removeItem(key);
@@ -521,53 +525,40 @@
_updateVersionFrom10To11: function()
{
- var oldSettingName = "customDevicePresets";
- var newSettingName = "customEmulatedDeviceList";
- var oldSetting = WebInspector.settings.createSetting(oldSettingName, undefined);
- var list = oldSetting.get();
- if (!Array.isArray(list))
- return;
- var newList = [];
- for (var i = 0; i < list.length; ++i) {
- var value = list[i];
- var device = {};
- device["title"] = value["title"];
- device["type"] = "unknown";
- device["user-agent"] = value["userAgent"];
- device["capabilities"] = [];
- if (value["touch"])
- device["capabilities"].push("touch");
- if (value["mobile"])
- device["capabilities"].push("mobile");
- device["screen"] = {};
- device["screen"]["vertical"] = {width: value["width"], height: value["height"]};
- device["screen"]["horizontal"] = {width: value["height"], height: value["width"]};
- device["screen"]["device-pixel-ratio"] = value["deviceScaleFactor"];
- device["modes"] = [];
- device["show-by-default"] = true;
- device["show"] = "Default";
- newList.push(device);
- }
- if (newList.length)
- WebInspector.settings.createSetting(newSettingName, []).set(newList);
- oldSetting.remove();
- },
-
- _updateVersionFrom11To12: function()
- {
- // This step migrates all the settings except for the ones below into the browser profile.
- var localSettings = [ "advancedSearchConfig", "breakpoints", "consoleHistory", "domBreakpoints", "eventListenerBreakpoints",
- "fileSystemMapping", "lastSelectedSourcesSidebarPaneTab", "previouslyViewedFiles",
- "savedURLs", "watchExpressions", "workspaceExcludedFolders", "xhrBreakpoints" ].keySet();
+ var setting = "customDevicePresets";
+ var newSetting = "customEmulatedDeviceList";
if (!window.localStorage)
return;
-
- for (var key in window.localStorage) {
- if (key in localSettings)
- continue;
- var value = window.localStorage[key];
- window.localStorage.removeItem(key);
- WebInspector.settings._settingsStorage[key] = value;
+ if (!(setting in window.localStorage))
+ return;
+ try {
+ var list = JSON.parse(window.localStorage[setting]);
+ if (!Array.isArray(list))
+ return;
+ var newList = [];
+ for (var i = 0; i < list.length; ++i) {
+ var value = list[i];
+ var device = {};
+ device["title"] = value["title"];
+ device["type"] = "unknown";
+ device["user-agent"] = value["userAgent"];
+ device["capabilities"] = [];
+ if (value["touch"])
+ device["capabilities"].push("touch");
+ if (value["mobile"])
+ device["capabilities"].push("mobile");
+ device["screen"] = {};
+ device["screen"]["vertical"] = {width: value["width"], height: value["height"]};
+ device["screen"]["horizontal"] = {width: value["height"], height: value["width"]};
+ device["screen"]["device-pixel-ratio"] = value["deviceScaleFactor"];
+ device["modes"] = [];
+ device["show-by-default"] = true;
+ device["show"] = "Default";
+ newList.push(device);
+ }
+ window.localStorage[newSetting] = JSON.stringify(newList);
+ delete window.localStorage[setting];
+ } catch(e) {
}
},

Powered by Google App Engine
This is Rietveld 408576698