Index: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
index 1816f8d687c68baf6db35b3566b50c292c224325..2b2264e23d2e52e9df496f49b52637946fd87aef 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
@@ -421,8 +421,9 @@ Resource* ResourceFetcher::ResourceForStaticData( |
response.SetTextEncodingName(archive_resource->TextEncoding()); |
} |
- Resource* resource = factory.Create(params.GetResourceRequest(), |
- params.Options(), params.Charset()); |
+ Resource* resource = |
+ factory.Create(params.GetResourceRequest(), params.Options(), |
+ params.Charset(), &Context()); |
resource->SetNeedsSynchronousCacheHit(substitute_data.ForceSynchronousLoad()); |
// FIXME: We should provide a body stream here. |
resource->ResponseReceived(response, nullptr); |
@@ -443,8 +444,9 @@ Resource* ResourceFetcher::ResourceForBlockedRequest( |
const FetchParameters& params, |
const ResourceFactory& factory, |
ResourceRequestBlockedReason blocked_reason) { |
- Resource* resource = factory.Create(params.GetResourceRequest(), |
- params.Options(), params.Charset()); |
+ Resource* resource = |
+ factory.Create(params.GetResourceRequest(), params.Options(), |
+ params.Charset(), &Context()); |
resource->GetError(ResourceError::CancelledDueToAccessCheckError( |
params.Url(), blocked_reason)); |
return resource; |
@@ -585,7 +587,7 @@ Resource* ResourceFetcher::RequestResource( |
if (!resource && !is_data_url && archive_) |
return nullptr; |
} |
- if (!resource) { |
+ if (!resource && IsMainThread()) { |
resource = |
GetMemoryCache()->ResourceForURL(params.Url(), GetCacheIdentifier()); |
} |
@@ -734,14 +736,15 @@ Resource* ResourceFetcher::CreateResourceForLoading( |
const String& charset, |
const ResourceFactory& factory) { |
const String cache_identifier = GetCacheIdentifier(); |
- DCHECK(!GetMemoryCache()->ResourceForURL(params.GetResourceRequest().Url(), |
+ DCHECK(!IsMainThread() || |
+ !GetMemoryCache()->ResourceForURL(params.GetResourceRequest().Url(), |
cache_identifier)); |
RESOURCE_LOADING_DVLOG(1) << "Loading Resource for " |
<< params.GetResourceRequest().Url().ElidedString(); |
- Resource* resource = |
- factory.Create(params.GetResourceRequest(), params.Options(), charset); |
+ Resource* resource = factory.Create(params.GetResourceRequest(), |
+ params.Options(), charset, &Context()); |
resource->SetLinkPreload(params.IsLinkPreload()); |
if (params.IsSpeculativePreload()) { |
resource->SetPreloadDiscoveryTime(params.PreloadDiscoveryTime()); |
@@ -750,7 +753,7 @@ Resource* ResourceFetcher::CreateResourceForLoading( |
// - Don't add main resource to cache to prevent reuse. |
// - Don't add the resource if its body will not be stored. |
- if (factory.GetType() != Resource::kMainResource && |
+ if (IsMainThread() && factory.GetType() != Resource::kMainResource && |
params.Options().data_buffering_policy != kDoNotBufferData) { |
GetMemoryCache()->Add(resource); |
} |
@@ -1260,7 +1263,7 @@ void ResourceFetcher::MoveResourceLoaderToNonBlocking(ResourceLoader* loader) { |
bool ResourceFetcher::StartLoad(Resource* resource) { |
DCHECK(resource); |
DCHECK(resource->StillNeedsLoad()); |
- if (!Context().ShouldLoadNewResource(resource->GetType())) { |
+ if (IsMainThread() && !Context().ShouldLoadNewResource(resource->GetType())) { |
GetMemoryCache()->Remove(resource); |
return false; |
} |