OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" | 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/profiler/scoped_tracker.h" | 8 #include "base/profiler/scoped_tracker.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 : BrowserMessageFilter(kFilteredMessageClasses, | 103 : BrowserMessageFilter(kFilteredMessageClasses, |
104 arraysize(kFilteredMessageClasses)), | 104 arraysize(kFilteredMessageClasses)), |
105 render_process_id_(render_process_id), | 105 render_process_id_(render_process_id), |
106 message_port_message_filter_(message_port_message_filter), | 106 message_port_message_filter_(message_port_message_filter), |
107 resource_context_(resource_context), | 107 resource_context_(resource_context), |
108 channel_ready_(false) { | 108 channel_ready_(false) { |
109 } | 109 } |
110 | 110 |
111 ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { | 111 ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { |
112 if (GetContext()) { | 112 if (GetContext()) { |
| 113 GetContext()->RemoveMojoEventDispatcher(render_process_id_); |
113 GetContext()->RemoveAllProviderHostsForProcess(render_process_id_); | 114 GetContext()->RemoveAllProviderHostsForProcess(render_process_id_); |
114 GetContext()->embedded_worker_registry()->RemoveChildProcessSender( | 115 GetContext()->embedded_worker_registry()->RemoveChildProcessSender( |
115 render_process_id_); | 116 render_process_id_); |
116 } | 117 } |
117 } | 118 } |
118 | 119 |
119 void ServiceWorkerDispatcherHost::Init( | 120 void ServiceWorkerDispatcherHost::Init( |
120 ServiceWorkerContextWrapper* context_wrapper) { | 121 ServiceWorkerContextWrapper* context_wrapper) { |
121 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 122 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
122 BrowserThread::PostTask( | 123 BrowserThread::PostTask( |
123 BrowserThread::IO, FROM_HERE, | 124 BrowserThread::IO, FROM_HERE, |
124 base::Bind(&ServiceWorkerDispatcherHost::Init, | 125 base::Bind(&ServiceWorkerDispatcherHost::Init, |
125 this, make_scoped_refptr(context_wrapper))); | 126 this, make_scoped_refptr(context_wrapper))); |
126 return; | 127 return; |
127 } | 128 } |
128 | 129 |
129 context_wrapper_ = context_wrapper; | 130 context_wrapper_ = context_wrapper; |
130 if (!GetContext()) | 131 if (!GetContext()) |
131 return; | 132 return; |
132 GetContext()->embedded_worker_registry()->AddChildProcessSender( | 133 GetContext()->embedded_worker_registry()->AddChildProcessSender( |
133 render_process_id_, this, message_port_message_filter_); | 134 render_process_id_, this, message_port_message_filter_); |
| 135 |
| 136 mojo_event_dispatcher_ = |
| 137 make_scoped_ptr(new ServiceWorkerMojoEventDispatcher(render_process_id_)); |
| 138 GetContext()->AddMojoEventDispatcher(mojo_event_dispatcher_.get()); |
134 } | 139 } |
135 | 140 |
136 void ServiceWorkerDispatcherHost::OnFilterAdded(IPC::Sender* sender) { | 141 void ServiceWorkerDispatcherHost::OnFilterAdded(IPC::Sender* sender) { |
137 TRACE_EVENT0("ServiceWorker", | 142 TRACE_EVENT0("ServiceWorker", |
138 "ServiceWorkerDispatcherHost::OnFilterAdded"); | 143 "ServiceWorkerDispatcherHost::OnFilterAdded"); |
139 channel_ready_ = true; | 144 channel_ready_ = true; |
140 std::vector<IPC::Message*> messages; | 145 std::vector<IPC::Message*> messages; |
141 pending_messages_.release(&messages); | 146 pending_messages_.release(&messages); |
142 for (size_t i = 0; i < messages.size(); ++i) { | 147 for (size_t i = 0; i < messages.size(); ++i) { |
143 BrowserMessageFilter::Send(messages[i]); | 148 BrowserMessageFilter::Send(messages[i]); |
(...skipping 1084 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1228 if (!handle) { | 1233 if (!handle) { |
1229 bad_message::ReceivedBadMessage(this, | 1234 bad_message::ReceivedBadMessage(this, |
1230 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1235 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
1231 return; | 1236 return; |
1232 } | 1237 } |
1233 handle->version()->StopWorker( | 1238 handle->version()->StopWorker( |
1234 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1239 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
1235 } | 1240 } |
1236 | 1241 |
1237 } // namespace content | 1242 } // namespace content |
OLD | NEW |