Chromium Code Reviews| 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); |
| } |