Changeset 244279 in webkit
- Timestamp:
- Apr 15, 2019 12:17:14 PM (5 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r244278 r244279 1 2019-04-15 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: DOMDebugger: move breakpoint storage to use `WI.ObjectStore` 4 https://bugs.webkit.org/show_bug.cgi?id=196231 5 <rdar://problem/49236864> 6 7 Reviewed by Joseph Pecoraro. 8 9 * UserInterface/Controllers/DOMDebuggerManager.js: 10 (WI.DOMDebuggerManager): 11 (WI.DOMDebuggerManager.prototype.addDOMBreakpoint): 12 (WI.DOMDebuggerManager.prototype.removeDOMBreakpoint): 13 (WI.DOMDebuggerManager.prototype.removeDOMBreakpointsForNode): 14 (WI.DOMDebuggerManager.prototype.addEventBreakpoint): 15 (WI.DOMDebuggerManager.prototype.removeEventBreakpoint): 16 (WI.DOMDebuggerManager.prototype.addURLBreakpoint): 17 (WI.DOMDebuggerManager.prototype.removeURLBreakpoint): 18 (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): 19 (WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): 20 (WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged): 21 (WI.DOMDebuggerManager.prototype._saveDOMBreakpoints): Deleted. 22 (WI.DOMDebuggerManager.prototype._saveEventBreakpoints): Deleted. 23 (WI.DOMDebuggerManager.prototype._saveURLBreakpoints): Deleted. 24 25 * UserInterface/Models/DOMBreakpoint.js: 26 (WI.DOMBreakpoint.prototype.saveIdentityToCookie): 27 (WI.DOMBreakpoint.prototype.toJSON): Added. 28 (WI.DOMBreakpoint.prototype.get serializableInfo): Deleted. 29 * UserInterface/Models/EventBreakpoint.js: 30 (WI.EventBreakpoint.prototype.saveIdentityToCookie): 31 (WI.EventBreakpoint.prototype.toJSON): Added. 32 (WI.EventBreakpoint.prototype.get serializableInfo): Deleted. 33 * UserInterface/Models/URLBreakpoint.js: 34 (WI.URLBreakpoint.prototype.saveIdentityToCookie): 35 (WI.URLBreakpoint.prototype.toJSON): Added. 36 (WI.URLBreakpoint.prototype.get serializableInfo): Deleted. 37 Replace `get serializableInfo` with `toJSON` as required by `WI.ObjectStore`. 38 39 * UserInterface/Base/ObjectStore.js: 40 (WI.ObjectStore._open): 41 Increment version. 42 1 43 2019-04-15 Devin Rousso <drousso@apple.com> 2 44 -
trunk/Source/WebInspectorUI/UserInterface/Base/ObjectStore.js
r243226 r244279 68 68 WI.ObjectStore._databaseCallbacks = [callback]; 69 69 70 const version = 2; // Increment this for every edit to `WI.objectStores`.70 const version = 3; // Increment this for every edit to `WI.objectStores`. 71 71 72 72 let databaseRequest = window.indexedDB.open(WI.ObjectStore._databaseName, version); … … 243 243 audits: new WI.ObjectStore("audit-manager-tests", {keyPath: "__id", autoIncrement: true}), 244 244 breakpoints: new WI.ObjectStore("debugger-breakpoints", {keyPath: "__id"}), 245 domBreakpoints: new WI.ObjectStore("dom-debugger-dom-breakpoints", {keyPath: "__id"}), 246 eventBreakpoints: new WI.ObjectStore("dom-debugger-event-breakpoints", {keyPath: "__id"}), 247 urlBreakpoints: new WI.ObjectStore("dom-debugger-url-breakpoints", {keyPath: "__id"}), 245 248 }; -
trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js
r243722 r244279 30 30 super(); 31 31 32 this._domBreakpointsSetting = new WI.Setting("dom-breakpoints", []);33 32 this._domBreakpointURLMap = new Multimap; 34 33 this._domBreakpointFrameIdentifierMap = new Map; 35 34 36 this._eventBreakpointSetting = new WI.Setting("event-breakpoints", []);37 35 this._eventBreakpoints = []; 38 36 39 this._urlBreakpointsSetting = new WI.Setting("url-breakpoints", WI.Setting.migrateValue("xhr-breakpoints") || []);40 37 this._urlBreakpoints = []; 41 38 this._allRequestsBreakpointEnabledSetting = new WI.Setting("break-on-all-requests", false); … … 57 54 WI.Frame.addEventListener(WI.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this); 58 55 56 let loadBreakpoints = async (constructor, objectStore, oldSettings, callback) => { 57 for (let key of oldSettings) { 58 let existingSerializedBreakpoints = WI.Setting.migrateValue(key); 59 if (existingSerializedBreakpoints) { 60 for (let existingSerializedBreakpoint of existingSerializedBreakpoints) 61 await objectStore.putObject(constructor.deserialize(existingSerializedBreakpoint)); 62 } 63 } 64 65 let serializedBreakpoints = await objectStore.getAll(); 66 67 this._restoringBreakpoints = true; 68 for (let serializedBreakpoint of serializedBreakpoints) { 69 let breakpoint = constructor.deserialize(serializedBreakpoint); 70 71 const key = null; 72 objectStore.associateObject(breakpoint, key, serializedBreakpoint); 73 74 callback(breakpoint); 75 } 76 this._restoringBreakpoints = false; 77 }; 78 59 79 if (this.supported) { 60 this._restoringBreakpoints = true; 61 62 for (let serializedInfo of this._domBreakpointsSetting.value) 63 this.addDOMBreakpoint(WI.DOMBreakpoint.deserialize(serializedInfo)); 64 65 for (let serializedInfo of this._eventBreakpointSetting.value) 66 this.addEventBreakpoint(WI.EventBreakpoint.deserialize(serializedInfo)); 67 68 for (let serializedInfo of this._urlBreakpointsSetting.value) 69 this.addURLBreakpoint(WI.URLBreakpoint.deserialize(serializedInfo)); 70 71 this._restoringBreakpoints = false; 80 loadBreakpoints(WI.DOMBreakpoint, WI.objectStores.domBreakpoints, ["dom-breakpoints"], (breakpoint) => { 81 this.addDOMBreakpoint(breakpoint); 82 }); 83 84 loadBreakpoints(WI.EventBreakpoint, WI.objectStores.eventBreakpoints, ["event-breakpoints"], (breakpoint) => { 85 this.addEventBreakpoint(breakpoint); 86 }); 87 88 loadBreakpoints(WI.URLBreakpoint, WI.objectStores.urlBreakpoints, ["xhr-breakpoints", "url-breakpoints"], (breakpoint) => { 89 this.addURLBreakpoint(breakpoint); 90 }); 72 91 } 73 92 } … … 181 200 this.dispatchEventToListeners(WI.DOMDebuggerManager.Event.DOMBreakpointAdded, {breakpoint}); 182 201 183 this._saveDOMBreakpoints(); 202 if (!this._restoringBreakpoints) 203 WI.objectStores.domBreakpoints.putObject(breakpoint); 184 204 } 185 205 … … 215 235 breakpoint.domNodeIdentifier = null; 216 236 217 this._saveDOMBreakpoints(); 237 if (!this._restoringBreakpoints) 238 WI.objectStores.domBreakpoints.deleteObject(breakpoint); 218 239 } 219 240 220 241 removeDOMBreakpointsForNode(node) 221 242 { 222 this._restoringBreakpoints = true;223 224 243 this.domBreakpointsForNode(node).forEach(this.removeDOMBreakpoint, this); 225 226 this._restoringBreakpoints = false;227 this._saveDOMBreakpoints();228 244 } 229 245 … … 258 274 } 259 275 260 this._saveEventBreakpoints(); 276 if (!this._restoringBreakpoints) 277 WI.objectStores.eventBreakpoints.putObject(breakpoint); 261 278 } 262 279 … … 278 295 this._eventBreakpoints.remove(breakpoint); 279 296 280 this._saveEventBreakpoints(); 297 if (!this._restoringBreakpoints) 298 WI.objectStores.eventBreakpoints.deleteObject(breakpoint); 299 281 300 this.dispatchEventToListeners(WI.DOMDebuggerManager.Event.EventBreakpointRemoved, {breakpoint}); 282 301 … … 332 351 } 333 352 334 this._saveURLBreakpoints(); 353 if (!this._restoringBreakpoints) 354 WI.objectStores.urlBreakpoints.putObject(breakpoint); 335 355 } 336 356 … … 352 372 this._urlBreakpoints.remove(breakpoint, true); 353 373 354 this._saveURLBreakpoints(); 374 if (!this._restoringBreakpoints) 375 WI.objectStores.urlBreakpoints.deleteObject(breakpoint); 376 355 377 this.dispatchEventToListeners(WI.DOMDebuggerManager.Event.URLBreakpointRemoved, {breakpoint}); 356 378 … … 518 540 } 519 541 520 _saveDOMBreakpoints()521 {522 if (this._restoringBreakpoints)523 return;524 525 this._domBreakpointsSetting.value = Array.from(this._domBreakpointURLMap.values()).map((breakpoint) => breakpoint.serializableInfo);526 }527 528 _saveEventBreakpoints()529 {530 if (this._restoringBreakpoints)531 return;532 533 this._eventBreakpointSetting.value = this._eventBreakpoints.map((breakpoint) => breakpoint.serializableInfo);534 }535 536 _saveURLBreakpoints()537 {538 if (this._restoringBreakpoints)539 return;540 541 this._urlBreakpointsSetting.value = this._urlBreakpoints.map((breakpoint) => breakpoint.serializableInfo);542 }543 544 542 _handleDOMBreakpointDisabledStateChanged(event) 545 543 { … … 549 547 this._updateDOMBreakpoint(breakpoint, target); 550 548 551 this._saveDOMBreakpoints(); 549 if (!this._restoringBreakpoints) 550 WI.objectStores.domBreakpoints.putObject(breakpoint); 552 551 } 553 552 … … 564 563 this._updateEventBreakpoint(breakpoint, target); 565 564 } 566 this._saveEventBreakpoints(); 565 566 if (!this._restoringBreakpoints) 567 WI.objectStores.eventBreakpoints.putObject(breakpoint); 567 568 } 568 569 … … 578 579 this._updateURLBreakpoint(breakpoint, target); 579 580 } 580 this._saveURLBreakpoints(); 581 582 if (!this._restoringBreakpoints) 583 WI.objectStores.urlBreakpoints.putObject(breakpoint); 581 584 } 582 585 -
trunk/Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js
r242318 r244279 97 97 } 98 98 99 get serializableInfo()99 saveIdentityToCookie(cookie) 100 100 { 101 let info = {url: this._url, path: this._path, type: this._type}; 102 if (this._disabled) 103 info.disabled = true; 104 105 return info; 101 cookie["dom-breakpoint-url"] = this._url; 102 cookie["dom-breakpoint-path"] = this._path; 103 cookie["dom-breakpoint-type"] = this._type; 106 104 } 107 105 108 saveIdentityToCookie(cookie)106 toJSON(key) 109 107 { 110 cookie[WI.DOMBreakpoint.DocumentURLCookieKey] = this.url; 111 cookie[WI.DOMBreakpoint.NodePathCookieKey] = this.path; 112 cookie[WI.DOMBreakpoint.TypeCookieKey] = this.type; 108 let json = { 109 url: this._url, 110 path: this._path, 111 type: this._type, 112 }; 113 if (this._disabled) 114 json.disabled = true; 115 if (key === WI.ObjectStore.toJSONSymbol) 116 json[WI.objectStores.domBreakpoints.keyPath] = this._url + ":" + this._path + ":" + this._type; 117 return json; 113 118 } 114 119 }; 115 116 WI.DOMBreakpoint.DocumentURLCookieKey = "dom-breakpoint-document-url";117 WI.DOMBreakpoint.NodePathCookieKey = "dom-breakpoint-node-path";118 WI.DOMBreakpoint.TypeCookieKey = "dom-breakpoint-type";119 120 120 121 WI.DOMBreakpoint.Type = { -
trunk/Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js
r242318 r244279 69 69 } 70 70 71 get serializableInfo()71 saveIdentityToCookie(cookie) 72 72 { 73 let info = { 73 cookie["event-breakpoint-type"] = this._type; 74 cookie["event-breakpoint-event-name"] = this._eventName; 75 } 76 77 toJSON(key) 78 { 79 let json = { 74 80 type: this._type, 75 81 eventName: this._eventName, 76 82 }; 77 83 if (this._disabled) 78 info.disabled = true; 79 80 return info; 81 } 82 83 saveIdentityToCookie(cookie) 84 { 85 cookie[WI.EventBreakpoint.TypeCookieKey] = this._type; 86 cookie[WI.EventBreakpoint.EventNameCookieKey] = this._eventName; 84 json.disabled = true; 85 if (key === WI.ObjectStore.toJSONSymbol) 86 json[WI.objectStores.eventBreakpoints.keyPath] = this._type + ":" + this._eventName; 87 return json; 87 88 } 88 89 }; … … 94 95 }; 95 96 96 WI.EventBreakpoint.TypeCookieKey = "event-breakpoint-type";97 WI.EventBreakpoint.EventNameCookieKey = "event-breakpoint-event-name";98 99 97 WI.EventBreakpoint.Event = { 100 98 DisabledStateChanged: "event-breakpoint-disabled-state-changed", -
trunk/Source/WebInspectorUI/UserInterface/Models/URLBreakpoint.js
r242318 r244279 67 67 } 68 68 69 get serializableInfo()69 saveIdentityToCookie(cookie) 70 70 { 71 let info = {type: this._type, url: this._url}; 72 if (this._disabled) 73 info.disabled = true; 74 75 return info; 71 cookie["url-breakpoint-type"] = this._type; 72 cookie["url-breakpoint-url"] = this._url; 76 73 } 77 74 78 saveIdentityToCookie(cookie)75 toJSON(key) 79 76 { 80 cookie["url-breakpoint-url"] = this._url; 77 let json = { 78 type: this._type, 79 url: this._url, 80 }; 81 if (this._disabled) 82 json.disabled = true; 83 if (key === WI.ObjectStore.toJSONSymbol) 84 json[WI.objectStores.urlBreakpoints.keyPath] = this._type + ":" + this._url; 85 return json; 81 86 } 82 87 };
Note: See TracChangeset
for help on using the changeset viewer.