Index: content/renderer/shared_worker/shared_worker_repository.cc |
diff --git a/content/renderer/shared_worker/shared_worker_repository.cc b/content/renderer/shared_worker/shared_worker_repository.cc |
index 9aa746af8d19531b9a9004fc16614858ba22a5db..b50dfe6b32ab12bafe24bb1c5bb8c5de115be924 100644 |
--- a/content/renderer/shared_worker/shared_worker_repository.cc |
+++ b/content/renderer/shared_worker/shared_worker_repository.cc |
@@ -8,11 +8,17 @@ |
#include "content/common/view_messages.h" |
#include "content/renderer/render_frame_impl.h" |
#include "content/renderer/shared_worker/websharedworker_proxy.h" |
+#include "ipc/ipc_sync_channel.h" |
namespace content { |
SharedWorkerRepository::SharedWorkerRepository(RenderFrameImpl* render_frame) |
- : render_frame_(render_frame){}; |
+ : render_frame_(render_frame) { |
+ if (!ChildThreadImpl::current()) |
+ return; // May be null in some tests. |
+ ChildThreadImpl::current()->channel()->GetRemoteAssociatedInterface( |
+ &message_filter_); |
+} |
SharedWorkerRepository::~SharedWorkerRepository() = default; |
@@ -26,28 +32,29 @@ SharedWorkerRepository::createSharedWorkerConnector( |
blink::WebAddressSpace creation_address_space, |
blink::WebSharedWorkerCreationContextType creation_context_type, |
blink::WebWorkerCreationError* error) { |
- ViewHostMsg_CreateWorker_Params params; |
- params.url = url; |
- params.name = name.utf16(); |
- params.content_security_policy = content_security_policy.utf16(); |
- params.security_policy_type = security_policy_type; |
- params.document_id = document_id; |
- params.render_frame_route_id = render_frame_->GetRoutingID(); |
- params.creation_address_space = creation_address_space; |
- params.creation_context_type = creation_context_type; |
- ViewHostMsg_CreateWorker_Reply reply; |
- render_frame_->Send(new ViewHostMsg_CreateWorker(params, &reply)); |
- *error = reply.error; |
+ mojom::SharedWorkerCreateParamsPtr params = |
+ mojom::SharedWorkerCreateParams::New(); |
+ params->url = url; |
+ params->name = name.utf16(); |
+ params->content_security_policy = content_security_policy.utf16(); |
+ params->security_policy_type = security_policy_type; |
+ params->document_id = document_id; |
+ params->render_frame_route_id = render_frame_->GetRoutingID(); |
+ params->creation_address_space = creation_address_space; |
+ params->creation_context_type = creation_context_type; |
+ |
+ int route_id; |
+ message_filter_->OnCreateWorker(std::move(params), &route_id, error); |
documents_with_workers_.insert(document_id); |
- return base::MakeUnique<WebSharedWorkerProxy>( |
- ChildThreadImpl::current()->GetRouter(), reply.route_id); |
+ |
+ return base::MakeUnique<WebSharedWorkerProxy>(route_id); |
} |
void SharedWorkerRepository::documentDetached(DocumentID document) { |
std::set<DocumentID>::iterator iter = documents_with_workers_.find(document); |
if (iter != documents_with_workers_.end()) { |
// Notify the browser process that the document has shut down. |
- render_frame_->Send(new ViewHostMsg_DocumentDetached(document)); |
+ message_filter_->OnDocumentDetached(document); |
documents_with_workers_.erase(iter); |
} |
} |