Index: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp |
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp |
index 2a8f5d8b0e7051695131fc84db5839fbbbbcaf66..7bd06b144bf4bcdedd40acef5ce6bc62adb9df57 100644 |
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp |
@@ -916,6 +916,7 @@ void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, in |
if (resource->response().isHTTP() && resource->response().httpStatusCode() < 400) { |
populateResourceTiming(info.get(), resource); |
info->setLoadFinishTime(finishTime); |
+ info->addFinalTransferSize(encodedDataLength); |
if (resource->options().requestInitiatorContext == DocumentContext) |
context().addResourceTiming(*info); |
resource->reportResourceTimingToClients(*info); |
@@ -1033,7 +1034,7 @@ static bool isManualRedirectFetchRequest(const ResourceRequest& request) |
return request.fetchRedirectMode() == WebURLRequest::FetchRedirectModeManual && request.requestContext() == WebURLRequest::RequestContextFetch; |
} |
-bool ResourceFetcher::willFollowRedirect(Resource* resource, ResourceRequest& newRequest, const ResourceResponse& redirectResponse) |
+bool ResourceFetcher::willFollowRedirect(Resource* resource, ResourceRequest& newRequest, const ResourceResponse& redirectResponse, int64_t encodedDataLength) |
{ |
if (!isManualRedirectFetchRequest(resource->resourceRequest())) { |
if (!context().canRequest(resource->getType(), newRequest, newRequest.url(), resource->options(), resource->isUnusedPreload(), FetchRequest::UseDefaultOriginRestrictionForType)) |
@@ -1056,8 +1057,11 @@ bool ResourceFetcher::willFollowRedirect(Resource* resource, ResourceRequest& ne |
} |
ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource); |
- if (it != m_resourceTimingInfoMap.end()) |
- it->value->addRedirect(redirectResponse); |
+ if (it != m_resourceTimingInfoMap.end()) { |
+ RefPtr<SecurityOrigin> redirectedSecurityOrigin = SecurityOrigin::create(redirectResponse.url()); |
+ bool crossOrigin = !redirectedSecurityOrigin->canRequest(newRequest.url()); |
+ it->value->addRedirect(redirectResponse, encodedDataLength, crossOrigin); |
+ } |
willSendRequest(resource->identifier(), newRequest, redirectResponse, resource->options()); |
return true; |
} |