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

Side by Side Diff: content/child/background_sync/background_sync_provider.cc

Issue 1131943005: [Background Sync] Add proper error status to API calls and callbacks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/background_sync/background_sync_provider.h" 5 #include "content/child/background_sync/background_sync_provider.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "content/child/background_sync/background_sync_type_converters.h" 9 #include "content/child/background_sync/background_sync_type_converters.h"
10 #include "content/child/service_worker/web_service_worker_registration_impl.h" 10 #include "content/child/service_worker/web_service_worker_registration_impl.h"
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 // will wipe its callbacks) before 'this' is deleted. 111 // will wipe its callbacks) before 'this' is deleted.
112 GetBackgroundSyncServicePtr()->GetRegistrations( 112 GetBackgroundSyncServicePtr()->GetRegistrations(
113 mojo::ConvertTo<BackgroundSyncPeriodicity>(periodicity), 113 mojo::ConvertTo<BackgroundSyncPeriodicity>(periodicity),
114 service_worker_registration_id, 114 service_worker_registration_id,
115 base::Bind(&BackgroundSyncProvider::GetRegistrationsCallback, 115 base::Bind(&BackgroundSyncProvider::GetRegistrationsCallback,
116 base::Unretained(this), base::Passed(callbacksPtr.Pass()))); 116 base::Unretained(this), base::Passed(callbacksPtr.Pass())));
117 } 117 }
118 118
119 void BackgroundSyncProvider::RegisterCallback( 119 void BackgroundSyncProvider::RegisterCallback(
120 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks, 120 scoped_ptr<blink::WebSyncRegistrationCallbacks> callbacks,
121 BackgroundSyncError error,
121 const SyncRegistrationPtr& options) { 122 const SyncRegistrationPtr& options) {
122 // TODO(iclelland): Pass through the various errors from the manager to here 123 // TODO(iclelland): Determine the correct error message to return in each case
123 // and handle them appropriately.
124 scoped_ptr<blink::WebSyncRegistration> result; 124 scoped_ptr<blink::WebSyncRegistration> result;
125 if (!options.is_null()) 125 switch (error) {
126 result = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options); 126 case BACKGROUND_SYNC_ERROR_NONE:
127 127 if (!options.is_null())
128 callbacks->onSuccess(result.release()); 128 result =
jkarlin 2015/05/13 11:19:46 Might as well declare result here as it's not used
iclelland 2015/05/13 11:48:36 clang doesn't allow variable declaration from with
jkarlin 2015/05/13 12:01:56 My bad, what you have is fine.
129 mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(options);
130 callbacks->onSuccess(result.release());
131 break;
132 case BACKGROUND_SYNC_ERROR_NOT_FOUND:
133 callbacks->onSuccess(nullptr);
jkarlin 2015/05/13 11:19:46 This should be a NOTREACHED() case
iclelland 2015/05/13 11:48:36 Perhaps I should rename the method instead; the sa
jkarlin 2015/05/13 12:01:56 I see. Yes, I'd split them into different callback
iclelland 2015/05/13 12:18:32 Done.
134 break;
135 case BACKGROUND_SYNC_ERROR_STORAGE:
136 callbacks->onError(
137 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown,
138 "Background Sync is disabled."));
139 break;
140 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER:
141 callbacks->onError(
142 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown,
143 "No service worker is active."));
144 break;
145 }
129 } 146 }
130 147
131 void BackgroundSyncProvider::UnregisterCallback( 148 void BackgroundSyncProvider::UnregisterCallback(
132 scoped_ptr<blink::WebSyncUnregistrationCallbacks> callbacks, 149 scoped_ptr<blink::WebSyncUnregistrationCallbacks> callbacks,
133 bool success) { 150 BackgroundSyncError error) {
134 // TODO(iclelland): Pass through the various errors from the manager to here 151 // TODO(iclelland): Determine the correct error message to return in each case
135 // and handle them appropriately. 152 switch (error) {
136 if (success) { 153 case BACKGROUND_SYNC_ERROR_NONE:
137 callbacks->onSuccess(new bool(success)); 154 callbacks->onSuccess(new bool(true));
138 } else { 155 break;
139 callbacks->onError( 156 case BACKGROUND_SYNC_ERROR_NOT_FOUND:
140 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown, 157 callbacks->onSuccess(new bool(false));
141 "Sync registration does not exist")); 158 break;
159 case BACKGROUND_SYNC_ERROR_STORAGE:
160 callbacks->onError(
161 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown,
162 "Background Sync is disabled."));
163 break;
164 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER:
165 callbacks->onError(
166 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown,
167 "No service worker is active."));
168 break;
142 } 169 }
143 } 170 }
144 171
145 void BackgroundSyncProvider::GetRegistrationsCallback( 172 void BackgroundSyncProvider::GetRegistrationsCallback(
146 scoped_ptr<blink::WebSyncGetRegistrationsCallbacks> callbacks, 173 scoped_ptr<blink::WebSyncGetRegistrationsCallbacks> callbacks,
174 BackgroundSyncError error,
147 const mojo::Array<SyncRegistrationPtr>& registrations) { 175 const mojo::Array<SyncRegistrationPtr>& registrations) {
148 // TODO(iclelland): Pass through the various errors from the manager to here 176 // TODO(iclelland): Determine the correct error message to return in each case
149 // and handle them appropriately. 177 blink::WebVector<blink::WebSyncRegistration*>* results;
150 blink::WebVector<blink::WebSyncRegistration*>* results = 178 switch (error) {
151 new blink::WebVector<blink::WebSyncRegistration*>(registrations.size()); 179 case BACKGROUND_SYNC_ERROR_NONE:
152 for (size_t i = 0; i < registrations.size(); ++i) { 180 results = new blink::WebVector<blink::WebSyncRegistration*>(
153 (*results)[i] = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>( 181 registrations.size());
jkarlin 2015/05/13 11:19:46 Results should be declared here
jkarlin 2015/05/13 12:01:56 I retract this comment, you can't declare it withi
154 registrations[i]).release(); 182 for (size_t i = 0; i < registrations.size(); ++i) {
183 (*results)[i] = mojo::ConvertTo<scoped_ptr<blink::WebSyncRegistration>>(
184 registrations[i]).release();
185 }
186 callbacks->onSuccess(results);
187 case BACKGROUND_SYNC_ERROR_NOT_FOUND:
188 // This error should never be returned from
189 // BackgroundSyncManager::GetRegistrations
190 NOTREACHED();
191 break;
192 case BACKGROUND_SYNC_ERROR_STORAGE:
193 callbacks->onError(
194 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown,
195 "Background Sync is disabled."));
196 break;
197 case BACKGROUND_SYNC_ERROR_NO_SERVICE_WORKER:
198 callbacks->onError(
199 new blink::WebSyncError(blink::WebSyncError::ErrorTypeUnknown,
200 "No service worker is active."));
201 break;
155 } 202 }
156 callbacks->onSuccess(results);
157 } 203 }
158 204
159 BackgroundSyncServicePtr& 205 BackgroundSyncServicePtr&
160 BackgroundSyncProvider::GetBackgroundSyncServicePtr() { 206 BackgroundSyncProvider::GetBackgroundSyncServicePtr() {
161 if (!background_sync_service_.get()) 207 if (!background_sync_service_.get())
162 service_registry_->ConnectToRemoteService(&background_sync_service_); 208 service_registry_->ConnectToRemoteService(&background_sync_service_);
163 return background_sync_service_; 209 return background_sync_service_;
164 } 210 }
165 211
166 } // namespace content 212 } // namespace content
OLDNEW
« no previous file with comments | « content/child/background_sync/background_sync_provider.h ('k') | content/common/background_sync_service.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698