Index: third_party/WebKit/Source/devtools/front_end/common/Settings.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/common/Settings.js b/third_party/WebKit/Source/devtools/front_end/common/Settings.js |
index 28a3087c506159d76e561d84285be495deca29bf..280e168499ef29428b2a15c9190a0eabe04baea1 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/common/Settings.js |
+++ b/third_party/WebKit/Source/devtools/front_end/common/Settings.js |
@@ -37,8 +37,9 @@ Common.Settings = class { |
* @param {!Common.SettingsStorage} localStorage |
*/ |
constructor(globalStorage, localStorage) { |
- this._settingsStorage = globalStorage; |
+ this._globalStorage = globalStorage; |
this._localStorage = localStorage; |
+ this._sessionStorage = new Common.SettingsStorage({}); |
this._eventSupport = new Common.Object(); |
/** @type {!Map<string, !Common.Setting>} */ |
@@ -54,11 +55,24 @@ Common.Settings = class { |
_registerModuleSetting(extension) { |
var descriptor = extension.descriptor(); |
var settingName = descriptor['settingName']; |
- var settingType = descriptor['settingType']; |
+ var isRegex = descriptor['settingType'] === 'regex'; |
var defaultValue = descriptor['defaultValue']; |
- var isLocal = !!descriptor['local']; |
- var setting = settingType === 'regex' ? this.createRegExpSetting(settingName, defaultValue, undefined, isLocal) : |
- this.createSetting(settingName, defaultValue, isLocal); |
+ var storageType; |
+ switch (descriptor['storageType']) { |
+ case ('local'): |
+ storageType = Common.SettingStorageType.Local; |
+ break; |
+ case ('session'): |
+ storageType = Common.SettingStorageType.Session; |
+ break; |
+ case ('global'): |
+ storageType = Common.SettingStorageType.Global; |
+ break; |
+ default: |
+ storageType = Common.SettingStorageType.Global; |
+ } |
+ var setting = isRegex ? this.createRegExpSetting(settingName, defaultValue, undefined, storageType) : |
+ this.createSetting(settingName, defaultValue, storageType); |
if (descriptor['title']) |
setting.setTitle(descriptor['title']); |
this._moduleSettings.set(settingName, setting); |
@@ -89,15 +103,13 @@ Common.Settings = class { |
/** |
* @param {string} key |
* @param {*} defaultValue |
- * @param {boolean=} isLocal |
+ * @param {!Common.SettingStorageType=} storageType |
* @return {!Common.Setting} |
*/ |
- createSetting(key, defaultValue, isLocal) { |
- if (!this._registry.get(key)) { |
- this._registry.set( |
- key, new Common.Setting( |
- this, key, defaultValue, this._eventSupport, isLocal ? this._localStorage : this._settingsStorage)); |
- } |
+ createSetting(key, defaultValue, storageType) { |
+ var storage = this._storageFromType(storageType); |
+ if (!this._registry.get(key)) |
+ this._registry.set(key, new Common.Setting(this, key, defaultValue, this._eventSupport, storage)); |
return /** @type {!Common.Setting} */ (this._registry.get(key)); |
} |
@@ -107,32 +119,48 @@ Common.Settings = class { |
* @return {!Common.Setting} |
*/ |
createLocalSetting(key, defaultValue) { |
- return this.createSetting(key, defaultValue, true); |
+ return this.createSetting(key, defaultValue, Common.SettingStorageType.Local); |
} |
/** |
* @param {string} key |
* @param {string} defaultValue |
* @param {string=} regexFlags |
- * @param {boolean=} isLocal |
+ * @param {!Common.SettingStorageType=} storageType |
* @return {!Common.RegExpSetting} |
*/ |
- createRegExpSetting(key, defaultValue, regexFlags, isLocal) { |
+ createRegExpSetting(key, defaultValue, regexFlags, storageType) { |
if (!this._registry.get(key)) { |
this._registry.set( |
- key, new Common.RegExpSetting( |
- this, key, defaultValue, this._eventSupport, isLocal ? this._localStorage : this._settingsStorage, |
- regexFlags)); |
+ key, |
+ new Common.RegExpSetting( |
+ this, key, defaultValue, this._eventSupport, this._storageFromType(storageType), regexFlags)); |
} |
return /** @type {!Common.RegExpSetting} */ (this._registry.get(key)); |
} |
clearAll() { |
- this._settingsStorage.removeAll(); |
+ this._globalStorage.removeAll(); |
this._localStorage.removeAll(); |
var versionSetting = Common.settings.createSetting(Common.VersionController._currentVersionName, 0); |
versionSetting.set(Common.VersionController.currentVersion); |
} |
+ |
+ /** |
+ * @param {!Common.SettingStorageType=} storageType |
+ * @return {!Common.SettingsStorage} |
+ */ |
+ _storageFromType(storageType) { |
+ switch (storageType) { |
+ case (Common.SettingStorageType.Local): |
+ return this._localStorage; |
+ case (Common.SettingStorageType.Session): |
+ return this._sessionStorage; |
+ case (Common.SettingStorageType.Global): |
+ return this._globalStorage; |
+ } |
+ return this._globalStorage; |
+ } |
}; |
/** |
@@ -753,7 +781,7 @@ Common.VersionController = class { |
continue; |
var value = window.localStorage[key]; |
window.localStorage.removeItem(key); |
- Common.settings._settingsStorage[key] = value; |
+ Common.settings._globalStorage[key] = value; |
} |
} |
@@ -778,6 +806,15 @@ Common.VersionController.currentVersion = 24; |
Common.settings; |
/** |
+ * @enum {symbol} |
+ */ |
+Common.SettingStorageType = { |
+ Global: Symbol('Global'), |
+ Local: Symbol('Local'), |
+ Session: Symbol('Session') |
+}; |
+ |
+/** |
* @param {string} settingName |
* @return {!Common.Setting} |
*/ |