Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @unrestricted | 32 * @unrestricted |
| 33 */ | 33 */ |
| 34 Common.Settings = class { | 34 Common.Settings = class { |
| 35 /** | 35 /** |
| 36 * @param {!Common.SettingsStorage} globalStorage | 36 * @param {!Common.SettingsStorage} globalStorage |
| 37 * @param {!Common.SettingsStorage} localStorage | 37 * @param {!Common.SettingsStorage} localStorage |
| 38 */ | 38 */ |
| 39 constructor(globalStorage, localStorage) { | 39 constructor(globalStorage, localStorage) { |
| 40 this._settingsStorage = globalStorage; | 40 this._globalStorage = globalStorage; |
| 41 this._localStorage = localStorage; | 41 this._localStorage = localStorage; |
| 42 this._sessionStorage = new Common.SettingsStorage({}); | |
| 42 | 43 |
| 43 this._eventSupport = new Common.Object(); | 44 this._eventSupport = new Common.Object(); |
| 44 /** @type {!Map<string, !Common.Setting>} */ | 45 /** @type {!Map<string, !Common.Setting>} */ |
| 45 this._registry = new Map(); | 46 this._registry = new Map(); |
| 46 /** @type {!Map<string, !Common.Setting>} */ | 47 /** @type {!Map<string, !Common.Setting>} */ |
| 47 this._moduleSettings = new Map(); | 48 this._moduleSettings = new Map(); |
| 48 self.runtime.extensions('setting').forEach(this._registerModuleSetting.bind( this)); | 49 self.runtime.extensions('setting').forEach(this._registerModuleSetting.bind( this)); |
| 49 } | 50 } |
| 50 | 51 |
| 51 /** | 52 /** |
| 52 * @param {!Runtime.Extension} extension | 53 * @param {!Runtime.Extension} extension |
| 53 */ | 54 */ |
| 54 _registerModuleSetting(extension) { | 55 _registerModuleSetting(extension) { |
| 55 var descriptor = extension.descriptor(); | 56 var descriptor = extension.descriptor(); |
| 56 var settingName = descriptor['settingName']; | 57 var settingName = descriptor['settingName']; |
| 57 var settingType = descriptor['settingType']; | 58 var isRegex = descriptor['settingType'] === 'regex'; |
| 58 var defaultValue = descriptor['defaultValue']; | 59 var defaultValue = descriptor['defaultValue']; |
| 59 var isLocal = !!descriptor['local']; | 60 var storageType; |
| 60 var setting = settingType === 'regex' ? this.createRegExpSetting(settingName , defaultValue, undefined, isLocal) : | 61 switch (descriptor['storageType']) { |
| 61 this.createSetting(settingName, defa ultValue, isLocal); | 62 case ('local'): |
| 63 storageType = Common.SettingStorageType.Local; | |
| 64 break; | |
| 65 case ('session'): | |
| 66 storageType = Common.SettingStorageType.Session; | |
| 67 break; | |
| 68 default: | |
|
pfeldman
2017/03/01 23:23:19
You typically specify all the cases and then retur
luoe
2017/03/03 03:50:22
Done.
| |
| 69 storageType = Common.SettingStorageType.Global; | |
| 70 break; | |
| 71 } | |
| 72 var setting = isRegex ? this.createRegExpSetting(settingName, defaultValue, undefined, storageType) : | |
| 73 this.createSetting(settingName, defaultValue, storag eType); | |
| 62 if (descriptor['title']) | 74 if (descriptor['title']) |
| 63 setting.setTitle(descriptor['title']); | 75 setting.setTitle(descriptor['title']); |
| 64 this._moduleSettings.set(settingName, setting); | 76 this._moduleSettings.set(settingName, setting); |
| 65 } | 77 } |
| 66 | 78 |
| 67 /** | 79 /** |
| 68 * @param {string} settingName | 80 * @param {string} settingName |
| 69 * @return {!Common.Setting} | 81 * @return {!Common.Setting} |
| 70 */ | 82 */ |
| 71 moduleSetting(settingName) { | 83 moduleSetting(settingName) { |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 82 settingForTest(settingName) { | 94 settingForTest(settingName) { |
| 83 var setting = this._registry.get(settingName); | 95 var setting = this._registry.get(settingName); |
| 84 if (!setting) | 96 if (!setting) |
| 85 throw new Error('No setting registered: ' + settingName); | 97 throw new Error('No setting registered: ' + settingName); |
| 86 return setting; | 98 return setting; |
| 87 } | 99 } |
| 88 | 100 |
| 89 /** | 101 /** |
| 90 * @param {string} key | 102 * @param {string} key |
| 91 * @param {*} defaultValue | 103 * @param {*} defaultValue |
| 92 * @param {boolean=} isLocal | 104 * @param {!Common.SettingStorageType=} storageType |
| 93 * @return {!Common.Setting} | 105 * @return {!Common.Setting} |
| 94 */ | 106 */ |
| 95 createSetting(key, defaultValue, isLocal) { | 107 createSetting(key, defaultValue, storageType) { |
| 96 if (!this._registry.get(key)) { | 108 var storage = this._storageFromType(storageType); |
| 97 this._registry.set( | 109 if (!this._registry.get(key)) |
| 98 key, new Common.Setting( | 110 this._registry.set(key, new Common.Setting(this, key, defaultValue, this._ eventSupport, storage)); |
| 99 this, key, defaultValue, this._eventSupport, isLocal ? this._ localStorage : this._settingsStorage)); | |
| 100 } | |
| 101 return /** @type {!Common.Setting} */ (this._registry.get(key)); | 111 return /** @type {!Common.Setting} */ (this._registry.get(key)); |
| 102 } | 112 } |
| 103 | 113 |
| 104 /** | 114 /** |
| 105 * @param {string} key | 115 * @param {string} key |
| 106 * @param {*} defaultValue | 116 * @param {*} defaultValue |
| 107 * @return {!Common.Setting} | 117 * @return {!Common.Setting} |
| 108 */ | 118 */ |
| 109 createLocalSetting(key, defaultValue) { | 119 createLocalSetting(key, defaultValue) { |
| 110 return this.createSetting(key, defaultValue, true); | 120 return this.createSetting(key, defaultValue, Common.SettingStorageType.Local ); |
| 111 } | 121 } |
| 112 | 122 |
| 113 /** | 123 /** |
| 114 * @param {string} key | 124 * @param {string} key |
| 115 * @param {string} defaultValue | 125 * @param {string} defaultValue |
| 116 * @param {string=} regexFlags | 126 * @param {string=} regexFlags |
| 117 * @param {boolean=} isLocal | 127 * @param {!Common.SettingStorageType=} storageType |
| 118 * @return {!Common.RegExpSetting} | 128 * @return {!Common.RegExpSetting} |
| 119 */ | 129 */ |
| 120 createRegExpSetting(key, defaultValue, regexFlags, isLocal) { | 130 createRegExpSetting(key, defaultValue, regexFlags, storageType) { |
| 121 if (!this._registry.get(key)) { | 131 if (!this._registry.get(key)) { |
| 122 this._registry.set( | 132 this._registry.set( |
| 123 key, new Common.RegExpSetting( | 133 key, new Common.RegExpSetting( |
| 124 this, key, defaultValue, this._eventSupport, isLocal ? this._ localStorage : this._settingsStorage, | 134 this, key, defaultValue, this._eventSupport, this._storageFro mType(storageType), regexFlags)); |
| 125 regexFlags)); | |
| 126 } | 135 } |
| 127 return /** @type {!Common.RegExpSetting} */ (this._registry.get(key)); | 136 return /** @type {!Common.RegExpSetting} */ (this._registry.get(key)); |
| 128 } | 137 } |
| 129 | 138 |
| 130 clearAll() { | 139 clearAll() { |
| 131 this._settingsStorage.removeAll(); | 140 this._globalStorage.removeAll(); |
| 132 this._localStorage.removeAll(); | 141 this._localStorage.removeAll(); |
| 133 var versionSetting = Common.settings.createSetting(Common.VersionController. _currentVersionName, 0); | 142 var versionSetting = Common.settings.createSetting(Common.VersionController. _currentVersionName, 0); |
| 134 versionSetting.set(Common.VersionController.currentVersion); | 143 versionSetting.set(Common.VersionController.currentVersion); |
| 135 } | 144 } |
| 145 | |
| 146 /** | |
| 147 * @param {!Common.SettingStorageType=} storageType | |
| 148 * @return {!Common.SettingsStorage} | |
| 149 */ | |
| 150 _storageFromType(storageType) { | |
| 151 switch (storageType) { | |
| 152 case (Common.SettingStorageType.Local): | |
| 153 return this._localStorage; | |
| 154 case (Common.SettingStorageType.Session): | |
| 155 return this._sessionStorage; | |
| 156 case (Common.SettingStorageType.Global): | |
| 157 default: | |
| 158 return this._globalStorage; | |
|
pfeldman
2017/03/01 23:23:19
ditto (no fall through). and I would actually defa
luoe
2017/03/03 03:50:22
Done.
| |
| 159 } | |
| 160 } | |
| 136 }; | 161 }; |
| 137 | 162 |
| 138 /** | 163 /** |
| 139 * @unrestricted | 164 * @unrestricted |
| 140 */ | 165 */ |
| 141 Common.SettingsStorage = class { | 166 Common.SettingsStorage = class { |
| 142 /** | 167 /** |
| 143 * @param {!Object} object | 168 * @param {!Object} object |
| 144 * @param {function(string, string)=} setCallback | 169 * @param {function(string, string)=} setCallback |
| 145 * @param {function(string)=} removeCallback | 170 * @param {function(string)=} removeCallback |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 746 'watchExpressions', 'workspaceExcludedFolders', 'xhrBreakpoints' | 771 'watchExpressions', 'workspaceExcludedFolders', 'xhrBreakpoints' |
| 747 ]); | 772 ]); |
| 748 if (!window.localStorage) | 773 if (!window.localStorage) |
| 749 return; | 774 return; |
| 750 | 775 |
| 751 for (var key in window.localStorage) { | 776 for (var key in window.localStorage) { |
| 752 if (localSettings.has(key)) | 777 if (localSettings.has(key)) |
| 753 continue; | 778 continue; |
| 754 var value = window.localStorage[key]; | 779 var value = window.localStorage[key]; |
| 755 window.localStorage.removeItem(key); | 780 window.localStorage.removeItem(key); |
| 756 Common.settings._settingsStorage[key] = value; | 781 Common.settings._globalStorage[key] = value; |
| 757 } | 782 } |
| 758 } | 783 } |
| 759 | 784 |
| 760 /** | 785 /** |
| 761 * @param {!Common.Setting} breakpointsSetting | 786 * @param {!Common.Setting} breakpointsSetting |
| 762 * @param {number} maxBreakpointsCount | 787 * @param {number} maxBreakpointsCount |
| 763 */ | 788 */ |
| 764 _clearBreakpointsWhenTooMany(breakpointsSetting, maxBreakpointsCount) { | 789 _clearBreakpointsWhenTooMany(breakpointsSetting, maxBreakpointsCount) { |
| 765 // If there are too many breakpoints in a storage, it is likely due to a rec ent bug that caused | 790 // If there are too many breakpoints in a storage, it is likely due to a rec ent bug that caused |
| 766 // periodical breakpoints duplication leading to inspector slowness. | 791 // periodical breakpoints duplication leading to inspector slowness. |
| 767 if (breakpointsSetting.get().length > maxBreakpointsCount) | 792 if (breakpointsSetting.get().length > maxBreakpointsCount) |
| 768 breakpointsSetting.set([]); | 793 breakpointsSetting.set([]); |
| 769 } | 794 } |
| 770 }; | 795 }; |
| 771 | 796 |
| 772 Common.VersionController._currentVersionName = 'inspectorVersion'; | 797 Common.VersionController._currentVersionName = 'inspectorVersion'; |
| 773 Common.VersionController.currentVersion = 24; | 798 Common.VersionController.currentVersion = 24; |
| 774 | 799 |
| 775 /** | 800 /** |
| 776 * @type {!Common.Settings} | 801 * @type {!Common.Settings} |
| 777 */ | 802 */ |
| 778 Common.settings; | 803 Common.settings; |
| 779 | 804 |
| 780 /** | 805 /** |
| 806 * @enum {symbol} | |
| 807 */ | |
| 808 Common.SettingStorageType = { | |
| 809 Global: Symbol('Global'), | |
| 810 Local: Symbol('Local'), | |
| 811 Session: Symbol('Session') | |
| 812 }; | |
| 813 | |
| 814 /** | |
| 781 * @param {string} settingName | 815 * @param {string} settingName |
| 782 * @return {!Common.Setting} | 816 * @return {!Common.Setting} |
| 783 */ | 817 */ |
| 784 Common.moduleSetting = function(settingName) { | 818 Common.moduleSetting = function(settingName) { |
| 785 return Common.settings.moduleSetting(settingName); | 819 return Common.settings.moduleSetting(settingName); |
| 786 }; | 820 }; |
| 787 | 821 |
| 788 /** | 822 /** |
| 789 * @param {string} settingName | 823 * @param {string} settingName |
| 790 * @return {!Common.Setting} | 824 * @return {!Common.Setting} |
| 791 */ | 825 */ |
| 792 Common.settingForTest = function(settingName) { | 826 Common.settingForTest = function(settingName) { |
| 793 return Common.settings.settingForTest(settingName); | 827 return Common.settings.settingForTest(settingName); |
| 794 }; | 828 }; |
| OLD | NEW |