| 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;
|
| }
|
|
|