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

Side by Side Diff: content/browser/push_messaging/push_messaging_router.cc

Issue 1000373002: favor DCHECK_CURRENTLY_ON for better logs in content/browser/[f-p]* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase on master 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
« no previous file with comments | « content/browser/profiler_controller_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/push_messaging/push_messaging_router.h" 5 #include "content/browser/push_messaging/push_messaging_router.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "content/browser/service_worker/service_worker_context_wrapper.h" 8 #include "content/browser/service_worker/service_worker_context_wrapper.h"
9 #include "content/browser/service_worker/service_worker_registration.h" 9 #include "content/browser/service_worker/service_worker_registration.h"
10 #include "content/browser/service_worker/service_worker_storage.h" 10 #include "content/browser/service_worker/service_worker_storage.h"
11 #include "content/common/service_worker/service_worker_status_code.h" 11 #include "content/common/service_worker/service_worker_status_code.h"
12 #include "content/public/browser/browser_context.h" 12 #include "content/public/browser/browser_context.h"
13 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/storage_partition.h" 14 #include "content/public/browser/storage_partition.h"
15 15
16 namespace content { 16 namespace content {
17 17
18 // static 18 // static
19 void PushMessagingRouter::DeliverMessage( 19 void PushMessagingRouter::DeliverMessage(
20 BrowserContext* browser_context, 20 BrowserContext* browser_context,
21 const GURL& origin, 21 const GURL& origin,
22 int64 service_worker_registration_id, 22 int64 service_worker_registration_id,
23 const std::string& data, 23 const std::string& data,
24 const DeliverMessageCallback& deliver_message_callback) { 24 const DeliverMessageCallback& deliver_message_callback) {
25 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 25 DCHECK_CURRENTLY_ON(BrowserThread::UI);
26 StoragePartition* partition = 26 StoragePartition* partition =
27 BrowserContext::GetStoragePartitionForSite(browser_context, origin); 27 BrowserContext::GetStoragePartitionForSite(browser_context, origin);
28 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = 28 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context =
29 static_cast<ServiceWorkerContextWrapper*>( 29 static_cast<ServiceWorkerContextWrapper*>(
30 partition->GetServiceWorkerContext()); 30 partition->GetServiceWorkerContext());
31 BrowserThread::PostTask( 31 BrowserThread::PostTask(
32 BrowserThread::IO, 32 BrowserThread::IO,
33 FROM_HERE, 33 FROM_HERE,
34 base::Bind(&PushMessagingRouter::FindServiceWorkerRegistration, 34 base::Bind(&PushMessagingRouter::FindServiceWorkerRegistration,
35 origin, 35 origin,
36 service_worker_registration_id, 36 service_worker_registration_id,
37 data, 37 data,
38 deliver_message_callback, 38 deliver_message_callback,
39 service_worker_context)); 39 service_worker_context));
40 } 40 }
41 41
42 // static 42 // static
43 void PushMessagingRouter::FindServiceWorkerRegistration( 43 void PushMessagingRouter::FindServiceWorkerRegistration(
44 const GURL& origin, 44 const GURL& origin,
45 int64 service_worker_registration_id, 45 int64 service_worker_registration_id,
46 const std::string& data, 46 const std::string& data,
47 const DeliverMessageCallback& deliver_message_callback, 47 const DeliverMessageCallback& deliver_message_callback,
48 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) { 48 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) {
49 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 49 DCHECK_CURRENTLY_ON(BrowserThread::IO);
50 // Try to acquire the registration from storage. If it's already live we'll 50 // Try to acquire the registration from storage. If it's already live we'll
51 // receive it right away. If not, it will be revived from storage. 51 // receive it right away. If not, it will be revived from storage.
52 service_worker_context->context()->storage()->FindRegistrationForId( 52 service_worker_context->context()->storage()->FindRegistrationForId(
53 service_worker_registration_id, 53 service_worker_registration_id,
54 origin, 54 origin,
55 base::Bind(&PushMessagingRouter::FindServiceWorkerRegistrationCallback, 55 base::Bind(&PushMessagingRouter::FindServiceWorkerRegistrationCallback,
56 data, 56 data,
57 deliver_message_callback)); 57 deliver_message_callback));
58 } 58 }
59 59
60 // static 60 // static
61 void PushMessagingRouter::FindServiceWorkerRegistrationCallback( 61 void PushMessagingRouter::FindServiceWorkerRegistrationCallback(
62 const std::string& data, 62 const std::string& data,
63 const DeliverMessageCallback& deliver_message_callback, 63 const DeliverMessageCallback& deliver_message_callback,
64 ServiceWorkerStatusCode service_worker_status, 64 ServiceWorkerStatusCode service_worker_status,
65 const scoped_refptr<ServiceWorkerRegistration>& 65 const scoped_refptr<ServiceWorkerRegistration>&
66 service_worker_registration) { 66 service_worker_registration) {
67 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 67 DCHECK_CURRENTLY_ON(BrowserThread::IO);
68 if (service_worker_status == SERVICE_WORKER_OK) { 68 if (service_worker_status == SERVICE_WORKER_OK) {
69 // Hold on to the service worker registration in the callback to keep it 69 // Hold on to the service worker registration in the callback to keep it
70 // alive until the callback dies. Otherwise the registration could be 70 // alive until the callback dies. Otherwise the registration could be
71 // released when this method returns - before the event is delivered to the 71 // released when this method returns - before the event is delivered to the
72 // service worker. 72 // service worker.
73 base::Callback<void(ServiceWorkerStatusCode)> dispatch_event_callback = 73 base::Callback<void(ServiceWorkerStatusCode)> dispatch_event_callback =
74 base::Bind(&PushMessagingRouter::DeliverMessageEnd, 74 base::Bind(&PushMessagingRouter::DeliverMessageEnd,
75 deliver_message_callback, 75 deliver_message_callback,
76 service_worker_registration); 76 service_worker_registration);
77 service_worker_registration->active_version()->DispatchPushEvent( 77 service_worker_registration->active_version()->DispatchPushEvent(
78 dispatch_event_callback, data); 78 dispatch_event_callback, data);
79 } else { 79 } else {
80 // TODO(mvanouwerkerk): UMA logging. 80 // TODO(mvanouwerkerk): UMA logging.
81 BrowserThread::PostTask(BrowserThread::UI, 81 BrowserThread::PostTask(BrowserThread::UI,
82 FROM_HERE, 82 FROM_HERE,
83 base::Bind(deliver_message_callback, 83 base::Bind(deliver_message_callback,
84 PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER)); 84 PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER));
85 } 85 }
86 } 86 }
87 87
88 // static 88 // static
89 void PushMessagingRouter::DeliverMessageEnd( 89 void PushMessagingRouter::DeliverMessageEnd(
90 const DeliverMessageCallback& deliver_message_callback, 90 const DeliverMessageCallback& deliver_message_callback,
91 const scoped_refptr<ServiceWorkerRegistration>& service_worker_registration, 91 const scoped_refptr<ServiceWorkerRegistration>& service_worker_registration,
92 ServiceWorkerStatusCode service_worker_status) { 92 ServiceWorkerStatusCode service_worker_status) {
93 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 93 DCHECK_CURRENTLY_ON(BrowserThread::IO);
94 // TODO(mvanouwerkerk): UMA logging. 94 // TODO(mvanouwerkerk): UMA logging.
95 PushDeliveryStatus delivery_status = 95 PushDeliveryStatus delivery_status =
96 PUSH_DELIVERY_STATUS_SERVICE_WORKER_ERROR; 96 PUSH_DELIVERY_STATUS_SERVICE_WORKER_ERROR;
97 switch (service_worker_status) { 97 switch (service_worker_status) {
98 case SERVICE_WORKER_OK: 98 case SERVICE_WORKER_OK:
99 delivery_status = PUSH_DELIVERY_STATUS_SUCCESS; 99 delivery_status = PUSH_DELIVERY_STATUS_SUCCESS;
100 break; 100 break;
101 case SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED: 101 case SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED:
102 delivery_status = PUSH_DELIVERY_STATUS_EVENT_WAITUNTIL_REJECTED; 102 delivery_status = PUSH_DELIVERY_STATUS_EVENT_WAITUNTIL_REJECTED;
103 break; 103 break;
(...skipping 18 matching lines...) Expand all
122 delivery_status = PUSH_DELIVERY_STATUS_SERVICE_WORKER_ERROR; 122 delivery_status = PUSH_DELIVERY_STATUS_SERVICE_WORKER_ERROR;
123 break; 123 break;
124 } 124 }
125 BrowserThread::PostTask( 125 BrowserThread::PostTask(
126 BrowserThread::UI, 126 BrowserThread::UI,
127 FROM_HERE, 127 FROM_HERE,
128 base::Bind(deliver_message_callback, delivery_status)); 128 base::Bind(deliver_message_callback, delivery_status));
129 } 129 }
130 130
131 } // namespace content 131 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/profiler_controller_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698