| 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 |