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

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

Issue 1002393005: Revert of ServiceWorker: Introduce SWMessageSender in order to mock IPC messaging (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix patch apply failure Created 5 years, 9 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
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_dispatcher.h" 5 #include "content/child/service_worker/service_worker_dispatcher.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/threading/thread_local.h" 9 #include "base/threading/thread_local.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
11 #include "content/child/child_thread_impl.h" 11 #include "content/child/child_thread_impl.h"
12 #include "content/child/service_worker/service_worker_handle_reference.h" 12 #include "content/child/service_worker/service_worker_handle_reference.h"
13 #include "content/child/service_worker/service_worker_message_sender.h"
14 #include "content/child/service_worker/service_worker_provider_context.h" 13 #include "content/child/service_worker/service_worker_provider_context.h"
15 #include "content/child/service_worker/service_worker_registration_handle_refere nce.h" 14 #include "content/child/service_worker/service_worker_registration_handle_refere nce.h"
16 #include "content/child/service_worker/web_service_worker_impl.h" 15 #include "content/child/service_worker/web_service_worker_impl.h"
17 #include "content/child/service_worker/web_service_worker_registration_impl.h" 16 #include "content/child/service_worker/web_service_worker_registration_impl.h"
18 #include "content/child/thread_safe_sender.h" 17 #include "content/child/thread_safe_sender.h"
19 #include "content/child/webmessageportchannel_impl.h" 18 #include "content/child/webmessageportchannel_impl.h"
20 #include "content/common/service_worker/service_worker_messages.h" 19 #include "content/common/service_worker/service_worker_messages.h"
21 #include "content/common/service_worker/service_worker_types.h" 20 #include "content/common/service_worker/service_worker_types.h"
22 #include "content/public/common/url_utils.h" 21 #include "content/public/common/url_utils.h"
23 #include "third_party/WebKit/public/platform/WebServiceWorkerClientsInfo.h" 22 #include "third_party/WebKit/public/platform/WebServiceWorkerClientsInfo.h"
(...skipping 15 matching lines...) Expand all
39 ServiceWorkerDispatcher* const kHasBeenDeleted = 38 ServiceWorkerDispatcher* const kHasBeenDeleted =
40 reinterpret_cast<ServiceWorkerDispatcher*>(0x1); 39 reinterpret_cast<ServiceWorkerDispatcher*>(0x1);
41 40
42 int CurrentWorkerId() { 41 int CurrentWorkerId() {
43 return WorkerTaskRunner::Instance()->CurrentWorkerId(); 42 return WorkerTaskRunner::Instance()->CurrentWorkerId();
44 } 43 }
45 44
46 } // namespace 45 } // namespace
47 46
48 ServiceWorkerDispatcher::ServiceWorkerDispatcher( 47 ServiceWorkerDispatcher::ServiceWorkerDispatcher(
49 ServiceWorkerMessageSender* sender) 48 ThreadSafeSender* thread_safe_sender)
50 : sender_(sender) { 49 : thread_safe_sender_(thread_safe_sender) {
51 g_dispatcher_tls.Pointer()->Set(this); 50 g_dispatcher_tls.Pointer()->Set(this);
52 } 51 }
53 52
54 ServiceWorkerDispatcher::~ServiceWorkerDispatcher() { 53 ServiceWorkerDispatcher::~ServiceWorkerDispatcher() {
55 g_dispatcher_tls.Pointer()->Set(kHasBeenDeleted); 54 g_dispatcher_tls.Pointer()->Set(kHasBeenDeleted);
56 } 55 }
57 56
58 void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) { 57 void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) {
59 bool handled = true; 58 bool handled = true;
60 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerDispatcher, msg) 59 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerDispatcher, msg)
(...skipping 24 matching lines...) Expand all
85 OnUpdateFound) 84 OnUpdateFound)
86 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetControllerServiceWorker, 85 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetControllerServiceWorker,
87 OnSetControllerServiceWorker) 86 OnSetControllerServiceWorker)
88 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToDocument, 87 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToDocument,
89 OnPostMessage) 88 OnPostMessage)
90 IPC_MESSAGE_UNHANDLED(handled = false) 89 IPC_MESSAGE_UNHANDLED(handled = false)
91 IPC_END_MESSAGE_MAP() 90 IPC_END_MESSAGE_MAP()
92 DCHECK(handled) << "Unhandled message:" << msg.type(); 91 DCHECK(handled) << "Unhandled message:" << msg.type();
93 } 92 }
94 93
94 bool ServiceWorkerDispatcher::Send(IPC::Message* msg) {
95 return thread_safe_sender_->Send(msg);
96 }
97
95 void ServiceWorkerDispatcher::RegisterServiceWorker( 98 void ServiceWorkerDispatcher::RegisterServiceWorker(
96 int provider_id, 99 int provider_id,
97 const GURL& pattern, 100 const GURL& pattern,
98 const GURL& script_url, 101 const GURL& script_url,
99 WebServiceWorkerRegistrationCallbacks* callbacks) { 102 WebServiceWorkerRegistrationCallbacks* callbacks) {
100 DCHECK(callbacks); 103 DCHECK(callbacks);
101 104
102 if (pattern.possibly_invalid_spec().size() > GetMaxURLChars() || 105 if (pattern.possibly_invalid_spec().size() > GetMaxURLChars() ||
103 script_url.possibly_invalid_spec().size() > GetMaxURLChars()) { 106 script_url.possibly_invalid_spec().size() > GetMaxURLChars()) {
104 scoped_ptr<WebServiceWorkerRegistrationCallbacks> 107 scoped_ptr<WebServiceWorkerRegistrationCallbacks>
105 owned_callbacks(callbacks); 108 owned_callbacks(callbacks);
106 std::string error_message(kServiceWorkerRegisterErrorPrefix); 109 std::string error_message(kServiceWorkerRegisterErrorPrefix);
107 error_message += "The provided scriptURL or scope is too long."; 110 error_message += "The provided scriptURL or scope is too long.";
108 scoped_ptr<WebServiceWorkerError> error( 111 scoped_ptr<WebServiceWorkerError> error(
109 new WebServiceWorkerError(WebServiceWorkerError::ErrorTypeSecurity, 112 new WebServiceWorkerError(WebServiceWorkerError::ErrorTypeSecurity,
110 blink::WebString::fromUTF8(error_message))); 113 blink::WebString::fromUTF8(error_message)));
111 callbacks->onError(error.release()); 114 callbacks->onError(error.release());
112 return; 115 return;
113 } 116 }
114 117
115 int request_id = pending_registration_callbacks_.Add(callbacks); 118 int request_id = pending_registration_callbacks_.Add(callbacks);
116 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", 119 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker",
117 "ServiceWorkerDispatcher::RegisterServiceWorker", 120 "ServiceWorkerDispatcher::RegisterServiceWorker",
118 request_id, 121 request_id,
119 "Scope", pattern.spec(), 122 "Scope", pattern.spec(),
120 "Script URL", script_url.spec()); 123 "Script URL", script_url.spec());
121 sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker( 124 thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker(
122 CurrentWorkerId(), request_id, provider_id, pattern, script_url)); 125 CurrentWorkerId(), request_id, provider_id, pattern, script_url));
123 } 126 }
124 127
125 void ServiceWorkerDispatcher::UnregisterServiceWorker( 128 void ServiceWorkerDispatcher::UnregisterServiceWorker(
126 int provider_id, 129 int provider_id,
127 const GURL& pattern, 130 const GURL& pattern,
128 WebServiceWorkerUnregistrationCallbacks* callbacks) { 131 WebServiceWorkerUnregistrationCallbacks* callbacks) {
129 DCHECK(callbacks); 132 DCHECK(callbacks);
130 133
131 if (pattern.possibly_invalid_spec().size() > GetMaxURLChars()) { 134 if (pattern.possibly_invalid_spec().size() > GetMaxURLChars()) {
132 scoped_ptr<WebServiceWorkerUnregistrationCallbacks> 135 scoped_ptr<WebServiceWorkerUnregistrationCallbacks>
133 owned_callbacks(callbacks); 136 owned_callbacks(callbacks);
134 std::string error_message(kServiceWorkerUnregisterErrorPrefix); 137 std::string error_message(kServiceWorkerUnregisterErrorPrefix);
135 error_message += "The provided scope is too long."; 138 error_message += "The provided scope is too long.";
136 scoped_ptr<WebServiceWorkerError> error( 139 scoped_ptr<WebServiceWorkerError> error(
137 new WebServiceWorkerError(WebServiceWorkerError::ErrorTypeSecurity, 140 new WebServiceWorkerError(WebServiceWorkerError::ErrorTypeSecurity,
138 blink::WebString::fromUTF8(error_message))); 141 blink::WebString::fromUTF8(error_message)));
139 callbacks->onError(error.release()); 142 callbacks->onError(error.release());
140 return; 143 return;
141 } 144 }
142 145
143 int request_id = pending_unregistration_callbacks_.Add(callbacks); 146 int request_id = pending_unregistration_callbacks_.Add(callbacks);
144 TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker", 147 TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker",
145 "ServiceWorkerDispatcher::UnregisterServiceWorker", 148 "ServiceWorkerDispatcher::UnregisterServiceWorker",
146 request_id, 149 request_id,
147 "Scope", pattern.spec()); 150 "Scope", pattern.spec());
148 sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker( 151 thread_safe_sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker(
149 CurrentWorkerId(), request_id, provider_id, pattern)); 152 CurrentWorkerId(), request_id, provider_id, pattern));
150 } 153 }
151 154
152 void ServiceWorkerDispatcher::GetRegistration( 155 void ServiceWorkerDispatcher::GetRegistration(
153 int provider_id, 156 int provider_id,
154 const GURL& document_url, 157 const GURL& document_url,
155 WebServiceWorkerRegistrationCallbacks* callbacks) { 158 WebServiceWorkerRegistrationCallbacks* callbacks) {
156 DCHECK(callbacks); 159 DCHECK(callbacks);
157 160
158 if (document_url.possibly_invalid_spec().size() > GetMaxURLChars()) { 161 if (document_url.possibly_invalid_spec().size() > GetMaxURLChars()) {
159 scoped_ptr<WebServiceWorkerRegistrationCallbacks> 162 scoped_ptr<WebServiceWorkerRegistrationCallbacks>
160 owned_callbacks(callbacks); 163 owned_callbacks(callbacks);
161 std::string error_message(kServiceWorkerGetRegistrationErrorPrefix); 164 std::string error_message(kServiceWorkerGetRegistrationErrorPrefix);
162 error_message += "The provided documentURL is too long."; 165 error_message += "The provided documentURL is too long.";
163 scoped_ptr<WebServiceWorkerError> error( 166 scoped_ptr<WebServiceWorkerError> error(
164 new WebServiceWorkerError(WebServiceWorkerError::ErrorTypeSecurity, 167 new WebServiceWorkerError(WebServiceWorkerError::ErrorTypeSecurity,
165 blink::WebString::fromUTF8(error_message))); 168 blink::WebString::fromUTF8(error_message)));
166 callbacks->onError(error.release()); 169 callbacks->onError(error.release());
167 return; 170 return;
168 } 171 }
169 172
170 int request_id = pending_get_registration_callbacks_.Add(callbacks); 173 int request_id = pending_get_registration_callbacks_.Add(callbacks);
171 TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker", 174 TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker",
172 "ServiceWorkerDispatcher::GetRegistration", 175 "ServiceWorkerDispatcher::GetRegistration",
173 request_id, 176 request_id,
174 "Document URL", document_url.spec()); 177 "Document URL", document_url.spec());
175 sender_->Send(new ServiceWorkerHostMsg_GetRegistration( 178 thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetRegistration(
176 CurrentWorkerId(), request_id, provider_id, document_url)); 179 CurrentWorkerId(), request_id, provider_id, document_url));
177 } 180 }
178 181
179 void ServiceWorkerDispatcher::GetRegistrationForReady( 182 void ServiceWorkerDispatcher::GetRegistrationForReady(
180 int provider_id, 183 int provider_id,
181 WebServiceWorkerGetRegistrationForReadyCallbacks* callbacks) { 184 WebServiceWorkerGetRegistrationForReadyCallbacks* callbacks) {
182 int request_id = get_for_ready_callbacks_.Add(callbacks); 185 int request_id = get_for_ready_callbacks_.Add(callbacks);
183 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker", 186 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker",
184 "ServiceWorkerDispatcher::GetRegistrationForReady", 187 "ServiceWorkerDispatcher::GetRegistrationForReady",
185 request_id); 188 request_id);
186 sender_->Send(new ServiceWorkerHostMsg_GetRegistrationForReady( 189 thread_safe_sender_->Send(new ServiceWorkerHostMsg_GetRegistrationForReady(
187 CurrentWorkerId(), request_id, provider_id)); 190 CurrentWorkerId(), request_id, provider_id));
188 } 191 }
189 192
190 void ServiceWorkerDispatcher::AddProviderContext( 193 void ServiceWorkerDispatcher::AddProviderContext(
191 ServiceWorkerProviderContext* provider_context) { 194 ServiceWorkerProviderContext* provider_context) {
192 DCHECK(provider_context); 195 DCHECK(provider_context);
193 int provider_id = provider_context->provider_id(); 196 int provider_id = provider_context->provider_id();
194 DCHECK(!ContainsKey(provider_contexts_, provider_id)); 197 DCHECK(!ContainsKey(provider_contexts_, provider_id));
195 provider_contexts_[provider_id] = provider_context; 198 provider_contexts_[provider_id] = provider_context;
196 } 199 }
(...skipping 18 matching lines...) Expand all
215 } 218 }
216 219
217 void ServiceWorkerDispatcher::RemoveProviderClient(int provider_id) { 220 void ServiceWorkerDispatcher::RemoveProviderClient(int provider_id) {
218 // This could be possibly called multiple times to ensure termination. 221 // This could be possibly called multiple times to ensure termination.
219 if (ContainsKey(provider_clients_, provider_id)) 222 if (ContainsKey(provider_clients_, provider_id))
220 provider_clients_.erase(provider_id); 223 provider_clients_.erase(provider_id);
221 } 224 }
222 225
223 ServiceWorkerDispatcher* 226 ServiceWorkerDispatcher*
224 ServiceWorkerDispatcher::GetOrCreateThreadSpecificInstance( 227 ServiceWorkerDispatcher::GetOrCreateThreadSpecificInstance(
225 ServiceWorkerMessageSender* sender) { 228 ThreadSafeSender* thread_safe_sender) {
226 if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) { 229 if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) {
227 NOTREACHED() << "Re-instantiating TLS ServiceWorkerDispatcher."; 230 NOTREACHED() << "Re-instantiating TLS ServiceWorkerDispatcher.";
228 g_dispatcher_tls.Pointer()->Set(NULL); 231 g_dispatcher_tls.Pointer()->Set(NULL);
229 } 232 }
230 if (g_dispatcher_tls.Pointer()->Get()) 233 if (g_dispatcher_tls.Pointer()->Get())
231 return g_dispatcher_tls.Pointer()->Get(); 234 return g_dispatcher_tls.Pointer()->Get();
232 235
233 ServiceWorkerDispatcher* dispatcher = 236 ServiceWorkerDispatcher* dispatcher =
234 new ServiceWorkerDispatcher(sender); 237 new ServiceWorkerDispatcher(thread_safe_sender);
235 if (WorkerTaskRunner::Instance()->CurrentWorkerId()) 238 if (WorkerTaskRunner::Instance()->CurrentWorkerId())
236 WorkerTaskRunner::Instance()->AddStopObserver(dispatcher); 239 WorkerTaskRunner::Instance()->AddStopObserver(dispatcher);
237 return dispatcher; 240 return dispatcher;
238 } 241 }
239 242
240 ServiceWorkerDispatcher* ServiceWorkerDispatcher::GetThreadSpecificInstance() { 243 ServiceWorkerDispatcher* ServiceWorkerDispatcher::GetThreadSpecificInstance() {
241 if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) 244 if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted)
242 return NULL; 245 return NULL;
243 return g_dispatcher_tls.Pointer()->Get(); 246 return g_dispatcher_tls.Pointer()->Get();
244 } 247 }
245 248
246 void ServiceWorkerDispatcher::OnWorkerRunLoopStopped() { 249 void ServiceWorkerDispatcher::OnWorkerRunLoopStopped() {
247 delete this; 250 delete this;
248 } 251 }
249 252
250 WebServiceWorkerImpl* ServiceWorkerDispatcher::GetServiceWorker( 253 WebServiceWorkerImpl* ServiceWorkerDispatcher::GetServiceWorker(
251 const ServiceWorkerObjectInfo& info, 254 const ServiceWorkerObjectInfo& info,
252 bool adopt_handle) { 255 bool adopt_handle) {
253 if (info.handle_id == kInvalidServiceWorkerHandleId) 256 if (info.handle_id == kInvalidServiceWorkerHandleId)
254 return NULL; 257 return NULL;
255 258
256 WorkerObjectMap::iterator existing_worker = 259 WorkerObjectMap::iterator existing_worker =
257 service_workers_.find(info.handle_id); 260 service_workers_.find(info.handle_id);
258 261
259 if (existing_worker != service_workers_.end()) { 262 if (existing_worker != service_workers_.end()) {
260 if (adopt_handle) { 263 if (adopt_handle) {
261 // We are instructed to adopt a handle but we already have one, so 264 // We are instructed to adopt a handle but we already have one, so
262 // adopt and destroy a handle ref. 265 // adopt and destroy a handle ref.
263 ServiceWorkerHandleReference::Adopt(info, sender_.get()); 266 ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get());
264 } 267 }
265 return existing_worker->second; 268 return existing_worker->second;
266 } 269 }
267 270
268 scoped_ptr<ServiceWorkerHandleReference> handle_ref = 271 scoped_ptr<ServiceWorkerHandleReference> handle_ref =
269 adopt_handle 272 adopt_handle
270 ? ServiceWorkerHandleReference::Adopt(info, sender_.get()) 273 ? ServiceWorkerHandleReference::Adopt(info, thread_safe_sender_.get())
271 : ServiceWorkerHandleReference::Create(info, sender_.get()); 274 : ServiceWorkerHandleReference::Create(info,
275 thread_safe_sender_.get());
272 // WebServiceWorkerImpl constructor calls AddServiceWorker. 276 // WebServiceWorkerImpl constructor calls AddServiceWorker.
273 return new WebServiceWorkerImpl(handle_ref.Pass(), sender_.get()); 277 return new WebServiceWorkerImpl(handle_ref.Pass(), thread_safe_sender_.get());
274 } 278 }
275 279
276 WebServiceWorkerRegistrationImpl* 280 WebServiceWorkerRegistrationImpl*
277 ServiceWorkerDispatcher::CreateServiceWorkerRegistration( 281 ServiceWorkerDispatcher::CreateServiceWorkerRegistration(
278 const ServiceWorkerRegistrationObjectInfo& info, 282 const ServiceWorkerRegistrationObjectInfo& info,
279 bool adopt_handle) { 283 bool adopt_handle) {
280 DCHECK(!ContainsKey(registrations_, info.handle_id)); 284 DCHECK(!ContainsKey(registrations_, info.handle_id));
281 if (info.handle_id == kInvalidServiceWorkerRegistrationHandleId) 285 if (info.handle_id == kInvalidServiceWorkerRegistrationHandleId)
282 return NULL; 286 return NULL;
283 287
284 scoped_ptr<ServiceWorkerRegistrationHandleReference> handle_ref = 288 scoped_ptr<ServiceWorkerRegistrationHandleReference> handle_ref =
285 adopt_handle ? ServiceWorkerRegistrationHandleReference::Adopt( 289 adopt_handle ? ServiceWorkerRegistrationHandleReference::Adopt(
286 info, sender_.get()) 290 info, thread_safe_sender_.get())
287 : ServiceWorkerRegistrationHandleReference::Create( 291 : ServiceWorkerRegistrationHandleReference::Create(
288 info, sender_.get()); 292 info, thread_safe_sender_.get());
289 293
290 // WebServiceWorkerRegistrationImpl constructor calls 294 // WebServiceWorkerRegistrationImpl constructor calls
291 // AddServiceWorkerRegistration. 295 // AddServiceWorkerRegistration.
292 return new WebServiceWorkerRegistrationImpl(handle_ref.Pass()); 296 return new WebServiceWorkerRegistrationImpl(handle_ref.Pass());
293 } 297 }
294 298
295 // We can assume that this message handler is called before the worker context 299 // We can assume that this message handler is called before the worker context
296 // starts because script loading happens after this association. 300 // starts because script loading happens after this association.
297 // TODO(nhiroki): This association information could be pushed into 301 // TODO(nhiroki): This association information could be pushed into
298 // EmbeddedWorkerMsg_StartWorker message and handed over to the worker thread 302 // EmbeddedWorkerMsg_StartWorker message and handed over to the worker thread
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 DCHECK(ContainsKey(registrations_, registration_handle_id)); 666 DCHECK(ContainsKey(registrations_, registration_handle_id));
663 registrations_.erase(registration_handle_id); 667 registrations_.erase(registration_handle_id);
664 } 668 }
665 669
666 WebServiceWorkerRegistrationImpl* 670 WebServiceWorkerRegistrationImpl*
667 ServiceWorkerDispatcher::FindOrCreateRegistration( 671 ServiceWorkerDispatcher::FindOrCreateRegistration(
668 const ServiceWorkerRegistrationObjectInfo& info, 672 const ServiceWorkerRegistrationObjectInfo& info,
669 const ServiceWorkerVersionAttributes& attrs) { 673 const ServiceWorkerVersionAttributes& attrs) {
670 RegistrationObjectMap::iterator found = registrations_.find(info.handle_id); 674 RegistrationObjectMap::iterator found = registrations_.find(info.handle_id);
671 if (found != registrations_.end()) { 675 if (found != registrations_.end()) {
672 ServiceWorkerRegistrationHandleReference::Adopt(info, sender_.get()); 676 ServiceWorkerRegistrationHandleReference::Adopt(info,
673 ServiceWorkerHandleReference::Adopt(attrs.installing, sender_.get()); 677 thread_safe_sender_.get());
674 ServiceWorkerHandleReference::Adopt(attrs.waiting, sender_.get()); 678 ServiceWorkerHandleReference::Adopt(attrs.installing,
675 ServiceWorkerHandleReference::Adopt(attrs.active, sender_.get()); 679 thread_safe_sender_.get());
680 ServiceWorkerHandleReference::Adopt(attrs.waiting,
681 thread_safe_sender_.get());
682 ServiceWorkerHandleReference::Adopt(attrs.active,
683 thread_safe_sender_.get());
676 return found->second; 684 return found->second;
677 } 685 }
678 686
679 bool adopt_handle = true; 687 bool adopt_handle = true;
680 WebServiceWorkerRegistrationImpl* registration = 688 WebServiceWorkerRegistrationImpl* registration =
681 CreateServiceWorkerRegistration(info, adopt_handle); 689 CreateServiceWorkerRegistration(info, adopt_handle);
682 registration->SetInstalling(GetServiceWorker(attrs.installing, adopt_handle)); 690 registration->SetInstalling(GetServiceWorker(attrs.installing, adopt_handle));
683 registration->SetWaiting(GetServiceWorker(attrs.waiting, adopt_handle)); 691 registration->SetWaiting(GetServiceWorker(attrs.waiting, adopt_handle));
684 registration->SetActive(GetServiceWorker(attrs.active, adopt_handle)); 692 registration->SetActive(GetServiceWorker(attrs.active, adopt_handle));
685 return registration; 693 return registration;
686 } 694 }
687 695
688 } // namespace content 696 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698