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/child/service_worker/service_worker_message_filter.h" | 5 #include "content/child/service_worker/service_worker_message_filter.h" |
6 | 6 |
7 #include "base/message_loop/message_loop_proxy.h" | 7 #include "base/message_loop/message_loop_proxy.h" |
8 #include "content/child/service_worker/service_worker_dispatcher.h" | 8 #include "content/child/service_worker/service_worker_dispatcher.h" |
9 #include "content/child/thread_safe_sender.h" | 9 #include "content/child/thread_safe_sender.h" |
10 #include "content/child/worker_thread_task_runner.h" | 10 #include "content/child/worker_thread_task_runner.h" |
11 #include "content/common/service_worker/service_worker_messages.h" | 11 #include "content/common/service_worker/service_worker_messages.h" |
12 #include "content/common/service_worker/service_worker_types.h" | 12 #include "content/common/service_worker/service_worker_types.h" |
13 #include "ipc/ipc_message_macros.h" | 13 #include "ipc/ipc_message_macros.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 // Sends a ServiceWorkerObjectDestroyed message to the browser so it can delete | 19 // Sends a ServiceWorkerObjectDestroyed message to the browser so it can delete |
20 // the ServiceWorker handle. | 20 // the ServiceWorker handle. |
21 void SendServiceWorkerObjectDestroyed( | 21 void SendServiceWorkerObjectDestroyed( |
22 scoped_refptr<ThreadSafeSender> sender, | 22 ThreadSafeSender* sender, |
23 int handle_id) { | 23 int handle_id) { |
24 if (handle_id == kInvalidServiceWorkerHandleId) | 24 if (handle_id == kInvalidServiceWorkerHandleId) |
25 return; | 25 return; |
26 sender->Send( | 26 sender->Send( |
27 new ServiceWorkerHostMsg_DecrementServiceWorkerRefCount(handle_id)); | 27 new ServiceWorkerHostMsg_DecrementServiceWorkerRefCount(handle_id)); |
28 } | 28 } |
29 | 29 |
| 30 void SendRegistrationObjectDestroyed( |
| 31 ThreadSafeSender* sender, |
| 32 int handle_id) { |
| 33 if (handle_id == kInvalidServiceWorkerRegistrationHandleId) |
| 34 return; |
| 35 sender->Send( |
| 36 new ServiceWorkerHostMsg_DecrementRegistrationRefCount(handle_id)); |
| 37 } |
| 38 |
30 } // namespace | 39 } // namespace |
31 | 40 |
32 ServiceWorkerMessageFilter::ServiceWorkerMessageFilter(ThreadSafeSender* sender) | 41 ServiceWorkerMessageFilter::ServiceWorkerMessageFilter(ThreadSafeSender* sender) |
33 : main_thread_loop_proxy_(base::MessageLoopProxy::current()), | 42 : main_thread_loop_proxy_(base::MessageLoopProxy::current()), |
34 thread_safe_sender_(sender) {} | 43 thread_safe_sender_(sender) {} |
35 | 44 |
36 ServiceWorkerMessageFilter::~ServiceWorkerMessageFilter() {} | 45 ServiceWorkerMessageFilter::~ServiceWorkerMessageFilter() {} |
37 | 46 |
38 base::TaskRunner* ServiceWorkerMessageFilter::OverrideTaskRunnerForMessage( | 47 base::TaskRunner* ServiceWorkerMessageFilter::OverrideTaskRunnerForMessage( |
39 const IPC::Message& msg) { | 48 const IPC::Message& msg) { |
(...skipping 25 matching lines...) Expand all Loading... |
65 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, | 74 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, |
66 OnStaleSetVersionAttributes) | 75 OnStaleSetVersionAttributes) |
67 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetControllerServiceWorker, | 76 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetControllerServiceWorker, |
68 OnStaleSetControllerServiceWorker) | 77 OnStaleSetControllerServiceWorker) |
69 IPC_END_MESSAGE_MAP() | 78 IPC_END_MESSAGE_MAP() |
70 } | 79 } |
71 | 80 |
72 void ServiceWorkerMessageFilter::OnStaleRegistered( | 81 void ServiceWorkerMessageFilter::OnStaleRegistered( |
73 int thread_id, | 82 int thread_id, |
74 int request_id, | 83 int request_id, |
| 84 int registration_handle_id, |
75 const ServiceWorkerObjectInfo& info) { | 85 const ServiceWorkerObjectInfo& info) { |
76 SendServiceWorkerObjectDestroyed(thread_safe_sender_, info.handle_id); | 86 SendServiceWorkerObjectDestroyed(thread_safe_sender_, info.handle_id); |
| 87 SendRegistrationObjectDestroyed(thread_safe_sender_, registration_handle_id); |
77 } | 88 } |
78 | 89 |
79 void ServiceWorkerMessageFilter::OnStaleSetVersionAttributes( | 90 void ServiceWorkerMessageFilter::OnStaleSetVersionAttributes( |
80 int thread_id, | 91 int thread_id, |
81 int provider_id, | 92 int provider_id, |
| 93 int registration_handle_id, |
82 int changed_mask, | 94 int changed_mask, |
83 const ServiceWorkerVersionAttributes& attributes) { | 95 const ServiceWorkerVersionAttributes& attributes) { |
84 SendServiceWorkerObjectDestroyed(thread_safe_sender_, | 96 SendServiceWorkerObjectDestroyed(thread_safe_sender_, |
85 attributes.installing.handle_id); | 97 attributes.installing.handle_id); |
86 SendServiceWorkerObjectDestroyed(thread_safe_sender_, | 98 SendServiceWorkerObjectDestroyed(thread_safe_sender_, |
87 attributes.waiting.handle_id); | 99 attributes.waiting.handle_id); |
88 SendServiceWorkerObjectDestroyed(thread_safe_sender_, | 100 SendServiceWorkerObjectDestroyed(thread_safe_sender_, |
89 attributes.active.handle_id); | 101 attributes.active.handle_id); |
| 102 SendRegistrationObjectDestroyed(thread_safe_sender_, registration_handle_id); |
90 } | 103 } |
91 | 104 |
92 void ServiceWorkerMessageFilter::OnStaleSetControllerServiceWorker( | 105 void ServiceWorkerMessageFilter::OnStaleSetControllerServiceWorker( |
93 int thread_id, | 106 int thread_id, |
94 int provider_id, | 107 int provider_id, |
95 const ServiceWorkerObjectInfo& info) { | 108 const ServiceWorkerObjectInfo& info) { |
96 SendServiceWorkerObjectDestroyed(thread_safe_sender_, info.handle_id); | 109 SendServiceWorkerObjectDestroyed(thread_safe_sender_, info.handle_id); |
97 } | 110 } |
98 | 111 |
99 } // namespace content | 112 } // namespace content |
OLD | NEW |