OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 package org.chromium.chrome.browser.autofill; | |
6 | |
7 import junit.framework.Assert; | |
8 | |
9 import org.chromium.base.ThreadUtils; | |
10 import org.chromium.chrome.browser.autofill.AutofillDialogControllerAndroid.Auto
fillDialog; | |
11 import org.chromium.chrome.browser.autofill.AutofillDialogControllerAndroid.Auto
fillDialogDelegate; | |
12 import org.chromium.chrome.browser.autofill.AutofillDialogControllerAndroid.Auto
fillDialogFactory; | |
13 import org.chromium.ui.base.WindowAndroid; | |
14 | |
15 /** | |
16 * Mock of the AutofillDialog that returns a predefined set of values. | |
17 */ | |
18 public class MockAutofillDialogController implements AutofillDialog { | |
19 private final AutofillDialogResult.ResultWallet mResult; | |
20 private final boolean mLastUsedChoiceIsAutofill; | |
21 private final String mLastUsedAccountName; | |
22 private final String mGuidDefaultBilling; | |
23 private final String mGuidDefaultShipping; | |
24 private final String mGuidDefaultCard; | |
25 | |
26 private AutofillDialogDelegate mDelegate; | |
27 | |
28 /** | |
29 * Installs the mock AutofillDialog implementation. | |
30 */ | |
31 public static void installMockFactory( | |
32 final long delayMillis, | |
33 final AutofillDialogResult.ResultWallet result, | |
34 final boolean lastUsedChoiceIsAutofill, | |
35 final String lastUsedAccountName, | |
36 final String guidDefaultBilling, | |
37 final String guidDefaultShipping, | |
38 final String guidDefaultCard, | |
39 final boolean shouldRequestFullBilling, | |
40 final boolean shouldRequestShipping, | |
41 final boolean shouldRequestPhoneNumbers) { | |
42 AutofillDialogControllerAndroid.setDialogFactory(new AutofillDialogFacto
ry() { | |
43 @Override | |
44 public AutofillDialog createDialog( | |
45 final AutofillDialogDelegate delegate, | |
46 final WindowAndroid windowAndroid, | |
47 final boolean requestFullBillingAddress, | |
48 final boolean requestShippingAddress, | |
49 final boolean requestPhoneNumbers, | |
50 final boolean incognitoMode, | |
51 final boolean initialChoiceIsAutofill, | |
52 final String initialWalletAccountName, | |
53 final String initialBillingGuid, | |
54 final String initialShippingGuid, | |
55 final String initialCardGuid, | |
56 final String merchantDomain, | |
57 final String[] shippingCountries, | |
58 final String[] creditCardTypes) { | |
59 Assert.assertEquals("Full billing details flag doesn't match", | |
60 shouldRequestFullBilling, requestFullBillingAddress); | |
61 Assert.assertEquals("Shipping details flag doesn't match", | |
62 shouldRequestShipping, requestShippingAddress); | |
63 Assert.assertEquals("Phone numbers flag doesn't match", | |
64 shouldRequestPhoneNumbers, requestPhoneNumbers); | |
65 return new MockAutofillDialogController( | |
66 delegate, | |
67 delayMillis, | |
68 result, | |
69 lastUsedChoiceIsAutofill, | |
70 lastUsedAccountName, | |
71 guidDefaultBilling, | |
72 guidDefaultShipping, | |
73 guidDefaultCard, | |
74 windowAndroid, | |
75 requestFullBillingAddress, requestShippingAddress, | |
76 requestPhoneNumbers, | |
77 incognitoMode, | |
78 initialChoiceIsAutofill, initialWalletAccountName, | |
79 initialBillingGuid, initialShippingGuid, initialCardGuid
, | |
80 merchantDomain, | |
81 shippingCountries, | |
82 creditCardTypes); | |
83 } | |
84 }); | |
85 } | |
86 | |
87 private MockAutofillDialogController( | |
88 final AutofillDialogControllerAndroid.AutofillDialogDelegate delegat
e, | |
89 final long delayMillis, | |
90 final AutofillDialogResult.ResultWallet result, | |
91 final boolean lastUsedChoiceIsAutofill, | |
92 final String lastUsedAccountName, | |
93 final String guidDefaultBilling, | |
94 final String guidDefaultShipping, | |
95 final String guidDefaultCard, | |
96 final WindowAndroid windowAndroid, | |
97 final boolean requestFullBillingAddress, final boolean requestShippi
ngAddress, | |
98 final boolean requestPhoneNumbers, | |
99 final boolean incognitoMode, | |
100 final boolean initialChoiceIsAutofill, final String initialWalletAcc
ountName, | |
101 final String initialBillingGuid, final String initialShippingGuid, | |
102 final String initialCardGuid, | |
103 final String merchantDomain, | |
104 final String[] shippingCountries, | |
105 final String[] creditCardTypes) { | |
106 mDelegate = delegate; | |
107 mResult = result; | |
108 mLastUsedChoiceIsAutofill = lastUsedChoiceIsAutofill; | |
109 mLastUsedAccountName = lastUsedAccountName; | |
110 mGuidDefaultBilling = guidDefaultBilling; | |
111 mGuidDefaultShipping = guidDefaultShipping; | |
112 mGuidDefaultCard = guidDefaultCard; | |
113 ThreadUtils.postOnUiThreadDelayed(new Runnable() { | |
114 @Override | |
115 public void run() { | |
116 triggerResultCallback(); | |
117 } | |
118 }, delayMillis); | |
119 } | |
120 | |
121 // AutofillDialog implementation: | |
122 | |
123 @Override | |
124 public void onDestroy() { | |
125 mDelegate = null; | |
126 } | |
127 | |
128 public void triggerResultCallback() { | |
129 if (mDelegate == null) return; | |
130 | |
131 if (mResult == null) { | |
132 mDelegate.dialogCancel(); | |
133 return; | |
134 } | |
135 | |
136 mDelegate.dialogContinue( | |
137 mResult, | |
138 mLastUsedChoiceIsAutofill, mLastUsedAccountName, | |
139 mGuidDefaultBilling, mGuidDefaultShipping, mGuidDefaultCard); | |
140 } | |
141 } | |
OLD | NEW |