Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Side by Side Diff: content/child/service_worker/service_worker_message_filter.cc

Issue 463013002: ServiceWorker: Implement updatefound event and version attributes (Chromium) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address for comments Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698