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

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

Issue 1183173002: [DevTools] Show sync XHR info during request loading. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Initialized m_pendingXHR Created 5 years, 6 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') | no next file » | 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 ae3406715c7634a72deab6dd6b2a25a33fc62e59..34bd6a587c4c561f4a6fbc4032002ba7625bc064 100644
--- a/Source/core/inspector/InspectorResourceAgent.cpp
+++ b/Source/core/inspector/InspectorResourceAgent.cpp
@@ -369,6 +369,8 @@ void InspectorResourceAgent::willSendRequest(unsigned long identifier, DocumentL
TypeBuilder::Page::ResourceType::Enum resourceType = InspectorPageAgent::resourceTypeJson(type);
frontend()->requestWillBeSent(requestId, frameId, loaderId, urlWithoutFragment(loader->url()).string(), requestInfo.release(), monotonicallyIncreasingTime(), currentTime(), initiatorObject, buildObjectForResourceResponse(redirectResponse), &resourceType);
+ if (m_pendingXHRReplayData && !m_pendingXHRReplayData->async())
+ frontend()->flush();
}
void InspectorResourceAgent::markResourceAsCached(unsigned long identifier)
@@ -489,25 +491,24 @@ void InspectorResourceAgent::documentThreadableLoaderStartedLoadingForClient(uns
if (client == m_pendingEventSource) {
m_eventSourceRequestIdMap.set(client, identifier);
m_pendingEventSource = nullptr;
- return;
}
- PendingXHRReplayDataMap::iterator it = m_pendingXHRReplayData.find(client);
- if (it == m_pendingXHRReplayData.end())
- return;
-
- String requestId = IdentifiersFactory::requestId(identifier);
- m_resourcesData->setResourceType(requestId, InspectorPageAgent::XHRResource);
- m_resourcesData->setXHRReplayData(requestId, it->value.get());
+ if (client == m_pendingXHR) {
+ String requestId = IdentifiersFactory::requestId(identifier);
+ m_resourcesData->setResourceType(requestId, InspectorPageAgent::XHRResource);
+ m_resourcesData->setXHRReplayData(requestId, m_pendingXHRReplayData.get());
+ m_pendingXHR = nullptr;
+ m_pendingXHRReplayData.clear();
+ }
}
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);
- RefPtrWillBeRawPtr<XHRReplayData> xhrReplayData = XHRReplayData::create(xhr->executionContext(), method, urlWithoutFragment(url), async, formData.get(), includeCredentials);
+ m_pendingXHR = client;
+ m_pendingXHRReplayData = XHRReplayData::create(xhr->executionContext(), method, urlWithoutFragment(url), async, formData.get(), includeCredentials);
for (const auto& header : headers)
- xhrReplayData->addHeader(header.key, header.value);
- m_pendingXHRReplayData.set(client, xhrReplayData);
+ m_pendingXHRReplayData->addHeader(header.key, header.value);
}
void InspectorResourceAgent::delayedRemoveReplayXHR(XMLHttpRequest* xhr)
@@ -522,7 +523,8 @@ void InspectorResourceAgent::delayedRemoveReplayXHR(XMLHttpRequest* xhr)
void InspectorResourceAgent::didFailXHRLoading(XMLHttpRequest* xhr, ThreadableLoaderClient* client)
{
- m_pendingXHRReplayData.remove(client);
+ m_pendingXHR = 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.
@@ -531,7 +533,8 @@ void InspectorResourceAgent::didFailXHRLoading(XMLHttpRequest* xhr, ThreadableLo
void InspectorResourceAgent::didFinishXHRLoading(ExecutionContext* context, XMLHttpRequest* xhr, ThreadableLoaderClient* client, unsigned long identifier, ScriptString sourceString, const AtomicString& method, const String& url)
{
- m_pendingXHRReplayData.remove(client);
+ m_pendingXHR = nullptr;
+ m_pendingXHRReplayData.clear();
// See comments on |didFailXHRLoading| for why we are delaying delete.
delayedRemoveReplayXHR(xhr);
@@ -909,6 +912,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_isRecalculatingStyle(false)
, m_removeFinishedReplayXHRTimer(this, &InspectorResourceAgent::removeFinishedReplayXHRFired)
« no previous file with comments | « Source/core/inspector/InspectorResourceAgent.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698