| 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)
|
|
|