| 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 3d62f2b362a520fdea2af44a1c4b14c0b9fd12d1..138ca381126a1fefa526f55d9478b25d7c402b06 100644
|
| --- a/content/browser/loader/resource_message_filter.cc
|
| +++ b/content/browser/loader/resource_message_filter.cc
|
| @@ -49,6 +49,12 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
| return ResourceDispatcherHostImpl::Get()->OnMessageReceived(message, this);
|
| }
|
|
|
| +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);
|
| +}
|
| +
|
| void ResourceMessageFilter::GetContexts(
|
| ResourceType resource_type,
|
| int origin_pid,
|
| @@ -64,7 +70,32 @@ const HostZoomMap* ResourceMessageFilter::GetHostZoomMap() const {
|
| return NULL;
|
| }
|
|
|
| +bool ResourceMessageFilter::Send(IPC::Message* message) {
|
| + if (message->is_sync()) {
|
| + // We don't support sending synchronous messages from the browser.
|
| + NOTREACHED() << "Can't send sync message through ResourceMessageFilter!";
|
| + return false;
|
| + }
|
| +
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(base::IgnoreResult(&ResourceMessageFilter::Send), this,
|
| + message));
|
| + return true;
|
| + }
|
| +
|
| + if (ResourceDispatcherHostImpl::Get()->SendWithMojoIfPossible(*message,
|
| + this)) {
|
| + delete message;
|
| + return true;
|
| + }
|
| +
|
| + return BrowserMessageFilter::Send(message);
|
| +}
|
| +
|
| base::WeakPtr<ResourceMessageFilter> ResourceMessageFilter::GetWeakPtr() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| return weak_ptr_factory_.GetWeakPtr();
|
| }
|
|
|
|
|