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 a638d74e061bf8ef0505ffac18665d74dce644d9..4ca1989f0786653063dd4dd5958df3a8e9fb5196 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
@@ -604,7 +604,7 @@ Resource* ResourceFetcher::RequestResource( |
if (!resource && !is_data_url && archive_) |
return nullptr; |
} |
- if (!resource) { |
+ if (!resource && IsMainThread()) { |
resource = |
GetMemoryCache()->ResourceForURL(params.Url(), GetCacheIdentifier()); |
} |
@@ -751,7 +751,8 @@ 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 " |
@@ -767,7 +768,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); |
} |
@@ -1276,9 +1277,10 @@ bool ResourceFetcher::StartLoad(Resource* resource) { |
prohibit_add_remove_client_in_scope(resource); |
Resource::RevalidationStartForbiddenScope |
revalidation_start_forbidden_scope(resource); |
- ScriptForbiddenScope script_forbidden_scope; |
+ ScriptForbiddenIfMainThreadScope script_forbidden_scope; |
- if (!Context().ShouldLoadNewResource(resource->GetType())) { |
+ if (!Context().ShouldLoadNewResource(resource->GetType()) && |
+ IsMainThread()) { |
GetMemoryCache()->Remove(resource); |
return false; |
} |