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 case ('global'): |
| 69 storageType = Common.SettingStorageType.Global; |
| 70 break; |
| 71 default: |
| 72 storageType = Common.SettingStorageType.Global; |
| 73 } |
| 74 var setting = isRegex ? this.createRegExpSetting(settingName, defaultValue,
undefined, storageType) : |
| 75 this.createSetting(settingName, defaultValue, storag
eType); |
62 if (descriptor['title']) | 76 if (descriptor['title']) |
63 setting.setTitle(descriptor['title']); | 77 setting.setTitle(descriptor['title']); |
64 this._moduleSettings.set(settingName, setting); | 78 this._moduleSettings.set(settingName, setting); |
65 } | 79 } |
66 | 80 |
67 /** | 81 /** |
68 * @param {string} settingName | 82 * @param {string} settingName |
69 * @return {!Common.Setting} | 83 * @return {!Common.Setting} |
70 */ | 84 */ |
71 moduleSetting(settingName) { | 85 moduleSetting(settingName) { |
(...skipping 10 matching lines...) Expand all Loading... |
82 settingForTest(settingName) { | 96 settingForTest(settingName) { |
83 var setting = this._registry.get(settingName); | 97 var setting = this._registry.get(settingName); |
84 if (!setting) | 98 if (!setting) |
85 throw new Error('No setting registered: ' + settingName); | 99 throw new Error('No setting registered: ' + settingName); |
86 return setting; | 100 return setting; |
87 } | 101 } |
88 | 102 |
89 /** | 103 /** |
90 * @param {string} key | 104 * @param {string} key |
91 * @param {*} defaultValue | 105 * @param {*} defaultValue |
92 * @param {boolean=} isLocal | 106 * @param {!Common.SettingStorageType=} storageType |
93 * @return {!Common.Setting} | 107 * @return {!Common.Setting} |
94 */ | 108 */ |
95 createSetting(key, defaultValue, isLocal) { | 109 createSetting(key, defaultValue, storageType) { |
96 if (!this._registry.get(key)) { | 110 var storage = this._storageFromType(storageType); |
97 this._registry.set( | 111 if (!this._registry.get(key)) |
98 key, new Common.Setting( | 112 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)); | 113 return /** @type {!Common.Setting} */ (this._registry.get(key)); |
102 } | 114 } |
103 | 115 |
104 /** | 116 /** |
105 * @param {string} key | 117 * @param {string} key |
106 * @param {*} defaultValue | 118 * @param {*} defaultValue |
107 * @return {!Common.Setting} | 119 * @return {!Common.Setting} |
108 */ | 120 */ |
109 createLocalSetting(key, defaultValue) { | 121 createLocalSetting(key, defaultValue) { |
110 return this.createSetting(key, defaultValue, true); | 122 return this.createSetting(key, defaultValue, Common.SettingStorageType.Local
); |
111 } | 123 } |
112 | 124 |
113 /** | 125 /** |
114 * @param {string} key | 126 * @param {string} key |
115 * @param {string} defaultValue | 127 * @param {string} defaultValue |
116 * @param {string=} regexFlags | 128 * @param {string=} regexFlags |
117 * @param {boolean=} isLocal | 129 * @param {!Common.SettingStorageType=} storageType |
118 * @return {!Common.RegExpSetting} | 130 * @return {!Common.RegExpSetting} |
119 */ | 131 */ |
120 createRegExpSetting(key, defaultValue, regexFlags, isLocal) { | 132 createRegExpSetting(key, defaultValue, regexFlags, storageType) { |
121 if (!this._registry.get(key)) { | 133 if (!this._registry.get(key)) { |
122 this._registry.set( | 134 this._registry.set( |
123 key, new Common.RegExpSetting( | 135 key, |
124 this, key, defaultValue, this._eventSupport, isLocal ? this._
localStorage : this._settingsStorage, | 136 new Common.RegExpSetting( |
125 regexFlags)); | 137 this, key, defaultValue, this._eventSupport, this._storageFromType
(storageType), regexFlags)); |
126 } | 138 } |
127 return /** @type {!Common.RegExpSetting} */ (this._registry.get(key)); | 139 return /** @type {!Common.RegExpSetting} */ (this._registry.get(key)); |
128 } | 140 } |
129 | 141 |
130 clearAll() { | 142 clearAll() { |
131 this._settingsStorage.removeAll(); | 143 this._globalStorage.removeAll(); |
132 this._localStorage.removeAll(); | 144 this._localStorage.removeAll(); |
133 var versionSetting = Common.settings.createSetting(Common.VersionController.
_currentVersionName, 0); | 145 var versionSetting = Common.settings.createSetting(Common.VersionController.
_currentVersionName, 0); |
134 versionSetting.set(Common.VersionController.currentVersion); | 146 versionSetting.set(Common.VersionController.currentVersion); |
135 } | 147 } |
| 148 |
| 149 /** |
| 150 * @param {!Common.SettingStorageType=} storageType |
| 151 * @return {!Common.SettingsStorage} |
| 152 */ |
| 153 _storageFromType(storageType) { |
| 154 switch (storageType) { |
| 155 case (Common.SettingStorageType.Local): |
| 156 return this._localStorage; |
| 157 case (Common.SettingStorageType.Session): |
| 158 return this._sessionStorage; |
| 159 case (Common.SettingStorageType.Global): |
| 160 return this._globalStorage; |
| 161 } |
| 162 return this._globalStorage; |
| 163 } |
136 }; | 164 }; |
137 | 165 |
138 /** | 166 /** |
139 * @unrestricted | 167 * @unrestricted |
140 */ | 168 */ |
141 Common.SettingsStorage = class { | 169 Common.SettingsStorage = class { |
142 /** | 170 /** |
143 * @param {!Object} object | 171 * @param {!Object} object |
144 * @param {function(string, string)=} setCallback | 172 * @param {function(string, string)=} setCallback |
145 * @param {function(string)=} removeCallback | 173 * @param {function(string)=} removeCallback |
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 'watchExpressions', 'workspaceExcludedFolders', 'xhrBreakpoints' | 774 'watchExpressions', 'workspaceExcludedFolders', 'xhrBreakpoints' |
747 ]); | 775 ]); |
748 if (!window.localStorage) | 776 if (!window.localStorage) |
749 return; | 777 return; |
750 | 778 |
751 for (var key in window.localStorage) { | 779 for (var key in window.localStorage) { |
752 if (localSettings.has(key)) | 780 if (localSettings.has(key)) |
753 continue; | 781 continue; |
754 var value = window.localStorage[key]; | 782 var value = window.localStorage[key]; |
755 window.localStorage.removeItem(key); | 783 window.localStorage.removeItem(key); |
756 Common.settings._settingsStorage[key] = value; | 784 Common.settings._globalStorage[key] = value; |
757 } | 785 } |
758 } | 786 } |
759 | 787 |
760 /** | 788 /** |
761 * @param {!Common.Setting} breakpointsSetting | 789 * @param {!Common.Setting} breakpointsSetting |
762 * @param {number} maxBreakpointsCount | 790 * @param {number} maxBreakpointsCount |
763 */ | 791 */ |
764 _clearBreakpointsWhenTooMany(breakpointsSetting, maxBreakpointsCount) { | 792 _clearBreakpointsWhenTooMany(breakpointsSetting, maxBreakpointsCount) { |
765 // If there are too many breakpoints in a storage, it is likely due to a rec
ent bug that caused | 793 // 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. | 794 // periodical breakpoints duplication leading to inspector slowness. |
767 if (breakpointsSetting.get().length > maxBreakpointsCount) | 795 if (breakpointsSetting.get().length > maxBreakpointsCount) |
768 breakpointsSetting.set([]); | 796 breakpointsSetting.set([]); |
769 } | 797 } |
770 }; | 798 }; |
771 | 799 |
772 Common.VersionController._currentVersionName = 'inspectorVersion'; | 800 Common.VersionController._currentVersionName = 'inspectorVersion'; |
773 Common.VersionController.currentVersion = 24; | 801 Common.VersionController.currentVersion = 24; |
774 | 802 |
775 /** | 803 /** |
776 * @type {!Common.Settings} | 804 * @type {!Common.Settings} |
777 */ | 805 */ |
778 Common.settings; | 806 Common.settings; |
779 | 807 |
780 /** | 808 /** |
| 809 * @enum {symbol} |
| 810 */ |
| 811 Common.SettingStorageType = { |
| 812 Global: Symbol('Global'), |
| 813 Local: Symbol('Local'), |
| 814 Session: Symbol('Session') |
| 815 }; |
| 816 |
| 817 /** |
781 * @param {string} settingName | 818 * @param {string} settingName |
782 * @return {!Common.Setting} | 819 * @return {!Common.Setting} |
783 */ | 820 */ |
784 Common.moduleSetting = function(settingName) { | 821 Common.moduleSetting = function(settingName) { |
785 return Common.settings.moduleSetting(settingName); | 822 return Common.settings.moduleSetting(settingName); |
786 }; | 823 }; |
787 | 824 |
788 /** | 825 /** |
789 * @param {string} settingName | 826 * @param {string} settingName |
790 * @return {!Common.Setting} | 827 * @return {!Common.Setting} |
791 */ | 828 */ |
792 Common.settingForTest = function(settingName) { | 829 Common.settingForTest = function(settingName) { |
793 return Common.settings.settingForTest(settingName); | 830 return Common.settings.settingForTest(settingName); |
794 }; | 831 }; |
OLD | NEW |