Title: [192771] trunk/Source/WebInspectorUI
Revision
192771
Author
[email protected]
Date
2015-11-25 12:53:51 -0800 (Wed, 25 Nov 2015)

Log Message

Web Inspector: save Inspector's breakpoints to localStorage whenever they are modified
https://bugs.webkit.org/show_bug.cgi?id=151581

Reviewed by Timothy Hatcher.

Serialize all breakpoints to the "breakpoints" Setting in local storage
whenever any breakpoint model object is added, removed, or modified.

Remove the old listener that attempted to save breakpoints on the
pagehide event. It did not fire in important scenarios like exiting
the browser via Cmd-Q or killing the process via Ctrl-C / SIGKILL.

This is not expected to be a performance problem because most people
do not keep thousands of breakpoints active, and breakpoints are not
set very often. If it's a problem, we can mitigate it with coalescing.

* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.addBreakpoint):
(WebInspector.DebuggerManager.prototype.removeBreakpoint):
(WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WebInspector.DebuggerManager.prototype._saveBreakpoints):
(WebInspector.DebuggerManager.prototype._inspectorClosing): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (192770 => 192771)


--- trunk/Source/WebInspectorUI/ChangeLog	2015-11-25 19:04:03 UTC (rev 192770)
+++ trunk/Source/WebInspectorUI/ChangeLog	2015-11-25 20:53:51 UTC (rev 192771)
@@ -1,5 +1,30 @@
 2015-11-24  Brian Burg  <[email protected]>
 
+        Web Inspector: save Inspector's breakpoints to localStorage whenever they are modified
+        https://bugs.webkit.org/show_bug.cgi?id=151581
+
+        Reviewed by Timothy Hatcher.
+
+        Serialize all breakpoints to the "breakpoints" Setting in local storage
+        whenever any breakpoint model object is added, removed, or modified.
+
+        Remove the old listener that attempted to save breakpoints on the
+        pagehide event. It did not fire in important scenarios like exiting
+        the browser via Cmd-Q or killing the process via Ctrl-C / SIGKILL.
+
+        This is not expected to be a performance problem because most people
+        do not keep thousands of breakpoints active, and breakpoints are not
+        set very often. If it's a problem, we can mitigate it with coalescing.
+
+        * UserInterface/Controllers/DebuggerManager.js:
+        (WebInspector.DebuggerManager.prototype.addBreakpoint):
+        (WebInspector.DebuggerManager.prototype.removeBreakpoint):
+        (WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
+        (WebInspector.DebuggerManager.prototype._saveBreakpoints):
+        (WebInspector.DebuggerManager.prototype._inspectorClosing): Deleted.
+
+2015-11-24  Brian Burg  <[email protected]>
+
         Web Inspector: Cmd-1 to Cmd-9 shortcuts should select tabs by ordinal
         https://bugs.webkit.org/show_bug.cgi?id=151577
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js (192770 => 192771)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2015-11-25 19:04:03 UTC (rev 192770)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2015-11-25 20:53:51 UTC (rev 192771)
@@ -41,8 +41,6 @@
 
         WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this);
 
-        window.addEventListener("pagehide", this._inspectorClosing.bind(this));
-
         this._allExceptionsBreakpointEnabledSetting = new WebInspector.Setting("break-on-all-exceptions", false);
         this._allUncaughtExceptionsBreakpointEnabledSetting = new WebInspector.Setting("break-on-all-uncaught-exceptions", false);
 
@@ -362,6 +360,8 @@
         if (!breakpoint.disabled)
             this._setBreakpoint(breakpoint, shouldSpeculativelyResolve ? speculativelyResolveBreakpoint.bind(null, breakpoint) : null);
 
+        this._saveBreakpoints();
+
         if (!skipEventDispatch)
             this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointAdded, {breakpoint});
     }
@@ -403,6 +403,8 @@
         breakpoint.disabled = true;
         breakpoint.clearActions();
 
+        this._saveBreakpoints();
+
         this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointRemoved, {breakpoint});
     }
 
@@ -764,8 +766,9 @@
 
     _breakpointDisabledStateDidChange(event)
     {
-        var breakpoint = event.target;
+        this._saveBreakpoints();
 
+        let breakpoint = event.target;
         if (breakpoint === this._allExceptionsBreakpoint) {
             if (!breakpoint.disabled)
                 this.breakpointsEnabled = true;
@@ -790,7 +793,9 @@
 
     _breakpointEditablePropertyDidChange(event)
     {
-        var breakpoint = event.target;
+        this._saveBreakpoints();
+
+        let breakpoint = event.target;
         if (breakpoint.disabled)
             return;
 
@@ -862,26 +867,14 @@
         DebuggerAgent.setPauseOnExceptions(state);
     }
 
-    _inspectorClosing(event)
-    {
-        this._saveBreakpoints();
-    }
-
     _saveBreakpoints()
     {
-        var savedBreakpoints = [];
+        if (this._restoringBreakpoints)
+            return;
 
-        for (var i = 0; i < this._breakpoints.length; ++i) {
-            var breakpoint = this._breakpoints[i];
-
-            // Only breakpoints with URLs can be saved. Breakpoints for transient scripts can't.
-            if (!breakpoint.url)
-                continue;
-
-            savedBreakpoints.push(breakpoint.info);
-        }
-
-        this._breakpointsSetting.value = savedBreakpoints;
+        let breakpointsToSave = this._breakpoints.filter((breakpoint) => !!breakpoint.url);
+        let serializedBreakpoints = breakpointsToSave.map((breakpoint) => breakpoint.info);
+        this._breakpointsSetting.value = serializedBreakpoints;
     }
 
     _associateBreakpointsWithSourceCode(breakpoints, sourceCode)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to