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 0554a74ba34eafad9c243add53a20c9f6df3ee9f..ea9a7766f0c2c124aa27d81a3beaa94c59f0a50c 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
@@ -423,8 +423,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); |
@@ -445,8 +446,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; |
@@ -589,7 +591,7 @@ Resource* ResourceFetcher::RequestResource( |
if (!resource && !is_data_url && archive_) |
return nullptr; |
} |
- if (!resource) { |
+ if (!resource && IsMainThread()) { |
resource = |
GetMemoryCache()->ResourceForURL(params.Url(), GetCacheIdentifier()); |
} |
@@ -735,14 +737,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()); |
@@ -751,7 +754,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); |
} |
@@ -1249,7 +1252,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; |
} |