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

Unified Diff: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp

Issue 2105713002: Render process changes for ResourceTiming sizes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@resource_timing_sizes_browser_process
Patch Set: Fixes from ksakamoto review Created 4 years, 5 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/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..935f5505a35b19b8e1363d7a97247738c456c46f 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
@@ -916,6 +916,11 @@ void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, in
if (resource->response().isHTTP() && resource->response().httpStatusCode() < 400) {
populateResourceTiming(info.get(), resource);
info->setLoadFinishTime(finishTime);
+ // encodedDataLength == -1 means "not available".
+ // FIXME: Find cases where it is not available but the
+ // PerformanceResourceTiming spec requires it to be available and
+ // fix them.
+ info->addFinalTransferSize(encodedDataLength == -1 ? 0 : encodedDataLength);
if (resource->options().requestInitiatorContext == DocumentContext)
context().addResourceTiming(*info);
resource->reportResourceTimingToClients(*info);
@@ -1033,7 +1038,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 +1061,12 @@ 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());
+ RefPtr<SecurityOrigin> originalSecurityOrigin = SecurityOrigin::create(newRequest.url());
Kunihiko Sakamoto 2016/07/04 06:59:04 Wrong variable names? If I'm not mistaken, redire
Adam Rice 2016/07/04 07:36:45 You are right. I was confused. Fixed.
+ bool crossOrigin = !redirectedSecurityOrigin->isSameSchemeHostPort(originalSecurityOrigin.get());
+ it->value->addRedirect(redirectResponse, encodedDataLength, crossOrigin);
+ }
willSendRequest(resource->identifier(), newRequest, redirectResponse, resource->options());
return true;
}

Powered by Google App Engine
This is Rietveld 408576698