Chromium Code Reviews| 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(), |
|
kinuko
2017/05/12 08:41:45
It feels slightly weird why we don't use loading t
horo
2017/05/12 09:06:02
I think so too...
But I don't want to change the e
kinuko
2017/05/13 05:54:55
Yep, ok to leave it as is in this CL.
+yhirano@:
yhirano
2017/05/15 01:43:26
No.
I also think this should be the loading task
|
| 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() { |