Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java |
index 3ce29345573e08a94f39fc991685ee87d16dcd85..34e16276ceceaf2b8e475cfcc34e63c31237eed8 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java |
@@ -18,6 +18,7 @@ import org.junit.Test; |
import org.junit.runner.RunWith; |
import org.chromium.base.ContextUtils; |
+import org.chromium.base.ThreadUtils; |
import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.base.test.BaseJUnit4ClassRunner; |
import org.chromium.base.test.util.MetricsUtils; |
@@ -50,6 +51,12 @@ public class ClientManagerTest { |
RequestThrottler.purgeAllEntriesForTesting(context); |
mClientManager = new ClientManager(context); |
RecordHistogram.initialize(); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ OriginVerifier.reset(); |
+ } |
+ }); |
} |
@Test |
@@ -162,53 +169,71 @@ public class ClientManagerTest { |
@Test |
@SmallTest |
public void testPostMessageOriginVerification() { |
- Assert.assertTrue( |
- mClientManager.newSession(mSession, mUid, null, new PostMessageHandler(mSession))); |
+ final ClientManager cm = mClientManager; |
+ Assert.assertTrue(cm.newSession(mSession, mUid, null, new PostMessageHandler(mSession))); |
// Should always start with no origin. |
- Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTesting(mSession)); |
+ Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)); |
- // With no prepopulated origins, this verification should fail. |
- mClientManager.verifyAndInitializeWithPostMessageOriginForSession(mSession, Uri.parse(URL)); |
- Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTesting(mSession)); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ // With no prepopulated origins, this verification should fail. |
+ cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, Uri.parse(URL)); |
+ Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)); |
+ |
+ // If there is a prepopulated origin, we should get a synchronous verification. |
+ OriginVerifier.addVerifiedOriginForPackage( |
+ ContextUtils.getApplicationContext().getPackageName(), Uri.parse(URL)); |
+ cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, Uri.parse(URL)); |
+ } |
+ }); |
- // If there is a prepopulated origin, we should get a synchronous verification. |
- OriginVerifier.prePopulateVerifiedOriginForTesting( |
- ContextUtils.getApplicationContext().getPackageName(), Uri.parse(URL)); |
- mClientManager.verifyAndInitializeWithPostMessageOriginForSession(mSession, Uri.parse(URL)); |
CriteriaHelper.pollUiThread(new Criteria() { |
@Override |
public boolean isSatisfied() { |
- return mClientManager.getPostMessageOriginForSessionForTesting(mSession) != null; |
+ return cm.getPostMessageOriginForSessionForTesting(mSession) != null; |
} |
}); |
- Uri verifiedOrigin = mClientManager.getPostMessageOriginForSessionForTesting(mSession); |
- Assert.assertEquals(IntentHandler.ANDROID_APP_REFERRER_SCHEME, verifiedOrigin.getScheme()); |
- // initializeWithPostMessageOriginForSession should override without checking origin. |
- mClientManager.initializeWithPostMessageOriginForSession(mSession, null); |
- Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTesting(mSession)); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ Uri verifiedOrigin = cm.getPostMessageOriginForSessionForTesting(mSession); |
+ Assert.assertEquals( |
+ IntentHandler.ANDROID_APP_REFERRER_SCHEME, verifiedOrigin.getScheme()); |
+ |
+ // initializeWithPostMessageOriginForSession should override without checking |
+ // origin. |
+ cm.initializeWithPostMessageOriginForSession(mSession, null); |
+ Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)); |
+ } |
+ }); |
} |
@Test |
@SmallTest |
public void testPostMessageOriginHttpNotAllowed() { |
- Assert.assertTrue( |
- mClientManager.newSession(mSession, mUid, null, new PostMessageHandler(mSession))); |
+ final ClientManager cm = mClientManager; |
+ Assert.assertTrue(cm.newSession(mSession, mUid, null, new PostMessageHandler(mSession))); |
// Should always start with no origin. |
- Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTesting(mSession)); |
- |
- // With no prepopulated origins, this verification should fail. |
- mClientManager.verifyAndInitializeWithPostMessageOriginForSession( |
- mSession, Uri.parse(HTTP_URL)); |
- Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTesting(mSession)); |
- |
- // Even if there is a prepopulated origin, non-https origins should get an early return with |
- // false. |
- OriginVerifier.prePopulateVerifiedOriginForTesting( |
- ContextUtils.getApplicationContext().getPackageName(), Uri.parse(HTTP_URL)); |
- mClientManager.verifyAndInitializeWithPostMessageOriginForSession( |
- mSession, Uri.parse(HTTP_URL)); |
- Assert.assertNull(mClientManager.getPostMessageOriginForSessionForTesting(mSession)); |
+ Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)); |
+ |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ Uri uri = Uri.parse(HTTP_URL); |
+ // With no prepopulated origins, this verification should fail. |
+ cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, uri); |
+ Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)); |
+ |
+ // Even if there is a prepopulated origin, non-https origins should get an early |
+ // return with false. |
+ OriginVerifier.addVerifiedOriginForPackage( |
+ ContextUtils.getApplicationContext().getPackageName(), uri); |
+ cm.verifyAndInitializeWithPostMessageOriginForSession(mSession, uri); |
+ Assert.assertNull(cm.getPostMessageOriginForSessionForTesting(mSession)); |
+ } |
+ }); |
} |
@Test |