| Index: content/browser/loader/resource_message_filter.cc | 
| diff --git a/content/browser/loader/resource_message_filter.cc b/content/browser/loader/resource_message_filter.cc | 
| index d437a15e1b1f04a3737835e0840f77ff7a621442..c43533f96c7cda711080064394dbcff3775c64ea 100644 | 
| --- a/content/browser/loader/resource_message_filter.cc | 
| +++ b/content/browser/loader/resource_message_filter.cc | 
| @@ -7,12 +7,12 @@ | 
| #include "base/logging.h" | 
| #include "content/browser/appcache/chrome_appcache_service.h" | 
| #include "content/browser/blob_storage/chrome_blob_storage_context.h" | 
| +#include "content/browser/loader/loader_globals.h" | 
| #include "content/browser/loader/resource_dispatcher_host_impl.h" | 
| #include "content/browser/loader/resource_requester_info.h" | 
| #include "content/browser/loader/url_loader_factory_impl.h" | 
| #include "content/browser/service_worker/service_worker_context_wrapper.h" | 
| #include "content/common/resource_messages.h" | 
| -#include "content/public/browser/browser_thread.h" | 
| #include "content/public/browser/resource_context.h" | 
| #include "storage/browser/fileapi/file_system_context.h" | 
|  | 
| @@ -36,22 +36,27 @@ ResourceMessageFilter::ResourceMessageFilter( | 
| service_worker_context, | 
| get_contexts_callback)), | 
| weak_ptr_factory_(this) { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
| +  DCHECK(LoaderGlobals::Get() | 
| +             ->main_thread_task_runner() | 
| +             ->BelongsToCurrentThread()); | 
| } | 
|  | 
| ResourceMessageFilter::~ResourceMessageFilter() { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO); | 
| +  DCHECK( | 
| +      LoaderGlobals::Get()->io_thread_task_runner()->BelongsToCurrentThread()); | 
| DCHECK(is_channel_closed_); | 
| DCHECK(!weak_ptr_factory_.HasWeakPtrs()); | 
| } | 
|  | 
| void ResourceMessageFilter::OnFilterAdded(IPC::Channel*) { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO); | 
| +  DCHECK( | 
| +      LoaderGlobals::Get()->io_thread_task_runner()->BelongsToCurrentThread()); | 
| InitializeOnIOThread(); | 
| } | 
|  | 
| void ResourceMessageFilter::OnChannelClosing() { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO); | 
| +  DCHECK( | 
| +      LoaderGlobals::Get()->io_thread_task_runner()->BelongsToCurrentThread()); | 
|  | 
| // Unhook us from all pending network requests so they don't get sent to a | 
| // deleted object. | 
| @@ -63,7 +68,8 @@ void ResourceMessageFilter::OnChannelClosing() { | 
| } | 
|  | 
| bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO); | 
| +  DCHECK( | 
| +      LoaderGlobals::Get()->io_thread_task_runner()->BelongsToCurrentThread()); | 
| // Check if InitializeOnIOThread() has been called. | 
| DCHECK_EQ(this, requester_info_->filter()); | 
| return ResourceDispatcherHostImpl::Get()->OnMessageReceived( | 
| @@ -73,11 +79,16 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) { | 
| void ResourceMessageFilter::OnDestruct() const { | 
| // Destroy the filter on the IO thread since that's where its weak pointers | 
| // are being used. | 
| -  BrowserThread::DeleteOnIOThread::Destruct(this); | 
| +  if (!LoaderGlobals::Get() | 
| +           ->io_thread_task_runner() | 
| +           ->BelongsToCurrentThread()) { | 
| +    LoaderGlobals::Get()->io_thread_task_runner()->DeleteSoon(FROM_HERE, this); | 
| +  } | 
| } | 
|  | 
| base::WeakPtr<ResourceMessageFilter> ResourceMessageFilter::GetWeakPtr() { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO); | 
| +  DCHECK( | 
| +      LoaderGlobals::Get()->io_thread_task_runner()->BelongsToCurrentThread()); | 
| return is_channel_closed_ ? nullptr : weak_ptr_factory_.GetWeakPtr(); | 
| } | 
|  | 
| @@ -109,7 +120,8 @@ void ResourceMessageFilter::InitializeForTest() { | 
| } | 
|  | 
| void ResourceMessageFilter::InitializeOnIOThread() { | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO); | 
| +  DCHECK( | 
| +      LoaderGlobals::Get()->io_thread_task_runner()->BelongsToCurrentThread()); | 
| // The WeakPtr of the filter must be created on the IO thread. So sets the | 
| // WeakPtr of |requester_info_| now. | 
| requester_info_->set_filter(GetWeakPtr()); | 
|  |