OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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.content.Intent; | 7 import android.content.Intent; |
8 import android.content.pm.ActivityInfo; | 8 import android.content.pm.ActivityInfo; |
9 import android.content.pm.PackageInfo; | 9 import android.content.pm.PackageInfo; |
10 import android.content.pm.ResolveInfo; | 10 import android.content.pm.ResolveInfo; |
11 import android.content.pm.ServiceInfo; | 11 import android.content.pm.ServiceInfo; |
12 import android.content.pm.Signature; | 12 import android.content.pm.Signature; |
13 import android.net.Uri; | |
14 | 13 |
15 import org.junit.Test; | 14 import org.junit.Test; |
16 import org.junit.runner.RunWith; | 15 import org.junit.runner.RunWith; |
17 import org.mockito.ArgumentMatcher; | 16 import org.mockito.ArgumentMatcher; |
18 import org.mockito.ArgumentMatchers; | 17 import org.mockito.ArgumentMatchers; |
19 import org.mockito.Mockito; | 18 import org.mockito.Mockito; |
20 import org.robolectric.RobolectricTestRunner; | 19 import org.robolectric.RobolectricTestRunner; |
21 import org.robolectric.annotation.Config; | 20 import org.robolectric.annotation.Config; |
22 | 21 |
23 import org.chromium.chrome.browser.payments.PaymentAppFactory.PaymentAppCreatedC
allback; | 22 import org.chromium.chrome.browser.payments.PaymentAppFactory.PaymentAppCreatedC
allback; |
24 import org.chromium.components.payments.PaymentManifestDownloader; | 23 import org.chromium.components.payments.PaymentManifestDownloader; |
25 import org.chromium.components.payments.PaymentManifestParser; | 24 import org.chromium.components.payments.PaymentManifestParser; |
26 import org.chromium.content_public.browser.WebContents; | 25 import org.chromium.content_public.browser.WebContents; |
27 import org.chromium.payments.mojom.PaymentManifestSection; | 26 import org.chromium.payments.mojom.PaymentManifestSection; |
28 | 27 |
29 import java.net.URI; | 28 import java.net.URI; |
30 import java.util.ArrayList; | 29 import java.util.ArrayList; |
31 import java.util.HashSet; | 30 import java.util.HashSet; |
32 import java.util.List; | 31 import java.util.List; |
33 import java.util.Set; | 32 import java.util.Set; |
34 | 33 |
35 /** Tests for the native Android payment app finder. */ | 34 /** Tests for the native Android payment app finder. */ |
36 @RunWith(RobolectricTestRunner.class) | 35 @RunWith(RobolectricTestRunner.class) |
37 @Config(sdk = 21, manifest = Config.NONE) | 36 @Config(sdk = 21, manifest = Config.NONE) |
38 public class AndroidPaymentAppFinderTest { | 37 public class AndroidPaymentAppFinderTest { |
| 38 private static final IntentArgumentMatcher sPayIntentArgumentMatcher = |
| 39 new IntentArgumentMatcher(new Intent("org.chromium.intent.action.PAY
")); |
| 40 |
39 public AndroidPaymentAppFinderTest() {} | 41 public AndroidPaymentAppFinderTest() {} |
40 | 42 |
41 /** | 43 /** |
42 * Argument matcher that matches Intents using |filterEquals| method. | 44 * Argument matcher that matches Intents using |filterEquals| method. |
43 */ | 45 */ |
44 private static class IntentArgumentMatcher implements ArgumentMatcher<Intent
> { | 46 private static class IntentArgumentMatcher implements ArgumentMatcher<Intent
> { |
45 | 47 |
46 private final Intent mIntent; | 48 private final Intent mIntent; |
47 | 49 |
48 public IntentArgumentMatcher(Intent intent) { | 50 public IntentArgumentMatcher(Intent intent) { |
(...skipping 23 matching lines...) Expand all Loading... |
72 Mockito.mock(PaymentManifestDownloader.class), | 74 Mockito.mock(PaymentManifestDownloader.class), |
73 Mockito.mock(PaymentManifestParser.class), | 75 Mockito.mock(PaymentManifestParser.class), |
74 Mockito.mock(PackageManagerDelegate.class), callback); | 76 Mockito.mock(PackageManagerDelegate.class), callback); |
75 | 77 |
76 Mockito.verify(callback, Mockito.never()) | 78 Mockito.verify(callback, Mockito.never()) |
77 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); | 79 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); |
78 Mockito.verify(callback).onAllPaymentAppsCreated(); | 80 Mockito.verify(callback).onAllPaymentAppsCreated(); |
79 } | 81 } |
80 | 82 |
81 @Test | 83 @Test |
82 public void testQueryBasicCardsWithoutApps() { | 84 public void testQueryWithoutApps() { |
83 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); | 85 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); |
84 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( | 86 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
85 ArgumentMatchers.argThat(new IntentArgumentMatcher( | 87 ArgumentMatchers.argThat(sPayIntentArgumentMatcher)
)) |
86 new Intent(AndroidPaymentAppFinder.ACTION_PAY_BASIC_CARD
))))) | |
87 .thenReturn(new ArrayList<ResolveInfo>()); | 88 .thenReturn(new ArrayList<ResolveInfo>()); |
88 Set<String> methodNames = new HashSet<>(); | 89 Set<String> methodNames = new HashSet<>(); |
89 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); | 90 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); |
90 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); | 91 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); |
91 | 92 |
92 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, | 93 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, |
93 Mockito.mock(PaymentManifestDownloader.class), | 94 Mockito.mock(PaymentManifestDownloader.class), |
94 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); | 95 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); |
95 | 96 |
| 97 Mockito.verify(packageManagerDelegate, Mockito.never()) |
| 98 .getStringArrayMetaData(ArgumentMatchers.anyString(), ArgumentMa
tchers.anyString()); |
| 99 Mockito.verify(packageManagerDelegate, Mockito.never()) |
| 100 .getStringMetaData(ArgumentMatchers.anyString(), ArgumentMatcher
s.anyString()); |
96 Mockito.verify(callback, Mockito.never()) | 101 Mockito.verify(callback, Mockito.never()) |
97 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); | 102 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); |
98 Mockito.verify(callback).onAllPaymentAppsCreated(); | 103 Mockito.verify(callback).onAllPaymentAppsCreated(); |
99 } | 104 } |
100 | 105 |
101 @Test | 106 @Test |
102 public void testQueryBasicCardsWithTwoApps() { | 107 public void testQueryWithoutMetaData() { |
103 List<ResolveInfo> activities = new ArrayList<>(); | 108 List<ResolveInfo> activities = new ArrayList<>(); |
104 ResolveInfo alicePay = new ResolveInfo(); | 109 ResolveInfo alicePay = new ResolveInfo(); |
105 alicePay.activityInfo = new ActivityInfo(); | 110 alicePay.activityInfo = new ActivityInfo(); |
106 alicePay.activityInfo.packageName = "com.alicepay.app"; | 111 alicePay.activityInfo.packageName = "com.alicepay.app"; |
107 alicePay.activityInfo.name = "com.alicepay.app.WebPaymentActivity"; | 112 alicePay.activityInfo.name = "com.alicepay.app.WebPaymentActivity"; |
108 activities.add(alicePay); | 113 activities.add(alicePay); |
109 ResolveInfo bobPay = new ResolveInfo(); | 114 |
110 bobPay.activityInfo = new ActivityInfo(); | |
111 bobPay.activityInfo.packageName = "com.bobpay.app"; | |
112 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; | |
113 activities.add(bobPay); | |
114 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); | 115 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); |
115 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo.
class))) | |
116 .thenReturn("A non-empty label"); | |
117 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( | 116 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
118 ArgumentMatchers.argThat(new IntentArgumentMatcher( | 117 ArgumentMatchers.argThat(sPayIntentArgumentMatcher)
)) |
119 new Intent(AndroidPaymentAppFinder.ACTION_PAY_BASIC_CARD
))))) | |
120 .thenReturn(activities); | 118 .thenReturn(activities); |
121 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( | 119 Mockito.when(packageManagerDelegate.getStringArrayMetaData( |
122 ArgumentMatchers.argThat(new IntentArgumentMatcher( | 120 ArgumentMatchers.matches("com.alicepay.app"), |
123 new Intent(AndroidPaymentAppFinder.ACTION_IS_READY_TO_PA
Y))))) | 121 ArgumentMatchers.matches( |
124 .thenReturn(new ArrayList<ResolveInfo>()); | 122 AndroidPaymentAppFinder.META_DATA_NAME_OF_PAYMEN
T_METHOD_NAMES))) |
| 123 .thenReturn(null); |
| 124 Mockito.when(packageManagerDelegate.getStringMetaData( |
| 125 ArgumentMatchers.matches("com.alicepay.app"), |
| 126 ArgumentMatchers.matches( |
| 127 AndroidPaymentAppFinder |
| 128 .META_DATA_NAME_OF_DEFAULT_PAYMENT_
METHOD_NAME))) |
| 129 .thenReturn(null); |
| 130 |
125 Set<String> methodNames = new HashSet<>(); | 131 Set<String> methodNames = new HashSet<>(); |
126 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); | 132 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); |
127 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); | 133 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); |
128 | 134 |
129 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, | 135 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, |
130 Mockito.mock(PaymentManifestDownloader.class), | 136 Mockito.mock(PaymentManifestDownloader.class), |
131 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); | 137 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); |
132 | 138 |
133 Mockito.verify(callback).onPaymentAppCreated( | 139 Mockito.verify(callback, Mockito.never()) |
134 ArgumentMatchers.argThat(Matches.paymentAppIdentifier("com.alice
pay.app"))); | 140 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); |
135 Mockito.verify(callback).onPaymentAppCreated( | |
136 ArgumentMatchers.argThat(Matches.paymentAppIdentifier("com.bobpa
y.app"))); | |
137 Mockito.verify(callback).onAllPaymentAppsCreated(); | 141 Mockito.verify(callback).onAllPaymentAppsCreated(); |
138 } | 142 } |
139 | 143 |
140 @Test | 144 @Test |
141 public void testQueryBobPayWithoutApps() { | 145 public void testQueryWithUnsupportedPaymentMethod() { |
142 Intent bobPayIntent = new Intent("org.chromium.intent.action.PAY"); | 146 List<ResolveInfo> activities = new ArrayList<>(); |
143 bobPayIntent.setData(Uri.parse("https://bobpay.com")); | 147 ResolveInfo alicePay = new ResolveInfo(); |
| 148 alicePay.activityInfo = new ActivityInfo(); |
| 149 alicePay.activityInfo.packageName = "com.alicepay.app"; |
| 150 alicePay.activityInfo.name = "com.alicepay.app.WebPaymentActivity"; |
| 151 activities.add(alicePay); |
| 152 |
144 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); | 153 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); |
145 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent(
bobPayIntent)) | 154 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
146 .thenReturn(new ArrayList<ResolveInfo>()); | 155 ArgumentMatchers.argThat(sPayIntentArgumentMatcher)
)) |
| 156 .thenReturn(activities); |
| 157 Mockito.when(packageManagerDelegate.getStringArrayMetaData( |
| 158 ArgumentMatchers.matches("com.alicepay.app"), |
| 159 ArgumentMatchers.matches( |
| 160 AndroidPaymentAppFinder.META_DATA_NAME_OF_PAYMEN
T_METHOD_NAMES))) |
| 161 .thenReturn(null); |
| 162 Mockito.when(packageManagerDelegate.getStringMetaData( |
| 163 ArgumentMatchers.matches("com.alicepay.app"), |
| 164 ArgumentMatchers.matches( |
| 165 AndroidPaymentAppFinder |
| 166 .META_DATA_NAME_OF_DEFAULT_PAYMENT_
METHOD_NAME))) |
| 167 .thenReturn("https://bobpay.com"); |
| 168 |
147 Set<String> methodNames = new HashSet<>(); | 169 Set<String> methodNames = new HashSet<>(); |
148 methodNames.add("https://bobpay.com"); | 170 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); |
149 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); | 171 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); |
150 | 172 |
151 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, | 173 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, |
152 Mockito.mock(PaymentManifestDownloader.class), | 174 Mockito.mock(PaymentManifestDownloader.class), |
153 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); | 175 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); |
154 | 176 |
155 Mockito.verify(callback, Mockito.never()) | 177 Mockito.verify(callback, Mockito.never()) |
156 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); | 178 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); |
157 Mockito.verify(callback).onAllPaymentAppsCreated(); | 179 Mockito.verify(callback).onAllPaymentAppsCreated(); |
158 } | 180 } |
159 | 181 |
160 @Test | 182 @Test |
| 183 public void testQueryBasicCardsWithTwoApps() { |
| 184 List<ResolveInfo> activities = new ArrayList<>(); |
| 185 ResolveInfo alicePay = new ResolveInfo(); |
| 186 alicePay.activityInfo = new ActivityInfo(); |
| 187 alicePay.activityInfo.packageName = "com.alicepay.app"; |
| 188 alicePay.activityInfo.name = "com.alicepay.app.WebPaymentActivity"; |
| 189 activities.add(alicePay); |
| 190 ResolveInfo bobPay = new ResolveInfo(); |
| 191 bobPay.activityInfo = new ActivityInfo(); |
| 192 bobPay.activityInfo.packageName = "com.bobpay.app"; |
| 193 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; |
| 194 activities.add(bobPay); |
| 195 |
| 196 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); |
| 197 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo.
class))) |
| 198 .thenReturn("A non-empty label"); |
| 199 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
| 200 ArgumentMatchers.argThat(sPayIntentArgumentMatcher)
)) |
| 201 .thenReturn(activities); |
| 202 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( |
| 203 ArgumentMatchers.argThat(new IntentArgumentMatcher( |
| 204 new Intent(AndroidPaymentAppFinder.ACTION_I
S_READY_TO_PAY))))) |
| 205 .thenReturn(new ArrayList<ResolveInfo>()); |
| 206 Mockito.when(packageManagerDelegate.getStringArrayMetaData( |
| 207 ArgumentMatchers.matches("com.alicepay.app"), |
| 208 ArgumentMatchers.matches( |
| 209 AndroidPaymentAppFinder.META_DATA_NAME_OF_PAYMEN
T_METHOD_NAMES))) |
| 210 .thenReturn(new String[] { |
| 211 "https://alicepay.com", AndroidPaymentAppFinder.BASIC_CA
RD_PAYMENT_METHOD}); |
| 212 Mockito.when(packageManagerDelegate.getStringMetaData( |
| 213 ArgumentMatchers.matches("com.alicepay.app"), |
| 214 ArgumentMatchers.matches( |
| 215 AndroidPaymentAppFinder |
| 216 .META_DATA_NAME_OF_DEFAULT_PAYMENT_
METHOD_NAME))) |
| 217 .thenReturn("https://alicepay.com"); |
| 218 Mockito.when(packageManagerDelegate.getStringArrayMetaData( |
| 219 ArgumentMatchers.matches("com.bobpay.app"), |
| 220 ArgumentMatchers.matches( |
| 221 AndroidPaymentAppFinder.META_DATA_NAME_OF_PAYMEN
T_METHOD_NAMES))) |
| 222 .thenReturn(new String[] { |
| 223 "https://bobpay.com", AndroidPaymentAppFinder.BASIC_CARD
_PAYMENT_METHOD}); |
| 224 Mockito.when(packageManagerDelegate.getStringMetaData( |
| 225 ArgumentMatchers.matches("com.bobpay.app"), |
| 226 ArgumentMatchers.matches( |
| 227 AndroidPaymentAppFinder |
| 228 .META_DATA_NAME_OF_DEFAULT_PAYMENT_
METHOD_NAME))) |
| 229 .thenReturn("https://bobpay.com"); |
| 230 |
| 231 Set<String> methodNames = new HashSet<>(); |
| 232 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); |
| 233 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb
ack.class); |
| 234 |
| 235 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName
s, false, |
| 236 Mockito.mock(PaymentManifestDownloader.class), |
| 237 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat
e, callback); |
| 238 |
| 239 Mockito.verify(callback).onPaymentAppCreated( |
| 240 ArgumentMatchers.argThat(Matches.paymentAppIdentifier("com.alice
pay.app"))); |
| 241 Mockito.verify(callback).onPaymentAppCreated( |
| 242 ArgumentMatchers.argThat(Matches.paymentAppIdentifier("com.bobpa
y.app"))); |
| 243 Mockito.verify(callback).onAllPaymentAppsCreated(); |
| 244 } |
| 245 |
| 246 @Test |
161 public void testQueryBobPayWithOneAppThatHasIsReadyToPayService() { | 247 public void testQueryBobPayWithOneAppThatHasIsReadyToPayService() { |
162 List<ResolveInfo> activities = new ArrayList<>(); | 248 List<ResolveInfo> activities = new ArrayList<>(); |
163 ResolveInfo bobPay = new ResolveInfo(); | 249 ResolveInfo bobPay = new ResolveInfo(); |
164 bobPay.activityInfo = new ActivityInfo(); | 250 bobPay.activityInfo = new ActivityInfo(); |
165 bobPay.activityInfo.packageName = "com.bobpay.app"; | 251 bobPay.activityInfo.packageName = "com.bobpay.app"; |
166 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; | 252 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; |
167 activities.add(bobPay); | 253 activities.add(bobPay); |
168 Intent bobPayIntent = new Intent("org.chromium.intent.action.PAY"); | 254 |
169 bobPayIntent.setData(Uri.parse("https://bobpay.com")); | |
170 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); | 255 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana
gerDelegate.class); |
171 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo.
class))) | 256 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo.
class))) |
172 .thenReturn("A non-empty label"); | 257 .thenReturn("A non-empty label"); |
173 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( | 258 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
174 ArgumentMatchers.argThat(new IntentArgumentMatcher(bobPayIntent)
))) | 259 ArgumentMatchers.argThat(sPayIntentArgumentMatcher)
)) |
175 .thenReturn(activities); | 260 .thenReturn(activities); |
| 261 Mockito.when(packageManagerDelegate.getStringArrayMetaData( |
| 262 ArgumentMatchers.matches("com.bobpay.app"), |
| 263 ArgumentMatchers.matches( |
| 264 AndroidPaymentAppFinder.META_DATA_NAME_OF_PAYMEN
T_METHOD_NAMES))) |
| 265 .thenReturn(new String[] { |
| 266 "https://bobpay.com", AndroidPaymentAppFinder.BASIC_CARD
_PAYMENT_METHOD}); |
| 267 Mockito.when(packageManagerDelegate.getStringMetaData( |
| 268 ArgumentMatchers.matches("com.bobpay.app"), |
| 269 ArgumentMatchers.matches( |
| 270 AndroidPaymentAppFinder |
| 271 .META_DATA_NAME_OF_DEFAULT_PAYMENT_
METHOD_NAME))) |
| 272 .thenReturn("https://bobpay.com"); |
176 | 273 |
177 List<ResolveInfo> services = new ArrayList<>(); | 274 List<ResolveInfo> services = new ArrayList<>(); |
178 ResolveInfo isBobPayReadyToPay = new ResolveInfo(); | 275 ResolveInfo isBobPayReadyToPay = new ResolveInfo(); |
179 isBobPayReadyToPay.serviceInfo = new ServiceInfo(); | 276 isBobPayReadyToPay.serviceInfo = new ServiceInfo(); |
180 isBobPayReadyToPay.serviceInfo.packageName = "com.bobpay.app"; | 277 isBobPayReadyToPay.serviceInfo.packageName = "com.bobpay.app"; |
181 isBobPayReadyToPay.serviceInfo.name = "com.bobpay.app.IsReadyToWebPay"; | 278 isBobPayReadyToPay.serviceInfo.name = "com.bobpay.app.IsReadyToWebPay"; |
182 services.add(isBobPayReadyToPay); | 279 services.add(isBobPayReadyToPay); |
183 Intent isReadyToPayIntent = new Intent(AndroidPaymentAppFinder.ACTION_IS
_READY_TO_PAY); | 280 Intent isReadyToPayIntent = new Intent(AndroidPaymentAppFinder.ACTION_IS
_READY_TO_PAY); |
184 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( | 281 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( |
185 ArgumentMatchers.argThat(new IntentArgumentMatcher(isReadyToPayI
ntent)))) | 282 ArgumentMatchers.argThat(new IntentArgumentMatcher(isRea
dyToPayIntent)))) |
186 .thenReturn(services); | 283 .thenReturn(services); |
187 | 284 |
188 PackageInfo bobPayPackageInfo = new PackageInfo(); | 285 PackageInfo bobPayPackageInfo = new PackageInfo(); |
189 bobPayPackageInfo.versionCode = 10; | 286 bobPayPackageInfo.versionCode = 10; |
190 bobPayPackageInfo.signatures = new Signature[1]; | 287 bobPayPackageInfo.signatures = new Signature[1]; |
191 bobPayPackageInfo.signatures[0] = new Signature("01020304050607080900"); | 288 bobPayPackageInfo.signatures[0] = new Signature("01020304050607080900"); |
192 Mockito.when(packageManagerDelegate.getPackageInfoWithSignatures("com.bo
bpay.app")) | 289 Mockito.when(packageManagerDelegate.getPackageInfoWithSignatures("com.bo
bpay.app")) |
193 .thenReturn(bobPayPackageInfo); | 290 .thenReturn(bobPayPackageInfo); |
194 | 291 |
195 PaymentManifestDownloader downloader = new PaymentManifestDownloader(nul
l) { | 292 PaymentManifestDownloader downloader = new PaymentManifestDownloader(nul
l) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 String expectedAppIdentifier) { | 350 String expectedAppIdentifier) { |
254 return new Matches(expectedAppIdentifier); | 351 return new Matches(expectedAppIdentifier); |
255 } | 352 } |
256 | 353 |
257 @Override | 354 @Override |
258 public boolean matches(PaymentApp app) { | 355 public boolean matches(PaymentApp app) { |
259 return app.getAppIdentifier().equals(mExpectedAppIdentifier); | 356 return app.getAppIdentifier().equals(mExpectedAppIdentifier); |
260 } | 357 } |
261 } | 358 } |
262 } | 359 } |
OLD | NEW |