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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 IPC_BEGIN_MESSAGE_MAP_EX( | 91 IPC_BEGIN_MESSAGE_MAP_EX( |
92 ServiceWorkerDispatcherHost, message, *message_was_ok) | 92 ServiceWorkerDispatcherHost, message, *message_was_ok) |
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_AddScriptClient, | |
102 OnAddScriptClient) | |
103 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RemoveScriptClient, | |
104 OnRemoveScriptClient) | |
105 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, | 101 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, |
106 OnSetHostedVersionId) | 102 OnSetHostedVersionId) |
107 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessage, | 103 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessage, |
108 OnPostMessage) | 104 OnPostMessage) |
109 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded, | 105 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded, |
110 OnWorkerScriptLoaded) | 106 OnWorkerScriptLoaded) |
111 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed, | 107 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed, |
112 OnWorkerScriptLoadFailed) | 108 OnWorkerScriptLoadFailed) |
113 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, | 109 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, |
114 OnWorkerStarted) | 110 OnWorkerStarted) |
115 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, | 111 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, |
116 OnWorkerStopped) | 112 OnWorkerStopped) |
117 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException, | 113 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException, |
118 OnReportException) | 114 OnReportException) |
119 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportConsoleMessage, | 115 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportConsoleMessage, |
120 OnReportConsoleMessage) | 116 OnReportConsoleMessage) |
121 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ServiceWorkerObjectDestroyed, | 117 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_IncrementServiceWorkerRefCount, |
122 OnServiceWorkerObjectDestroyed) | 118 OnIncrementServiceWorkerRefCount) |
| 119 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementServiceWorkerRefCount, |
| 120 OnDecrementServiceWorkerRefCount) |
123 IPC_MESSAGE_UNHANDLED(handled = false) | 121 IPC_MESSAGE_UNHANDLED(handled = false) |
124 IPC_END_MESSAGE_MAP() | 122 IPC_END_MESSAGE_MAP() |
125 | 123 |
126 if (!handled && context_) { | 124 if (!handled && context_) { |
127 handled = context_->embedded_worker_registry()->OnMessageReceived(message); | 125 handled = context_->embedded_worker_registry()->OnMessageReceived(message); |
128 if (!handled) | 126 if (!handled) |
129 BadMessageReceived(); | 127 BadMessageReceived(); |
130 } | 128 } |
131 | 129 |
132 return handled; | 130 return handled; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { | 267 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { |
270 if (!context_) | 268 if (!context_) |
271 return; | 269 return; |
272 if (!context_->GetProviderHost(render_process_id_, provider_id)) { | 270 if (!context_->GetProviderHost(render_process_id_, provider_id)) { |
273 BadMessageReceived(); | 271 BadMessageReceived(); |
274 return; | 272 return; |
275 } | 273 } |
276 context_->RemoveProviderHost(render_process_id_, provider_id); | 274 context_->RemoveProviderHost(render_process_id_, provider_id); |
277 } | 275 } |
278 | 276 |
279 void ServiceWorkerDispatcherHost::OnAddScriptClient( | |
280 int thread_id, int provider_id) { | |
281 if (!context_) | |
282 return; | |
283 ServiceWorkerProviderHost* provider_host = | |
284 context_->GetProviderHost(render_process_id_, provider_id); | |
285 if (!provider_host) | |
286 return; | |
287 provider_host->AddScriptClient(thread_id); | |
288 } | |
289 | |
290 void ServiceWorkerDispatcherHost::OnRemoveScriptClient( | |
291 int thread_id, int provider_id) { | |
292 if (!context_) | |
293 return; | |
294 ServiceWorkerProviderHost* provider_host = | |
295 context_->GetProviderHost(render_process_id_, provider_id); | |
296 if (!provider_host) | |
297 return; | |
298 provider_host->RemoveScriptClient(thread_id); | |
299 } | |
300 | |
301 void ServiceWorkerDispatcherHost::OnSetHostedVersionId( | 277 void ServiceWorkerDispatcherHost::OnSetHostedVersionId( |
302 int provider_id, int64 version_id) { | 278 int provider_id, int64 version_id) { |
303 if (!context_) | 279 if (!context_) |
304 return; | 280 return; |
305 ServiceWorkerProviderHost* provider_host = | 281 ServiceWorkerProviderHost* provider_host = |
306 context_->GetProviderHost(render_process_id_, provider_id); | 282 context_->GetProviderHost(render_process_id_, provider_id); |
307 if (!provider_host || !provider_host->SetHostedVersionId(version_id)) { | 283 if (!provider_host || !provider_host->SetHostedVersionId(version_id)) { |
308 BadMessageReceived(); | 284 BadMessageReceived(); |
309 return; | 285 return; |
310 } | 286 } |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 return; | 362 return; |
387 context_->embedded_worker_registry()->OnReportConsoleMessage( | 363 context_->embedded_worker_registry()->OnReportConsoleMessage( |
388 embedded_worker_id, | 364 embedded_worker_id, |
389 params.source_identifier, | 365 params.source_identifier, |
390 params.message_level, | 366 params.message_level, |
391 params.message, | 367 params.message, |
392 params.line_number, | 368 params.line_number, |
393 params.source_url); | 369 params.source_url); |
394 } | 370 } |
395 | 371 |
396 void ServiceWorkerDispatcherHost::OnServiceWorkerObjectDestroyed( | 372 void ServiceWorkerDispatcherHost::OnIncrementServiceWorkerRefCount( |
397 int handle_id) { | 373 int handle_id) { |
398 handles_.Remove(handle_id); | 374 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
| 375 if (!handle) { |
| 376 BadMessageReceived(); |
| 377 return; |
| 378 } |
| 379 handle->IncrementRefCount(); |
| 380 } |
| 381 |
| 382 void ServiceWorkerDispatcherHost::OnDecrementServiceWorkerRefCount( |
| 383 int handle_id) { |
| 384 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
| 385 if (!handle) { |
| 386 BadMessageReceived(); |
| 387 return; |
| 388 } |
| 389 handle->DecrementRefCount(); |
| 390 if (handle->HasNoRefCount()) |
| 391 handles_.Remove(handle_id); |
399 } | 392 } |
400 | 393 |
401 void ServiceWorkerDispatcherHost::UnregistrationComplete( | 394 void ServiceWorkerDispatcherHost::UnregistrationComplete( |
402 int thread_id, | 395 int thread_id, |
403 int request_id, | 396 int request_id, |
404 ServiceWorkerStatusCode status) { | 397 ServiceWorkerStatusCode status) { |
405 if (status != SERVICE_WORKER_OK) { | 398 if (status != SERVICE_WORKER_OK) { |
406 SendRegistrationError(thread_id, request_id, status); | 399 SendRegistrationError(thread_id, request_id, status); |
407 return; | 400 return; |
408 } | 401 } |
409 | 402 |
410 Send(new ServiceWorkerMsg_ServiceWorkerUnregistered(thread_id, request_id)); | 403 Send(new ServiceWorkerMsg_ServiceWorkerUnregistered(thread_id, request_id)); |
411 } | 404 } |
412 | 405 |
413 void ServiceWorkerDispatcherHost::SendRegistrationError( | 406 void ServiceWorkerDispatcherHost::SendRegistrationError( |
414 int thread_id, | 407 int thread_id, |
415 int request_id, | 408 int request_id, |
416 ServiceWorkerStatusCode status) { | 409 ServiceWorkerStatusCode status) { |
417 base::string16 error_message; | 410 base::string16 error_message; |
418 blink::WebServiceWorkerError::ErrorType error_type; | 411 blink::WebServiceWorkerError::ErrorType error_type; |
419 GetServiceWorkerRegistrationStatusResponse( | 412 GetServiceWorkerRegistrationStatusResponse( |
420 status, &error_type, &error_message); | 413 status, &error_type, &error_message); |
421 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError( | 414 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError( |
422 thread_id, request_id, error_type, error_message)); | 415 thread_id, request_id, error_type, error_message)); |
423 } | 416 } |
424 | 417 |
425 } // namespace content | 418 } // namespace content |
OLD | NEW |