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

Unified Diff: third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp

Issue 2620463002: Show service worker navigation preload requests in DevTools Network tab (Closed)
Patch Set: reuse existing instrumentation for network Created 3 years, 11 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
Index: third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp
diff --git a/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp
index 93b7ec551e89ce49b84a26259511b15afd699f00..24b50267068f4ca6d44c56d2e06b0a87e16216b5 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp
@@ -576,8 +576,9 @@ void InspectorNetworkAgent::didBlockRequest(
const FetchInitiatorInfo& initiatorInfo,
ResourceRequestBlockedReason reason) {
unsigned long identifier = createUniqueIdentifier();
- willSendRequestInternal(frame, identifier, loader, request,
- ResourceResponse(), initiatorInfo);
+ willSendRequestInternal(identifier, loader, request, ResourceResponse(),
+ initiatorInfo, monotonicallyIncreasingTime(),
+ currentTime());
String requestId = IdentifiersFactory::requestId(identifier);
String protocolReason = buildBlockedReason(reason);
@@ -597,14 +598,15 @@ void InspectorNetworkAgent::didChangeResourcePriority(
}
void InspectorNetworkAgent::willSendRequestInternal(
- LocalFrame* frame,
unsigned long identifier,
DocumentLoader* loader,
const ResourceRequest& request,
const ResourceResponse& redirectResponse,
- const FetchInitiatorInfo& initiatorInfo) {
+ const FetchInitiatorInfo& initiatorInfo,
+ double timestamp,
+ double wallTime) {
String requestId = IdentifiersFactory::requestId(identifier);
- String loaderId = IdentifiersFactory::loaderId(loader);
+ String loaderId = loader ? IdentifiersFactory::loaderId(loader) : "";
m_resourcesData->resourceCreated(requestId, loaderId, request.url());
InspectorPageAgent::ResourceType type = InspectorPageAgent::OtherResource;
@@ -616,11 +618,20 @@ void InspectorNetworkAgent::willSendRequestInternal(
m_resourcesData->setResourceType(requestId, type);
}
- String frameId =
- loader->frame() ? IdentifiersFactory::frameId(loader->frame()) : "";
- std::unique_ptr<protocol::Network::Initiator> initiatorObject =
- buildInitiatorObject(loader->frame() ? loader->frame()->document() : 0,
- initiatorInfo);
+ String frameId = loader && loader->frame()
+ ? IdentifiersFactory::frameId(loader->frame())
+ : "";
+ std::unique_ptr<protocol::Network::Initiator> initiatorObject;
+ if (loader) {
+ initiatorObject = buildInitiatorObject(
+ loader->frame() ? loader->frame()->document() : 0, initiatorInfo);
+ } else {
+ initiatorObject =
+ protocol::Network::Initiator::create()
+ .setType(protocol::Network::Initiator::TypeEnum::Preload)
+ .build();
+ }
+
if (initiatorInfo.name == FetchInitiatorTypeNames::document) {
FrameNavigationInitiatorMap::iterator it =
m_frameNavigationInitiatorMap.find(frameId);
@@ -631,28 +642,32 @@ void InspectorNetworkAgent::willSendRequestInternal(
std::unique_ptr<protocol::Network::Request> requestInfo(
buildObjectForResourceRequest(request));
- requestInfo->setMixedContentType(mixedContentTypeForContextType(
- MixedContentChecker::contextTypeForInspector(frame, request)));
+ if (loader) {
+ requestInfo->setMixedContentType(mixedContentTypeForContextType(
+ MixedContentChecker::contextTypeForInspector(loader->frame(),
+ request)));
+ }
requestInfo->setReferrerPolicy(referrerPolicy(request.getReferrerPolicy()));
String resourceType = InspectorPageAgent::resourceTypeJson(type);
frontend()->requestWillBeSent(
requestId, frameId, loaderId,
- urlWithoutFragment(loader->url()).getString(), std::move(requestInfo),
- monotonicallyIncreasingTime(), currentTime(), std::move(initiatorObject),
+ loader ? urlWithoutFragment(loader->url()).getString() : "",
+ std::move(requestInfo), timestamp, wallTime, std::move(initiatorObject),
pfeldman 2017/01/20 20:41:46 We report blink time as a part of the willSendRequ
horo 2017/01/23 08:05:32 Done.
buildObjectForResourceResponse(redirectResponse), resourceType);
if (m_pendingXHRReplayData && !m_pendingXHRReplayData->async())
frontend()->flush();
}
void InspectorNetworkAgent::willSendRequest(
- LocalFrame* frame,
unsigned long identifier,
DocumentLoader* loader,
ResourceRequest& request,
const ResourceResponse& redirectResponse,
- const FetchInitiatorInfo& initiatorInfo) {
+ const FetchInitiatorInfo& initiatorInfo,
+ double timestamp,
pfeldman 2017/01/20 20:41:46 ditto
horo 2017/01/23 08:05:32 Done.
+ double wallTime) {
// Ignore the request initiated internally.
if (initiatorInfo.name == FetchInitiatorTypeNames::internal)
return;
@@ -687,8 +702,8 @@ void InspectorNetworkAgent::willSendRequest(
if (m_state->booleanProperty(NetworkAgentState::bypassServiceWorker, false))
request.setSkipServiceWorker(WebURLRequest::SkipServiceWorker::All);
- willSendRequestInternal(frame, identifier, loader, request, redirectResponse,
- initiatorInfo);
+ willSendRequestInternal(identifier, loader, request, redirectResponse,
+ initiatorInfo, timestamp, wallTime);
if (!m_hostId.isEmpty())
request.addHTTPHeaderField(
@@ -701,7 +716,7 @@ void InspectorNetworkAgent::markResourceAsCached(unsigned long identifier) {
}
void InspectorNetworkAgent::didReceiveResourceResponse(
- LocalFrame* frame,
+ ExecutionContext* context,
unsigned long identifier,
DocumentLoader* loader,
const ResourceResponse& response,
@@ -737,7 +752,10 @@ void InspectorNetworkAgent::didReceiveResourceResponse(
// doesn't affect Resource lifetime.
if (cachedResource)
m_resourcesData->addResource(requestId, cachedResource);
- String frameId = IdentifiersFactory::frameId(frame);
+ String frameId =
+ context->isDocument()
+ ? IdentifiersFactory::frameId(toDocument(context)->frame())
+ : "";
String loaderId = loader ? IdentifiersFactory::loaderId(loader) : "";
m_resourcesData->responseReceived(requestId, frameId, response);
m_resourcesData->setResourceType(requestId, type);
@@ -760,15 +778,14 @@ void InspectorNetworkAgent::didReceiveResourceResponse(
// following didReceiveResponse as there will be no calls to didReceiveData
// from the network stack.
if (isNotModified && cachedResource && cachedResource->encodedSize())
- didReceiveData(frame, identifier, 0, cachedResource->encodedSize());
+ didReceiveData(identifier, 0, cachedResource->encodedSize());
}
static bool isErrorStatusCode(int statusCode) {
return statusCode >= 400;
}
-void InspectorNetworkAgent::didReceiveData(LocalFrame*,
- unsigned long identifier,
+void InspectorNetworkAgent::didReceiveData(unsigned long identifier,
const char* data,
int dataLength) {
String requestId = IdentifiersFactory::requestId(identifier);
@@ -833,7 +850,8 @@ void InspectorNetworkAgent::didReceiveCORSRedirectResponse(
const ResourceResponse& response,
Resource* resource) {
// Update the response and finish loading
- didReceiveResourceResponse(frame, identifier, loader, response, resource);
+ didReceiveResourceResponse(frame->document(), identifier, loader, response,
+ resource);
didFinishLoading(identifier, 0,
WebURLLoaderClient::kUnknownEncodedDataLength);
}

Powered by Google App Engine
This is Rietveld 408576698