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

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

Issue 24009002: Move synchronously fetching to ResourceFetcher, as well as most of the logic (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 e3161f2cbacd194abfd3b0c946ca10e88b9b6a7f..d743f2ed402644705f09b6866fe8518a345b083d 100644
--- a/Source/core/fetch/ResourceFetcher.cpp
+++ b/Source/core/fetch/ResourceFetcher.cpp
@@ -37,6 +37,7 @@
#include "core/fetch/ImageResource.h"
#include "core/fetch/MemoryCache.h"
#include "core/fetch/RawResource.h"
+#include "core/fetch/ResourceLoader.h"
#include "core/fetch/ResourceLoaderSet.h"
#include "core/fetch/ScriptResource.h"
#include "core/fetch/ShaderResource.h"
@@ -210,6 +211,22 @@ FetchContext& ResourceFetcher::context() const
return FetchContext::nullInstance();
}
+unsigned long ResourceFetcher::fetchSynchronously(const ResourceRequest& passedRequest, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data)
+{
+ 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;
+}
+
ResourcePtr<ImageResource> ResourceFetcher::fetchImage(FetchRequest& request)
{
if (Frame* f = frame()) {
@@ -980,11 +997,18 @@ void ResourceFetcher::performPostLoadActions()
void ResourceFetcher::notifyLoadedFromMemoryCache(Resource* resource)
{
- if (!frame() || resource->status() != Resource::Cached || m_validatedURLs.contains(resource->url()))
+ if (!frame() || !frame()->page() || resource->status() != Resource::Cached || m_validatedURLs.contains(resource->url()))
+ return;
+ if (!resource->shouldSendResourceLoadCallbacks())
return;
- // FIXME: If the WebKit client changes or cancels the request, WebCore does not respect this and continues the load.
- frame()->loader()->loadedResourceFromMemoryCache(resource);
+ ResourceRequest request(resource->url());
+ unsigned long identifier = createUniqueIdentifier();
+ context().dispatchDidLoadResourceFromMemoryCache(request, resource->response());
+ // FIXME: If willSendRequest changes the request, we don't respect it.
+ willSendRequest(resource, request, ResourceResponse(), resource->options());
+ InspectorInstrumentation::markResourceAsCached(frame()->page(), identifier);
+ context().sendRemainingDelegateMessages(m_documentLoader, identifier, resource->response(), 0, resource->encodedSize(), 0, ResourceError());
}
void ResourceFetcher::incrementRequestCount(const Resource* res)

Powered by Google App Engine
This is Rietveld 408576698