1 // Copyright 2020 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.externalnav; 6 7 import android.content.Intent; 8 import android.net.Uri; 9 10 import androidx.test.filters.SmallTest; 11 12 import org.junit.After; 13 import org.junit.Assert; 14 import org.junit.Test; 15 import org.junit.runner.RunWith; 16 17 import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler.RequestMetadata; 18 import org.chromium.chrome.test.ChromeJUnit4ClassRunner; 19 20 /** 21 * Instrumentation tests for {@link IntentWithRequestMetadataHandler}. 22 */ 23 @RunWith(ChromeJUnit4ClassRunner.class) 24 public class IntentWithRequestMetadataHandlerTest { 25 @After tearDown()26 public void tearDown() { 27 IntentWithRequestMetadataHandler.getInstance().clear(); 28 } 29 30 @Test 31 @SmallTest testCanUseRequestMetadataTokenOnlyOnce()32 public void testCanUseRequestMetadataTokenOnlyOnce() { 33 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://abc")); 34 IntentWithRequestMetadataHandler.getInstance().onNewIntentWithRequestMetadata( 35 intent, new RequestMetadata(true, true, null)); 36 Assert.assertTrue( 37 intent.hasExtra(IntentWithRequestMetadataHandler.EXTRA_REQUEST_METADATA_TOKEN)); 38 RequestMetadata metadata = 39 IntentWithRequestMetadataHandler.getInstance().getRequestMetadataAndClear(intent); 40 Assert.assertTrue(metadata.hasUserGesture()); 41 Assert.assertTrue(metadata.isRendererInitiated()); 42 Assert.assertNull( 43 IntentWithRequestMetadataHandler.getInstance().getRequestMetadataAndClear(intent)); 44 } 45 46 @Test 47 @SmallTest testModifiedRequestMetadataToken()48 public void testModifiedRequestMetadataToken() { 49 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://abc")); 50 IntentWithRequestMetadataHandler.getInstance().onNewIntentWithRequestMetadata( 51 intent, new RequestMetadata(true, true, null)); 52 intent.setData(Uri.parse("content://xyz")); 53 Assert.assertNull( 54 IntentWithRequestMetadataHandler.getInstance().getRequestMetadataAndClear(intent)); 55 } 56 57 @Test 58 @SmallTest testPreviousRequestMetadataToken()59 public void testPreviousRequestMetadataToken() { 60 Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("content://abc")); 61 IntentWithRequestMetadataHandler.getInstance().onNewIntentWithRequestMetadata( 62 intent1, new RequestMetadata(true, true, null)); 63 Intent intent2 = new Intent(Intent.ACTION_VIEW, Uri.parse("content://xyz")); 64 IntentWithRequestMetadataHandler.getInstance().onNewIntentWithRequestMetadata( 65 intent2, new RequestMetadata(true, false, null)); 66 Assert.assertNull( 67 IntentWithRequestMetadataHandler.getInstance().getRequestMetadataAndClear(intent1)); 68 } 69 } 70