Index: content/browser/shared_worker/shared_worker_message_filter.cc |
diff --git a/content/browser/shared_worker/shared_worker_message_filter.cc b/content/browser/shared_worker/shared_worker_message_filter.cc |
index fd306ac47e5da613ce60c6098b3f1b62bb5be250..1d07e5f987b006e320e7ffd856973f85cd1d9bdd 100644 |
--- a/content/browser/shared_worker/shared_worker_message_filter.cc |
+++ b/content/browser/shared_worker/shared_worker_message_filter.cc |
@@ -12,6 +12,7 @@ |
#include "content/common/devtools_messages.h" |
#include "content/common/view_messages.h" |
#include "content/common/worker_messages.h" |
+#include "content/public/browser/browser_thread.h" |
#include "third_party/WebKit/public/web/WebSharedWorkerCreationErrors.h" |
namespace content { |
@@ -39,12 +40,10 @@ SharedWorkerMessageFilter::SharedWorkerMessageFilter( |
arraysize(kFilteredMessageClasses)), |
render_process_id_(render_process_id), |
resource_context_(resource_context), |
- partition_(partition), |
- message_port_message_filter_(message_port_message_filter) { |
-} |
+ partition_id_(WorkerStoragePartitionId(partition)), |
+ message_port_message_filter_(message_port_message_filter) {} |
SharedWorkerMessageFilter::~SharedWorkerMessageFilter() { |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
} |
void SharedWorkerMessageFilter::OnChannelClosing() { |
@@ -86,13 +85,22 @@ int SharedWorkerMessageFilter::GetNextRoutingID() { |
return message_port_message_filter_->GetNextRoutingID(); |
} |
+void SharedWorkerMessageFilter::DetachAllDocuments() { |
+ if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, |
+ base::Bind(&SharedWorkerMessageFilter::DetachAllDocuments, this)); |
+ return; |
+ } |
+ SharedWorkerServiceImpl::GetInstance()->DetachAllDocuments(this); |
+} |
+ |
void SharedWorkerMessageFilter::OnCreateWorker( |
const ViewHostMsg_CreateWorker_Params& params, |
ViewHostMsg_CreateWorker_Reply* reply) { |
reply->route_id = GetNextRoutingID(); |
reply->error = SharedWorkerServiceImpl::GetInstance()->CreateWorker( |
- params, reply->route_id, this, resource_context_, |
- WorkerStoragePartitionId(partition_)); |
+ params, reply->route_id, this, resource_context_, partition_id_); |
if (CreateWorkerErrorIsFatal(reply->error)) |
reply->route_id = MSG_ROUTING_NONE; |
} |