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 package org.chromium.chrome.browser.payments; | 5 package org.chromium.chrome.browser.payments; |
6 | 6 |
7 import android.app.Activity; | 7 import android.app.Activity; |
8 | 8 |
9 import org.chromium.chrome.browser.ChromeFeatureList; | 9 import org.chromium.chrome.browser.ChromeFeatureList; |
10 import org.chromium.chrome.browser.payments.PaymentRequestImpl.PaymentRequestDis
missObserver; | |
11 import org.chromium.content.browser.ContentViewCore; | 10 import org.chromium.content.browser.ContentViewCore; |
12 import org.chromium.content_public.browser.WebContents; | 11 import org.chromium.content_public.browser.WebContents; |
13 import org.chromium.mojo.system.MojoException; | 12 import org.chromium.mojo.system.MojoException; |
| 13 import org.chromium.payments.mojom.ActivePaymentQueryResult; |
14 import org.chromium.payments.mojom.PaymentDetails; | 14 import org.chromium.payments.mojom.PaymentDetails; |
15 import org.chromium.payments.mojom.PaymentErrorReason; | 15 import org.chromium.payments.mojom.PaymentErrorReason; |
16 import org.chromium.payments.mojom.PaymentMethodData; | 16 import org.chromium.payments.mojom.PaymentMethodData; |
17 import org.chromium.payments.mojom.PaymentOptions; | 17 import org.chromium.payments.mojom.PaymentOptions; |
18 import org.chromium.payments.mojom.PaymentRequest; | 18 import org.chromium.payments.mojom.PaymentRequest; |
19 import org.chromium.payments.mojom.PaymentRequestClient; | 19 import org.chromium.payments.mojom.PaymentRequestClient; |
20 import org.chromium.services.service_manager.InterfaceFactory; | 20 import org.chromium.services.service_manager.InterfaceFactory; |
21 import org.chromium.ui.base.WindowAndroid; | 21 import org.chromium.ui.base.WindowAndroid; |
22 | 22 |
23 /** | 23 /** |
24 * Creates instances of PaymentRequest. | 24 * Creates instances of PaymentRequest. |
25 */ | 25 */ |
26 public class PaymentRequestFactory | 26 public class PaymentRequestFactory implements InterfaceFactory<PaymentRequest> { |
27 implements InterfaceFactory<PaymentRequest>, PaymentRequestDismissObserv
er { | |
28 private final WebContents mWebContents; | 27 private final WebContents mWebContents; |
29 private boolean mIsPaymentRequestRunning; | |
30 | 28 |
31 /** | 29 /** |
32 * An implementation of PaymentRequest that immediately rejects all connecti
ons. | 30 * An implementation of PaymentRequest that immediately rejects all connecti
ons. |
33 * Necessary because Mojo does not handle null returned from createImpl(). | 31 * Necessary because Mojo does not handle null returned from createImpl(). |
34 */ | 32 */ |
35 private static final class InvalidPaymentRequest implements PaymentRequest { | 33 private static final class InvalidPaymentRequest implements PaymentRequest { |
36 private PaymentRequestClient mClient; | 34 private PaymentRequestClient mClient; |
37 | 35 |
38 @Override | 36 @Override |
39 public void init(PaymentRequestClient client, PaymentMethodData[] method
Data, | 37 public void init(PaymentRequestClient client, PaymentMethodData[] method
Data, |
(...skipping 12 matching lines...) Expand all Loading... |
52 @Override | 50 @Override |
53 public void updateWith(PaymentDetails details) {} | 51 public void updateWith(PaymentDetails details) {} |
54 | 52 |
55 @Override | 53 @Override |
56 public void abort() {} | 54 public void abort() {} |
57 | 55 |
58 @Override | 56 @Override |
59 public void complete(int result) {} | 57 public void complete(int result) {} |
60 | 58 |
61 @Override | 59 @Override |
| 60 public void canMakeActivePayment() { |
| 61 if (mClient != null) { |
| 62 mClient.onCanMakeActivePayment(ActivePaymentQueryResult.CANNOT_M
AKE_ACTIVE_PAYMENT); |
| 63 } |
| 64 } |
| 65 |
| 66 @Override |
62 public void close() {} | 67 public void close() {} |
63 | 68 |
64 @Override | 69 @Override |
65 public void onConnectionError(MojoException e) {} | 70 public void onConnectionError(MojoException e) {} |
66 } | 71 } |
67 | 72 |
68 /** | 73 /** |
69 * Builds a factory for PaymentRequest. | 74 * Builds a factory for PaymentRequest. |
70 * | 75 * |
71 * @param webContents The web contents that may invoke the PaymentRequest AP
I. | 76 * @param webContents The web contents that may invoke the PaymentRequest AP
I. |
(...skipping 12 matching lines...) Expand all Loading... |
84 | 89 |
85 ContentViewCore contentViewCore = ContentViewCore.fromWebContents(mWebCo
ntents); | 90 ContentViewCore contentViewCore = ContentViewCore.fromWebContents(mWebCo
ntents); |
86 if (contentViewCore == null) return new InvalidPaymentRequest(); | 91 if (contentViewCore == null) return new InvalidPaymentRequest(); |
87 | 92 |
88 WindowAndroid window = contentViewCore.getWindowAndroid(); | 93 WindowAndroid window = contentViewCore.getWindowAndroid(); |
89 if (window == null) return new InvalidPaymentRequest(); | 94 if (window == null) return new InvalidPaymentRequest(); |
90 | 95 |
91 Activity context = window.getActivity().get(); | 96 Activity context = window.getActivity().get(); |
92 if (context == null) return new InvalidPaymentRequest(); | 97 if (context == null) return new InvalidPaymentRequest(); |
93 | 98 |
94 if (mIsPaymentRequestRunning) return new InvalidPaymentRequest(); | 99 return new PaymentRequestImpl(context, mWebContents); |
95 mIsPaymentRequestRunning = true; | |
96 | |
97 return new PaymentRequestImpl(context, mWebContents, this); | |
98 } | |
99 | |
100 @Override | |
101 public void onPaymentRequestDismissed() { | |
102 mIsPaymentRequestRunning = false; | |
103 } | 100 } |
104 } | 101 } |
OLD | NEW |