| 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/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "content/browser/message_port_message_filter.h" | 9 #include "content/browser/message_port_message_filter.h" |
| 10 #include "content/browser/message_port_service.h" | 10 #include "content/browser/message_port_service.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RegisterServiceWorker, | 93 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RegisterServiceWorker, |
| 94 OnRegisterServiceWorker) | 94 OnRegisterServiceWorker) |
| 95 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, | 95 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, |
| 96 OnUnregisterServiceWorker) | 96 OnUnregisterServiceWorker) |
| 97 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, | 97 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, |
| 98 OnProviderCreated) | 98 OnProviderCreated) |
| 99 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, | 99 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, |
| 100 OnProviderDestroyed) | 100 OnProviderDestroyed) |
| 101 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, | 101 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, |
| 102 OnSetHostedVersionId) | 102 OnSetHostedVersionId) |
| 103 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessage, | 103 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, |
| 104 OnPostMessage) | 104 OnPostMessageToWorker) |
| 105 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded, | 105 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded, |
| 106 OnWorkerScriptLoaded) | 106 OnWorkerScriptLoaded) |
| 107 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed, | 107 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed, |
| 108 OnWorkerScriptLoadFailed) | 108 OnWorkerScriptLoadFailed) |
| 109 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, | 109 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, |
| 110 OnWorkerStarted) | 110 OnWorkerStarted) |
| 111 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, | 111 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, |
| 112 OnWorkerStopped) | 112 OnWorkerStopped) |
| 113 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException, | 113 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException, |
| 114 OnReportException) | 114 OnReportException) |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 } | 217 } |
| 218 | 218 |
| 219 context_->UnregisterServiceWorker( | 219 context_->UnregisterServiceWorker( |
| 220 pattern, | 220 pattern, |
| 221 base::Bind(&ServiceWorkerDispatcherHost::UnregistrationComplete, | 221 base::Bind(&ServiceWorkerDispatcherHost::UnregistrationComplete, |
| 222 this, | 222 this, |
| 223 thread_id, | 223 thread_id, |
| 224 request_id)); | 224 request_id)); |
| 225 } | 225 } |
| 226 | 226 |
| 227 void ServiceWorkerDispatcherHost::OnPostMessage( | 227 void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
| 228 int handle_id, | 228 int handle_id, |
| 229 const base::string16& message, | 229 const base::string16& message, |
| 230 const std::vector<int>& sent_message_port_ids) { | 230 const std::vector<int>& sent_message_port_ids) { |
| 231 if (!context_ || !ServiceWorkerUtils::IsFeatureEnabled()) | 231 if (!context_ || !ServiceWorkerUtils::IsFeatureEnabled()) |
| 232 return; | 232 return; |
| 233 | 233 |
| 234 std::vector<int> new_routing_ids(sent_message_port_ids.size()); | |
| 235 for (size_t i = 0; i < sent_message_port_ids.size(); ++i) { | |
| 236 new_routing_ids[i] = message_port_message_filter_->GetNextRoutingID(); | |
| 237 MessagePortService::GetInstance()->UpdateMessagePort( | |
| 238 sent_message_port_ids[i], | |
| 239 message_port_message_filter_, | |
| 240 new_routing_ids[i]); | |
| 241 } | |
| 242 | |
| 243 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); | 234 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
| 244 if (!handle) { | 235 if (!handle) { |
| 245 BadMessageReceived(); | 236 BadMessageReceived(); |
| 246 return; | 237 return; |
| 247 } | 238 } |
| 248 | 239 |
| 240 std::vector<int> new_routing_ids; |
| 241 message_port_message_filter_->UpdateMessagePortsWithNewRoutes( |
| 242 sent_message_port_ids, &new_routing_ids); |
| 249 handle->version()->SendMessage( | 243 handle->version()->SendMessage( |
| 250 ServiceWorkerMsg_Message(message, sent_message_port_ids, new_routing_ids), | 244 ServiceWorkerMsg_MessageToWorker(message, |
| 245 sent_message_port_ids, |
| 246 new_routing_ids), |
| 251 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 247 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 252 } | 248 } |
| 253 | 249 |
| 254 void ServiceWorkerDispatcherHost::OnProviderCreated(int provider_id) { | 250 void ServiceWorkerDispatcherHost::OnProviderCreated(int provider_id) { |
| 255 if (!context_) | 251 if (!context_) |
| 256 return; | 252 return; |
| 257 if (context_->GetProviderHost(render_process_id_, provider_id)) { | 253 if (context_->GetProviderHost(render_process_id_, provider_id)) { |
| 258 BadMessageReceived(); | 254 BadMessageReceived(); |
| 259 return; | 255 return; |
| 260 } | 256 } |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 ServiceWorkerStatusCode status) { | 405 ServiceWorkerStatusCode status) { |
| 410 base::string16 error_message; | 406 base::string16 error_message; |
| 411 blink::WebServiceWorkerError::ErrorType error_type; | 407 blink::WebServiceWorkerError::ErrorType error_type; |
| 412 GetServiceWorkerRegistrationStatusResponse( | 408 GetServiceWorkerRegistrationStatusResponse( |
| 413 status, &error_type, &error_message); | 409 status, &error_type, &error_message); |
| 414 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError( | 410 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError( |
| 415 thread_id, request_id, error_type, error_message)); | 411 thread_id, request_id, error_type, error_message)); |
| 416 } | 412 } |
| 417 | 413 |
| 418 } // namespace content | 414 } // namespace content |
| OLD | NEW |