Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(854)

Unified Diff: Source/core/inspector/InspectorResourceAgent.cpp

Issue 1259393002: DevTools: add support for logging fetch requests when XHR logging is enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: fixed the test Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/InspectorResourceAgent.h ('k') | Source/devtools/front_end/sdk/NetworkRequest.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorResourceAgent.cpp
diff --git a/Source/core/inspector/InspectorResourceAgent.cpp b/Source/core/inspector/InspectorResourceAgent.cpp
index 1c91c5db15b7fadeedf15542431b0db3333e1186..b7b59e3636a185abc8ac9549b24bcd2fb81f9bc5 100644
--- a/Source/core/inspector/InspectorResourceAgent.cpp
+++ b/Source/core/inspector/InspectorResourceAgent.cpp
@@ -311,7 +311,7 @@ DEFINE_TRACE(InspectorResourceAgent)
visitor->trace(m_replayXHRsToBeDeleted);
#if ENABLE(OILPAN)
- visitor->trace(m_pendingXHRReplayData);
+ visitor->trace(m_pendingRequest);
#endif
InspectorBaseAgent::trace(visitor);
}
@@ -412,9 +412,10 @@ void InspectorResourceAgent::didReceiveResourceResponse(LocalFrame* frame, unsig
InspectorPageAgent::ResourceType type = cachedResource ? InspectorPageAgent::cachedResourceType(*cachedResource) : InspectorPageAgent::OtherResource;
// Override with already discovered resource type.
InspectorPageAgent::ResourceType savedType = m_resourcesData->resourceType(requestId);
- if (savedType == InspectorPageAgent::ScriptResource || savedType == InspectorPageAgent::XHRResource || savedType == InspectorPageAgent::DocumentResource)
+ if (savedType == InspectorPageAgent::ScriptResource || savedType == InspectorPageAgent::XHRResource || savedType == InspectorPageAgent::DocumentResource
+ || savedType == InspectorPageAgent::FetchResource || savedType == InspectorPageAgent::EventSourceResource) {
type = savedType;
-
+ }
if (type == InspectorPageAgent::DocumentResource && loader && loader->substituteData().isValid())
return;
@@ -488,27 +489,25 @@ void InspectorResourceAgent::documentThreadableLoaderStartedLoadingForClient(uns
{
if (!client)
return;
-
- if (client == m_pendingEventSource) {
- m_eventSourceRequestIdMap.set(client, identifier);
- m_pendingEventSource = nullptr;
- }
-
- if (client == m_pendingXHR) {
- String requestId = IdentifiersFactory::requestId(identifier);
- m_resourcesData->setResourceType(requestId, InspectorPageAgent::XHRResource);
+ ASSERT(client == m_pendingRequest || !m_pendingRequest);
+ if (client != m_pendingRequest)
+ return;
+ m_knownRequestIdMap.set(client, identifier);
+ String requestId = IdentifiersFactory::requestId(identifier);
+ m_resourcesData->setResourceType(requestId, m_pendingRequestType);
+ if (m_pendingRequestType == InspectorPageAgent::XHRResource) {
m_resourcesData->setXHRReplayData(requestId, m_pendingXHRReplayData.get());
- m_xhrRequestIdMap.set(client, identifier);
- m_pendingXHR = nullptr;
m_pendingXHRReplayData.clear();
}
+ m_pendingRequest = nullptr;
}
void InspectorResourceAgent::willLoadXHR(XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const KURL& url, bool async, PassRefPtr<FormData> formData, const HTTPHeaderMap& headers, bool includeCredentials)
{
ASSERT(xhr);
- ASSERT(!m_pendingXHR);
- m_pendingXHR = client;
+ ASSERT(!m_pendingRequest);
+ m_pendingRequest = client;
+ m_pendingRequestType = InspectorPageAgent::XHRResource;
m_pendingXHRReplayData = XHRReplayData::create(xhr->executionContext(), method, urlWithoutFragment(url), async, formData.get(), includeCredentials);
for (const auto& header : headers)
m_pendingXHRReplayData->addHeader(header.key, header.value);
@@ -536,15 +535,15 @@ void InspectorResourceAgent::didFinishXHRLoading(ExecutionContext* context, XMLH
void InspectorResourceAgent::didFinishXHRInternal(ExecutionContext* context, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url, bool success)
{
- m_pendingXHR = nullptr;
+ m_pendingRequest = nullptr;
m_pendingXHRReplayData.clear();
// This method will be called from the XHR.
// We delay deleting the replay XHR, as deleting here may delete the caller.
delayedRemoveReplayXHR(xhr);
- ThreadableLoaderClientRequestIdMap::iterator it = m_xhrRequestIdMap.find(client);
- if (it == m_xhrRequestIdMap.end())
+ ThreadableLoaderClientRequestIdMap::iterator it = m_knownRequestIdMap.find(client);
+ if (it == m_knownRequestIdMap.end())
return;
if (m_state->getBoolean(ResourceAgentState::monitoringXHR)) {
@@ -553,28 +552,55 @@ void InspectorResourceAgent::didFinishXHRInternal(ExecutionContext* context, XML
consoleMessage->setRequestIdentifier(it->value);
m_pageAgent->frameHost()->consoleMessageStorage().reportMessage(context, consoleMessage.release());
}
- m_xhrRequestIdMap.remove(client);
+ m_knownRequestIdMap.remove(client);
+}
+
+void InspectorResourceAgent::willStartFetch(ThreadableLoaderClient* client)
+{
+ ASSERT(!m_pendingRequest);
+ m_pendingRequest = client;
+ m_pendingRequestType = InspectorPageAgent::FetchResource;
+}
+
+void InspectorResourceAgent::didFailFetch(ThreadableLoaderClient* client)
+{
+ m_knownRequestIdMap.remove(client);
+}
+
+void InspectorResourceAgent::didFinishFetch(ExecutionContext* context, ThreadableLoaderClient* client, const AtomicString& method, const String& url)
+{
+ ThreadableLoaderClientRequestIdMap::iterator it = m_knownRequestIdMap.find(client);
+ if (it == m_knownRequestIdMap.end())
+ return;
+
+ if (m_state->getBoolean(ResourceAgentState::monitoringXHR)) {
+ String message = "Fetch complete: " + method + " \"" + url + "\".";
+ RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(NetworkMessageSource, DebugMessageLevel, message);
+ consoleMessage->setRequestIdentifier(it->value);
+ m_pageAgent->frameHost()->consoleMessageStorage().reportMessage(context, consoleMessage.release());
+ }
+ m_knownRequestIdMap.remove(client);
}
void InspectorResourceAgent::willSendEventSourceRequest(ThreadableLoaderClient* eventSource)
{
- ASSERT(!m_pendingEventSource);
- m_pendingEventSource = eventSource;
+ ASSERT(!m_pendingRequest);
+ m_pendingRequest = eventSource;
+ m_pendingRequestType = InspectorPageAgent::EventSourceResource;
}
void InspectorResourceAgent::willDispachEventSourceEvent(ThreadableLoaderClient* eventSource, const AtomicString& eventName, const AtomicString& eventId, const Vector<UChar>& data)
{
- ThreadableLoaderClientRequestIdMap::iterator it = m_eventSourceRequestIdMap.find(eventSource);
- if (it == m_eventSourceRequestIdMap.end())
+ ThreadableLoaderClientRequestIdMap::iterator it = m_knownRequestIdMap.find(eventSource);
+ if (it == m_knownRequestIdMap.end())
return;
frontend()->eventSourceMessageReceived(IdentifiersFactory::requestId(it->value), monotonicallyIncreasingTime(), eventName.string(), eventId.string(), String(data));
}
void InspectorResourceAgent::didFinishEventSourceRequest(ThreadableLoaderClient* eventSource)
{
- m_eventSourceRequestIdMap.remove(eventSource);
- if (eventSource == m_pendingEventSource)
- m_pendingEventSource = nullptr;
+ m_knownRequestIdMap.remove(eventSource);
+ m_pendingRequest = nullptr;
}
void InspectorResourceAgent::willDestroyResource(Resource* cachedResource)
@@ -723,12 +749,12 @@ void InspectorResourceAgent::enable()
void InspectorResourceAgent::disable(ErrorString*)
{
- ASSERT(!m_pendingXHR);
- ASSERT(!m_pendingEventSource);
+ ASSERT(!m_pendingRequest);
m_state->setBoolean(ResourceAgentState::resourceAgentEnabled, false);
m_state->setString(ResourceAgentState::userAgentOverride, "");
m_instrumentingAgents->setInspectorResourceAgent(0);
m_resourcesData->clear();
+ m_knownRequestIdMap.clear();
}
void InspectorResourceAgent::setUserAgentOverride(ErrorString*, const String& userAgent)
@@ -924,8 +950,7 @@ InspectorResourceAgent::InspectorResourceAgent(InspectorPageAgent* pageAgent)
: InspectorBaseAgent<InspectorResourceAgent, InspectorFrontend::Network>("Network")
, m_pageAgent(pageAgent)
, m_resourcesData(adoptPtr(new NetworkResourcesData()))
- , m_pendingXHR(nullptr)
- , m_pendingEventSource(nullptr)
+ , m_pendingRequest(nullptr)
, m_isRecalculatingStyle(false)
, m_removeFinishedReplayXHRTimer(this, &InspectorResourceAgent::removeFinishedReplayXHRFired)
{
« no previous file with comments | « Source/core/inspector/InspectorResourceAgent.h ('k') | Source/devtools/front_end/sdk/NetworkRequest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698