<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[189834] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/189834">189834</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2015-09-15 18:03:35 -0700 (Tue, 15 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Paused Debugger prevents page reload
https://bugs.webkit.org/show_bug.cgi?id=148174

Patch by Joseph Pecoraro &lt;pecoraro@apple.com&gt; on 2015-09-15
Reviewed by Brian Burg.

Source/JavaScriptCore:

* debugger/Debugger.h:
(JSC::Debugger::suppressAllPauses):
(JSC::Debugger::setSuppressAllPauses):
* debugger/Debugger.cpp:
(JSC::Debugger::Debugger):
(JSC::Debugger::pauseIfNeeded):
* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::setSuppressAllPauses):
Provide a way to suppress pauses.

Source/WebCore:

When navigating the page while paused, suppress any pausing until the page
has completed navigation. If not paused and navigating, you can still pause
in pagehide and unload handlers or other late page events.

Could not write a reliable test for this at the moment.
InspectorTest.reloadPage has multiple issues with the output,
so I'll investigate making reload tests more reliable later.

* inspector/InspectorController.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::resume): Deleted.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
We now use existing InspectorInstrumentation functions instead of a method
on InspectorController during load. In dropping the method InspectorController
can drop a member variable no longer used.

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willStartProvisionalLoad):
Add a new instrumentation hook.

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willStartProvisionalLoadImpl):
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
When starting or completing main frame navigations, let the PageDebuggerAgent do some work.

* inspector/PageDebuggerAgent.h:
* inspector/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::mainFrameStartedLoading):
(WebCore::PageDebuggerAgent::mainFrameStoppedLoading):
(WebCore::PageDebuggerAgent::mainFrameNavigated):
Suppress pausing if navigating while paused. Otherwise behave as normal.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggercpp">trunk/Source/JavaScriptCore/debugger/Debugger.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerh">trunk/Source/JavaScriptCore/debugger/Debugger.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllercpp">trunk/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllerh">trunk/Source/WebCore/inspector/InspectorController.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorInstrumentationcpp">trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageDebuggerAgentcpp">trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageDebuggerAgenth">trunk/Source/WebCore/inspector/PageDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2015-09-15  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Paused Debugger prevents page reload
+        https://bugs.webkit.org/show_bug.cgi?id=148174
+
+        Reviewed by Brian Burg.
+
+        * debugger/Debugger.h:
+        (JSC::Debugger::suppressAllPauses):
+        (JSC::Debugger::setSuppressAllPauses):
+        * debugger/Debugger.cpp:
+        (JSC::Debugger::Debugger):
+        (JSC::Debugger::pauseIfNeeded):
+        * inspector/agents/InspectorDebuggerAgent.h:
+        * inspector/agents/InspectorDebuggerAgent.cpp:
+        (Inspector::InspectorDebuggerAgent::setSuppressAllPauses):
+        Provide a way to suppress pauses.
+
</ins><span class="cx"> 2015-09-15  Sukolsak Sakshuwong  &lt;sukolsak@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Implement calls to JavaScript functions in WebAssembly
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/Debugger.cpp (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/Debugger.cpp        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/JavaScriptCore/debugger/Debugger.cpp        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -118,6 +118,7 @@
</span><span class="cx">     , m_breakpointsActivated(true)
</span><span class="cx">     , m_hasHandlerForExceptionCallback(false)
</span><span class="cx">     , m_isInWorkerThread(isInWorkerThread)
</span><ins>+    , m_suppressAllPauses(false)
</ins><span class="cx">     , m_steppingMode(SteppingModeDisabled)
</span><span class="cx">     , m_reasonForPause(NotPaused)
</span><span class="cx">     , m_pauseOnCallFrame(0)
</span><span class="lines">@@ -585,6 +586,9 @@
</span><span class="cx">     if (m_isPaused)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    if (m_suppressAllPauses)
+        return;
+
</ins><span class="cx">     JSGlobalObject* vmEntryGlobalObject = callFrame-&gt;vmEntryGlobalObject();
</span><span class="cx">     if (!needPauseHandling(vmEntryGlobalObject))
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/Debugger.h (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/Debugger.h        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/JavaScriptCore/debugger/Debugger.h        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -110,6 +110,9 @@
</span><span class="cx">     bool isPaused() const { return m_isPaused; }
</span><span class="cx">     bool isStepping() const { return m_steppingMode == SteppingModeEnabled; }
</span><span class="cx"> 
</span><ins>+    bool suppressAllPauses() const { return m_suppressAllPauses; }
+    void setSuppressAllPauses(bool suppress) { m_suppressAllPauses = suppress; }
+
</ins><span class="cx">     virtual void sourceParsed(ExecState*, SourceProvider*, int errorLineNumber, const WTF::String&amp; errorMessage) = 0;
</span><span class="cx"> 
</span><span class="cx">     void exception(CallFrame*, JSValue exceptionValue, bool hasCatchHandler);
</span><span class="lines">@@ -196,6 +199,7 @@
</span><span class="cx">     bool m_breakpointsActivated : 1;
</span><span class="cx">     bool m_hasHandlerForExceptionCallback : 1;
</span><span class="cx">     bool m_isInWorkerThread : 1;
</span><ins>+    bool m_suppressAllPauses : 1;
</ins><span class="cx">     unsigned m_steppingMode : 1; // SteppingMode
</span><span class="cx"> 
</span><span class="cx">     ReasonForPause m_reasonForPause;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -134,6 +134,11 @@
</span><span class="cx">     return scriptDebugServer().isPaused();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void InspectorDebuggerAgent::setSuppressAllPauses(bool suppress)
+{
+    scriptDebugServer().setSuppressAllPauses(suppress);
+}
+
</ins><span class="cx"> static RefPtr&lt;InspectorObject&gt; buildAssertPauseReason(const String&amp; message)
</span><span class="cx"> {
</span><span class="cx">     auto reason = Inspector::Protocol::Debugger::AssertPauseReason::create().release();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -88,7 +88,9 @@
</span><span class="cx">     virtual void setOverlayMessage(ErrorString&amp;, const String*) override;
</span><span class="cx"> 
</span><span class="cx">     bool isPaused();
</span><del>-    
</del><ins>+
+    void setSuppressAllPauses(bool);
+
</ins><span class="cx">     void handleConsoleAssert(const String&amp; message);
</span><span class="cx"> 
</span><span class="cx">     void schedulePauseOnNextStatement(DebuggerFrontendDispatcher::Reason breakReason, RefPtr&lt;InspectorObject&gt;&amp;&amp; data);
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/ChangeLog        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2015-09-15  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Paused Debugger prevents page reload
+        https://bugs.webkit.org/show_bug.cgi?id=148174
+
+        Reviewed by Brian Burg.
+
+        When navigating the page while paused, suppress any pausing until the page
+        has completed navigation. If not paused and navigating, you can still pause
+        in pagehide and unload handlers or other late page events.
+
+        Could not write a reliable test for this at the moment.
+        InspectorTest.reloadPage has multiple issues with the output,
+        so I'll investigate making reload tests more reliable later.
+
+        * inspector/InspectorController.h:
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::resume): Deleted.
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
+        We now use existing InspectorInstrumentation functions instead of a method
+        on InspectorController during load. In dropping the method InspectorController
+        can drop a member variable no longer used.
+
+        * inspector/InspectorInstrumentation.h:
+        (WebCore::InspectorInstrumentation::willStartProvisionalLoad):
+        Add a new instrumentation hook.
+
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::willStartProvisionalLoadImpl):
+        (WebCore::InspectorInstrumentation::didCommitLoadImpl):
+        When starting or completing main frame navigations, let the PageDebuggerAgent do some work.
+
+        * inspector/PageDebuggerAgent.h:
+        * inspector/PageDebuggerAgent.cpp:
+        (WebCore::PageDebuggerAgent::mainFrameStartedLoading):
+        (WebCore::PageDebuggerAgent::mainFrameStoppedLoading):
+        (WebCore::PageDebuggerAgent::mainFrameNavigated):
+        Suppress pausing if navigating while paused. Otherwise behave as normal.
+
</ins><span class="cx"> 2015-09-15  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Provide a means for viewing the layer tree
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.cpp        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -163,10 +163,10 @@
</span><span class="cx">     m_agents.append(WTF::move(consoleAgentPtr));
</span><span class="cx"> 
</span><span class="cx">     auto debuggerAgentPtr = std::make_unique&lt;PageDebuggerAgent&gt;(pageContext, pageAgent, m_overlay.get());
</span><del>-    m_debuggerAgent = debuggerAgentPtr.get();
</del><ins>+    PageDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
</ins><span class="cx">     m_agents.append(WTF::move(debuggerAgentPtr));
</span><span class="cx"> 
</span><del>-    auto domDebuggerAgentPtr = std::make_unique&lt;InspectorDOMDebuggerAgent&gt;(pageContext, m_domAgent, m_debuggerAgent);
</del><ins>+    auto domDebuggerAgentPtr = std::make_unique&lt;InspectorDOMDebuggerAgent&gt;(pageContext, m_domAgent, debuggerAgent);
</ins><span class="cx">     m_domDebuggerAgent = domDebuggerAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(domDebuggerAgentPtr));
</span><span class="cx"> 
</span><span class="lines">@@ -184,8 +184,8 @@
</span><span class="cx">         );
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    runtimeAgent-&gt;setScriptDebugServer(&amp;m_debuggerAgent-&gt;scriptDebugServer());
-    m_timelineAgent-&gt;setPageScriptDebugServer(&amp;m_debuggerAgent-&gt;scriptDebugServer());
</del><ins>+    runtimeAgent-&gt;setScriptDebugServer(&amp;debuggerAgent-&gt;scriptDebugServer());
+    m_timelineAgent-&gt;setPageScriptDebugServer(&amp;debuggerAgent-&gt;scriptDebugServer());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InspectorController::~InspectorController()
</span><span class="lines">@@ -423,14 +423,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorController::resume()
-{
-    if (m_debuggerAgent) {
-        ErrorString unused;
-        m_debuggerAgent-&gt;resume(unused);
-    }
-}
-
</del><span class="cx"> bool InspectorController::developerExtrasEnabled() const
</span><span class="cx"> {
</span><span class="cx">     return m_page.settings().developerExtrasEnabled();
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.h (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.h        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/inspector/InspectorController.h        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -121,8 +121,6 @@
</span><span class="cx">     WEBCORE_EXPORT bool profilerEnabled() const;
</span><span class="cx">     WEBCORE_EXPORT void setProfilerEnabled(bool);
</span><span class="cx"> 
</span><del>-    void resume();
-
</del><span class="cx">     InspectorClient* inspectorClient() const { return m_inspectorClient; }
</span><span class="cx">     InspectorPageAgent* pageAgent() const { return m_pageAgent; }
</span><span class="cx"> 
</span><span class="lines">@@ -156,7 +154,6 @@
</span><span class="cx">     InspectorDOMAgent* m_domAgent { nullptr };
</span><span class="cx">     InspectorResourceAgent* m_resourceAgent { nullptr };
</span><span class="cx">     InspectorPageAgent* m_pageAgent { nullptr };
</span><del>-    PageDebuggerAgent* m_debuggerAgent { nullptr };
</del><span class="cx">     InspectorDOMDebuggerAgent* m_domDebuggerAgent { nullptr };
</span><span class="cx">     InspectorTimelineAgent* m_timelineAgent { nullptr };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorInstrumentationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -798,6 +798,9 @@
</span><span class="cx"> 
</span><span class="cx">         if (InspectorLayerTreeAgent* layerTreeAgent = instrumentingAgents.inspectorLayerTreeAgent())
</span><span class="cx">             layerTreeAgent-&gt;reset();
</span><ins>+
+        if (PageDebuggerAgent* pageDebuggerAgent = instrumentingAgents.pageDebuggerAgent())
+            pageDebuggerAgent-&gt;mainFrameNavigated();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (InspectorDOMAgent* domAgent = instrumentingAgents.inspectorDOMAgent())
</span><span class="lines">@@ -828,12 +831,22 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorInstrumentation::frameStartedLoadingImpl(InstrumentingAgents&amp; instrumentingAgents, Frame&amp; frame)
</span><span class="cx"> {
</span><ins>+    if (frame.isMainFrame()) {
+        if (PageDebuggerAgent* pageDebuggerAgent = instrumentingAgents.pageDebuggerAgent())
+            pageDebuggerAgent-&gt;mainFrameStartedLoading();
+    }
+
</ins><span class="cx">     if (InspectorPageAgent* inspectorPageAgent = instrumentingAgents.inspectorPageAgent())
</span><span class="cx">         inspectorPageAgent-&gt;frameStartedLoading(frame);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorInstrumentation::frameStoppedLoadingImpl(InstrumentingAgents&amp; instrumentingAgents, Frame&amp; frame)
</span><span class="cx"> {
</span><ins>+    if (frame.isMainFrame()) {
+        if (PageDebuggerAgent* pageDebuggerAgent = instrumentingAgents.pageDebuggerAgent())
+            pageDebuggerAgent-&gt;mainFrameStoppedLoading();
+    }
+
</ins><span class="cx">     if (InspectorPageAgent* inspectorPageAgent = instrumentingAgents.inspectorPageAgent())
</span><span class="cx">         inspectorPageAgent-&gt;frameStoppedLoading(frame);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -147,4 +147,23 @@
</span><span class="cx">     didClearGlobalObject();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void PageDebuggerAgent::mainFrameStartedLoading()
+{
+    if (isPaused()) {
+        setSuppressAllPauses(true);
+        ErrorString unused;
+        resume(unused);
+    }
+}
+
+void PageDebuggerAgent::mainFrameStoppedLoading()
+{
+    setSuppressAllPauses(false);
+}
+
+void PageDebuggerAgent::mainFrameNavigated()
+{
+    setSuppressAllPauses(false);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageDebuggerAgent.h (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageDebuggerAgent.h        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/inspector/PageDebuggerAgent.h        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -51,6 +51,10 @@
</span><span class="cx"> 
</span><span class="cx">     void didClearMainFrameWindowObject();
</span><span class="cx"> 
</span><ins>+    void mainFrameStartedLoading();
+    void mainFrameStoppedLoading();
+    void mainFrameNavigated();
+
</ins><span class="cx">     virtual PageScriptDebugServer&amp; scriptDebugServer() override;
</span><span class="cx"> 
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (189833 => 189834)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.cpp        2015-09-16 01:00:32 UTC (rev 189833)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp        2015-09-16 01:03:35 UTC (rev 189834)
</span><span class="lines">@@ -2983,11 +2983,6 @@
</span><span class="cx">     if (!m_frame.page())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (Page* page = m_frame.page()) {
-        if (m_frame.isMainFrame())
-            page-&gt;inspectorController().resume();
-    }
-
</del><span class="cx">     setProvisionalDocumentLoader(m_policyDocumentLoader.get());
</span><span class="cx">     m_loadType = type;
</span><span class="cx">     setState(FrameStateProvisional);
</span></span></pre>
</div>
</div>

</body>
</html>