Title: [189816] trunk/Source/WebInspectorUI
Revision
189816
Author
commit-qu...@webkit.org
Date
2015-09-15 11:36:04 -0700 (Tue, 15 Sep 2015)

Log Message

Web Inspector: Watch Expressions uncaught exceptions on page reload
https://bugs.webkit.org/show_bug.cgi?id=149150

Patch by Joseph Pecoraro <pecor...@apple.com> on 2015-09-15
Reviewed by Brian Burg.

Instead of waiting 50ms to Resume, when the page navigates
Resume immediately. This ensures nobody is using a stale
activeCallFrame after the navigation.

Also clean up the manager a bit by removing some deletes.

* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.restoreBreakpointsSoon):
(WebInspector.DebuggerManager.prototype.reset):
(WebInspector.DebuggerManager.prototype.debuggerDidPause):
(WebInspector.DebuggerManager.prototype.debuggerDidResume):
(WebInspector.DebuggerManager.prototype._mainResourceDidChange):
(WebInspector.DebuggerManager.prototype._didResumeInternal):
(WebInspector.DebuggerManager.prototype._associateBreakpointsWithSourceCode):
(WebInspector.DebuggerManager.prototype.debuggerDidResume.delayedWork): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (189815 => 189816)


--- trunk/Source/WebInspectorUI/ChangeLog	2015-09-15 18:26:27 UTC (rev 189815)
+++ trunk/Source/WebInspectorUI/ChangeLog	2015-09-15 18:36:04 UTC (rev 189816)
@@ -1,5 +1,28 @@
 2015-09-15  Joseph Pecoraro  <pecor...@apple.com>
 
+        Web Inspector: Watch Expressions uncaught exceptions on page reload
+        https://bugs.webkit.org/show_bug.cgi?id=149150
+
+        Reviewed by Brian Burg.
+
+        Instead of waiting 50ms to Resume, when the page navigates
+        Resume immediately. This ensures nobody is using a stale
+        activeCallFrame after the navigation.
+
+        Also clean up the manager a bit by removing some deletes.
+
+        * UserInterface/Controllers/DebuggerManager.js:
+        (WebInspector.DebuggerManager.restoreBreakpointsSoon):
+        (WebInspector.DebuggerManager.prototype.reset):
+        (WebInspector.DebuggerManager.prototype.debuggerDidPause):
+        (WebInspector.DebuggerManager.prototype.debuggerDidResume):
+        (WebInspector.DebuggerManager.prototype._mainResourceDidChange):
+        (WebInspector.DebuggerManager.prototype._didResumeInternal):
+        (WebInspector.DebuggerManager.prototype._associateBreakpointsWithSourceCode):
+        (WebInspector.DebuggerManager.prototype.debuggerDidResume.delayedWork): Deleted.
+
+2015-09-15  Joseph Pecoraro  <pecor...@apple.com>
+
         Web Inspector: Closing the final inspector tab should be allowed
         https://bugs.webkit.org/show_bug.cgi?id=149130
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js (189815 => 189816)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2015-09-15 18:26:27 UTC (rev 189815)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2015-09-15 18:36:04 UTC (rev 189816)
@@ -38,6 +38,8 @@
         WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.AutoContinueDidChange, this._breakpointEditablePropertyDidChange, this);
         WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.ActionsDidChange, this._breakpointEditablePropertyDidChange, this);
 
+        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);
@@ -76,7 +78,7 @@
             this._restoringBreakpoints = true;
             for (var cookie of this._breakpointsSetting.value)
                 this.addBreakpoint(new WebInspector.Breakpoint(cookie));
-            delete this._restoringBreakpoints;
+            this._restoringBreakpoints = false;
         }
 
         // Ensure that all managers learn about restored breakpoints,
@@ -443,7 +445,7 @@
                 breakpoint.sourceCodeLocation.sourceCode = null;
         }
 
-        delete this._ignoreBreakpointDisplayLocationDidChangeEvent;
+        this._ignoreBreakpointDisplayLocationDidChangeEvent = false;
 
         this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ScriptsCleared);
 
@@ -457,7 +459,7 @@
 
         if (this._delayedResumeTimeout) {
             clearTimeout(this._delayedResumeTimeout);
-            delete this._delayedResumeTimeout;
+            this._delayedResumeTimeout = undefined;
         }
 
         var wasStillPaused = this._paused;
@@ -497,22 +499,9 @@
     {
         // Called from WebInspector.DebuggerObserver.
 
-        function delayedWork()
-        {
-            delete this._delayedResumeTimeout;
-
-            this._paused = false;
-            this._callFrames = null;
-            this._activeCallFrame = null;
-
-            this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);
-            this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.CallFramesDidChange);
-            this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);
-        }
-
         // We delay clearing the state and firing events so the user interface does not flash
         // between brief steps or successive breakpoints.
-        this._delayedResumeTimeout = setTimeout(delayedWork.bind(this), 50);
+        this._delayedResumeTimeout = setTimeout(this._didResumeInternal.bind(this), 50);
     }
 
     playBreakpointActionSound(breakpointActionIdentifier)
@@ -810,6 +799,33 @@
         }
     }
 
+    _mainResourceDidChange(event)
+    {
+        if (!event.target.isMainFrame())
+            return;
+
+        this._didResumeInternal();
+    }
+
+    _didResumeInternal()
+    {
+        if (!this._activeCallFrame)
+            return;
+
+        if (this._delayedResumeTimeout) {
+            clearTimeout(this._delayedResumeTimeout);
+            this._delayedResumeTimeout = undefined;
+        }
+
+        this._paused = false;
+        this._callFrames = null;
+        this._activeCallFrame = null;
+
+        this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);
+        this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.CallFramesDidChange);
+        this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);
+    }
+
     _updateBreakOnExceptionsState()
     {
         var state = "none";
@@ -871,7 +887,7 @@
             console.assert(breakpoint.sourceCodeLocation.sourceCode === sourceCode || breakpoint.sourceCodeLocation.sourceCode.url ="" sourceCode.url);
         }
 
-        delete this._ignoreBreakpointDisplayLocationDidChangeEvent;
+        this._ignoreBreakpointDisplayLocationDidChangeEvent = false;
     }
 };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to