| OLD | NEW |
| 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 <map> | 7 #include <map> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 | 76 |
| 77 return key_info; | 77 return key_info; |
| 78 } | 78 } |
| 79 | 79 |
| 80 PaymentInstrumentPtr DeserializePaymentInstrument(const std::string& input) { | 80 PaymentInstrumentPtr DeserializePaymentInstrument(const std::string& input) { |
| 81 PaymentInstrumentProto instrument_proto; | 81 PaymentInstrumentProto instrument_proto; |
| 82 if (!instrument_proto.ParseFromString(input)) | 82 if (!instrument_proto.ParseFromString(input)) |
| 83 return nullptr; | 83 return nullptr; |
| 84 | 84 |
| 85 PaymentInstrumentPtr instrument = PaymentInstrument::New(); | 85 PaymentInstrumentPtr instrument = PaymentInstrument::New(); |
| 86 instrument->registration_id = instrument_proto.registration_id(); |
| 87 instrument->instrument_key = instrument_proto.instrument_key(); |
| 88 instrument->origin = GURL(instrument_proto.origin()); |
| 86 instrument->name = instrument_proto.name(); | 89 instrument->name = instrument_proto.name(); |
| 87 for (const auto& method : instrument_proto.enabled_methods()) | 90 for (const auto& method : instrument_proto.enabled_methods()) |
| 88 instrument->enabled_methods.push_back(method); | 91 instrument->enabled_methods.push_back(method); |
| 89 instrument->stringified_capabilities = | 92 instrument->stringified_capabilities = |
| 90 instrument_proto.stringified_capabilities(); | 93 instrument_proto.stringified_capabilities(); |
| 91 | 94 |
| 92 return instrument; | 95 return instrument; |
| 93 } | 96 } |
| 94 | 97 |
| 95 } // namespace | 98 } // namespace |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 void PaymentAppDatabase::ReadAllManifests( | 131 void PaymentAppDatabase::ReadAllManifests( |
| 129 const ReadAllManifestsCallback& callback) { | 132 const ReadAllManifestsCallback& callback) { |
| 130 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 133 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 131 | 134 |
| 132 service_worker_context_->GetUserDataForAllRegistrations( | 135 service_worker_context_->GetUserDataForAllRegistrations( |
| 133 kPaymentAppManifestDataKey, | 136 kPaymentAppManifestDataKey, |
| 134 base::Bind(&PaymentAppDatabase::DidReadAllManifests, | 137 base::Bind(&PaymentAppDatabase::DidReadAllManifests, |
| 135 weak_ptr_factory_.GetWeakPtr(), callback)); | 138 weak_ptr_factory_.GetWeakPtr(), callback)); |
| 136 } | 139 } |
| 137 | 140 |
| 141 void PaymentAppDatabase::ReadAllPaymentApps( |
| 142 ReadAllPaymentAppsCallback callback) { |
| 143 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 144 |
| 145 service_worker_context_->GetUserDataForAllRegistrationsByKeyPrefix( |
| 146 kPaymentInstrumentPrefix, |
| 147 base::Bind(&PaymentAppDatabase::DidReadAllPaymentApps, |
| 148 weak_ptr_factory_.GetWeakPtr(), |
| 149 base::Passed(std::move(callback)))); |
| 150 } |
| 151 |
| 138 void PaymentAppDatabase::DeletePaymentInstrument( | 152 void PaymentAppDatabase::DeletePaymentInstrument( |
| 139 const GURL& scope, | 153 const GURL& scope, |
| 140 const std::string& instrument_key, | 154 const std::string& instrument_key, |
| 141 DeletePaymentInstrumentCallback callback) { | 155 DeletePaymentInstrumentCallback callback) { |
| 142 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 156 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 143 | 157 |
| 144 service_worker_context_->FindReadyRegistrationForPattern( | 158 service_worker_context_->FindReadyRegistrationForPattern( |
| 145 scope, | 159 scope, |
| 146 base::Bind( | 160 base::Bind( |
| 147 &PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument, | 161 &PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument, |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 if (!manifest) | 335 if (!manifest) |
| 322 continue; | 336 continue; |
| 323 | 337 |
| 324 manifests.push_back( | 338 manifests.push_back( |
| 325 ManifestWithID(item_of_raw_data.first, std::move(manifest))); | 339 ManifestWithID(item_of_raw_data.first, std::move(manifest))); |
| 326 } | 340 } |
| 327 | 341 |
| 328 callback.Run(std::move(manifests)); | 342 callback.Run(std::move(manifests)); |
| 329 } | 343 } |
| 330 | 344 |
| 345 void PaymentAppDatabase::DidReadAllPaymentApps( |
| 346 ReadAllPaymentAppsCallback callback, |
| 347 const std::vector<std::pair<int64_t, std::string>>& raw_data, |
| 348 ServiceWorkerStatusCode status) { |
| 349 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 350 if (status != SERVICE_WORKER_OK) { |
| 351 std::move(callback).Run(PaymentApps()); |
| 352 return; |
| 353 } |
| 354 |
| 355 PaymentApps apps; |
| 356 for (const auto& item_of_raw_data : raw_data) { |
| 357 PaymentInstrumentPtr instrument = |
| 358 DeserializePaymentInstrument(item_of_raw_data.second); |
| 359 if (!instrument) |
| 360 continue; |
| 361 if (!base::ContainsKey(apps, instrument->origin)) |
| 362 apps.insert(std::make_pair(instrument->origin, Instruments())); |
| 363 apps[instrument->origin].push_back(std::move(instrument)); |
| 364 } |
| 365 |
| 366 std::move(callback).Run(std::move(apps)); |
| 367 } |
| 368 |
| 331 void PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument( | 369 void PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument( |
| 332 const std::string& instrument_key, | 370 const std::string& instrument_key, |
| 333 DeletePaymentInstrumentCallback callback, | 371 DeletePaymentInstrumentCallback callback, |
| 334 ServiceWorkerStatusCode status, | 372 ServiceWorkerStatusCode status, |
| 335 scoped_refptr<ServiceWorkerRegistration> registration) { | 373 scoped_refptr<ServiceWorkerRegistration> registration) { |
| 336 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 374 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 337 if (status != SERVICE_WORKER_OK) { | 375 if (status != SERVICE_WORKER_OK) { |
| 338 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER); | 376 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER); |
| 339 return; | 377 return; |
| 340 } | 378 } |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 WritePaymentInstrumentCallback callback, | 530 WritePaymentInstrumentCallback callback, |
| 493 ServiceWorkerStatusCode status, | 531 ServiceWorkerStatusCode status, |
| 494 scoped_refptr<ServiceWorkerRegistration> registration) { | 532 scoped_refptr<ServiceWorkerRegistration> registration) { |
| 495 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 533 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 496 if (status != SERVICE_WORKER_OK) { | 534 if (status != SERVICE_WORKER_OK) { |
| 497 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER); | 535 std::move(callback).Run(PaymentHandlerStatus::NO_ACTIVE_WORKER); |
| 498 return; | 536 return; |
| 499 } | 537 } |
| 500 | 538 |
| 501 PaymentInstrumentProto instrument_proto; | 539 PaymentInstrumentProto instrument_proto; |
| 540 instrument_proto.set_registration_id(registration->id()); |
| 541 instrument_proto.set_instrument_key(instrument_key); |
| 542 instrument_proto.set_origin(registration->pattern().GetOrigin().spec()); |
| 502 instrument_proto.set_name(instrument->name); | 543 instrument_proto.set_name(instrument->name); |
| 503 for (const auto& method : instrument->enabled_methods) { | 544 for (const auto& method : instrument->enabled_methods) { |
| 504 instrument_proto.add_enabled_methods(method); | 545 instrument_proto.add_enabled_methods(method); |
| 505 } | 546 } |
| 506 instrument_proto.set_stringified_capabilities( | 547 instrument_proto.set_stringified_capabilities( |
| 507 instrument->stringified_capabilities); | 548 instrument->stringified_capabilities); |
| 508 | 549 |
| 509 std::string serialized_instrument; | 550 std::string serialized_instrument; |
| 510 bool success = instrument_proto.SerializeToString(&serialized_instrument); | 551 bool success = instrument_proto.SerializeToString(&serialized_instrument); |
| 511 DCHECK(success); | 552 DCHECK(success); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 void PaymentAppDatabase::DidClearPaymentInstruments( | 626 void PaymentAppDatabase::DidClearPaymentInstruments( |
| 586 ClearPaymentInstrumentsCallback callback, | 627 ClearPaymentInstrumentsCallback callback, |
| 587 ServiceWorkerStatusCode status) { | 628 ServiceWorkerStatusCode status) { |
| 588 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 629 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 589 return std::move(callback).Run(status == SERVICE_WORKER_OK | 630 return std::move(callback).Run(status == SERVICE_WORKER_OK |
| 590 ? PaymentHandlerStatus::SUCCESS | 631 ? PaymentHandlerStatus::SUCCESS |
| 591 : PaymentHandlerStatus::NOT_FOUND); | 632 : PaymentHandlerStatus::NOT_FOUND); |
| 592 } | 633 } |
| 593 | 634 |
| 594 } // namespace content | 635 } // namespace content |
| OLD | NEW |