<!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>[191719] 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/191719">191719</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2015-10-28 20:10:15 -0700 (Wed, 28 Oct 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Web Inspector: Rename InspectorResourceAgent to InspectorNetworkAgent
https://bugs.webkit.org/show_bug.cgi?id=150654
Patch by Joseph Pecoraro <pecoraro@apple.com> on 2015-10-28
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
* inspector/scripts/codegen/generator.py:
Source/WebCore:
* CMakeLists.txt:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* inspector/InspectorAllInOne.cpp:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
* inspector/InspectorController.h:
* inspector/InspectorDOMDebuggerAgent.h:
* inspector/InspectorFrontendClient.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willRecalculateStyleImpl):
(WebCore::InspectorInstrumentation::didRecalculateStyleImpl):
(WebCore::InspectorInstrumentation::didScheduleStyleRecalculationImpl):
(WebCore::InspectorInstrumentation::willSendRequestImpl):
(WebCore::InspectorInstrumentation::markResourceAsCachedImpl):
(WebCore::InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl):
(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::didReceiveDataImpl):
(WebCore::InspectorInstrumentation::didFinishLoadingImpl):
(WebCore::InspectorInstrumentation::didFailLoadingImpl):
(WebCore::InspectorInstrumentation::didFinishXHRLoadingImpl):
(WebCore::InspectorInstrumentation::didReceiveXHRResponseImpl):
(WebCore::InspectorInstrumentation::willLoadXHRSynchronouslyImpl):
(WebCore::InspectorInstrumentation::didLoadXHRSynchronouslyImpl):
(WebCore::InspectorInstrumentation::scriptImportedImpl):
(WebCore::InspectorInstrumentation::didReceiveScriptResponseImpl):
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::willDestroyCachedResourceImpl):
(WebCore::InspectorInstrumentation::didCreateWebSocketImpl):
(WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl):
(WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl):
(WebCore::InspectorInstrumentation::didCloseWebSocketImpl):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrameImpl):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl):
(WebCore::InspectorInstrumentation::didSendWebSocketFrameImpl):
* inspector/InspectorLayerTreeAgent.h:
* inspector/InspectorNetworkAgent.cpp: Renamed from Source/WebCore/inspector/InspectorResourceAgent.cpp.
(WebCore::InspectorNetworkAgent::InspectorNetworkAgent):
(WebCore::InspectorNetworkAgent::didCreateFrontendAndBackend):
(WebCore::InspectorNetworkAgent::willDestroyFrontendAndBackend):
(WebCore::buildObjectForHeaders):
(WebCore::buildObjectForTiming):
(WebCore::buildObjectForResourceRequest):
(WebCore::buildObjectForResourceResponse):
(WebCore::buildObjectForCachedResource):
(WebCore::InspectorNetworkAgent::~InspectorNetworkAgent):
(WebCore::InspectorNetworkAgent::timestamp):
(WebCore::InspectorNetworkAgent::willSendRequest):
(WebCore::InspectorNetworkAgent::markResourceAsCached):
(WebCore::InspectorNetworkAgent::didReceiveResponse):
(WebCore::isErrorStatusCode):
(WebCore::InspectorNetworkAgent::didReceiveData):
(WebCore::InspectorNetworkAgent::didFinishLoading):
(WebCore::InspectorNetworkAgent::didFailLoading):
(WebCore::InspectorNetworkAgent::didLoadResourceFromMemoryCache):
(WebCore::InspectorNetworkAgent::setInitialScriptContent):
(WebCore::InspectorNetworkAgent::didReceiveScriptResponse):
(WebCore::InspectorNetworkAgent::didFinishXHRLoading):
(WebCore::InspectorNetworkAgent::didReceiveXHRResponse):
(WebCore::InspectorNetworkAgent::willLoadXHRSynchronously):
(WebCore::InspectorNetworkAgent::didLoadXHRSynchronously):
(WebCore::InspectorNetworkAgent::willDestroyCachedResource):
(WebCore::InspectorNetworkAgent::willRecalculateStyle):
(WebCore::InspectorNetworkAgent::didRecalculateStyle):
(WebCore::InspectorNetworkAgent::didScheduleStyleRecalculation):
(WebCore::InspectorNetworkAgent::buildInitiatorObject):
(WebCore::InspectorNetworkAgent::didCreateWebSocket):
(WebCore::InspectorNetworkAgent::willSendWebSocketHandshakeRequest):
(WebCore::InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse):
(WebCore::InspectorNetworkAgent::didCloseWebSocket):
(WebCore::InspectorNetworkAgent::didReceiveWebSocketFrame):
(WebCore::InspectorNetworkAgent::didSendWebSocketFrame):
(WebCore::InspectorNetworkAgent::didReceiveWebSocketFrameError):
(WebCore::InspectorNetworkAgent::enable):
(WebCore::InspectorNetworkAgent::disable):
(WebCore::InspectorNetworkAgent::setExtraHTTPHeaders):
(WebCore::InspectorNetworkAgent::getResponseBody):
(WebCore::InspectorNetworkAgent::setCacheDisabled):
(WebCore::InspectorNetworkAgent::loadResource):
(WebCore::InspectorNetworkAgent::mainFrameNavigated):
* inspector/InspectorNetworkAgent.h: Renamed from Source/WebCore/inspector/InspectorResourceAgent.h.
* inspector/InspectorPageAgent.h:
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):
* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::inspectorNetworkAgent):
(WebCore::InstrumentingAgents::setInspectorNetworkAgent):
(WebCore::InstrumentingAgents::inspectorResourceAgent): Deleted.
(WebCore::InstrumentingAgents::setInspectorResourceAgent): Deleted.
* inspector/NetworkResourcesData.h:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengeneratorpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator.py</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorAllInOnecpp">trunk/Source/WebCore/inspector/InspectorAllInOne.cpp</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="#trunkSourceWebCoreinspectorInspectorDOMDebuggerAgenth">trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendClienth">trunk/Source/WebCore/inspector/InspectorFrontendClient.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorInstrumentationcpp">trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorLayerTreeAgenth">trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgenth">trunk/Source/WebCore/inspector/InspectorPageAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInstrumentingAgentscpp">trunk/Source/WebCore/inspector/InstrumentingAgents.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInstrumentingAgentsh">trunk/Source/WebCore/inspector/InstrumentingAgents.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorNetworkResourcesDatah">trunk/Source/WebCore/inspector/NetworkResourcesData.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreinspectorInspectorNetworkAgentcpp">trunk/Source/WebCore/inspector/InspectorNetworkAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNetworkAgenth">trunk/Source/WebCore/inspector/InspectorNetworkAgent.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreinspectorInspectorResourceAgentcpp">trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorResourceAgenth">trunk/Source/WebCore/inspector/InspectorResourceAgent.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2015-10-28 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Rename InspectorResourceAgent to InspectorNetworkAgent
+ https://bugs.webkit.org/show_bug.cgi?id=150654
+
+ Reviewed by Geoffrey Garen.
+
+ * inspector/scripts/codegen/generator.py:
+
</ins><span class="cx"> 2015-10-28 Filip Pizlo <fpizlo@apple.com>
</span><span class="cx">
</span><span class="cx"> B3::reduceStrength() should do DCE
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengeneratorpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator.py (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator.py        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator.py        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> "Timeline.TimelineEvent",
</span><span class="cx"> # InspectorStyleSheet not only creates this property but wants to read it and modify it.
</span><span class="cx"> "CSS.CSSProperty",
</span><del>- # InspectorResourceAgent needs to update mime-type.
</del><ins>+ # InspectorNetworkAgent needs to update mime-type.
</ins><span class="cx"> "Network.Response",
</span><span class="cx"> # For testing purposes only.
</span><span class="cx"> "Test.OpenParameterBundle"
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/CMakeLists.txt        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -1884,10 +1884,10 @@
</span><span class="cx"> inspector/InspectorInstrumentation.cpp
</span><span class="cx"> inspector/InspectorInstrumentationCookie.cpp
</span><span class="cx"> inspector/InspectorLayerTreeAgent.cpp
</span><ins>+ inspector/InspectorNetworkAgent.cpp
</ins><span class="cx"> inspector/InspectorNodeFinder.cpp
</span><span class="cx"> inspector/InspectorOverlay.cpp
</span><span class="cx"> inspector/InspectorPageAgent.cpp
</span><del>- inspector/InspectorResourceAgent.cpp
</del><span class="cx"> inspector/InspectorStyleSheet.cpp
</span><span class="cx"> inspector/InspectorTimelineAgent.cpp
</span><span class="cx"> inspector/InspectorWorkerAgent.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/ChangeLog        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -1,5 +1,104 @@
</span><span class="cx"> 2015-10-28 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><ins>+ Web Inspector: Rename InspectorResourceAgent to InspectorNetworkAgent
+ https://bugs.webkit.org/show_bug.cgi?id=150654
+
+ Reviewed by Geoffrey Garen.
+
+ * CMakeLists.txt:
+ * WebCore.vcxproj/WebCore.vcxproj:
+ * WebCore.vcxproj/WebCore.vcxproj.filters:
+ * WebCore.xcodeproj/project.pbxproj:
+ * inspector/InspectorAllInOne.cpp:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::InspectorController):
+ * inspector/InspectorController.h:
+ * inspector/InspectorDOMDebuggerAgent.h:
+ * inspector/InspectorFrontendClient.h:
+ * inspector/InspectorInstrumentation.cpp:
+ (WebCore::InspectorInstrumentation::willRecalculateStyleImpl):
+ (WebCore::InspectorInstrumentation::didRecalculateStyleImpl):
+ (WebCore::InspectorInstrumentation::didScheduleStyleRecalculationImpl):
+ (WebCore::InspectorInstrumentation::willSendRequestImpl):
+ (WebCore::InspectorInstrumentation::markResourceAsCachedImpl):
+ (WebCore::InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl):
+ (WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
+ (WebCore::InspectorInstrumentation::didReceiveDataImpl):
+ (WebCore::InspectorInstrumentation::didFinishLoadingImpl):
+ (WebCore::InspectorInstrumentation::didFailLoadingImpl):
+ (WebCore::InspectorInstrumentation::didFinishXHRLoadingImpl):
+ (WebCore::InspectorInstrumentation::didReceiveXHRResponseImpl):
+ (WebCore::InspectorInstrumentation::willLoadXHRSynchronouslyImpl):
+ (WebCore::InspectorInstrumentation::didLoadXHRSynchronouslyImpl):
+ (WebCore::InspectorInstrumentation::scriptImportedImpl):
+ (WebCore::InspectorInstrumentation::didReceiveScriptResponseImpl):
+ (WebCore::InspectorInstrumentation::didCommitLoadImpl):
+ (WebCore::InspectorInstrumentation::willDestroyCachedResourceImpl):
+ (WebCore::InspectorInstrumentation::didCreateWebSocketImpl):
+ (WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl):
+ (WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl):
+ (WebCore::InspectorInstrumentation::didCloseWebSocketImpl):
+ (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameImpl):
+ (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl):
+ (WebCore::InspectorInstrumentation::didSendWebSocketFrameImpl):
+ * inspector/InspectorLayerTreeAgent.h:
+ * inspector/InspectorNetworkAgent.cpp: Renamed from Source/WebCore/inspector/InspectorResourceAgent.cpp.
+ (WebCore::InspectorNetworkAgent::InspectorNetworkAgent):
+ (WebCore::InspectorNetworkAgent::didCreateFrontendAndBackend):
+ (WebCore::InspectorNetworkAgent::willDestroyFrontendAndBackend):
+ (WebCore::buildObjectForHeaders):
+ (WebCore::buildObjectForTiming):
+ (WebCore::buildObjectForResourceRequest):
+ (WebCore::buildObjectForResourceResponse):
+ (WebCore::buildObjectForCachedResource):
+ (WebCore::InspectorNetworkAgent::~InspectorNetworkAgent):
+ (WebCore::InspectorNetworkAgent::timestamp):
+ (WebCore::InspectorNetworkAgent::willSendRequest):
+ (WebCore::InspectorNetworkAgent::markResourceAsCached):
+ (WebCore::InspectorNetworkAgent::didReceiveResponse):
+ (WebCore::isErrorStatusCode):
+ (WebCore::InspectorNetworkAgent::didReceiveData):
+ (WebCore::InspectorNetworkAgent::didFinishLoading):
+ (WebCore::InspectorNetworkAgent::didFailLoading):
+ (WebCore::InspectorNetworkAgent::didLoadResourceFromMemoryCache):
+ (WebCore::InspectorNetworkAgent::setInitialScriptContent):
+ (WebCore::InspectorNetworkAgent::didReceiveScriptResponse):
+ (WebCore::InspectorNetworkAgent::didFinishXHRLoading):
+ (WebCore::InspectorNetworkAgent::didReceiveXHRResponse):
+ (WebCore::InspectorNetworkAgent::willLoadXHRSynchronously):
+ (WebCore::InspectorNetworkAgent::didLoadXHRSynchronously):
+ (WebCore::InspectorNetworkAgent::willDestroyCachedResource):
+ (WebCore::InspectorNetworkAgent::willRecalculateStyle):
+ (WebCore::InspectorNetworkAgent::didRecalculateStyle):
+ (WebCore::InspectorNetworkAgent::didScheduleStyleRecalculation):
+ (WebCore::InspectorNetworkAgent::buildInitiatorObject):
+ (WebCore::InspectorNetworkAgent::didCreateWebSocket):
+ (WebCore::InspectorNetworkAgent::willSendWebSocketHandshakeRequest):
+ (WebCore::InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse):
+ (WebCore::InspectorNetworkAgent::didCloseWebSocket):
+ (WebCore::InspectorNetworkAgent::didReceiveWebSocketFrame):
+ (WebCore::InspectorNetworkAgent::didSendWebSocketFrame):
+ (WebCore::InspectorNetworkAgent::didReceiveWebSocketFrameError):
+ (WebCore::InspectorNetworkAgent::enable):
+ (WebCore::InspectorNetworkAgent::disable):
+ (WebCore::InspectorNetworkAgent::setExtraHTTPHeaders):
+ (WebCore::InspectorNetworkAgent::getResponseBody):
+ (WebCore::InspectorNetworkAgent::setCacheDisabled):
+ (WebCore::InspectorNetworkAgent::loadResource):
+ (WebCore::InspectorNetworkAgent::mainFrameNavigated):
+ * inspector/InspectorNetworkAgent.h: Renamed from Source/WebCore/inspector/InspectorResourceAgent.h.
+ * inspector/InspectorPageAgent.h:
+ * inspector/InstrumentingAgents.cpp:
+ (WebCore::InstrumentingAgents::reset):
+ * inspector/InstrumentingAgents.h:
+ (WebCore::InstrumentingAgents::inspectorNetworkAgent):
+ (WebCore::InstrumentingAgents::setInspectorNetworkAgent):
+ (WebCore::InstrumentingAgents::inspectorResourceAgent): Deleted.
+ (WebCore::InstrumentingAgents::setInspectorResourceAgent): Deleted.
+ * inspector/NetworkResourcesData.h:
+
+2015-10-28 Joseph Pecoraro <pecoraro@apple.com>
+
</ins><span class="cx"> Web Inspector: Remove unused / duplicate WebSocket timeline records
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=150647
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -19466,7 +19466,7 @@
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\inspector\InspectorNodeFinder.cpp">
</del><ins>+ <ClCompile Include="..\inspector\InspectorNetworkAgent.cpp">
</ins><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
</span><span class="lines">@@ -19480,7 +19480,7 @@
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\inspector\InspectorOverlay.cpp">
</del><ins>+ <ClCompile Include="..\inspector\InspectorNodeFinder.cpp">
</ins><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
</span><span class="lines">@@ -19494,7 +19494,7 @@
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\inspector\InspectorPageAgent.cpp">
</del><ins>+ <ClCompile Include="..\inspector\InspectorOverlay.cpp">
</ins><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
</span><span class="lines">@@ -19508,7 +19508,7 @@
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\inspector\InspectorResourceAgent.cpp">
</del><ins>+ <ClCompile Include="..\inspector\InspectorPageAgent.cpp">
</ins><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
</span><span class="lines">@@ -22854,10 +22854,10 @@
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorInstrumentation.h" />
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorInstrumentationCookie.h" />
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorLayerTreeAgent.h" />
</span><ins>+ <ClInclude Include="..\inspector\InspectorNetworkAgent.h" />
</ins><span class="cx"> <ClInclude Include="..\inspector\InspectorNodeFinder.h" />
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorOverlay.h" />
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorPageAgent.h" />
</span><del>- <ClInclude Include="..\inspector\InspectorResourceAgent.h" />
</del><span class="cx"> <ClInclude Include="..\inspector\InspectorStyleSheet.h" />
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorTimelineAgent.h" />
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorWebAgentBase.h" />
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -4679,15 +4679,18 @@
</span><span class="cx"> <ClCompile Include="..\inspector\InspectorLayerTreeAgent.cpp">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClCompile>
</span><ins>+ <ClCompile Include="..\inspector\InspectorNetworkAgent.cpp">
+ <Filter>inspector</Filter>
+ </ClCompile>
+ <ClCompile Include="..\inspector\InspectorNodeFinder.cpp">
+ <Filter>inspector</Filter>
+ </ClCompile>
</ins><span class="cx"> <ClCompile Include="..\inspector\InspectorOverlay.cpp">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClCompile>
</span><span class="cx"> <ClCompile Include="..\inspector\InspectorPageAgent.cpp">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\inspector\InspectorResourceAgent.cpp">
- <Filter>inspector</Filter>
- </ClCompile>
</del><span class="cx"> <ClCompile Include="..\inspector\InspectorStyleSheet.cpp">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClCompile>
</span><span class="lines">@@ -7023,9 +7026,6 @@
</span><span class="cx"> <ClCompile Include="..\Modules\indexeddb\IDBKeyData.cpp">
</span><span class="cx"> <Filter>Modules\indexeddb</Filter>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\inspector\InspectorNodeFinder.cpp">
- <Filter>inspector</Filter>
- </ClCompile>
</del><span class="cx"> <ClCompile Include="..\platform\graphics\ISOVTTCue.cpp">
</span><span class="cx"> <Filter>platform\graphics</Filter>
</span><span class="cx"> </ClCompile>
</span><span class="lines">@@ -11965,6 +11965,9 @@
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorLayerTreeAgent.h">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClInclude>
</span><ins>+ <ClInclude Include="..\inspector\InspectorNetworkAgent.h">
+ <Filter>inspector</Filter>
+ </ClInclude>
</ins><span class="cx"> <ClInclude Include="..\inspector\InspectorNodeFinder.h">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClInclude>
</span><span class="lines">@@ -11974,9 +11977,6 @@
</span><span class="cx"> <ClInclude Include="..\inspector\InspectorPageAgent.h">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClInclude>
</span><del>- <ClInclude Include="..\inspector\InspectorResourceAgent.h">
- <Filter>inspector</Filter>
- </ClInclude>
</del><span class="cx"> <ClInclude Include="..\inspector\InspectorStyleSheet.h">
</span><span class="cx"> <Filter>inspector</Filter>
</span><span class="cx"> </ClInclude>
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -2774,8 +2774,8 @@
</span><span class="cx">                 82AB1744124B99EC00C5069D /* InspectorCSSAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1742124B99EC00C5069D /* InspectorCSSAgent.h */; };
</span><span class="cx">                 82AB1773125C826700C5069D /* InspectorStyleSheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */; };
</span><span class="cx">                 82AB1774125C826700C5069D /* InspectorStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1770125C826700C5069D /* InspectorStyleSheet.h */; };
</span><del>-                82AB1775125C826700C5069D /* InspectorResourceAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */; };
-                82AB1776125C826700C5069D /* InspectorResourceAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1772125C826700C5069D /* InspectorResourceAgent.h */; };
</del><ins>+                82AB1775125C826700C5069D /* InspectorNetworkAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82AB1771125C826700C5069D /* InspectorNetworkAgent.cpp */; };
+                82AB1776125C826700C5069D /* InspectorNetworkAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 82AB1772125C826700C5069D /* InspectorNetworkAgent.h */; };
</ins><span class="cx">                 82E3D8DE122EA0D1003AE5BC /* CSSPropertySourceData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82E3D8DC122EA0D1003AE5BC /* CSSPropertySourceData.cpp */; };
</span><span class="cx">                 82E3D8DF122EA0D1003AE5BC /* CSSPropertySourceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 82E3D8DD122EA0D1003AE5BC /* CSSPropertySourceData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 830030F51B7D33B500ED3AAC /* GenericCachedHTMLCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 830030F31B7D33A600ED3AAC /* GenericCachedHTMLCollection.cpp */; };
</span><span class="lines">@@ -10255,8 +10255,8 @@
</span><span class="cx">                 82AB1742124B99EC00C5069D /* InspectorCSSAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCSSAgent.h; sourceTree = "<group>"; };
</span><span class="cx">                 82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorStyleSheet.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 82AB1770125C826700C5069D /* InspectorStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorStyleSheet.h; sourceTree = "<group>"; };
</span><del>-                82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorResourceAgent.cpp; sourceTree = "<group>"; };
-                82AB1772125C826700C5069D /* InspectorResourceAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorResourceAgent.h; sourceTree = "<group>"; };
</del><ins>+                82AB1771125C826700C5069D /* InspectorNetworkAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorNetworkAgent.cpp; sourceTree = "<group>"; };
+                82AB1772125C826700C5069D /* InspectorNetworkAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorNetworkAgent.h; sourceTree = "<group>"; };
</ins><span class="cx">                 82E3D8DC122EA0D1003AE5BC /* CSSPropertySourceData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPropertySourceData.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 82E3D8DD122EA0D1003AE5BC /* CSSPropertySourceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSPropertySourceData.h; sourceTree = "<group>"; };
</span><span class="cx">                 830030F31B7D33A600ED3AAC /* GenericCachedHTMLCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GenericCachedHTMLCollection.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -15943,6 +15943,8 @@
</span><span class="cx">                                 A5840E1B187B74D500843B10 /* InspectorInstrumentationCookie.h */,
</span><span class="cx">                                 71B1E123164048CC00B1880A /* InspectorLayerTreeAgent.cpp */,
</span><span class="cx">                                 71B1E124164048CC00B1880A /* InspectorLayerTreeAgent.h */,
</span><ins>+                                82AB1771125C826700C5069D /* InspectorNetworkAgent.cpp */,
+                                82AB1772125C826700C5069D /* InspectorNetworkAgent.h */,
</ins><span class="cx">                                 504AACCB1834455900E3D9BC /* InspectorNodeFinder.cpp */,
</span><span class="cx">                                 504AACCC1834455900E3D9BC /* InspectorNodeFinder.h */,
</span><span class="cx">                                 7C522D4915B477E8009B7C95 /* InspectorOverlay.cpp */,
</span><span class="lines">@@ -15954,8 +15956,6 @@
</span><span class="cx">                                 4F6FDD631341DEDD001F8EE3 /* InspectorPageAgent.h */,
</span><span class="cx">                                 99CC0B6418BE9F15006CEBCC /* InspectorReplayAgent.cpp */,
</span><span class="cx">                                 99CC0B6518BE9F15006CEBCC /* InspectorReplayAgent.h */,
</span><del>-                                82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */,
-                                82AB1772125C826700C5069D /* InspectorResourceAgent.h */,
</del><span class="cx">                                 82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */,
</span><span class="cx">                                 82AB1770125C826700C5069D /* InspectorStyleSheet.h */,
</span><span class="cx">                                 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */,
</span><span class="lines">@@ -25847,7 +25847,7 @@
</span><span class="cx">                                 0F03C0751884805500A5F8CA /* InspectorOverlay.h in Headers */,
</span><span class="cx">                                 4F6FDD651341DEDD001F8EE3 /* InspectorPageAgent.h in Headers */,
</span><span class="cx">                                 99CC0B6718BE9F15006CEBCC /* InspectorReplayAgent.h in Headers */,
</span><del>-                                82AB1776125C826700C5069D /* InspectorResourceAgent.h in Headers */,
</del><ins>+                                82AB1776125C826700C5069D /* InspectorNetworkAgent.h in Headers */,
</ins><span class="cx">                                 82AB1774125C826700C5069D /* InspectorStyleSheet.h in Headers */,
</span><span class="cx">                                 754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */,
</span><span class="cx">                                 A593CF8B1840535200BFCE27 /* InspectorWebAgentBase.h in Headers */,
</span><span class="lines">@@ -29436,7 +29436,7 @@
</span><span class="cx">                                 7C522D4B15B477E8009B7C95 /* InspectorOverlay.cpp in Sources */,
</span><span class="cx">                                 4F6FDD641341DEDD001F8EE3 /* InspectorPageAgent.cpp in Sources */,
</span><span class="cx">                                 99CC0B6618BE9F15006CEBCC /* InspectorReplayAgent.cpp in Sources */,
</span><del>-                                82AB1775125C826700C5069D /* InspectorResourceAgent.cpp in Sources */,
</del><ins>+                                82AB1775125C826700C5069D /* InspectorNetworkAgent.cpp in Sources */,
</ins><span class="cx">                                 82AB1773125C826700C5069D /* InspectorStyleSheet.cpp in Sources */,
</span><span class="cx">                                 754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */,
</span><span class="cx">                                 F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorAllInOne.cpp (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorAllInOne.cpp        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorAllInOne.cpp        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -44,10 +44,10 @@
</span><span class="cx"> #include "InspectorInstrumentation.cpp"
</span><span class="cx"> #include "InspectorInstrumentationCookie.cpp"
</span><span class="cx"> #include "InspectorLayerTreeAgent.cpp"
</span><ins>+#include "InspectorNetworkAgent.cpp"
</ins><span class="cx"> #include "InspectorNodeFinder.cpp"
</span><span class="cx"> #include "InspectorOverlay.cpp"
</span><span class="cx"> #include "InspectorPageAgent.cpp"
</span><del>-#include "InspectorResourceAgent.cpp"
</del><span class="cx"> #include "InspectorStyleSheet.cpp"
</span><span class="cx"> #include "InspectorTimelineAgent.cpp"
</span><span class="cx"> #include "InspectorWorkerAgent.cpp"
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.cpp        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -46,9 +46,9 @@
</span><span class="cx"> #include "InspectorIndexedDBAgent.h"
</span><span class="cx"> #include "InspectorInstrumentation.h"
</span><span class="cx"> #include "InspectorLayerTreeAgent.h"
</span><ins>+#include "InspectorNetworkAgent.h"
</ins><span class="cx"> #include "InspectorPageAgent.h"
</span><span class="cx"> #include "InspectorReplayAgent.h"
</span><del>-#include "InspectorResourceAgent.h"
</del><span class="cx"> #include "InspectorTimelineAgent.h"
</span><span class="cx"> #include "InspectorWorkerAgent.h"
</span><span class="cx"> #include "InstrumentingAgents.h"
</span><span class="lines">@@ -138,6 +138,8 @@
</span><span class="cx"> InspectorDatabaseAgent* databaseAgent = databaseAgentPtr.get();
</span><span class="cx"> m_agents.append(WTF::move(databaseAgentPtr));
</span><span class="cx">
</span><ins>+ m_agents.append(std::make_unique<InspectorNetworkAgent>(pageContext, pageAgent));
+
</ins><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> m_agents.append(std::make_unique<InspectorIndexedDBAgent>(pageContext, pageAgent));
</span><span class="cx"> #endif
</span><span class="lines">@@ -154,10 +156,6 @@
</span><span class="cx"> m_timelineAgent = timelineAgentPtr.get();
</span><span class="cx"> m_agents.append(WTF::move(timelineAgentPtr));
</span><span class="cx">
</span><del>- auto resourceAgentPtr = std::make_unique<InspectorResourceAgent>(pageContext, pageAgent);
- m_resourceAgent = resourceAgentPtr.get();
- m_agents.append(WTF::move(resourceAgentPtr));
-
</del><span class="cx"> auto consoleAgentPtr = std::make_unique<PageConsoleAgent>(pageContext, m_domAgent);
</span><span class="cx"> WebConsoleAgent* consoleAgent = consoleAgentPtr.get();
</span><span class="cx"> m_instrumentingAgents->setWebConsoleAgent(consoleAgentPtr.get());
</span><span class="lines">@@ -167,10 +165,7 @@
</span><span class="cx"> PageDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
</span><span class="cx"> m_agents.append(WTF::move(debuggerAgentPtr));
</span><span class="cx">
</span><del>- auto domDebuggerAgentPtr = std::make_unique<InspectorDOMDebuggerAgent>(pageContext, m_domAgent, debuggerAgent);
- m_domDebuggerAgent = domDebuggerAgentPtr.get();
- m_agents.append(WTF::move(domDebuggerAgentPtr));
-
</del><ins>+ m_agents.append(std::make_unique<InspectorDOMDebuggerAgent>(pageContext, m_domAgent, debuggerAgent));
</ins><span class="cx"> m_agents.append(std::make_unique<InspectorHeapAgent>(pageContext));
</span><span class="cx"> m_agents.append(std::make_unique<InspectorApplicationCacheAgent>(pageContext, pageAgent));
</span><span class="cx"> m_agents.append(std::make_unique<InspectorWorkerAgent>(pageContext));
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorController.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -36,9 +36,7 @@
</span><span class="cx"> #include <inspector/InspectorAgentRegistry.h>
</span><span class="cx"> #include <inspector/InspectorEnvironment.h>
</span><span class="cx"> #include <wtf/Forward.h>
</span><del>-#include <wtf/HashMap.h>
</del><span class="cx"> #include <wtf/Noncopyable.h>
</span><del>-#include <wtf/Vector.h>
</del><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="cx"> namespace Inspector {
</span><span class="lines">@@ -46,7 +44,6 @@
</span><span class="cx"> class FrontendChannel;
</span><span class="cx"> class FrontendRouter;
</span><span class="cx"> class InspectorAgent;
</span><del>-class InspectorObject;
</del><span class="cx">
</span><span class="cx"> namespace Protocol {
</span><span class="cx"> namespace OverlayTypes {
</span><span class="lines">@@ -62,11 +59,9 @@
</span><span class="cx"> class GraphicsContext;
</span><span class="cx"> class InspectorClient;
</span><span class="cx"> class InspectorDOMAgent;
</span><del>-class InspectorDOMDebuggerAgent;
</del><span class="cx"> class InspectorFrontendClient;
</span><span class="cx"> class InspectorInstrumentation;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InspectorResourceAgent;
</del><span class="cx"> class InspectorTimelineAgent;
</span><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Node;
</span><span class="lines">@@ -150,9 +145,7 @@
</span><span class="cx">
</span><span class="cx"> Inspector::InspectorAgent* m_inspectorAgent { nullptr };
</span><span class="cx"> InspectorDOMAgent* m_domAgent { nullptr };
</span><del>- InspectorResourceAgent* m_resourceAgent { nullptr };
</del><span class="cx"> InspectorPageAgent* m_pageAgent { nullptr };
</span><del>- InspectorDOMDebuggerAgent* m_domDebuggerAgent { nullptr };
</del><span class="cx"> InspectorTimelineAgent* m_timelineAgent { nullptr };
</span><span class="cx">
</span><span class="cx"> bool m_isUnderTest { false };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx"> #include <inspector/InspectorBackendDispatchers.h>
</span><span class="cx"> #include <inspector/agents/InspectorDebuggerAgent.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><del>-#include <wtf/RefCounted.h>
</del><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="cx"> namespace Inspector {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorFrontendClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorFrontendClient.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorFrontendClient.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorFrontendClient.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #define InspectorFrontendClient_h
</span><span class="cx">
</span><span class="cx"> #include <wtf/Forward.h>
</span><del>-#include <wtf/Vector.h>
</del><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorInstrumentationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -41,15 +41,15 @@
</span><span class="cx"> #include "Event.h"
</span><span class="cx"> #include "EventDispatcher.h"
</span><span class="cx"> #include "InspectorApplicationCacheAgent.h"
</span><ins>+#include "InspectorCSSAgent.h"
</ins><span class="cx"> #include "InspectorController.h"
</span><del>-#include "InspectorCSSAgent.h"
</del><span class="cx"> #include "InspectorDOMAgent.h"
</span><span class="cx"> #include "InspectorDOMDebuggerAgent.h"
</span><span class="cx"> #include "InspectorDOMStorageAgent.h"
</span><span class="cx"> #include "InspectorDatabaseAgent.h"
</span><span class="cx"> #include "InspectorLayerTreeAgent.h"
</span><ins>+#include "InspectorNetworkAgent.h"
</ins><span class="cx"> #include "InspectorPageAgent.h"
</span><del>-#include "InspectorResourceAgent.h"
</del><span class="cx"> #include "InspectorTimelineAgent.h"
</span><span class="cx"> #include "InspectorWorkerAgent.h"
</span><span class="cx"> #include "InstrumentingAgents.h"
</span><span class="lines">@@ -501,8 +501,8 @@
</span><span class="cx"> timelineAgent->willRecalculateStyle(document.frame());
</span><span class="cx"> timelineAgentId = timelineAgent->id();
</span><span class="cx"> }
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->willRecalculateStyle();
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->willRecalculateStyle();
</ins><span class="cx"> return InspectorInstrumentationCookie(instrumentingAgents, timelineAgentId);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -515,8 +515,8 @@
</span><span class="cx">
</span><span class="cx"> if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
</span><span class="cx"> timelineAgent->didRecalculateStyle();
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didRecalculateStyle();
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didRecalculateStyle();
</ins><span class="cx"> if (InspectorPageAgent* pageAgent = instrumentingAgents.inspectorPageAgent())
</span><span class="cx"> pageAgent->didRecalculateStyle();
</span><span class="cx"> }
</span><span class="lines">@@ -525,8 +525,8 @@
</span><span class="cx"> {
</span><span class="cx"> if (InspectorTimelineAgent* timelineAgent = instrumentingAgents.inspectorTimelineAgent())
</span><span class="cx"> timelineAgent->didScheduleStyleRecalculation(document.frame());
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didScheduleStyleRecalculation(document);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didScheduleStyleRecalculation(document);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::applyEmulatedMediaImpl(InstrumentingAgents& instrumentingAgents, String& media)
</span><span class="lines">@@ -540,8 +540,8 @@
</span><span class="cx"> if (!loader)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->willSendRequest(identifier, *loader, request, redirectResponse);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->willSendRequest(identifier, *loader, request, redirectResponse);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::continueAfterPingLoaderImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, const ResourceResponse& response)
</span><span class="lines">@@ -551,8 +551,8 @@
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::markResourceAsCachedImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->markResourceAsCached(identifier);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->markResourceAsCached(identifier);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl(InstrumentingAgents& instrumentingAgents, DocumentLoader* loader, CachedResource* cachedResource)
</span><span class="lines">@@ -563,8 +563,8 @@
</span><span class="cx"> if (!loader || !cachedResource)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didLoadResourceFromMemoryCache(*loader, *cachedResource);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didLoadResourceFromMemoryCache(*loader, *cachedResource);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> InspectorInstrumentationCookie InspectorInstrumentation::willReceiveResourceResponseImpl(InstrumentingAgents& instrumentingAgents)
</span><span class="lines">@@ -582,8 +582,8 @@
</span><span class="cx">
</span><span class="cx"> InstrumentingAgents& instrumentingAgents = *cookie.instrumentingAgents();
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveResponse(identifier, *loader, response, resourceLoader);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveResponse(identifier, *loader, response, resourceLoader);
</ins><span class="cx"> if (WebConsoleAgent* consoleAgent = instrumentingAgents.webConsoleAgent())
</span><span class="cx"> consoleAgent->didReceiveResponse(identifier, response); // This should come AFTER resource notification, front-end relies on this.
</span><span class="cx"> }
</span><span class="lines">@@ -614,8 +614,8 @@
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didReceiveDataImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const char* data, int dataLength, int encodedDataLength)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveData(identifier, data, dataLength, encodedDataLength);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveData(identifier, data, dataLength, encodedDataLength);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didFinishLoadingImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, DocumentLoader* loader, double finishTime)
</span><span class="lines">@@ -623,8 +623,8 @@
</span><span class="cx"> if (!loader)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didFinishLoading(identifier, *loader, finishTime);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didFinishLoading(identifier, *loader, finishTime);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didFailLoadingImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, DocumentLoader* loader, const ResourceError& error)
</span><span class="lines">@@ -632,8 +632,8 @@
</span><span class="cx"> if (!loader)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didFailLoading(identifier, *loader, error);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didFailLoading(identifier, *loader, error);
</ins><span class="cx"> if (WebConsoleAgent* consoleAgent = instrumentingAgents.webConsoleAgent())
</span><span class="cx"> consoleAgent->didFailLoading(identifier, error); // This should come AFTER resource notification, front-end relies on this.
</span><span class="cx"> }
</span><span class="lines">@@ -642,32 +642,32 @@
</span><span class="cx"> {
</span><span class="cx"> if (WebConsoleAgent* consoleAgent = instrumentingAgents.webConsoleAgent())
</span><span class="cx"> consoleAgent->didFinishXHRLoading(identifier, url, sendURL, sendLineNumber, sendColumnNumber);
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didFinishXHRLoading(client, identifier, sourceString);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didFinishXHRLoading(client, identifier, sourceString);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didReceiveXHRResponseImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveXHRResponse(identifier);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveXHRResponse(identifier);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::willLoadXHRSynchronouslyImpl(InstrumentingAgents& instrumentingAgents)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->willLoadXHRSynchronously();
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->willLoadXHRSynchronously();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didLoadXHRSynchronouslyImpl(InstrumentingAgents& instrumentingAgents)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didLoadXHRSynchronously();
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didLoadXHRSynchronously();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::scriptImportedImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const String& sourceString)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->setInitialScriptContent(identifier, sourceString);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->setInitialScriptContent(identifier, sourceString);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::scriptExecutionBlockedByCSPImpl(InstrumentingAgents& instrumentingAgents, const String& directiveText)
</span><span class="lines">@@ -678,8 +678,8 @@
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didReceiveScriptResponseImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveScriptResponse(identifier);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveScriptResponse(identifier);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::domContentLoadedEventFiredImpl(InstrumentingAgents& instrumentingAgents, Frame& frame)
</span><span class="lines">@@ -729,8 +729,8 @@
</span><span class="cx"> if (WebConsoleAgent* consoleAgent = instrumentingAgents.webConsoleAgent())
</span><span class="cx"> consoleAgent->reset();
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->mainFrameNavigated(*loader);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->mainFrameNavigated(*loader);
</ins><span class="cx">
</span><span class="cx"> if (InspectorCSSAgent* cssAgent = instrumentingAgents.inspectorCSSAgent())
</span><span class="cx"> cssAgent->reset();
</span><span class="lines">@@ -827,8 +827,8 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> for (auto* instrumentingAgent : *s_instrumentingAgentsSet) {
</span><del>- if (InspectorResourceAgent* inspectorResourceAgent = instrumentingAgent->inspectorResourceAgent())
- inspectorResourceAgent->willDestroyCachedResource(cachedResource);
</del><ins>+ if (InspectorNetworkAgent* inspectorNetworkAgent = instrumentingAgent->inspectorNetworkAgent())
+ inspectorNetworkAgent->willDestroyCachedResource(cachedResource);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -965,44 +965,44 @@
</span><span class="cx"> if (!instrumentingAgents.inspectorEnvironment().developerExtrasEnabled())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didCreateWebSocket(identifier, requestURL);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didCreateWebSocket(identifier, requestURL);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const ResourceRequest& request)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->willSendWebSocketHandshakeRequest(identifier, request);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->willSendWebSocketHandshakeRequest(identifier, request);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const ResourceResponse& response)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveWebSocketHandshakeResponse(identifier, response);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveWebSocketHandshakeResponse(identifier, response);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didCloseWebSocketImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didCloseWebSocket(identifier);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didCloseWebSocket(identifier);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didReceiveWebSocketFrameImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const WebSocketFrame& frame)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveWebSocketFrame(identifier, frame);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveWebSocketFrame(identifier, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const String& errorMessage)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didReceiveWebSocketFrameError(identifier, errorMessage);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didReceiveWebSocketFrameError(identifier, errorMessage);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InspectorInstrumentation::didSendWebSocketFrameImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const WebSocketFrame& frame)
</span><span class="cx"> {
</span><del>- if (InspectorResourceAgent* resourceAgent = instrumentingAgents.inspectorResourceAgent())
- resourceAgent->didSendWebSocketFrame(identifier, frame);
</del><ins>+ if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
+ networkAgent->didSendWebSocketFrame(identifier, frame);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorLayerTreeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -30,11 +30,10 @@
</span><span class="cx"> #define InspectorLayerTreeAgent_h
</span><span class="cx">
</span><span class="cx"> #include "InspectorWebAgentBase.h"
</span><ins>+#include "RenderLayer.h"
</ins><span class="cx"> #include <inspector/InspectorBackendDispatchers.h>
</span><span class="cx"> #include <inspector/InspectorFrontendDispatchers.h>
</span><span class="cx"> #include <inspector/InspectorProtocolObjects.h>
</span><del>-#include "RenderLayer.h"
-#include <wtf/Vector.h>
</del><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNetworkAgentcppfromrev191718trunkSourceWebCoreinspectorInspectorResourceAgentcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/inspector/InspectorNetworkAgent.cpp (from rev 191718, trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp) (0 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNetworkAgent.cpp         (rev 0)
+++ trunk/Source/WebCore/inspector/InspectorNetworkAgent.cpp        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -0,0 +1,706 @@
</span><ins>+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "InspectorNetworkAgent.h"
+
+#include "CachedRawResource.h"
+#include "CachedResource.h"
+#include "CachedResourceLoader.h"
+#include "Document.h"
+#include "DocumentLoader.h"
+#include "DocumentThreadableLoader.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "HTTPHeaderMap.h"
+#include "HTTPHeaderNames.h"
+#include "IconController.h"
+#include "InspectorPageAgent.h"
+#include "InspectorTimelineAgent.h"
+#include "InstrumentingAgents.h"
+#include "JSMainThreadExecState.h"
+#include "MemoryCache.h"
+#include "NetworkResourcesData.h"
+#include "Page.h"
+#include "ProgressTracker.h"
+#include "ResourceError.h"
+#include "ResourceLoader.h"
+#include "ResourceRequest.h"
+#include "ResourceResponse.h"
+#include "ScriptableDocumentParser.h"
+#include "SubresourceLoader.h"
+#include "ThreadableLoaderClient.h"
+#include "URL.h"
+#include "WebSocketFrame.h"
+#include <inspector/IdentifiersFactory.h>
+#include <inspector/InspectorFrontendRouter.h>
+#include <inspector/InspectorValues.h>
+#include <inspector/ScriptCallStack.h>
+#include <inspector/ScriptCallStackFactory.h>
+#include <wtf/RefPtr.h>
+#include <wtf/text/StringBuilder.h>
+
+using namespace Inspector;
+
+typedef Inspector::NetworkBackendDispatcherHandler::LoadResourceCallback LoadResourceCallback;
+
+namespace WebCore {
+
+namespace {
+
+class InspectorThreadableLoaderClient final : public ThreadableLoaderClient {
+ WTF_MAKE_NONCOPYABLE(InspectorThreadableLoaderClient);
+public:
+ InspectorThreadableLoaderClient(RefPtr<LoadResourceCallback>&& callback)
+ : m_callback(WTF::move(callback)) { }
+
+ virtual ~InspectorThreadableLoaderClient() { }
+
+ virtual void didReceiveResponse(unsigned long, const ResourceResponse& response) override
+ {
+ m_mimeType = response.mimeType();
+ m_statusCode = response.httpStatusCode();
+
+ // FIXME: This assumes text only responses. We should support non-text responses as well.
+ TextEncoding textEncoding(response.textEncodingName());
+ bool useDetector = false;
+ if (!textEncoding.isValid()) {
+ textEncoding = UTF8Encoding();
+ useDetector = true;
+ }
+
+ m_decoder = TextResourceDecoder::create(ASCIILiteral("text/plain"), textEncoding, useDetector);
+ }
+
+ virtual void didReceiveData(const char* data, int dataLength) override
+ {
+ if (!dataLength)
+ return;
+
+ if (dataLength == -1)
+ dataLength = strlen(data);
+
+ m_responseText.append(m_decoder->decode(data, dataLength));
+ }
+
+ virtual void didFinishLoading(unsigned long, double) override
+ {
+ if (m_decoder)
+ m_responseText.append(m_decoder->flush());
+
+ m_callback->sendSuccess(m_responseText.toString(), m_mimeType, m_statusCode);
+ dispose();
+ }
+
+ virtual void didFail(const ResourceError&) override
+ {
+ m_callback->sendFailure(ASCIILiteral("Loading resource for inspector failed"));
+ dispose();
+ }
+
+ virtual void didFailRedirectCheck() override
+ {
+ m_callback->sendFailure(ASCIILiteral("Loading resource for inspector failed redirect check"));
+ dispose();
+ }
+
+ void didFailLoaderCreation()
+ {
+ m_callback->sendFailure(ASCIILiteral("Could not create a loader"));
+ dispose();
+ }
+
+ void setLoader(RefPtr<ThreadableLoader>&& loader)
+ {
+ m_loader = WTF::move(loader);
+ }
+
+private:
+ void dispose()
+ {
+ m_loader = nullptr;
+ delete this;
+ }
+
+ RefPtr<LoadResourceCallback> m_callback;
+ RefPtr<ThreadableLoader> m_loader;
+ RefPtr<TextResourceDecoder> m_decoder;
+ String m_mimeType;
+ StringBuilder m_responseText;
+ int m_statusCode;
+};
+
+} // namespace
+
+InspectorNetworkAgent::InspectorNetworkAgent(WebAgentContext& context, InspectorPageAgent* pageAgent)
+ : InspectorAgentBase(ASCIILiteral("Network"), context)
+ , m_frontendDispatcher(std::make_unique<Inspector::NetworkFrontendDispatcher>(context.frontendRouter))
+ , m_backendDispatcher(Inspector::NetworkBackendDispatcher::create(context.backendDispatcher, this))
+ , m_pageAgent(pageAgent)
+ , m_resourcesData(std::make_unique<NetworkResourcesData>())
+{
+}
+
+void InspectorNetworkAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
+{
+}
+
+void InspectorNetworkAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
+{
+ ErrorString unused;
+ disable(unused);
+}
+
+static Ref<InspectorObject> buildObjectForHeaders(const HTTPHeaderMap& headers)
+{
+ Ref<InspectorObject> headersObject = InspectorObject::create();
+
+ for (const auto& header : headers)
+ headersObject->setString(header.key, header.value);
+ return WTF::move(headersObject);
+}
+
+static Ref<Inspector::Protocol::Network::ResourceTiming> buildObjectForTiming(const ResourceLoadTiming& timing, DocumentLoader* loader)
+{
+ return Inspector::Protocol::Network::ResourceTiming::create()
+ .setNavigationStart(loader->timing().navigationStart())
+ .setDomainLookupStart(timing.domainLookupStart)
+ .setDomainLookupEnd(timing.domainLookupEnd)
+ .setConnectStart(timing.connectStart)
+ .setConnectEnd(timing.connectEnd)
+ .setSecureConnectionStart(timing.secureConnectionStart)
+ .setRequestStart(timing.requestStart)
+ .setResponseStart(timing.responseStart)
+ .release();
+}
+
+static Ref<Inspector::Protocol::Network::Request> buildObjectForResourceRequest(const ResourceRequest& request)
+{
+ auto requestObject = Inspector::Protocol::Network::Request::create()
+ .setUrl(request.url().string())
+ .setMethod(request.httpMethod())
+ .setHeaders(buildObjectForHeaders(request.httpHeaderFields()))
+ .release();
+ if (request.httpBody() && !request.httpBody()->isEmpty())
+ requestObject->setPostData(request.httpBody()->flattenToString());
+ return WTF::move(requestObject);
+}
+
+static RefPtr<Inspector::Protocol::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, DocumentLoader* loader)
+{
+ if (response.isNull())
+ return nullptr;
+
+ double status = response.httpStatusCode();
+ Ref<InspectorObject> headers = buildObjectForHeaders(response.httpHeaderFields());
+
+ auto responseObject = Inspector::Protocol::Network::Response::create()
+ .setUrl(response.url().string())
+ .setStatus(status)
+ .setStatusText(response.httpStatusText())
+ .setHeaders(WTF::move(headers))
+ .setMimeType(response.mimeType())
+ .release();
+
+ responseObject->setFromDiskCache(response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation);
+ responseObject->setTiming(buildObjectForTiming(response.resourceLoadTiming(), loader));
+
+ return WTF::move(responseObject);
+}
+
+static Ref<Inspector::Protocol::Network::CachedResource> buildObjectForCachedResource(CachedResource* cachedResource, DocumentLoader* loader)
+{
+ auto resourceObject = Inspector::Protocol::Network::CachedResource::create()
+ .setUrl(cachedResource->url())
+ .setType(InspectorPageAgent::cachedResourceTypeJson(*cachedResource))
+ .setBodySize(cachedResource->encodedSize())
+ .release();
+
+ auto resourceResponse = buildObjectForResourceResponse(cachedResource->response(), loader);
+ resourceObject->setResponse(WTF::move(resourceResponse));
+
+ String sourceMappingURL = InspectorPageAgent::sourceMapURLForResource(cachedResource);
+ if (!sourceMappingURL.isEmpty())
+ resourceObject->setSourceMapURL(sourceMappingURL);
+
+ return WTF::move(resourceObject);
+}
+
+InspectorNetworkAgent::~InspectorNetworkAgent()
+{
+ if (m_enabled) {
+ ErrorString unused;
+ disable(unused);
+ }
+ ASSERT(!m_instrumentingAgents.inspectorNetworkAgent());
+}
+
+double InspectorNetworkAgent::timestamp()
+{
+ return m_instrumentingAgents.inspectorEnvironment().executionStopwatch()->elapsedTime();
+}
+
+void InspectorNetworkAgent::willSendRequest(unsigned long identifier, DocumentLoader& loader, ResourceRequest& request, const ResourceResponse& redirectResponse)
+{
+ if (request.hiddenFromInspector()) {
+ m_hiddenRequestIdentifiers.add(identifier);
+ return;
+ }
+
+ String requestId = IdentifiersFactory::requestId(identifier);
+ m_resourcesData->resourceCreated(requestId, m_pageAgent->loaderId(&loader));
+
+ CachedResource* cachedResource = InspectorPageAgent::cachedResource(loader.frame(), request.url());
+ InspectorPageAgent::ResourceType type = cachedResource ? InspectorPageAgent::cachedResourceType(*cachedResource) : m_resourcesData->resourceType(requestId);
+ if (type == InspectorPageAgent::OtherResource) {
+ if (m_loadingXHRSynchronously)
+ type = InspectorPageAgent::XHRResource;
+ else if (equalIgnoringFragmentIdentifier(request.url(), loader.frameLoader()->icon().url()))
+ type = InspectorPageAgent::ImageResource;
+ else if (equalIgnoringFragmentIdentifier(request.url(), loader.url()) && !loader.isCommitted())
+ type = InspectorPageAgent::DocumentResource;
+ }
+
+ m_resourcesData->setResourceType(requestId, type);
+
+ for (auto& entry : m_extraRequestHeaders)
+ request.setHTTPHeaderField(entry.key, entry.value);
+
+ request.setReportLoadTiming(true);
+ request.setReportRawHeaders(true);
+
+ if (m_cacheDisabled) {
+ request.setHTTPHeaderField(HTTPHeaderName::Pragma, "no-cache");
+ request.setCachePolicy(ReloadIgnoringCacheData);
+ request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "no-cache");
+ }
+
+ Inspector::Protocol::Page::ResourceType resourceType = InspectorPageAgent::resourceTypeJson(type);
+
+ RefPtr<Inspector::Protocol::Network::Initiator> initiatorObject = buildInitiatorObject(loader.frame() ? loader.frame()->document() : nullptr);
+ m_frontendDispatcher->requestWillBeSent(requestId, m_pageAgent->frameId(loader.frame()), m_pageAgent->loaderId(&loader), loader.url().string(), buildObjectForResourceRequest(request), timestamp(), initiatorObject, buildObjectForResourceResponse(redirectResponse, &loader), type != InspectorPageAgent::OtherResource ? &resourceType : nullptr);
+}
+
+void InspectorNetworkAgent::markResourceAsCached(unsigned long identifier)
+{
+ if (m_hiddenRequestIdentifiers.contains(identifier))
+ return;
+
+ m_frontendDispatcher->requestServedFromCache(IdentifiersFactory::requestId(identifier));
+}
+
+void InspectorNetworkAgent::didReceiveResponse(unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response, ResourceLoader* resourceLoader)
+{
+ if (m_hiddenRequestIdentifiers.contains(identifier))
+ return;
+
+ String requestId = IdentifiersFactory::requestId(identifier);
+ RefPtr<Inspector::Protocol::Network::Response> resourceResponse = buildObjectForResourceResponse(response, &loader);
+
+ bool isNotModified = response.httpStatusCode() == 304;
+
+ CachedResource* cachedResource = nullptr;
+ if (resourceLoader && resourceLoader->isSubresourceLoader() && !isNotModified)
+ cachedResource = static_cast<SubresourceLoader*>(resourceLoader)->cachedResource();
+ if (!cachedResource)
+ cachedResource = InspectorPageAgent::cachedResource(loader.frame(), response.url());
+
+ if (cachedResource) {
+ // Use mime type from cached resource in case the one in response is empty.
+ if (resourceResponse && response.mimeType().isEmpty())
+ resourceResponse->setString(Inspector::Protocol::Network::Response::MimeType, cachedResource->response().mimeType());
+ m_resourcesData->addCachedResource(requestId, cachedResource);
+ }
+
+ InspectorPageAgent::ResourceType type = m_resourcesData->resourceType(requestId);
+ InspectorPageAgent::ResourceType newType = cachedResource ? InspectorPageAgent::cachedResourceType(*cachedResource) : type;
+
+ // FIXME: XHRResource is returned for CachedResource::RawResource, it should be OtherResource unless it truly is an XHR.
+ // RawResource is used for loading worker scripts, and those should stay as ScriptResource and not change to XHRResource.
+ if (type != newType && newType != InspectorPageAgent::XHRResource && newType != InspectorPageAgent::OtherResource)
+ type = newType;
+
+ m_resourcesData->responseReceived(requestId, m_pageAgent->frameId(loader.frame()), response);
+ m_resourcesData->setResourceType(requestId, type);
+
+ m_frontendDispatcher->responseReceived(requestId, m_pageAgent->frameId(loader.frame()), m_pageAgent->loaderId(&loader), timestamp(), InspectorPageAgent::resourceTypeJson(type), resourceResponse);
+
+ // If we revalidated the resource and got Not modified, send content length following didReceiveResponse
+ // as there will be no calls to didReceiveData from the network stack.
+ if (isNotModified && cachedResource && cachedResource->encodedSize())
+ didReceiveData(identifier, nullptr, cachedResource->encodedSize(), 0);
+}
+
+static bool isErrorStatusCode(int statusCode)
+{
+ return statusCode >= 400;
+}
+
+void InspectorNetworkAgent::didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength)
+{
+ if (m_hiddenRequestIdentifiers.contains(identifier))
+ return;
+
+ String requestId = IdentifiersFactory::requestId(identifier);
+
+ if (data) {
+ NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(requestId);
+ if (resourceData && !m_loadingXHRSynchronously && (!resourceData->cachedResource() || resourceData->cachedResource()->dataBufferingPolicy() == DoNotBufferData || isErrorStatusCode(resourceData->httpStatusCode())))
+ m_resourcesData->maybeAddResourceData(requestId, data, dataLength);
+ }
+
+ m_frontendDispatcher->dataReceived(requestId, timestamp(), dataLength, encodedDataLength);
+}
+
+void InspectorNetworkAgent::didFinishLoading(unsigned long identifier, DocumentLoader& loader, double finishTime)
+{
+ if (m_hiddenRequestIdentifiers.remove(identifier))
+ return;
+
+ String requestId = IdentifiersFactory::requestId(identifier);
+ if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::DocumentResource)
+ m_resourcesData->addResourceSharedBuffer(requestId, loader.frameLoader()->documentLoader()->mainResourceData(), loader.frame()->document()->encoding());
+
+ m_resourcesData->maybeDecodeDataToContent(requestId);
+
+ // FIXME: The finishTime that is passed in is from the NetworkProcess and is more accurate.
+ // However, all other times passed to the Inspector are generated from the web process. Mixing
+ // times from different processes can cause the finish time to be earlier than the response
+ // received time due to inter-process communication lag.
+ finishTime = timestamp();
+
+ String sourceMappingURL;
+ NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(requestId);
+ if (resourceData && resourceData->cachedResource())
+ sourceMappingURL = InspectorPageAgent::sourceMapURLForResource(resourceData->cachedResource());
+
+ m_frontendDispatcher->loadingFinished(requestId, finishTime, !sourceMappingURL.isEmpty() ? &sourceMappingURL : nullptr);
+}
+
+void InspectorNetworkAgent::didFailLoading(unsigned long identifier, DocumentLoader& loader, const ResourceError& error)
+{
+ if (m_hiddenRequestIdentifiers.remove(identifier))
+ return;
+
+ String requestId = IdentifiersFactory::requestId(identifier);
+
+ if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::DocumentResource) {
+ Frame* frame = loader.frame();
+ if (frame && frame->loader().documentLoader() && frame->document()) {
+ m_resourcesData->addResourceSharedBuffer(requestId,
+ frame->loader().documentLoader()->mainResourceData(),
+ frame->document()->encoding());
+ }
+ }
+
+ bool canceled = error.isCancellation();
+ m_frontendDispatcher->loadingFailed(requestId, timestamp(), error.localizedDescription(), canceled ? &canceled : nullptr);
+}
+
+void InspectorNetworkAgent::didLoadResourceFromMemoryCache(DocumentLoader& loader, CachedResource& resource)
+{
+ String loaderId = m_pageAgent->loaderId(&loader);
+ String frameId = m_pageAgent->frameId(loader.frame());
+ unsigned long identifier = loader.frame()->page()->progress().createUniqueIdentifier();
+ String requestId = IdentifiersFactory::requestId(identifier);
+ m_resourcesData->resourceCreated(requestId, loaderId);
+ m_resourcesData->addCachedResource(requestId, &resource);
+
+ RefPtr<Inspector::Protocol::Network::Initiator> initiatorObject = buildInitiatorObject(loader.frame() ? loader.frame()->document() : nullptr);
+
+ m_frontendDispatcher->requestServedFromMemoryCache(requestId, frameId, loaderId, loader.url().string(), timestamp(), initiatorObject, buildObjectForCachedResource(&resource, &loader));
+}
+
+void InspectorNetworkAgent::setInitialScriptContent(unsigned long identifier, const String& sourceString)
+{
+ m_resourcesData->setResourceContent(IdentifiersFactory::requestId(identifier), sourceString);
+}
+
+void InspectorNetworkAgent::didReceiveScriptResponse(unsigned long identifier)
+{
+ m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::ScriptResource);
+}
+
+void InspectorNetworkAgent::didFinishXHRLoading(ThreadableLoaderClient*, unsigned long identifier, const String& sourceString)
+{
+ // For Asynchronous XHRs, the inspector can grab the data directly off of the CachedResource. For sync XHRs, we need to
+ // provide the data here, since no CachedResource was involved.
+ if (m_loadingXHRSynchronously)
+ m_resourcesData->setResourceContent(IdentifiersFactory::requestId(identifier), sourceString);
+}
+
+void InspectorNetworkAgent::didReceiveXHRResponse(unsigned long identifier)
+{
+ m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::XHRResource);
+}
+
+void InspectorNetworkAgent::willLoadXHRSynchronously()
+{
+ m_loadingXHRSynchronously = true;
+}
+
+void InspectorNetworkAgent::didLoadXHRSynchronously()
+{
+ m_loadingXHRSynchronously = false;
+}
+
+void InspectorNetworkAgent::willDestroyCachedResource(CachedResource& cachedResource)
+{
+ Vector<String> requestIds = m_resourcesData->removeCachedResource(&cachedResource);
+ if (!requestIds.size())
+ return;
+
+ String content;
+ bool base64Encoded;
+ if (!InspectorPageAgent::cachedResourceContent(&cachedResource, &content, &base64Encoded))
+ return;
+ for (auto& id : requestIds)
+ m_resourcesData->setResourceContent(id, content, base64Encoded);
+}
+
+void InspectorNetworkAgent::willRecalculateStyle()
+{
+ m_isRecalculatingStyle = true;
+}
+
+void InspectorNetworkAgent::didRecalculateStyle()
+{
+ m_isRecalculatingStyle = false;
+ m_styleRecalculationInitiator = nullptr;
+}
+
+void InspectorNetworkAgent::didScheduleStyleRecalculation(Document& document)
+{
+ if (!m_styleRecalculationInitiator)
+ m_styleRecalculationInitiator = buildInitiatorObject(&document);
+}
+
+RefPtr<Inspector::Protocol::Network::Initiator> InspectorNetworkAgent::buildInitiatorObject(Document* document)
+{
+ RefPtr<ScriptCallStack> stackTrace = createScriptCallStack(JSMainThreadExecState::currentState(), ScriptCallStack::maxCallStackSizeToCapture);
+ if (stackTrace && stackTrace->size() > 0) {
+ auto initiatorObject = Inspector::Protocol::Network::Initiator::create()
+ .setType(Inspector::Protocol::Network::Initiator::Type::Script)
+ .release();
+ initiatorObject->setStackTrace(stackTrace->buildInspectorArray());
+ return WTF::move(initiatorObject);
+ }
+
+ if (document && document->scriptableDocumentParser()) {
+ auto initiatorObject = Inspector::Protocol::Network::Initiator::create()
+ .setType(Inspector::Protocol::Network::Initiator::Type::Parser)
+ .release();
+ initiatorObject->setUrl(document->url().string());
+ initiatorObject->setLineNumber(document->scriptableDocumentParser()->textPosition().m_line.oneBasedInt());
+ return WTF::move(initiatorObject);
+ }
+
+ if (m_isRecalculatingStyle && m_styleRecalculationInitiator)
+ return m_styleRecalculationInitiator;
+
+ return Inspector::Protocol::Network::Initiator::create()
+ .setType(Inspector::Protocol::Network::Initiator::Type::Other)
+ .release();
+}
+
+#if ENABLE(WEB_SOCKETS)
+
+void InspectorNetworkAgent::didCreateWebSocket(unsigned long identifier, const URL& requestURL)
+{
+ m_frontendDispatcher->webSocketCreated(IdentifiersFactory::requestId(identifier), requestURL.string());
+}
+
+void InspectorNetworkAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest& request)
+{
+ auto requestObject = Inspector::Protocol::Network::WebSocketRequest::create()
+ .setHeaders(buildObjectForHeaders(request.httpHeaderFields()))
+ .release();
+ m_frontendDispatcher->webSocketWillSendHandshakeRequest(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(requestObject));
+}
+
+void InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse& response)
+{
+ auto responseObject = Inspector::Protocol::Network::WebSocketResponse::create()
+ .setStatus(response.httpStatusCode())
+ .setStatusText(response.httpStatusText())
+ .setHeaders(buildObjectForHeaders(response.httpHeaderFields()))
+ .release();
+ m_frontendDispatcher->webSocketHandshakeResponseReceived(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(responseObject));
+}
+
+void InspectorNetworkAgent::didCloseWebSocket(unsigned long identifier)
+{
+ m_frontendDispatcher->webSocketClosed(IdentifiersFactory::requestId(identifier), timestamp());
+}
+
+void InspectorNetworkAgent::didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
+{
+ auto frameObject = Inspector::Protocol::Network::WebSocketFrame::create()
+ .setOpcode(frame.opCode)
+ .setMask(frame.masked)
+ .setPayloadData(String(frame.payload, frame.payloadLength))
+ .release();
+ m_frontendDispatcher->webSocketFrameReceived(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(frameObject));
+}
+
+void InspectorNetworkAgent::didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
+{
+ auto frameObject = Inspector::Protocol::Network::WebSocketFrame::create()
+ .setOpcode(frame.opCode)
+ .setMask(frame.masked)
+ .setPayloadData(String(frame.payload, frame.payloadLength))
+ .release();
+ m_frontendDispatcher->webSocketFrameSent(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(frameObject));
+}
+
+void InspectorNetworkAgent::didReceiveWebSocketFrameError(unsigned long identifier, const String& errorMessage)
+{
+ m_frontendDispatcher->webSocketFrameError(IdentifiersFactory::requestId(identifier), timestamp(), errorMessage);
+}
+
+#endif // ENABLE(WEB_SOCKETS)
+
+void InspectorNetworkAgent::enable(ErrorString&)
+{
+ enable();
+}
+
+void InspectorNetworkAgent::enable()
+{
+ m_enabled = true;
+ m_instrumentingAgents.setInspectorNetworkAgent(this);
+}
+
+void InspectorNetworkAgent::disable(ErrorString&)
+{
+ m_enabled = false;
+ m_instrumentingAgents.setInspectorNetworkAgent(nullptr);
+ m_resourcesData->clear();
+ m_extraRequestHeaders.clear();
+}
+
+void InspectorNetworkAgent::setExtraHTTPHeaders(ErrorString&, const InspectorObject& headers)
+{
+ for (auto& entry : headers) {
+ String stringValue;
+ if (entry.value->asString(stringValue))
+ m_extraRequestHeaders.set(entry.key, stringValue);
+ }
+}
+
+void InspectorNetworkAgent::getResponseBody(ErrorString& errorString, const String& requestId, String* content, bool* base64Encoded)
+{
+ NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(requestId);
+ if (!resourceData) {
+ errorString = ASCIILiteral("No resource with given identifier found");
+ return;
+ }
+
+ if (resourceData->hasContent()) {
+ *base64Encoded = resourceData->base64Encoded();
+ *content = resourceData->content();
+ return;
+ }
+
+ if (resourceData->isContentEvicted()) {
+ errorString = ASCIILiteral("Request content was evicted from inspector cache");
+ return;
+ }
+
+ if (resourceData->buffer() && !resourceData->textEncodingName().isNull()) {
+ *base64Encoded = false;
+ if (InspectorPageAgent::sharedBufferContent(resourceData->buffer(), resourceData->textEncodingName(), *base64Encoded, content))
+ return;
+ }
+
+ if (resourceData->cachedResource()) {
+ if (InspectorPageAgent::cachedResourceContent(resourceData->cachedResource(), content, base64Encoded))
+ return;
+ }
+
+ errorString = ASCIILiteral("No data found for resource with given identifier");
+}
+
+void InspectorNetworkAgent::setCacheDisabled(ErrorString&, bool cacheDisabled)
+{
+ m_cacheDisabled = cacheDisabled;
+ if (cacheDisabled)
+ MemoryCache::singleton().evictResources();
+}
+
+void InspectorNetworkAgent::loadResource(ErrorString& errorString, const String& frameId, const String& urlString, Ref<LoadResourceCallback>&& callback)
+{
+ Frame* frame = m_pageAgent->assertFrame(errorString, frameId);
+ if (!frame)
+ return;
+
+ Document* document = frame->document();
+ if (!document) {
+ errorString = ASCIILiteral("No Document instance for the specified frame");
+ return;
+ }
+
+ URL url = document->completeURL(urlString);
+ ResourceRequest request(url);
+ request.setHTTPMethod(ASCIILiteral("GET"));
+ request.setHiddenFromInspector(true);
+
+ ThreadableLoaderOptions options;
+ options.setSendLoadCallbacks(SendCallbacks); // So we remove this from m_hiddenRequestIdentifiers on completion.
+ options.setAllowCredentials(AllowStoredCredentials);
+ options.setDefersLoadingPolicy(DefersLoadingPolicy::DisallowDefersLoading); // So the request is never deferred.
+ options.crossOriginRequestPolicy = AllowCrossOriginRequests;
+
+ // InspectorThreadableLoaderClient deletes itself when the load completes.
+ InspectorThreadableLoaderClient* inspectorThreadableLoaderClient = new InspectorThreadableLoaderClient(callback.copyRef());
+
+ RefPtr<DocumentThreadableLoader> loader = DocumentThreadableLoader::create(*document, *inspectorThreadableLoaderClient, request, options);
+ if (!loader) {
+ inspectorThreadableLoaderClient->didFailLoaderCreation();
+ return;
+ }
+
+ // If the load already completed, inspectorThreadableLoaderClient will have been deleted and we will have already called the callback.
+ if (!callback->isActive())
+ return;
+
+ inspectorThreadableLoaderClient->setLoader(loader.release());
+}
+
+void InspectorNetworkAgent::mainFrameNavigated(DocumentLoader& loader)
+{
+ if (m_cacheDisabled)
+ MemoryCache::singleton().evictResources();
+
+ m_resourcesData->clear(m_pageAgent->loaderId(&loader));
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNetworkAgenthfromrev191718trunkSourceWebCoreinspectorInspectorResourceAgenth"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/inspector/InspectorNetworkAgent.h (from rev 191718, trunk/Source/WebCore/inspector/InspectorResourceAgent.h) (0 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNetworkAgent.h         (rev 0)
+++ trunk/Source/WebCore/inspector/InspectorNetworkAgent.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -0,0 +1,136 @@
</span><ins>+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorNetworkAgent_h
+#define InspectorNetworkAgent_h
+
+#include "InspectorWebAgentBase.h"
+#include <inspector/InspectorBackendDispatchers.h>
+#include <inspector/InspectorFrontendDispatchers.h>
+#include <wtf/HashSet.h>
+#include <wtf/text/WTFString.h>
+
+namespace Inspector {
+class InspectorObject;
+}
+
+namespace WebCore {
+
+class CachedResource;
+class Document;
+class DocumentLoader;
+class InspectorPageAgent;
+class NetworkResourcesData;
+class ResourceError;
+class ResourceLoader;
+class ResourceRequest;
+class ResourceResponse;
+class ThreadableLoaderClient;
+class URL;
+
+#if ENABLE(WEB_SOCKETS)
+struct WebSocketFrame;
+#endif
+
+typedef String ErrorString;
+
+class InspectorNetworkAgent final : public InspectorAgentBase, public Inspector::NetworkBackendDispatcherHandler {
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ InspectorNetworkAgent(WebAgentContext&, InspectorPageAgent*);
+ virtual ~InspectorNetworkAgent();
+
+ virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
+ virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
+
+ // InspectorInstrumentation callbacks.
+ void willRecalculateStyle();
+ void didRecalculateStyle();
+ void willSendRequest(unsigned long identifier, DocumentLoader&, ResourceRequest&, const ResourceResponse& redirectResponse);
+ void markResourceAsCached(unsigned long identifier);
+ void didReceiveResponse(unsigned long identifier, DocumentLoader&, const ResourceResponse&, ResourceLoader*);
+ void didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength);
+ void didFinishLoading(unsigned long identifier, DocumentLoader&, double finishTime);
+ void didFailLoading(unsigned long identifier, DocumentLoader&, const ResourceError&);
+ void didLoadResourceFromMemoryCache(DocumentLoader&, CachedResource&);
+ void didFinishXHRLoading(ThreadableLoaderClient*, unsigned long identifier, const String& sourceString);
+ void didReceiveXHRResponse(unsigned long identifier);
+ void willLoadXHRSynchronously();
+ void didLoadXHRSynchronously();
+ void didReceiveScriptResponse(unsigned long identifier);
+ void willDestroyCachedResource(CachedResource&);
+#if ENABLE(WEB_SOCKETS)
+ void didCreateWebSocket(unsigned long identifier, const URL& requestURL);
+ void willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest&);
+ void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse&);
+ void didCloseWebSocket(unsigned long identifier);
+ void didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame&);
+ void didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame&);
+ void didReceiveWebSocketFrameError(unsigned long identifier, const String&);
+#endif
+ void mainFrameNavigated(DocumentLoader&);
+ void setInitialScriptContent(unsigned long identifier, const String& sourceString);
+ void didScheduleStyleRecalculation(Document&);
+
+ RefPtr<Inspector::Protocol::Network::Initiator> buildInitiatorObject(Document*);
+
+ // Called from frontend.
+ virtual void enable(ErrorString&) override;
+ virtual void disable(ErrorString&) override;
+ virtual void setExtraHTTPHeaders(ErrorString&, const Inspector::InspectorObject& headers) override;
+ virtual void getResponseBody(ErrorString&, const String& requestId, String* content, bool* base64Encoded) override;
+ virtual void setCacheDisabled(ErrorString&, bool cacheDisabled) override;
+ virtual void loadResource(ErrorString&, const String& frameId, const String& url, Ref<LoadResourceCallback>&&) override;
+
+private:
+ void enable();
+
+ double timestamp();
+
+ std::unique_ptr<Inspector::NetworkFrontendDispatcher> m_frontendDispatcher;
+ RefPtr<Inspector::NetworkBackendDispatcher> m_backendDispatcher;
+ InspectorPageAgent* m_pageAgent { nullptr };
+
+ // FIXME: InspectorNetworkAgent should not be aware of style recalculation.
+ RefPtr<Inspector::Protocol::Network::Initiator> m_styleRecalculationInitiator;
+ bool m_isRecalculatingStyle { false };
+
+ std::unique_ptr<NetworkResourcesData> m_resourcesData;
+ bool m_enabled { false };
+ bool m_cacheDisabled { false };
+ bool m_loadingXHRSynchronously { false };
+ HashMap<String, String> m_extraRequestHeaders;
+ HashSet<unsigned long> m_hiddenRequestIdentifiers;
+};
+
+} // namespace WebCore
+
+#endif // !defined(InspectorNetworkAgent_h)
</ins></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -38,8 +38,6 @@
</span><span class="cx"> #include <inspector/InspectorBackendDispatchers.h>
</span><span class="cx"> #include <inspector/InspectorFrontendDispatchers.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><del>-#include <wtf/RefCounted.h>
-#include <wtf/Vector.h>
</del><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="cx"> namespace Inspector {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorResourceAgentcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -1,707 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "InspectorResourceAgent.h"
-
-#include "CachedRawResource.h"
-#include "CachedResource.h"
-#include "CachedResourceLoader.h"
-#include "Document.h"
-#include "DocumentLoader.h"
-#include "DocumentThreadableLoader.h"
-#include "ExceptionCodePlaceholder.h"
-#include "Frame.h"
-#include "FrameLoader.h"
-#include "HTTPHeaderMap.h"
-#include "HTTPHeaderNames.h"
-#include "IconController.h"
-#include "InspectorPageAgent.h"
-#include "InspectorTimelineAgent.h"
-#include "InstrumentingAgents.h"
-#include "JSMainThreadExecState.h"
-#include "MemoryCache.h"
-#include "NetworkResourcesData.h"
-#include "Page.h"
-#include "ProgressTracker.h"
-#include "ResourceError.h"
-#include "ResourceLoader.h"
-#include "ResourceRequest.h"
-#include "ResourceResponse.h"
-#include "ScriptableDocumentParser.h"
-#include "SubresourceLoader.h"
-#include "ThreadableLoaderClient.h"
-#include "URL.h"
-#include "WebSocketFrame.h"
-#include <inspector/IdentifiersFactory.h>
-#include <inspector/InspectorFrontendRouter.h>
-#include <inspector/InspectorValues.h>
-#include <inspector/ScriptCallStack.h>
-#include <inspector/ScriptCallStackFactory.h>
-#include <wtf/RefPtr.h>
-#include <wtf/text/StringBuilder.h>
-
-using namespace Inspector;
-
-typedef Inspector::NetworkBackendDispatcherHandler::LoadResourceCallback LoadResourceCallback;
-
-namespace WebCore {
-
-namespace {
-
-class InspectorThreadableLoaderClient final : public ThreadableLoaderClient {
- WTF_MAKE_NONCOPYABLE(InspectorThreadableLoaderClient);
-public:
- InspectorThreadableLoaderClient(RefPtr<LoadResourceCallback>&& callback)
- : m_callback(WTF::move(callback)) { }
-
- virtual ~InspectorThreadableLoaderClient() { }
-
- virtual void didReceiveResponse(unsigned long, const ResourceResponse& response) override
- {
- m_mimeType = response.mimeType();
- m_statusCode = response.httpStatusCode();
-
- // FIXME: This assumes text only responses. We should support non-text responses as well.
- TextEncoding textEncoding(response.textEncodingName());
- bool useDetector = false;
- if (!textEncoding.isValid()) {
- textEncoding = UTF8Encoding();
- useDetector = true;
- }
-
- m_decoder = TextResourceDecoder::create(ASCIILiteral("text/plain"), textEncoding, useDetector);
- }
-
- virtual void didReceiveData(const char* data, int dataLength) override
- {
- if (!dataLength)
- return;
-
- if (dataLength == -1)
- dataLength = strlen(data);
-
- m_responseText.append(m_decoder->decode(data, dataLength));
- }
-
- virtual void didFinishLoading(unsigned long, double) override
- {
- if (m_decoder)
- m_responseText.append(m_decoder->flush());
-
- m_callback->sendSuccess(m_responseText.toString(), m_mimeType, m_statusCode);
- dispose();
- }
-
- virtual void didFail(const ResourceError&) override
- {
- m_callback->sendFailure(ASCIILiteral("Loading resource for inspector failed"));
- dispose();
- }
-
- virtual void didFailRedirectCheck() override
- {
- m_callback->sendFailure(ASCIILiteral("Loading resource for inspector failed redirect check"));
- dispose();
- }
-
- void didFailLoaderCreation()
- {
- m_callback->sendFailure(ASCIILiteral("Could not create a loader"));
- dispose();
- }
-
- void setLoader(RefPtr<ThreadableLoader>&& loader)
- {
- m_loader = WTF::move(loader);
- }
-
-private:
- void dispose()
- {
- m_loader = nullptr;
- delete this;
- }
-
- RefPtr<LoadResourceCallback> m_callback;
- RefPtr<ThreadableLoader> m_loader;
- RefPtr<TextResourceDecoder> m_decoder;
- String m_mimeType;
- StringBuilder m_responseText;
- int m_statusCode;
-};
-
-} // namespace
-
-InspectorResourceAgent::InspectorResourceAgent(WebAgentContext& context, InspectorPageAgent* pageAgent)
- : InspectorAgentBase(ASCIILiteral("Network"), context)
- , m_frontendDispatcher(std::make_unique<Inspector::NetworkFrontendDispatcher>(context.frontendRouter))
- , m_backendDispatcher(Inspector::NetworkBackendDispatcher::create(context.backendDispatcher, this))
- , m_pageAgent(pageAgent)
- , m_resourcesData(std::make_unique<NetworkResourcesData>())
-{
-}
-
-void InspectorResourceAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
-{
-}
-
-void InspectorResourceAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
-{
- ErrorString unused;
- disable(unused);
-}
-
-static Ref<InspectorObject> buildObjectForHeaders(const HTTPHeaderMap& headers)
-{
- Ref<InspectorObject> headersObject = InspectorObject::create();
-
- for (const auto& header : headers)
- headersObject->setString(header.key, header.value);
- return WTF::move(headersObject);
-}
-
-static Ref<Inspector::Protocol::Network::ResourceTiming> buildObjectForTiming(const ResourceLoadTiming& timing, DocumentLoader* loader)
-{
- return Inspector::Protocol::Network::ResourceTiming::create()
- .setNavigationStart(loader->timing().navigationStart())
- .setDomainLookupStart(timing.domainLookupStart)
- .setDomainLookupEnd(timing.domainLookupEnd)
- .setConnectStart(timing.connectStart)
- .setConnectEnd(timing.connectEnd)
- .setSecureConnectionStart(timing.secureConnectionStart)
- .setRequestStart(timing.requestStart)
- .setResponseStart(timing.responseStart)
- .release();
-}
-
-static Ref<Inspector::Protocol::Network::Request> buildObjectForResourceRequest(const ResourceRequest& request)
-{
- auto requestObject = Inspector::Protocol::Network::Request::create()
- .setUrl(request.url().string())
- .setMethod(request.httpMethod())
- .setHeaders(buildObjectForHeaders(request.httpHeaderFields()))
- .release();
- if (request.httpBody() && !request.httpBody()->isEmpty())
- requestObject->setPostData(request.httpBody()->flattenToString());
- return WTF::move(requestObject);
-}
-
-static RefPtr<Inspector::Protocol::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, DocumentLoader* loader)
-{
- if (response.isNull())
- return nullptr;
-
- double status = response.httpStatusCode();
- Ref<InspectorObject> headers = buildObjectForHeaders(response.httpHeaderFields());
-
- auto responseObject = Inspector::Protocol::Network::Response::create()
- .setUrl(response.url().string())
- .setStatus(status)
- .setStatusText(response.httpStatusText())
- .setHeaders(WTF::move(headers))
- .setMimeType(response.mimeType())
- .release();
-
- responseObject->setFromDiskCache(response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation);
- responseObject->setTiming(buildObjectForTiming(response.resourceLoadTiming(), loader));
-
- return WTF::move(responseObject);
-}
-
-static Ref<Inspector::Protocol::Network::CachedResource> buildObjectForCachedResource(CachedResource* cachedResource, DocumentLoader* loader)
-{
- auto resourceObject = Inspector::Protocol::Network::CachedResource::create()
- .setUrl(cachedResource->url())
- .setType(InspectorPageAgent::cachedResourceTypeJson(*cachedResource))
- .setBodySize(cachedResource->encodedSize())
- .release();
-
- auto resourceResponse = buildObjectForResourceResponse(cachedResource->response(), loader);
- resourceObject->setResponse(WTF::move(resourceResponse));
-
- String sourceMappingURL = InspectorPageAgent::sourceMapURLForResource(cachedResource);
- if (!sourceMappingURL.isEmpty())
- resourceObject->setSourceMapURL(sourceMappingURL);
-
- return WTF::move(resourceObject);
-}
-
-InspectorResourceAgent::~InspectorResourceAgent()
-{
- if (m_enabled) {
- ErrorString unused;
- disable(unused);
- }
- ASSERT(!m_instrumentingAgents.inspectorResourceAgent());
-}
-
-double InspectorResourceAgent::timestamp()
-{
- return m_instrumentingAgents.inspectorEnvironment().executionStopwatch()->elapsedTime();
-}
-
-void InspectorResourceAgent::willSendRequest(unsigned long identifier, DocumentLoader& loader, ResourceRequest& request, const ResourceResponse& redirectResponse)
-{
- if (request.hiddenFromInspector()) {
- m_hiddenRequestIdentifiers.add(identifier);
- return;
- }
-
- String requestId = IdentifiersFactory::requestId(identifier);
- m_resourcesData->resourceCreated(requestId, m_pageAgent->loaderId(&loader));
-
- CachedResource* cachedResource = InspectorPageAgent::cachedResource(loader.frame(), request.url());
- InspectorPageAgent::ResourceType type = cachedResource ? InspectorPageAgent::cachedResourceType(*cachedResource) : m_resourcesData->resourceType(requestId);
- if (type == InspectorPageAgent::OtherResource) {
- if (m_loadingXHRSynchronously)
- type = InspectorPageAgent::XHRResource;
- else if (equalIgnoringFragmentIdentifier(request.url(), loader.frameLoader()->icon().url()))
- type = InspectorPageAgent::ImageResource;
- else if (equalIgnoringFragmentIdentifier(request.url(), loader.url()) && !loader.isCommitted())
- type = InspectorPageAgent::DocumentResource;
- }
-
- m_resourcesData->setResourceType(requestId, type);
-
- for (auto& entry : m_extraRequestHeaders)
- request.setHTTPHeaderField(entry.key, entry.value);
-
- request.setReportLoadTiming(true);
- request.setReportRawHeaders(true);
-
- if (m_cacheDisabled) {
- request.setHTTPHeaderField(HTTPHeaderName::Pragma, "no-cache");
- request.setCachePolicy(ReloadIgnoringCacheData);
- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "no-cache");
- }
-
- Inspector::Protocol::Page::ResourceType resourceType = InspectorPageAgent::resourceTypeJson(type);
-
- RefPtr<Inspector::Protocol::Network::Initiator> initiatorObject = buildInitiatorObject(loader.frame() ? loader.frame()->document() : nullptr);
- m_frontendDispatcher->requestWillBeSent(requestId, m_pageAgent->frameId(loader.frame()), m_pageAgent->loaderId(&loader), loader.url().string(), buildObjectForResourceRequest(request), timestamp(), initiatorObject, buildObjectForResourceResponse(redirectResponse, &loader), type != InspectorPageAgent::OtherResource ? &resourceType : nullptr);
-}
-
-void InspectorResourceAgent::markResourceAsCached(unsigned long identifier)
-{
- if (m_hiddenRequestIdentifiers.contains(identifier))
- return;
-
- m_frontendDispatcher->requestServedFromCache(IdentifiersFactory::requestId(identifier));
-}
-
-void InspectorResourceAgent::didReceiveResponse(unsigned long identifier, DocumentLoader& loader, const ResourceResponse& response, ResourceLoader* resourceLoader)
-{
- if (m_hiddenRequestIdentifiers.contains(identifier))
- return;
-
- String requestId = IdentifiersFactory::requestId(identifier);
- RefPtr<Inspector::Protocol::Network::Response> resourceResponse = buildObjectForResourceResponse(response, &loader);
-
- bool isNotModified = response.httpStatusCode() == 304;
-
- CachedResource* cachedResource = nullptr;
- if (resourceLoader && resourceLoader->isSubresourceLoader() && !isNotModified)
- cachedResource = static_cast<SubresourceLoader*>(resourceLoader)->cachedResource();
- if (!cachedResource)
- cachedResource = InspectorPageAgent::cachedResource(loader.frame(), response.url());
-
- if (cachedResource) {
- // Use mime type from cached resource in case the one in response is empty.
- if (resourceResponse && response.mimeType().isEmpty())
- resourceResponse->setString(Inspector::Protocol::Network::Response::MimeType, cachedResource->response().mimeType());
- m_resourcesData->addCachedResource(requestId, cachedResource);
- }
-
- InspectorPageAgent::ResourceType type = m_resourcesData->resourceType(requestId);
- InspectorPageAgent::ResourceType newType = cachedResource ? InspectorPageAgent::cachedResourceType(*cachedResource) : type;
-
- // FIXME: XHRResource is returned for CachedResource::RawResource, it should be OtherResource unless it truly is an XHR.
- // RawResource is used for loading worker scripts, and those should stay as ScriptResource and not change to XHRResource.
- if (type != newType && newType != InspectorPageAgent::XHRResource && newType != InspectorPageAgent::OtherResource)
- type = newType;
-
- m_resourcesData->responseReceived(requestId, m_pageAgent->frameId(loader.frame()), response);
- m_resourcesData->setResourceType(requestId, type);
-
- m_frontendDispatcher->responseReceived(requestId, m_pageAgent->frameId(loader.frame()), m_pageAgent->loaderId(&loader), timestamp(), InspectorPageAgent::resourceTypeJson(type), resourceResponse);
-
- // If we revalidated the resource and got Not modified, send content length following didReceiveResponse
- // as there will be no calls to didReceiveData from the network stack.
- if (isNotModified && cachedResource && cachedResource->encodedSize())
- didReceiveData(identifier, nullptr, cachedResource->encodedSize(), 0);
-}
-
-static bool isErrorStatusCode(int statusCode)
-{
- return statusCode >= 400;
-}
-
-void InspectorResourceAgent::didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength)
-{
- if (m_hiddenRequestIdentifiers.contains(identifier))
- return;
-
- String requestId = IdentifiersFactory::requestId(identifier);
-
- if (data) {
- NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(requestId);
- if (resourceData && !m_loadingXHRSynchronously && (!resourceData->cachedResource() || resourceData->cachedResource()->dataBufferingPolicy() == DoNotBufferData || isErrorStatusCode(resourceData->httpStatusCode())))
- m_resourcesData->maybeAddResourceData(requestId, data, dataLength);
- }
-
- m_frontendDispatcher->dataReceived(requestId, timestamp(), dataLength, encodedDataLength);
-}
-
-void InspectorResourceAgent::didFinishLoading(unsigned long identifier, DocumentLoader& loader, double finishTime)
-{
- if (m_hiddenRequestIdentifiers.remove(identifier))
- return;
-
- String requestId = IdentifiersFactory::requestId(identifier);
- if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::DocumentResource)
- m_resourcesData->addResourceSharedBuffer(requestId, loader.frameLoader()->documentLoader()->mainResourceData(), loader.frame()->document()->encoding());
-
- m_resourcesData->maybeDecodeDataToContent(requestId);
-
- // FIXME: The finishTime that is passed in is from the NetworkProcess and is more accurate.
- // However, all other times passed to the Inspector are generated from the web process. Mixing
- // times from different processes can cause the finish time to be earlier than the response
- // received time due to inter-process communication lag.
- finishTime = timestamp();
-
- String sourceMappingURL;
- NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(requestId);
- if (resourceData && resourceData->cachedResource())
- sourceMappingURL = InspectorPageAgent::sourceMapURLForResource(resourceData->cachedResource());
-
- m_frontendDispatcher->loadingFinished(requestId, finishTime, !sourceMappingURL.isEmpty() ? &sourceMappingURL : nullptr);
-}
-
-void InspectorResourceAgent::didFailLoading(unsigned long identifier, DocumentLoader& loader, const ResourceError& error)
-{
- if (m_hiddenRequestIdentifiers.remove(identifier))
- return;
-
- String requestId = IdentifiersFactory::requestId(identifier);
-
- if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::DocumentResource) {
- Frame* frame = loader.frame();
- if (frame && frame->loader().documentLoader() && frame->document()) {
- m_resourcesData->addResourceSharedBuffer(requestId,
- frame->loader().documentLoader()->mainResourceData(),
- frame->document()->encoding());
- }
- }
-
- bool canceled = error.isCancellation();
- m_frontendDispatcher->loadingFailed(requestId, timestamp(), error.localizedDescription(), canceled ? &canceled : nullptr);
-}
-
-void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader& loader, CachedResource& resource)
-{
- String loaderId = m_pageAgent->loaderId(&loader);
- String frameId = m_pageAgent->frameId(loader.frame());
- unsigned long identifier = loader.frame()->page()->progress().createUniqueIdentifier();
- String requestId = IdentifiersFactory::requestId(identifier);
- m_resourcesData->resourceCreated(requestId, loaderId);
- m_resourcesData->addCachedResource(requestId, &resource);
-
- RefPtr<Inspector::Protocol::Network::Initiator> initiatorObject = buildInitiatorObject(loader.frame() ? loader.frame()->document() : nullptr);
-
- m_frontendDispatcher->requestServedFromMemoryCache(requestId, frameId, loaderId, loader.url().string(), timestamp(), initiatorObject, buildObjectForCachedResource(&resource, &loader));
-}
-
-void InspectorResourceAgent::setInitialScriptContent(unsigned long identifier, const String& sourceString)
-{
- m_resourcesData->setResourceContent(IdentifiersFactory::requestId(identifier), sourceString);
-}
-
-void InspectorResourceAgent::didReceiveScriptResponse(unsigned long identifier)
-{
- m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::ScriptResource);
-}
-
-void InspectorResourceAgent::didFinishXHRLoading(ThreadableLoaderClient*, unsigned long identifier, const String& sourceString)
-{
- // For Asynchronous XHRs, the inspector can grab the data directly off of the CachedResource. For sync XHRs, we need to
- // provide the data here, since no CachedResource was involved.
- if (m_loadingXHRSynchronously)
- m_resourcesData->setResourceContent(IdentifiersFactory::requestId(identifier), sourceString);
-}
-
-void InspectorResourceAgent::didReceiveXHRResponse(unsigned long identifier)
-{
- m_resourcesData->setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::XHRResource);
-}
-
-void InspectorResourceAgent::willLoadXHRSynchronously()
-{
- m_loadingXHRSynchronously = true;
-}
-
-void InspectorResourceAgent::didLoadXHRSynchronously()
-{
- m_loadingXHRSynchronously = false;
-}
-
-void InspectorResourceAgent::willDestroyCachedResource(CachedResource& cachedResource)
-{
- Vector<String> requestIds = m_resourcesData->removeCachedResource(&cachedResource);
- if (!requestIds.size())
- return;
-
- String content;
- bool base64Encoded;
- if (!InspectorPageAgent::cachedResourceContent(&cachedResource, &content, &base64Encoded))
- return;
- for (auto& id : requestIds)
- m_resourcesData->setResourceContent(id, content, base64Encoded);
-}
-
-void InspectorResourceAgent::willRecalculateStyle()
-{
- m_isRecalculatingStyle = true;
-}
-
-void InspectorResourceAgent::didRecalculateStyle()
-{
- m_isRecalculatingStyle = false;
- m_styleRecalculationInitiator = nullptr;
-}
-
-void InspectorResourceAgent::didScheduleStyleRecalculation(Document& document)
-{
- if (!m_styleRecalculationInitiator)
- m_styleRecalculationInitiator = buildInitiatorObject(&document);
-}
-
-RefPtr<Inspector::Protocol::Network::Initiator> InspectorResourceAgent::buildInitiatorObject(Document* document)
-{
- RefPtr<ScriptCallStack> stackTrace = createScriptCallStack(JSMainThreadExecState::currentState(), ScriptCallStack::maxCallStackSizeToCapture);
- if (stackTrace && stackTrace->size() > 0) {
- auto initiatorObject = Inspector::Protocol::Network::Initiator::create()
- .setType(Inspector::Protocol::Network::Initiator::Type::Script)
- .release();
- initiatorObject->setStackTrace(stackTrace->buildInspectorArray());
- return WTF::move(initiatorObject);
- }
-
- if (document && document->scriptableDocumentParser()) {
- auto initiatorObject = Inspector::Protocol::Network::Initiator::create()
- .setType(Inspector::Protocol::Network::Initiator::Type::Parser)
- .release();
- initiatorObject->setUrl(document->url().string());
- initiatorObject->setLineNumber(document->scriptableDocumentParser()->textPosition().m_line.oneBasedInt());
- return WTF::move(initiatorObject);
- }
-
- if (m_isRecalculatingStyle && m_styleRecalculationInitiator)
- return m_styleRecalculationInitiator;
-
- return Inspector::Protocol::Network::Initiator::create()
- .setType(Inspector::Protocol::Network::Initiator::Type::Other)
- .release();
-}
-
-#if ENABLE(WEB_SOCKETS)
-
-void InspectorResourceAgent::didCreateWebSocket(unsigned long identifier, const URL& requestURL)
-{
- m_frontendDispatcher->webSocketCreated(IdentifiersFactory::requestId(identifier), requestURL.string());
-}
-
-void InspectorResourceAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest& request)
-{
- auto requestObject = Inspector::Protocol::Network::WebSocketRequest::create()
- .setHeaders(buildObjectForHeaders(request.httpHeaderFields()))
- .release();
- m_frontendDispatcher->webSocketWillSendHandshakeRequest(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(requestObject));
-}
-
-void InspectorResourceAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse& response)
-{
- auto responseObject = Inspector::Protocol::Network::WebSocketResponse::create()
- .setStatus(response.httpStatusCode())
- .setStatusText(response.httpStatusText())
- .setHeaders(buildObjectForHeaders(response.httpHeaderFields()))
- .release();
- m_frontendDispatcher->webSocketHandshakeResponseReceived(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(responseObject));
-}
-
-void InspectorResourceAgent::didCloseWebSocket(unsigned long identifier)
-{
- m_frontendDispatcher->webSocketClosed(IdentifiersFactory::requestId(identifier), timestamp());
-}
-
-void InspectorResourceAgent::didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
-{
- auto frameObject = Inspector::Protocol::Network::WebSocketFrame::create()
- .setOpcode(frame.opCode)
- .setMask(frame.masked)
- .setPayloadData(String(frame.payload, frame.payloadLength))
- .release();
- m_frontendDispatcher->webSocketFrameReceived(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(frameObject));
-}
-
-void InspectorResourceAgent::didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
-{
- auto frameObject = Inspector::Protocol::Network::WebSocketFrame::create()
- .setOpcode(frame.opCode)
- .setMask(frame.masked)
- .setPayloadData(String(frame.payload, frame.payloadLength))
- .release();
- m_frontendDispatcher->webSocketFrameSent(IdentifiersFactory::requestId(identifier), timestamp(), WTF::move(frameObject));
-}
-
-void InspectorResourceAgent::didReceiveWebSocketFrameError(unsigned long identifier, const String& errorMessage)
-{
- m_frontendDispatcher->webSocketFrameError(IdentifiersFactory::requestId(identifier), timestamp(), errorMessage);
-}
-
-#endif // ENABLE(WEB_SOCKETS)
-
-void InspectorResourceAgent::enable(ErrorString&)
-{
- enable();
-}
-
-void InspectorResourceAgent::enable()
-{
- m_enabled = true;
- m_instrumentingAgents.setInspectorResourceAgent(this);
-}
-
-void InspectorResourceAgent::disable(ErrorString&)
-{
- m_enabled = false;
- m_instrumentingAgents.setInspectorResourceAgent(nullptr);
- m_resourcesData->clear();
- m_extraRequestHeaders.clear();
-}
-
-void InspectorResourceAgent::setExtraHTTPHeaders(ErrorString&, const InspectorObject& headers)
-{
- for (auto& entry : headers) {
- String stringValue;
- if (entry.value->asString(stringValue))
- m_extraRequestHeaders.set(entry.key, stringValue);
- }
-}
-
-void InspectorResourceAgent::getResponseBody(ErrorString& errorString, const String& requestId, String* content, bool* base64Encoded)
-{
- NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->data(requestId);
- if (!resourceData) {
- errorString = ASCIILiteral("No resource with given identifier found");
- return;
- }
-
- if (resourceData->hasContent()) {
- *base64Encoded = resourceData->base64Encoded();
- *content = resourceData->content();
- return;
- }
-
- if (resourceData->isContentEvicted()) {
- errorString = ASCIILiteral("Request content was evicted from inspector cache");
- return;
- }
-
- if (resourceData->buffer() && !resourceData->textEncodingName().isNull()) {
- *base64Encoded = false;
- if (InspectorPageAgent::sharedBufferContent(resourceData->buffer(), resourceData->textEncodingName(), *base64Encoded, content))
- return;
- }
-
- if (resourceData->cachedResource()) {
- if (InspectorPageAgent::cachedResourceContent(resourceData->cachedResource(), content, base64Encoded))
- return;
- }
-
- errorString = ASCIILiteral("No data found for resource with given identifier");
-}
-
-void InspectorResourceAgent::setCacheDisabled(ErrorString&, bool cacheDisabled)
-{
- m_cacheDisabled = cacheDisabled;
- if (cacheDisabled)
- MemoryCache::singleton().evictResources();
-}
-
-void InspectorResourceAgent::loadResource(ErrorString& errorString, const String& frameId, const String& urlString, Ref<LoadResourceCallback>&& callback)
-{
- Frame* frame = m_pageAgent->assertFrame(errorString, frameId);
- if (!frame)
- return;
-
- Document* document = frame->document();
- if (!document) {
- errorString = ASCIILiteral("No Document instance for the specified frame");
- return;
- }
-
- URL url = document->completeURL(urlString);
- ResourceRequest request(url);
- request.setHTTPMethod(ASCIILiteral("GET"));
- request.setHiddenFromInspector(true);
-
- ThreadableLoaderOptions options;
- options.setSendLoadCallbacks(SendCallbacks); // So we remove this from m_hiddenRequestIdentifiers on completion.
- options.setAllowCredentials(AllowStoredCredentials);
- options.setDefersLoadingPolicy(DefersLoadingPolicy::DisallowDefersLoading); // So the request is never deferred.
- options.crossOriginRequestPolicy = AllowCrossOriginRequests;
-
- // InspectorThreadableLoaderClient deletes itself when the load completes.
- InspectorThreadableLoaderClient* inspectorThreadableLoaderClient = new InspectorThreadableLoaderClient(callback.copyRef());
-
- RefPtr<DocumentThreadableLoader> loader = DocumentThreadableLoader::create(*document, *inspectorThreadableLoaderClient, request, options);
- if (!loader) {
- inspectorThreadableLoaderClient->didFailLoaderCreation();
- return;
- }
-
- // If the load already completed, inspectorThreadableLoaderClient will have been deleted and we will have already called the callback.
- if (!callback->isActive())
- return;
-
- inspectorThreadableLoaderClient->setLoader(loader.release());
-}
-
-void InspectorResourceAgent::mainFrameNavigated(DocumentLoader& loader)
-{
- if (m_cacheDisabled)
- MemoryCache::singleton().evictResources();
-
- m_resourcesData->clear(m_pageAgent->loaderId(&loader));
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorResourceAgenth"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/inspector/InspectorResourceAgent.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorResourceAgent.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -1,146 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorResourceAgent_h
-#define InspectorResourceAgent_h
-
-#include "InspectorWebAgentBase.h"
-#include <inspector/InspectorBackendDispatchers.h>
-#include <inspector/InspectorFrontendDispatchers.h>
-#include <wtf/HashSet.h>
-#include <wtf/RefCounted.h>
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
-namespace Inspector {
-class InspectorArray;
-class InspectorObject;
-}
-
-namespace WebCore {
-
-class CachedResource;
-class Document;
-class DocumentLoader;
-class FormData;
-class Frame;
-class HTTPHeaderMap;
-class InspectorPageAgent;
-class NetworkResourcesData;
-class Page;
-class ResourceError;
-class ResourceLoader;
-class ResourceRequest;
-class ResourceResponse;
-class SharedBuffer;
-class ThreadableLoaderClient;
-class URL;
-class XMLHttpRequest;
-
-#if ENABLE(WEB_SOCKETS)
-struct WebSocketFrame;
-#endif
-
-typedef String ErrorString;
-
-class InspectorResourceAgent final : public InspectorAgentBase, public Inspector::NetworkBackendDispatcherHandler {
- WTF_MAKE_FAST_ALLOCATED;
-public:
- InspectorResourceAgent(WebAgentContext&, InspectorPageAgent*);
- virtual ~InspectorResourceAgent();
-
- virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
- virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
-
- // InspectorInstrumentation callbacks.
- void willRecalculateStyle();
- void didRecalculateStyle();
- void willSendRequest(unsigned long identifier, DocumentLoader&, ResourceRequest&, const ResourceResponse& redirectResponse);
- void markResourceAsCached(unsigned long identifier);
- void didReceiveResponse(unsigned long identifier, DocumentLoader& loader, const ResourceResponse&, ResourceLoader*);
- void didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength);
- void didFinishLoading(unsigned long identifier, DocumentLoader&, double finishTime);
- void didFailLoading(unsigned long identifier, DocumentLoader&, const ResourceError&);
- void didLoadResourceFromMemoryCache(DocumentLoader&, CachedResource&);
- void didFinishXHRLoading(ThreadableLoaderClient*, unsigned long identifier, const String& sourceString);
- void didReceiveXHRResponse(unsigned long identifier);
- void willLoadXHRSynchronously();
- void didLoadXHRSynchronously();
- void didReceiveScriptResponse(unsigned long identifier);
- void willDestroyCachedResource(CachedResource&);
-#if ENABLE(WEB_SOCKETS)
- void didCreateWebSocket(unsigned long identifier, const URL& requestURL);
- void willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest&);
- void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse&);
- void didCloseWebSocket(unsigned long identifier);
- void didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame&);
- void didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame&);
- void didReceiveWebSocketFrameError(unsigned long identifier, const String&);
-#endif
-
- void mainFrameNavigated(DocumentLoader&);
- void setInitialScriptContent(unsigned long identifier, const String& sourceString);
-
- void didScheduleStyleRecalculation(Document&);
-
- RefPtr<Inspector::Protocol::Network::Initiator> buildInitiatorObject(Document*);
-
- // Called from frontend.
- virtual void enable(ErrorString&) override;
- virtual void disable(ErrorString&) override;
- virtual void setExtraHTTPHeaders(ErrorString&, const Inspector::InspectorObject& headers) override;
- virtual void getResponseBody(ErrorString&, const String& requestId, String* content, bool* base64Encoded) override;
- virtual void setCacheDisabled(ErrorString&, bool cacheDisabled) override;
- virtual void loadResource(ErrorString&, const String& frameId, const String& url, Ref<LoadResourceCallback>&&) override;
-
-private:
- void enable();
-
- double timestamp();
-
- std::unique_ptr<Inspector::NetworkFrontendDispatcher> m_frontendDispatcher;
- RefPtr<Inspector::NetworkBackendDispatcher> m_backendDispatcher;
- InspectorPageAgent* m_pageAgent { nullptr };
-
- std::unique_ptr<NetworkResourcesData> m_resourcesData;
- bool m_enabled { false };
- bool m_cacheDisabled { false };
- bool m_loadingXHRSynchronously { false };
- HashMap<String, String> m_extraRequestHeaders;
- HashSet<unsigned long> m_hiddenRequestIdentifiers;
- // FIXME: InspectorResourceAgent should now be aware of style recalculation.
- RefPtr<Inspector::Protocol::Network::Initiator> m_styleRecalculationInitiator;
- bool m_isRecalculatingStyle { false };
-};
-
-} // namespace WebCore
-
-#endif // !defined(InspectorResourceAgent_h)
</del></span></pre></div>
<a id="trunkSourceWebCoreinspectorInstrumentingAgentscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InstrumentingAgents.cpp (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InstrumentingAgents.cpp        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InstrumentingAgents.cpp        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> m_inspectorLayerTreeAgent = nullptr;
</span><span class="cx"> m_webConsoleAgent = nullptr;
</span><span class="cx"> m_inspectorDOMAgent = nullptr;
</span><del>- m_inspectorResourceAgent = nullptr;
</del><ins>+ m_inspectorNetworkAgent = nullptr;
</ins><span class="cx"> m_pageRuntimeAgent = nullptr;
</span><span class="cx"> m_workerRuntimeAgent = nullptr;
</span><span class="cx"> m_inspectorTimelineAgent = nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInstrumentingAgentsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InstrumentingAgents.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InstrumentingAgents.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/InstrumentingAgents.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx"> class InspectorDOMStorageAgent;
</span><span class="cx"> class InspectorDatabaseAgent;
</span><span class="cx"> class InspectorLayerTreeAgent;
</span><ins>+class InspectorNetworkAgent;
</ins><span class="cx"> class InspectorPageAgent;
</span><del>-class InspectorResourceAgent;
</del><span class="cx"> class InspectorReplayAgent;
</span><span class="cx"> class InspectorTimelineAgent;
</span><span class="cx"> class InspectorWorkerAgent;
</span><span class="lines">@@ -93,8 +93,8 @@
</span><span class="cx"> InspectorDOMAgent* inspectorDOMAgent() const { return m_inspectorDOMAgent; }
</span><span class="cx"> void setInspectorDOMAgent(InspectorDOMAgent* agent) { m_inspectorDOMAgent = agent; }
</span><span class="cx">
</span><del>- InspectorResourceAgent* inspectorResourceAgent() const { return m_inspectorResourceAgent; }
- void setInspectorResourceAgent(InspectorResourceAgent* agent) { m_inspectorResourceAgent = agent; }
</del><ins>+ InspectorNetworkAgent* inspectorNetworkAgent() const { return m_inspectorNetworkAgent; }
+ void setInspectorNetworkAgent(InspectorNetworkAgent* agent) { m_inspectorNetworkAgent = agent; }
</ins><span class="cx">
</span><span class="cx"> PageRuntimeAgent* pageRuntimeAgent() const { return m_pageRuntimeAgent; }
</span><span class="cx"> void setPageRuntimeAgent(PageRuntimeAgent* agent) { m_pageRuntimeAgent = agent; }
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx"> InspectorLayerTreeAgent* m_inspectorLayerTreeAgent { nullptr };
</span><span class="cx"> WebConsoleAgent* m_webConsoleAgent { nullptr };
</span><span class="cx"> InspectorDOMAgent* m_inspectorDOMAgent { nullptr };
</span><del>- InspectorResourceAgent* m_inspectorResourceAgent { nullptr };
</del><ins>+ InspectorNetworkAgent* m_inspectorNetworkAgent { nullptr };
</ins><span class="cx"> PageRuntimeAgent* m_pageRuntimeAgent { nullptr };
</span><span class="cx"> WorkerRuntimeAgent* m_workerRuntimeAgent { nullptr };
</span><span class="cx"> InspectorTimelineAgent* m_inspectorTimelineAgent { nullptr };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorNetworkResourcesDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/NetworkResourcesData.h (191718 => 191719)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/NetworkResourcesData.h        2015-10-29 01:57:17 UTC (rev 191718)
+++ trunk/Source/WebCore/inspector/NetworkResourcesData.h        2015-10-29 03:10:15 UTC (rev 191719)
</span><span class="lines">@@ -29,23 +29,17 @@
</span><span class="cx"> #ifndef NetworkResourcesData_h
</span><span class="cx"> #define NetworkResourcesData_h
</span><span class="cx">
</span><del>-#include "HTTPHeaderMap.h"
</del><span class="cx"> #include "InspectorPageAgent.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include "TextResourceDecoder.h"
</span><span class="cx"> #include <wtf/Deque.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><del>-#include <wtf/RefCounted.h>
-#include <wtf/text/StringBuilder.h>
</del><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> class CachedResource;
</span><del>-class FormData;
</del><span class="cx"> class ResourceResponse;
</span><span class="cx"> class SharedBuffer;
</span><del>-class TextResourceDecoder;
</del><span class="cx">
</span><span class="cx"> class NetworkResourcesData {
</span><span class="cx"> WTF_MAKE_FAST_ALLOCATED;
</span></span></pre>
</div>
</div>
</body>
</html>