Index: extensions/browser/extension_message_filter.cc |
diff --git a/extensions/browser/extension_message_filter.cc b/extensions/browser/extension_message_filter.cc |
index e25480dcaf54317d778d4c3e369267d1c4d89f84..f7e794bf7e5a94a2c086cdddd359ec3fc9dc85d6 100644 |
--- a/extensions/browser/extension_message_filter.cc |
+++ b/extensions/browser/extension_message_filter.cc |
@@ -31,7 +31,9 @@ ExtensionMessageFilter::ExtensionMessageFilter(int render_process_id, |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
} |
-ExtensionMessageFilter::~ExtensionMessageFilter() {} |
+ExtensionMessageFilter::~ExtensionMessageFilter() { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+} |
void ExtensionMessageFilter::OverrideThreadForMessage( |
const IPC::Message& message, |
@@ -53,6 +55,12 @@ void ExtensionMessageFilter::OverrideThreadForMessage( |
} |
} |
+void ExtensionMessageFilter::OnDestruct() const { |
+ // Destroy the filter on the IO thread since that's where its weak pointers |
+ // are being used. |
+ BrowserThread::DeleteOnIOThread::Destruct(this); |
+} |
+ |
bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(ExtensionMessageFilter, message) |