| 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 0c421758e8f5e39bafcdbb4bc1fd2b82b54df9fc..cb6dc754c72c1e16538b2528b8ef32ba9c249d4f 100644
|
| --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
|
| +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
|
| @@ -420,8 +420,9 @@ Resource* ResourceFetcher::resourceForStaticData(
|
| response.setTextEncodingName(archiveResource->textEncoding());
|
| }
|
|
|
| - Resource* resource = factory.create(request.resourceRequest(),
|
| - request.options(), request.charset());
|
| + Resource* resource =
|
| + factory.create(request.resourceRequest(), request.options(),
|
| + request.charset(), &context());
|
| resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad());
|
| // FIXME: We should provide a body stream here.
|
| resource->responseReceived(response, nullptr);
|
| @@ -442,8 +443,9 @@ Resource* ResourceFetcher::resourceForBlockedRequest(
|
| const FetchRequest& request,
|
| const ResourceFactory& factory,
|
| ResourceRequestBlockedReason blockedReason) {
|
| - Resource* resource = factory.create(request.resourceRequest(),
|
| - request.options(), request.charset());
|
| + Resource* resource =
|
| + factory.create(request.resourceRequest(), request.options(),
|
| + request.charset(), &context());
|
| resource->error(ResourceError::cancelledDueToAccessCheckError(request.url(),
|
| blockedReason));
|
| return resource;
|
| @@ -582,7 +584,7 @@ Resource* ResourceFetcher::requestResource(
|
| if (!resource && !isDataUrl && m_archive)
|
| return nullptr;
|
| }
|
| - if (!resource) {
|
| + if (!resource && isMainThread()) {
|
| resource =
|
| memoryCache()->resourceForURL(request.url(), getCacheIdentifier());
|
| }
|
| @@ -731,14 +733,16 @@ Resource* ResourceFetcher::createResourceForLoading(
|
| const String& charset,
|
| const ResourceFactory& factory) {
|
| const String cacheIdentifier = getCacheIdentifier();
|
| - DCHECK(!memoryCache()->resourceForURL(request.resourceRequest().url(),
|
| +
|
| + DCHECK(!isMainThread() ||
|
| + !memoryCache()->resourceForURL(request.resourceRequest().url(),
|
| cacheIdentifier));
|
|
|
| RESOURCE_LOADING_DVLOG(1) << "Loading Resource for "
|
| << request.resourceRequest().url().elidedString();
|
|
|
| - Resource* resource =
|
| - factory.create(request.resourceRequest(), request.options(), charset);
|
| + Resource* resource = factory.create(request.resourceRequest(),
|
| + request.options(), charset, &context());
|
| resource->setLinkPreload(request.isLinkPreload());
|
| if (request.isSpeculativePreload()) {
|
| resource->setPreloadDiscoveryTime(request.preloadDiscoveryTime());
|
| @@ -747,7 +751,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.type() != Resource::MainResource &&
|
| + if (isMainThread() && factory.type() != Resource::MainResource &&
|
| request.options().dataBufferingPolicy != DoNotBufferData) {
|
| memoryCache()->add(resource);
|
| }
|
| @@ -1255,7 +1259,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())) {
|
| memoryCache()->remove(resource);
|
| return false;
|
| }
|
|
|