Avi Drissman | 4e1b7bc3 | 2022-09-15 14:03:50 | [diff] [blame] | 1 | // Copyright 2016 The Chromium Authors |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
jinho.bang | 745d987b | 2016-12-14 19:06:54 | [diff] [blame] | 5 | #include "content/browser/payments/payment_app_context_impl.h" |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 6 | |
| 7 | #include <utility> |
| 8 | |
Lei Zhang | de19767 | 2021-04-29 08:11:24 | [diff] [blame] | 9 | #include "base/containers/contains.h" |
Avi Drissman | adac2199 | 2023-01-11 23:46:39 | [diff] [blame] | 10 | #include "base/functional/bind.h" |
jinho.bang | bbb00c3 | 2017-03-30 15:09:09 | [diff] [blame] | 11 | #include "content/browser/payments/payment_manager.h" |
Michael Thiessen | 2d864d9 | 2023-04-06 15:20:56 | [diff] [blame] | 12 | #include "content/public/browser/browser_thread.h" |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 13 | |
| 14 | namespace content { |
| 15 | |
Francois Doray | 5a6eb20 | 2018-02-23 19:19:35 | [diff] [blame] | 16 | PaymentAppContextImpl::PaymentAppContextImpl() { |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 17 | DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 18 | } |
| 19 | |
jinho.bang | ab43057 | 2016-12-16 14:33:58 | [diff] [blame] | 20 | void PaymentAppContextImpl::Init( |
| 21 | scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) { |
| 22 | DCHECK_CURRENTLY_ON(BrowserThread::UI); |
Matt Falkenhagen | 016104e | 2021-09-10 01:01:33 | [diff] [blame] | 23 | payment_app_database_ = |
| 24 | std::make_unique<PaymentAppDatabase>(std::move(service_worker_context)); |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 25 | } |
| 26 | |
Rouslan Solomakhin | 8788e254 | 2019-10-24 01:10:05 | [diff] [blame] | 27 | void PaymentAppContextImpl::CreatePaymentManagerForOrigin( |
| 28 | const url::Origin& origin, |
Miyoung Shin | f661d57 | 2019-09-04 11:58:27 | [diff] [blame] | 29 | mojo::PendingReceiver<payments::mojom::PaymentManager> receiver) { |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 30 | DCHECK_CURRENTLY_ON(BrowserThread::UI); |
Matt Falkenhagen | 016104e | 2021-09-10 01:01:33 | [diff] [blame] | 31 | auto payment_manager = |
| 32 | std::make_unique<PaymentManager>(this, origin, std::move(receiver)); |
| 33 | payment_managers_[payment_manager.get()] = std::move(payment_manager); |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 34 | } |
| 35 | |
jinho.bang | bbb00c3 | 2017-03-30 15:09:09 | [diff] [blame] | 36 | void PaymentAppContextImpl::PaymentManagerHadConnectionError( |
| 37 | PaymentManager* payment_manager) { |
Matt Falkenhagen | 016104e | 2021-09-10 01:01:33 | [diff] [blame] | 38 | DCHECK_CURRENTLY_ON(BrowserThread::UI); |
Jan Wilken Dörrie | 77c581a | 2019-06-07 16:25:06 | [diff] [blame] | 39 | DCHECK(base::Contains(payment_managers_, payment_manager)); |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 40 | |
jinho.bang | bbb00c3 | 2017-03-30 15:09:09 | [diff] [blame] | 41 | payment_managers_.erase(payment_manager); |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 42 | } |
| 43 | |
jinho.bang | ab43057 | 2016-12-16 14:33:58 | [diff] [blame] | 44 | PaymentAppDatabase* PaymentAppContextImpl::payment_app_database() const { |
Matt Falkenhagen | 016104e | 2021-09-10 01:01:33 | [diff] [blame] | 45 | DCHECK_CURRENTLY_ON(BrowserThread::UI); |
jinho.bang | ab43057 | 2016-12-16 14:33:58 | [diff] [blame] | 46 | return payment_app_database_.get(); |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 47 | } |
| 48 | |
jinho.bang | 745d987b | 2016-12-14 19:06:54 | [diff] [blame] | 49 | PaymentAppContextImpl::~PaymentAppContextImpl() { |
jinho.bang | ab43057 | 2016-12-16 14:33:58 | [diff] [blame] | 50 | DCHECK_CURRENTLY_ON(BrowserThread::UI); |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 51 | } |
| 52 | |
vasilii | e4e2b2b1 | 2016-12-12 13:47:27 | [diff] [blame] | 53 | } // namespace content |