Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(963)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java

Issue 2970003003: customtabs: Extract a redirect endpoint, and maybe connect to it. (Closed)
Patch Set: Typo. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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.customtabs; 5 package org.chromium.chrome.browser.customtabs;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.net.Uri; 8 import android.net.Uri;
9 import android.os.Process; 9 import android.os.Process;
10 import android.support.customtabs.CustomTabsSessionToken; 10 import android.support.customtabs.CustomTabsSessionToken;
11 import android.support.test.InstrumentationRegistry; 11 import android.support.test.InstrumentationRegistry;
12 import android.support.test.filters.SmallTest; 12 import android.support.test.filters.SmallTest;
13 13
14 import org.junit.Assert; 14 import org.junit.Assert;
15 import org.junit.Before; 15 import org.junit.Before;
16 import org.junit.Rule; 16 import org.junit.Rule;
17 import org.junit.Test; 17 import org.junit.Test;
18 import org.junit.runner.RunWith; 18 import org.junit.runner.RunWith;
19 19
20 import org.chromium.base.ContextUtils; 20 import org.chromium.base.ContextUtils;
21 import org.chromium.base.ThreadUtils;
21 import org.chromium.base.metrics.RecordHistogram; 22 import org.chromium.base.metrics.RecordHistogram;
22 import org.chromium.base.test.BaseJUnit4ClassRunner; 23 import org.chromium.base.test.BaseJUnit4ClassRunner;
23 import org.chromium.base.test.util.MetricsUtils; 24 import org.chromium.base.test.util.MetricsUtils;
24 import org.chromium.base.test.util.RetryOnFailure; 25 import org.chromium.base.test.util.RetryOnFailure;
25 import org.chromium.chrome.browser.IntentHandler; 26 import org.chromium.chrome.browser.IntentHandler;
26 import org.chromium.content.browser.test.NativeLibraryTestRule; 27 import org.chromium.content.browser.test.NativeLibraryTestRule;
27 import org.chromium.content.browser.test.util.Criteria; 28 import org.chromium.content.browser.test.util.Criteria;
28 import org.chromium.content.browser.test.util.CriteriaHelper; 29 import org.chromium.content.browser.test.util.CriteriaHelper;
29 30
30 /** Tests for ClientManager. */ 31 /** Tests for ClientManager. */
(...skipping 12 matching lines...) Expand all
43 44
44 @Before 45 @Before
45 public void setUp() throws Exception { 46 public void setUp() throws Exception {
46 Context context = InstrumentationRegistry.getInstrumentation() 47 Context context = InstrumentationRegistry.getInstrumentation()
47 .getTargetContext() 48 .getTargetContext()
48 .getApplicationContext(); 49 .getApplicationContext();
49 mActivityTestRule.loadNativeLibraryNoBrowserProcess(); 50 mActivityTestRule.loadNativeLibraryNoBrowserProcess();
50 RequestThrottler.purgeAllEntriesForTesting(context); 51 RequestThrottler.purgeAllEntriesForTesting(context);
51 mClientManager = new ClientManager(context); 52 mClientManager = new ClientManager(context);
52 RecordHistogram.initialize(); 53 RecordHistogram.initialize();
54 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
55 @Override
56 public void run() {
57 OriginVerifier.reset();
58 }
59 });
53 } 60 }
54 61
55 @Test 62 @Test
56 @SmallTest 63 @SmallTest
57 public void testNoSessionNoWarmup() { 64 public void testNoSessionNoWarmup() {
58 Assert.assertEquals( 65 Assert.assertEquals(
59 ClientManager.NO_SESSION_NO_WARMUP, mClientManager.getWarmupStat e(null)); 66 ClientManager.NO_SESSION_NO_WARMUP, mClientManager.getWarmupStat e(null));
60 } 67 }
61 68
62 @Test 69 @Test
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 Assert.assertTrue( 162 Assert.assertTrue(
156 mClientManager.updateStatsAndReturnWhetherAllowed(mSession, mUid , URL, false)); 163 mClientManager.updateStatsAndReturnWhetherAllowed(mSession, mUid , URL, false));
157 mClientManager.setIgnoreFragmentsForSession(mSession, true); 164 mClientManager.setIgnoreFragmentsForSession(mSession, true);
158 Assert.assertEquals(ClientManager.GOOD_PREDICTION, 165 Assert.assertEquals(ClientManager.GOOD_PREDICTION,
159 mClientManager.getPredictionOutcome(mSession, URL + "#fragment") ); 166 mClientManager.getPredictionOutcome(mSession, URL + "#fragment") );
160 } 167 }
161 168
162 @Test 169 @Test
163 @SmallTest 170 @SmallTest
164 public void testPostMessageOriginVerification() { 171 public void testPostMessageOriginVerification() {
165 Assert.assertTrue( 172 final ClientManager cm = mClientManager;
166 mClientManager.newSession(mSession, mUid, null, new PostMessageH andler(mSession))); 173 Assert.assertTrue(cm.newSession(mSession, mUid, null, new PostMessageHan dler(mSession)));
167 // Should always start with no origin. 174 // Should always start with no origin.
168 Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTestin g(mSession)); 175 Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)) ;
169 176
170 // With no prepopulated origins, this verification should fail. 177 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
171 mClientManager.verifyAndInitializeWithPostMessageOriginForSession(mSessi on, Uri.parse(URL)); 178 @Override
172 Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTestin g(mSession)); 179 public void run() {
180 // With no prepopulated origins, this verification should fail.
181 cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, Uri.parse(URL));
182 Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mS ession));
173 183
174 // If there is a prepopulated origin, we should get a synchronous verifi cation. 184 // If there is a prepopulated origin, we should get a synchronou s verification.
175 OriginVerifier.prePopulateVerifiedOriginForTesting( 185 OriginVerifier.addVerifiedOriginForPackage(
176 ContextUtils.getApplicationContext().getPackageName(), Uri.parse (URL)); 186 ContextUtils.getApplicationContext().getPackageName(), U ri.parse(URL));
177 mClientManager.verifyAndInitializeWithPostMessageOriginForSession(mSessi on, Uri.parse(URL)); 187 cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, Uri.parse(URL));
188 }
189 });
190
178 CriteriaHelper.pollUiThread(new Criteria() { 191 CriteriaHelper.pollUiThread(new Criteria() {
179 @Override 192 @Override
180 public boolean isSatisfied() { 193 public boolean isSatisfied() {
181 return mClientManager.getPostMessageOriginForSessionForTesting(m Session) != null; 194 return cm.getPostMessageOriginForSessionForTesting(mSession) != null;
182 } 195 }
183 }); 196 });
184 Uri verifiedOrigin = mClientManager.getPostMessageOriginForSessionForTes ting(mSession);
185 Assert.assertEquals(IntentHandler.ANDROID_APP_REFERRER_SCHEME, verifiedO rigin.getScheme());
186 197
187 // initializeWithPostMessageOriginForSession should override without che cking origin. 198 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
188 mClientManager.initializeWithPostMessageOriginForSession(mSession, null) ; 199 @Override
189 Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTestin g(mSession)); 200 public void run() {
201 Uri verifiedOrigin = cm.getPostMessageOriginForSessionForTesting (mSession);
202 Assert.assertEquals(
203 IntentHandler.ANDROID_APP_REFERRER_SCHEME, verifiedOrigi n.getScheme());
204
205 // initializeWithPostMessageOriginForSession should override wit hout checking
206 // origin.
207 cm.initializeWithPostMessageOriginForSession(mSession, null);
208 Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mS ession));
209 }
210 });
190 } 211 }
191 212
192 @Test 213 @Test
193 @SmallTest 214 @SmallTest
194 public void testPostMessageOriginHttpNotAllowed() { 215 public void testPostMessageOriginHttpNotAllowed() {
195 Assert.assertTrue( 216 final ClientManager cm = mClientManager;
196 mClientManager.newSession(mSession, mUid, null, new PostMessageH andler(mSession))); 217 Assert.assertTrue(cm.newSession(mSession, mUid, null, new PostMessageHan dler(mSession)));
197 // Should always start with no origin. 218 // Should always start with no origin.
198 Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTestin g(mSession)); 219 Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)) ;
199 220
200 // With no prepopulated origins, this verification should fail. 221 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
201 mClientManager.verifyAndInitializeWithPostMessageOriginForSession( 222 @Override
202 mSession, Uri.parse(HTTP_URL)); 223 public void run() {
203 Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTestin g(mSession)); 224 Uri uri = Uri.parse(HTTP_URL);
225 // With no prepopulated origins, this verification should fail.
226 cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, uri);
227 Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mS ession));
204 228
205 // Even if there is a prepopulated origin, non-https origins should get an early return with 229 // Even if there is a prepopulated origin, non-https origins sho uld get an early
206 // false. 230 // return with false.
207 OriginVerifier.prePopulateVerifiedOriginForTesting( 231 OriginVerifier.addVerifiedOriginForPackage(
208 ContextUtils.getApplicationContext().getPackageName(), Uri.parse (HTTP_URL)); 232 ContextUtils.getApplicationContext().getPackageName(), u ri);
209 mClientManager.verifyAndInitializeWithPostMessageOriginForSession( 233 cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, uri);
210 mSession, Uri.parse(HTTP_URL)); 234 Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mS ession));
211 Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTestin g(mSession)); 235 }
236 });
212 } 237 }
213 238
214 @Test 239 @Test
215 @SmallTest 240 @SmallTest
216 public void testFirstLowConfidencePredictionIsNotThrottled() { 241 public void testFirstLowConfidencePredictionIsNotThrottled() {
217 Context context = InstrumentationRegistry.getInstrumentation() 242 Context context = InstrumentationRegistry.getInstrumentation()
218 .getTargetContext() 243 .getTargetContext()
219 .getApplicationContext(); 244 .getApplicationContext();
220 Assert.assertTrue(mClientManager.newSession(mSession, mUid, null, null)) ; 245 Assert.assertTrue(mClientManager.newSession(mSession, mUid, null, null)) ;
221 246
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 316
292 // Low and High confidence, same call. 317 // Low and High confidence, same call.
293 RequestThrottler.purgeAllEntriesForTesting(context); 318 RequestThrottler.purgeAllEntriesForTesting(context);
294 bothDelta = new MetricsUtils.HistogramDelta(name, ClientManager.BOTH); 319 bothDelta = new MetricsUtils.HistogramDelta(name, ClientManager.BOTH);
295 Assert.assertTrue( 320 Assert.assertTrue(
296 mClientManager.updateStatsAndReturnWhetherAllowed(mSession, mUid , URL, true)); 321 mClientManager.updateStatsAndReturnWhetherAllowed(mSession, mUid , URL, true));
297 mClientManager.registerLaunch(mSession, URL); 322 mClientManager.registerLaunch(mSession, URL);
298 Assert.assertEquals(1, bothDelta.getDelta()); 323 Assert.assertEquals(1, bothDelta.getDelta());
299 } 324 }
300 } 325 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698