Chromium Code Reviews| Index: content/renderer/shared_worker_repository.cc |
| diff --git a/content/renderer/shared_worker_repository.cc b/content/renderer/shared_worker_repository.cc |
| index cc6ca68117a5a0ad88c43c7689828834b301006d..5c638545b5c7ab0354197b8fee8ce9fd10a35e31 100644 |
| --- a/content/renderer/shared_worker_repository.cc |
| +++ b/content/renderer/shared_worker_repository.cc |
| @@ -8,11 +8,17 @@ |
| #include "content/common/view_messages.h" |
| #include "content/renderer/render_frame_impl.h" |
| #include "content/renderer/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,34 @@ 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::SharedWorker_CreateWorker_ParamsPtr params = |
| + mojom::SharedWorker_CreateWorker_Params::New(); |
| + params->url = url; |
| + params->name = name.utf16(); |
| + params->content_security_policy = content_security_policy.utf16(); |
| + params->security_policy_type = |
| + static_cast<mojom::WebContentSecurityPolicyType>(security_policy_type); |
|
nhiroki
2016/12/28 09:24:30
I plan to add enum traits or replace blink::Enum w
nhiroki
2017/01/10 08:44:06
Added typemap in this CL.
|
| + params->document_id = document_id; |
| + params->render_frame_route_id = render_frame_->GetRoutingID(); |
| + params->creation_address_space = |
| + static_cast<mojom::WebAddressSpace>(creation_address_space); |
| + params->creation_context_type = |
| + static_cast<mojom::WebSharedWorkerCreationContextType>( |
| + creation_context_type); |
| + |
| + mojom::SharedWorker_CreateWorker_ReplyPtr reply; |
| + message_filter_->OnCreateWorker(std::move(params), &reply); |
| + *error = static_cast<blink::WebWorkerCreationError>(reply->error); |
| documents_with_workers_.insert(document_id); |
| - return base::MakeUnique<WebSharedWorkerProxy>( |
| - ChildThreadImpl::current()->GetRouter(), reply.route_id); |
| + |
| + return base::MakeUnique<WebSharedWorkerProxy>(reply->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); |
| } |
| } |