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