| 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 |