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

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

Issue 1270513002: Service Worker: Make ServiceWorkerRegistration.update() return a promise. (Chromium 2/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix strings. Created 5 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
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/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) { 61 void ServiceWorkerDispatcher::OnMessageReceived(const IPC::Message& msg) {
62 bool handled = true; 62 bool handled = true;
63 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerDispatcher, msg) 63 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerDispatcher, msg)
64 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_AssociateRegistrationWithServiceWorker, 64 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_AssociateRegistrationWithServiceWorker,
65 OnAssociateRegistrationWithServiceWorker) 65 OnAssociateRegistrationWithServiceWorker)
66 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_AssociateRegistration, 66 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_AssociateRegistration,
67 OnAssociateRegistration) 67 OnAssociateRegistration)
68 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DisassociateRegistration, 68 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DisassociateRegistration,
69 OnDisassociateRegistration) 69 OnDisassociateRegistration)
70 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistered, OnRegistered) 70 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistered, OnRegistered)
71 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdated, OnUpdated)
71 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistered, 72 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistered,
72 OnUnregistered) 73 OnUnregistered)
73 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistration, 74 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistration,
74 OnDidGetRegistration) 75 OnDidGetRegistration)
75 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrations, 76 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrations,
76 OnDidGetRegistrations) 77 OnDidGetRegistrations)
77 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady, 78 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetRegistrationForReady,
78 OnDidGetRegistrationForReady) 79 OnDidGetRegistrationForReady)
79 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError, 80 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerRegistrationError,
80 OnRegistrationError) 81 OnRegistrationError)
82 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUpdateError,
83 OnUpdateError)
81 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError, 84 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerUnregistrationError,
82 OnUnregistrationError) 85 OnUnregistrationError)
83 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationError, 86 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationError,
84 OnGetRegistrationError) 87 OnGetRegistrationError)
85 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError, 88 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerGetRegistrationsError,
86 OnGetRegistrationsError) 89 OnGetRegistrationsError)
87 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged, 90 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ServiceWorkerStateChanged,
88 OnServiceWorkerStateChanged) 91 OnServiceWorkerStateChanged)
89 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes, 92 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SetVersionAttributes,
90 OnSetVersionAttributes) 93 OnSetVersionAttributes)
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 int request_id = pending_registration_callbacks_.Add(callbacks); 129 int request_id = pending_registration_callbacks_.Add(callbacks);
127 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", 130 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker",
128 "ServiceWorkerDispatcher::RegisterServiceWorker", 131 "ServiceWorkerDispatcher::RegisterServiceWorker",
129 request_id, 132 request_id,
130 "Scope", pattern.spec(), 133 "Scope", pattern.spec(),
131 "Script URL", script_url.spec()); 134 "Script URL", script_url.spec());
132 thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker( 135 thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker(
133 CurrentWorkerId(), request_id, provider_id, pattern, script_url)); 136 CurrentWorkerId(), request_id, provider_id, pattern, script_url));
134 } 137 }
135 138
136 void ServiceWorkerDispatcher::UpdateServiceWorker(int provider_id, 139 void ServiceWorkerDispatcher::UpdateServiceWorker(
137 int64 registration_id) { 140 int provider_id,
141 int64 registration_id,
142 WebServiceWorkerUpdateCallbacks* callbacks) {
143 DCHECK(callbacks);
144 int request_id = pending_update_callbacks_.Add(callbacks);
138 thread_safe_sender_->Send(new ServiceWorkerHostMsg_UpdateServiceWorker( 145 thread_safe_sender_->Send(new ServiceWorkerHostMsg_UpdateServiceWorker(
139 provider_id, registration_id)); 146 CurrentWorkerId(), request_id, provider_id, registration_id));
140 } 147 }
141 148
142 void ServiceWorkerDispatcher::UnregisterServiceWorker( 149 void ServiceWorkerDispatcher::UnregisterServiceWorker(
143 int provider_id, 150 int provider_id,
144 int64 registration_id, 151 int64 registration_id,
145 WebServiceWorkerUnregistrationCallbacks* callbacks) { 152 WebServiceWorkerUnregistrationCallbacks* callbacks) {
146 DCHECK(callbacks); 153 DCHECK(callbacks);
147 int request_id = pending_unregistration_callbacks_.Add(callbacks); 154 int request_id = pending_unregistration_callbacks_.Add(callbacks);
148 TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker", 155 TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker",
149 "ServiceWorkerDispatcher::UnregisterServiceWorker", 156 "ServiceWorkerDispatcher::UnregisterServiceWorker",
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 WebServiceWorkerRegistrationCallbacks* callbacks = 383 WebServiceWorkerRegistrationCallbacks* callbacks =
377 pending_registration_callbacks_.Lookup(request_id); 384 pending_registration_callbacks_.Lookup(request_id);
378 DCHECK(callbacks); 385 DCHECK(callbacks);
379 if (!callbacks) 386 if (!callbacks)
380 return; 387 return;
381 388
382 callbacks->onSuccess(FindOrCreateRegistration(info, attrs)); 389 callbacks->onSuccess(FindOrCreateRegistration(info, attrs));
383 pending_registration_callbacks_.Remove(request_id); 390 pending_registration_callbacks_.Remove(request_id);
384 } 391 }
385 392
393 void ServiceWorkerDispatcher::OnUpdated(int thread_id, int request_id) {
394 TRACE_EVENT_ASYNC_STEP_INTO0("ServiceWorker",
395 "ServiceWorkerDispatcher::UpdateServiceWorker",
396 request_id, "OnUpdated");
397 TRACE_EVENT_ASYNC_END0("ServiceWorker",
398 "ServiceWorkerDispatcher::UpdateServiceWorker",
399 request_id);
400 WebServiceWorkerUpdateCallbacks* callbacks =
401 pending_update_callbacks_.Lookup(request_id);
402 DCHECK(callbacks);
403 if (!callbacks)
404 return;
405
406 callbacks->onSuccess();
407 pending_update_callbacks_.Remove(request_id);
408 }
409
386 void ServiceWorkerDispatcher::OnUnregistered(int thread_id, 410 void ServiceWorkerDispatcher::OnUnregistered(int thread_id,
387 int request_id, 411 int request_id,
388 bool is_success) { 412 bool is_success) {
389 TRACE_EVENT_ASYNC_STEP_INTO0( 413 TRACE_EVENT_ASYNC_STEP_INTO0(
390 "ServiceWorker", 414 "ServiceWorker",
391 "ServiceWorkerDispatcher::UnregisterServiceWorker", 415 "ServiceWorkerDispatcher::UnregisterServiceWorker",
392 request_id, 416 request_id,
393 "OnUnregistered"); 417 "OnUnregistered");
394 TRACE_EVENT_ASYNC_END0("ServiceWorker", 418 TRACE_EVENT_ASYNC_END0("ServiceWorker",
395 "ServiceWorkerDispatcher::UnregisterServiceWorker", 419 "ServiceWorkerDispatcher::UnregisterServiceWorker",
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 DCHECK(callbacks); 533 DCHECK(callbacks);
510 if (!callbacks) 534 if (!callbacks)
511 return; 535 return;
512 536
513 scoped_ptr<WebServiceWorkerError> error( 537 scoped_ptr<WebServiceWorkerError> error(
514 new WebServiceWorkerError(error_type, message)); 538 new WebServiceWorkerError(error_type, message));
515 callbacks->onError(error.release()); 539 callbacks->onError(error.release());
516 pending_registration_callbacks_.Remove(request_id); 540 pending_registration_callbacks_.Remove(request_id);
517 } 541 }
518 542
543 void ServiceWorkerDispatcher::OnUpdateError(
544 int thread_id,
545 int request_id,
546 WebServiceWorkerError::ErrorType error_type,
547 const base::string16& message) {
548 TRACE_EVENT_ASYNC_STEP_INTO0("ServiceWorker",
549 "ServiceWorkerDispatcher::UpdateServiceWorker",
550 request_id, "OnUpdateError");
551 TRACE_EVENT_ASYNC_END0("ServiceWorker",
552 "ServiceWorkerDispatcher::UpdateServiceWorker",
553 request_id);
554 WebServiceWorkerUpdateCallbacks* callbacks =
555 pending_update_callbacks_.Lookup(request_id);
556 DCHECK(callbacks);
557 if (!callbacks)
558 return;
559
560 scoped_ptr<WebServiceWorkerError> error(
561 new WebServiceWorkerError(error_type, message));
562 callbacks->onError(error.release());
nhiroki 2015/07/31 06:49:11 nit: We can directly pass "new WebSWError" w/o sco
jungkees 2015/07/31 07:09:58 Addressed. Thanks.
563 pending_update_callbacks_.Remove(request_id);
564 }
565
519 void ServiceWorkerDispatcher::OnUnregistrationError( 566 void ServiceWorkerDispatcher::OnUnregistrationError(
520 int thread_id, 567 int thread_id,
521 int request_id, 568 int request_id,
522 WebServiceWorkerError::ErrorType error_type, 569 WebServiceWorkerError::ErrorType error_type,
523 const base::string16& message) { 570 const base::string16& message) {
524 TRACE_EVENT_ASYNC_STEP_INTO0( 571 TRACE_EVENT_ASYNC_STEP_INTO0(
525 "ServiceWorker", 572 "ServiceWorker",
526 "ServiceWorkerDispatcher::UnregisterServiceWorker", 573 "ServiceWorkerDispatcher::UnregisterServiceWorker",
527 request_id, 574 request_id,
528 "OnUnregistrationError"); 575 "OnUnregistrationError");
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 bool adopt_handle = true; 807 bool adopt_handle = true;
761 WebServiceWorkerRegistrationImpl* registration = 808 WebServiceWorkerRegistrationImpl* registration =
762 CreateServiceWorkerRegistration(info, adopt_handle); 809 CreateServiceWorkerRegistration(info, adopt_handle);
763 registration->SetInstalling(GetServiceWorker(attrs.installing, adopt_handle)); 810 registration->SetInstalling(GetServiceWorker(attrs.installing, adopt_handle));
764 registration->SetWaiting(GetServiceWorker(attrs.waiting, adopt_handle)); 811 registration->SetWaiting(GetServiceWorker(attrs.waiting, adopt_handle));
765 registration->SetActive(GetServiceWorker(attrs.active, adopt_handle)); 812 registration->SetActive(GetServiceWorker(attrs.active, adopt_handle));
766 return registration; 813 return registration;
767 } 814 }
768 815
769 } // namespace content 816 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698