| 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;
|
| }
|
|
|