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

Side by Side Diff: content/browser/payments/payment_app_database.cc

Issue 2844463002: PaymentHandler: Implement PaymentInstruments.delete(). (Closed)
Patch Set: PaymentHandler: Implement PaymentInstruments.delete(). Created 3 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/payments/payment_app_database.h" 5 #include "content/browser/payments/payment_app_database.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/optional.h" 10 #include "base/optional.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 void PaymentAppDatabase::ReadAllManifests( 100 void PaymentAppDatabase::ReadAllManifests(
101 const ReadAllManifestsCallback& callback) { 101 const ReadAllManifestsCallback& callback) {
102 DCHECK_CURRENTLY_ON(BrowserThread::IO); 102 DCHECK_CURRENTLY_ON(BrowserThread::IO);
103 103
104 service_worker_context_->GetUserDataForAllRegistrations( 104 service_worker_context_->GetUserDataForAllRegistrations(
105 kPaymentAppManifestDataKey, 105 kPaymentAppManifestDataKey,
106 base::Bind(&PaymentAppDatabase::DidReadAllManifests, 106 base::Bind(&PaymentAppDatabase::DidReadAllManifests,
107 weak_ptr_factory_.GetWeakPtr(), callback)); 107 weak_ptr_factory_.GetWeakPtr(), callback));
108 } 108 }
109 109
110 void PaymentAppDatabase::DeletePaymentInstrument(
111 const GURL& scope,
112 const std::string& instrument_key,
113 DeletePaymentInstrumentCallback callback) {
114 DCHECK_CURRENTLY_ON(BrowserThread::IO);
115
116 service_worker_context_->FindReadyRegistrationForPattern(
117 scope,
118 base::Bind(
119 &PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument,
120 weak_ptr_factory_.GetWeakPtr(), instrument_key,
121 base::Passed(std::move(callback))));
122 }
123
110 void PaymentAppDatabase::ReadPaymentInstrument( 124 void PaymentAppDatabase::ReadPaymentInstrument(
111 const GURL& scope, 125 const GURL& scope,
112 const std::string& instrumentKey, 126 const std::string& instrument_key,
113 ReadPaymentInstrumentCallback callback) { 127 ReadPaymentInstrumentCallback callback) {
114 DCHECK_CURRENTLY_ON(BrowserThread::IO); 128 DCHECK_CURRENTLY_ON(BrowserThread::IO);
115 129
116 service_worker_context_->FindReadyRegistrationForPattern( 130 service_worker_context_->FindReadyRegistrationForPattern(
117 scope, 131 scope,
118 base::Bind( 132 base::Bind(
119 &PaymentAppDatabase::DidFindRegistrationToReadPaymentInstrument, 133 &PaymentAppDatabase::DidFindRegistrationToReadPaymentInstrument,
120 weak_ptr_factory_.GetWeakPtr(), instrumentKey, 134 weak_ptr_factory_.GetWeakPtr(), instrument_key,
121 base::Passed(std::move(callback)))); 135 base::Passed(std::move(callback))));
122 } 136 }
123 137
124 void PaymentAppDatabase::WritePaymentInstrument( 138 void PaymentAppDatabase::WritePaymentInstrument(
125 const GURL& scope, 139 const GURL& scope,
126 const std::string& instrumentKey, 140 const std::string& instrument_key,
127 PaymentInstrumentPtr instrument, 141 PaymentInstrumentPtr instrument,
128 WritePaymentInstrumentCallback callback) { 142 WritePaymentInstrumentCallback callback) {
129 DCHECK_CURRENTLY_ON(BrowserThread::IO); 143 DCHECK_CURRENTLY_ON(BrowserThread::IO);
130 144
131 service_worker_context_->FindReadyRegistrationForPattern( 145 service_worker_context_->FindReadyRegistrationForPattern(
132 scope, 146 scope,
133 base::Bind( 147 base::Bind(
134 &PaymentAppDatabase::DidFindRegistrationToWritePaymentInstrument, 148 &PaymentAppDatabase::DidFindRegistrationToWritePaymentInstrument,
135 weak_ptr_factory_.GetWeakPtr(), instrumentKey, 149 weak_ptr_factory_.GetWeakPtr(), instrument_key,
136 base::Passed(std::move(instrument)), 150 base::Passed(std::move(instrument)),
137 base::Passed(std::move(callback)))); 151 base::Passed(std::move(callback))));
138 } 152 }
139 153
140 void PaymentAppDatabase::DidFindRegistrationToWriteManifest( 154 void PaymentAppDatabase::DidFindRegistrationToWriteManifest(
141 payments::mojom::PaymentAppManifestPtr manifest, 155 payments::mojom::PaymentAppManifestPtr manifest,
142 const WriteManifestCallback& callback, 156 const WriteManifestCallback& callback,
143 ServiceWorkerStatusCode status, 157 ServiceWorkerStatusCode status,
144 scoped_refptr<ServiceWorkerRegistration> registration) { 158 scoped_refptr<ServiceWorkerRegistration> registration) {
145 DCHECK_CURRENTLY_ON(BrowserThread::IO); 159 DCHECK_CURRENTLY_ON(BrowserThread::IO);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 if (!manifest) 256 if (!manifest)
243 continue; 257 continue;
244 258
245 manifests.push_back( 259 manifests.push_back(
246 ManifestWithID(item_of_raw_data.first, std::move(manifest))); 260 ManifestWithID(item_of_raw_data.first, std::move(manifest)));
247 } 261 }
248 262
249 callback.Run(std::move(manifests)); 263 callback.Run(std::move(manifests));
250 } 264 }
251 265
266 void PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument(
267 const std::string& instrument_key,
268 DeletePaymentInstrumentCallback callback,
269 ServiceWorkerStatusCode status,
270 scoped_refptr<ServiceWorkerRegistration> registration) {
271 DCHECK_CURRENTLY_ON(BrowserThread::IO);
272 if (status != SERVICE_WORKER_OK) {
273 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER);
274 return;
275 }
276
277 service_worker_context_->GetRegistrationUserData(
278 registration->id(), {instrument_key},
279 base::Bind(&PaymentAppDatabase::DidFindPaymentInstrument,
280 weak_ptr_factory_.GetWeakPtr(), registration->id(),
281 instrument_key, base::Passed(std::move(callback))));
282 }
283
284 void PaymentAppDatabase::DidFindPaymentInstrument(
285 int64_t registration_id,
286 const std::string& instrument_key,
287 DeletePaymentInstrumentCallback callback,
288 const std::vector<std::string>& data,
289 ServiceWorkerStatusCode status) {
290 DCHECK_CURRENTLY_ON(BrowserThread::IO);
291 if (status != SERVICE_WORKER_OK || data.size() != 1) {
292 std::move(callback).Run(PaymentHandlerStatus::NOT_FOUND);
293 return;
294 }
295
296 service_worker_context_->ClearRegistrationUserData(
297 registration_id, {instrument_key},
298 base::Bind(&PaymentAppDatabase::DidDeletePaymentInstrument,
299 weak_ptr_factory_.GetWeakPtr(),
300 base::Passed(std::move(callback))));
301 }
302
303 void PaymentAppDatabase::DidDeletePaymentInstrument(
304 DeletePaymentInstrumentCallback callback,
305 ServiceWorkerStatusCode status) {
306 DCHECK_CURRENTLY_ON(BrowserThread::IO);
307 return std::move(callback).Run(status == SERVICE_WORKER_OK
308 ? PaymentHandlerStatus::SUCCESS
309 : PaymentHandlerStatus::NOT_FOUND);
310 }
311
252 void PaymentAppDatabase::DidFindRegistrationToReadPaymentInstrument( 312 void PaymentAppDatabase::DidFindRegistrationToReadPaymentInstrument(
253 const std::string& instrumentKey, 313 const std::string& instrument_key,
254 ReadPaymentInstrumentCallback callback, 314 ReadPaymentInstrumentCallback callback,
255 ServiceWorkerStatusCode status, 315 ServiceWorkerStatusCode status,
256 scoped_refptr<ServiceWorkerRegistration> registration) { 316 scoped_refptr<ServiceWorkerRegistration> registration) {
257 DCHECK_CURRENTLY_ON(BrowserThread::IO); 317 DCHECK_CURRENTLY_ON(BrowserThread::IO);
258 if (status != SERVICE_WORKER_OK) { 318 if (status != SERVICE_WORKER_OK) {
259 std::move(callback).Run(PaymentInstrument::New(), 319 std::move(callback).Run(PaymentInstrument::New(),
260 PaymentHandlerStatus::NO_ACTIVE_WORKER); 320 PaymentHandlerStatus::NO_ACTIVE_WORKER);
261 return; 321 return;
262 } 322 }
263 323
264 service_worker_context_->GetRegistrationUserData( 324 service_worker_context_->GetRegistrationUserData(
265 registration->id(), {instrumentKey}, 325 registration->id(), {instrument_key},
266 base::Bind(&PaymentAppDatabase::DidReadPaymentInstrument, 326 base::Bind(&PaymentAppDatabase::DidReadPaymentInstrument,
267 weak_ptr_factory_.GetWeakPtr(), 327 weak_ptr_factory_.GetWeakPtr(),
268 base::Passed(std::move(callback)))); 328 base::Passed(std::move(callback))));
269 } 329 }
270 330
271 void PaymentAppDatabase::DidReadPaymentInstrument( 331 void PaymentAppDatabase::DidReadPaymentInstrument(
272 ReadPaymentInstrumentCallback callback, 332 ReadPaymentInstrumentCallback callback,
273 const std::vector<std::string>& data, 333 const std::vector<std::string>& data,
274 ServiceWorkerStatusCode status) { 334 ServiceWorkerStatusCode status) {
275 DCHECK_CURRENTLY_ON(BrowserThread::IO); 335 DCHECK_CURRENTLY_ON(BrowserThread::IO);
276 if (status != SERVICE_WORKER_OK || data.size() != 1) { 336 if (status != SERVICE_WORKER_OK || data.size() != 1) {
277 std::move(callback).Run(PaymentInstrument::New(), 337 std::move(callback).Run(PaymentInstrument::New(),
278 PaymentHandlerStatus::NOT_FOUND); 338 PaymentHandlerStatus::NOT_FOUND);
279 return; 339 return;
280 } 340 }
281 341
282 PaymentInstrumentPtr instrument = DeserializePaymentInstrument(data[0]); 342 PaymentInstrumentPtr instrument = DeserializePaymentInstrument(data[0]);
283 if (!instrument) { 343 if (!instrument) {
284 std::move(callback).Run(PaymentInstrument::New(), 344 std::move(callback).Run(PaymentInstrument::New(),
285 PaymentHandlerStatus::STORAGE_OPERATION_FAILED); 345 PaymentHandlerStatus::STORAGE_OPERATION_FAILED);
286 return; 346 return;
287 } 347 }
288 348
289 std::move(callback).Run(std::move(instrument), PaymentHandlerStatus::SUCCESS); 349 std::move(callback).Run(std::move(instrument), PaymentHandlerStatus::SUCCESS);
290 } 350 }
291 351
292 void PaymentAppDatabase::DidFindRegistrationToWritePaymentInstrument( 352 void PaymentAppDatabase::DidFindRegistrationToWritePaymentInstrument(
293 const std::string& instrumentKey, 353 const std::string& instrument_key,
294 PaymentInstrumentPtr instrument, 354 PaymentInstrumentPtr instrument,
295 WritePaymentInstrumentCallback callback, 355 WritePaymentInstrumentCallback callback,
296 ServiceWorkerStatusCode status, 356 ServiceWorkerStatusCode status,
297 scoped_refptr<ServiceWorkerRegistration> registration) { 357 scoped_refptr<ServiceWorkerRegistration> registration) {
298 DCHECK_CURRENTLY_ON(BrowserThread::IO); 358 DCHECK_CURRENTLY_ON(BrowserThread::IO);
299 if (status != SERVICE_WORKER_OK) { 359 if (status != SERVICE_WORKER_OK) {
300 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER); 360 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER);
301 return; 361 return;
302 } 362 }
303 363
304 PaymentInstrumentProto instrument_proto; 364 PaymentInstrumentProto instrument_proto;
305 instrument_proto.set_name(instrument->name); 365 instrument_proto.set_name(instrument->name);
306 for (const auto& method : instrument->enabled_methods) { 366 for (const auto& method : instrument->enabled_methods) {
307 instrument_proto.add_enabled_methods(method); 367 instrument_proto.add_enabled_methods(method);
308 } 368 }
309 instrument_proto.set_stringified_capabilities( 369 instrument_proto.set_stringified_capabilities(
310 instrument->stringified_capabilities); 370 instrument->stringified_capabilities);
311 371
312 std::string serialized; 372 std::string serialized;
313 bool success = instrument_proto.SerializeToString(&serialized); 373 bool success = instrument_proto.SerializeToString(&serialized);
314 DCHECK(success); 374 DCHECK(success);
315 375
316 service_worker_context_->StoreRegistrationUserData( 376 service_worker_context_->StoreRegistrationUserData(
317 registration->id(), registration->pattern().GetOrigin(), 377 registration->id(), registration->pattern().GetOrigin(),
318 {{instrumentKey, serialized}}, 378 {{instrument_key, serialized}},
319 base::Bind(&PaymentAppDatabase::DidWritePaymentInstrument, 379 base::Bind(&PaymentAppDatabase::DidWritePaymentInstrument,
320 weak_ptr_factory_.GetWeakPtr(), 380 weak_ptr_factory_.GetWeakPtr(),
321 base::Passed(std::move(callback)))); 381 base::Passed(std::move(callback))));
322 } 382 }
323 383
324 void PaymentAppDatabase::DidWritePaymentInstrument( 384 void PaymentAppDatabase::DidWritePaymentInstrument(
325 WritePaymentInstrumentCallback callback, 385 WritePaymentInstrumentCallback callback,
326 ServiceWorkerStatusCode status) { 386 ServiceWorkerStatusCode status) {
327 DCHECK_CURRENTLY_ON(BrowserThread::IO); 387 DCHECK_CURRENTLY_ON(BrowserThread::IO);
328 return std::move(callback).Run( 388 return std::move(callback).Run(
329 status == SERVICE_WORKER_OK 389 status == SERVICE_WORKER_OK
330 ? PaymentHandlerStatus::SUCCESS 390 ? PaymentHandlerStatus::SUCCESS
331 : PaymentHandlerStatus::STORAGE_OPERATION_FAILED); 391 : PaymentHandlerStatus::STORAGE_OPERATION_FAILED);
332 } 392 }
333 393
334 } // namespace content 394 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/payments/payment_app_database.h ('k') | content/browser/payments/payment_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698