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

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

Issue 23702040: Send synchronous loads through the cache. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 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: Source/core/fetch/ResourceFetcher.cpp
diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp
index 605967270e987fe01f0348d5ef04a2d3eb21e3dd..aab49bffcf16e6f2a579e779f98a3b2461164a7d 100644
--- a/Source/core/fetch/ResourceFetcher.cpp
+++ b/Source/core/fetch/ResourceFetcher.cpp
@@ -116,9 +116,10 @@ static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
return ResourceLoadPriorityVeryHigh;
case Resource::CSSStyleSheet:
return ResourceLoadPriorityHigh;
+ case Resource::Raw:
+ return request.options().synchronousPolicy == RequestSynchronously ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium;
case Resource::Script:
case Resource::Font:
- case Resource::Raw:
case Resource::ImportResource:
return ResourceLoadPriorityMedium;
case Resource::Image:
@@ -211,20 +212,14 @@ FetchContext& ResourceFetcher::context() const
return FetchContext::nullInstance();
}
-unsigned long ResourceFetcher::fetchSynchronously(const ResourceRequest& passedRequest, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data)
+ResourcePtr<Resource> ResourceFetcher::fetchSynchronously(FetchRequest& request)
{
ASSERT(document());
- ResourceRequest request(passedRequest);
- request.setTimeoutInterval(10);
- addAdditionalRequestHeaders(request, Resource::Raw);
-
- unsigned long identifier = createUniqueIdentifier();
- context().dispatchWillSendRequest(m_documentLoader, identifier, request, ResourceResponse());
- documentLoader()->applicationCacheHost()->willStartLoadingSynchronously(request);
- ResourceLoader::loadResourceSynchronously(request, storedCredentials, error, response, data);
- int encodedDataLength = response.resourceLoadInfo() ? static_cast<int>(response.resourceLoadInfo()->encodedDataLength) : -1;
- context().sendRemainingDelegateMessages(m_documentLoader, identifier, response, data.data(), data.size(), encodedDataLength, error);
- return identifier;
+ request.mutableResourceRequest().setTimeoutInterval(10);
+ ResourceLoaderOptions options(request.options());
+ options.synchronousPolicy = RequestSynchronously;
abarth-chromium 2013/09/13 23:48:28 Should the async pathway ASSERT that the options a
Nate Chapin 2013/09/16 20:32:50 There are a lot of pathways :/ I'd say we should
+ request.setOptions(options);
+ return requestResource(Resource::Raw, request);
abarth-chromium 2013/09/13 23:48:28 Should this function return a ResourcePtr<RawResou
Nate Chapin 2013/09/16 20:32:50 Probably not? Technically it's a raw resource unde
}
ResourcePtr<ImageResource> ResourceFetcher::fetchImage(FetchRequest& request)
@@ -579,7 +574,7 @@ ResourcePtr<Resource> ResourceFetcher::requestResource(Resource::Type type, Fetc
if (resource->errorOccurred()) {
if (resource->inCache())
memoryCache()->remove(resource.get());
- return 0;
+ return request.options().synchronousPolicy == RequestSynchronously ? resource : 0;
Nate Chapin 2013/09/12 23:28:46 This is kind of lame, wherein we let both sync and
abarth-chromium 2013/09/13 23:48:28 I might add this information as a comment.
Nate Chapin 2013/09/16 20:32:50 Will do.
}
}

Powered by Google App Engine
This is Rietveld 408576698