Index: third_party/WebKit/Source/platform/loader/fetch/Resource.cpp |
diff --git a/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp b/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp |
index afa38a3b421076a7ddc81699f12e7bf4bc4201bd..c874c0774d0fe3f576d001693dc6f832285fbfa3 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp |
@@ -269,7 +269,12 @@ Resource::Resource(const ResourceRequest& request, |
integrity_disposition_(ResourceIntegrityDisposition::kNotChecked), |
options_(options), |
response_timestamp_(CurrentTime()), |
- cancel_timer_(Platform::Current()->MainThread()->GetWebTaskRunner(), |
+ cancel_timer_(IsMainThread() |
+ ? Platform::Current()->MainThread()->GetWebTaskRunner() |
+ : Platform::Current() |
+ ->CurrentThread() |
+ ->Scheduler() |
+ ->LoadingTaskRunner(), |
this, |
&Resource::CancelTimerFired), |
resource_request_(request) { |
@@ -278,7 +283,8 @@ Resource::Resource(const ResourceRequest& request, |
// Currently we support the metadata caching only for HTTP family. |
if (GetResourceRequest().Url().ProtocolIsInHTTPFamily()) |
cache_handler_ = CachedMetadataHandlerImpl::Create(this); |
- MemoryCoordinator::Instance().RegisterClient(this); |
+ if (IsMainThread()) |
+ MemoryCoordinator::Instance().RegisterClient(this); |
} |
Resource::~Resource() { |
@@ -357,7 +363,7 @@ void Resource::FinishAsError(const ResourceError& error) { |
error_ = error; |
is_revalidating_ = false; |
- if (error_.IsCancellation() || !IsPreloaded()) |
+ if ((error_.IsCancellation() || !IsPreloaded()) && IsMainThread()) |
GetMemoryCache()->Remove(this); |
if (!ErrorOccurred()) |
@@ -586,7 +592,7 @@ String Resource::ReasonNotDeletable() const { |
builder.AppendNumber(preload_count_); |
builder.Append(')'); |
} |
- if (GetMemoryCache()->Contains(this)) { |
+ if (IsMainThread() && GetMemoryCache()->Contains(this)) { |
if (!builder.IsEmpty()) |
builder.Append(' '); |
builder.Append("in_memory_cache"); |
@@ -712,7 +718,8 @@ void Resource::DidRemoveClientOrObserver() { |
// operation." |
// We allow non-secure content to be reused in history, but we do not allow |
// secure content to be reused. |
- if (HasCacheControlNoStoreHeader() && Url().ProtocolIs("https")) |
+ if (HasCacheControlNoStoreHeader() && Url().ProtocolIs("https") && |
+ IsMainThread()) |
GetMemoryCache()->Remove(this); |
} |
} |
@@ -735,7 +742,8 @@ void Resource::SetDecodedSize(size_t decoded_size) { |
return; |
size_t old_size = size(); |
decoded_size_ = decoded_size; |
- GetMemoryCache()->Update(this, old_size, size()); |
+ if (IsMainThread()) |
+ GetMemoryCache()->Update(this, old_size, size()); |
} |
void Resource::SetEncodedSize(size_t encoded_size) { |
@@ -745,7 +753,8 @@ void Resource::SetEncodedSize(size_t encoded_size) { |
size_t old_size = size(); |
encoded_size_ = encoded_size; |
encoded_size_memory_usage_ = encoded_size; |
- GetMemoryCache()->Update(this, old_size, size()); |
+ if (IsMainThread()) |
+ GetMemoryCache()->Update(this, old_size, size()); |
} |
void Resource::FinishPendingClients() { |