1d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal/*
2ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikas * Copyright 2018 The Android Open Source Project
3d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal *
4d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * Licensed under the Apache License, Version 2.0 (the "License");
5d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * you may not use this file except in compliance with the License.
6d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * You may obtain a copy of the License at
7d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal *
8d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal *      http://www.apache.org/licenses/LICENSE-2.0
9d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal *
10d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * Unless required by applicable law or agreed to in writing, software
11d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * distributed under the License is distributed on an "AS IS" BASIS,
12d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * See the License for the specific language governing permissions and
14d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * limitations under the License.
15d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal */
16d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.browser.customtabs;
18d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
19fa39e2bca1b284ad7c931d9194287770b7b507faAurimas Liutikasimport static org.junit.Assert.assertEquals;
20d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport static org.junit.Assert.assertNotNull;
21d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport static org.junit.Assert.assertTrue;
22d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
23d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport android.content.ActivityNotFoundException;
24d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport android.content.Intent;
25d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport android.net.Uri;
26d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport android.support.test.filters.SmallTest;
27d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport android.support.test.rule.ActivityTestRule;
28d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport android.support.test.runner.AndroidJUnit4;
2988f23f4c3c9d439cf8b300195962cb9a4e5f3165Aurimas Liutikas
30ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.core.app.BundleCompat;
31d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
32d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport org.junit.Rule;
33d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport org.junit.Test;
34d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalimport org.junit.runner.RunWith;
35d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
36d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal/**
37d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal * Tests for TrustedWebUtils.
38d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal */
39d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal@RunWith(AndroidJUnit4.class)
40d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal@SmallTest
41d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysalpublic class TrustedWebUtilsTest {
42d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    @Rule
43d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    public final ActivityTestRule<TestActivity> mActivityTestRule;
44d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
45d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    public TrustedWebUtilsTest() {
46fa39e2bca1b284ad7c931d9194287770b7b507faAurimas Liutikas        mActivityTestRule = new ActivityTestRule<>(TestActivity.class);
47d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    }
48d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
49d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    @Test(expected = IllegalArgumentException.class)
50d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    public void testTrustedWebIntentRequiresValidSession() {
51d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
52d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        TrustedWebUtils.launchAsTrustedWebActivity(
53d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal                mActivityTestRule.getActivity(), customTabsIntent, Uri.EMPTY);
54d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    }
55d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal
56d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    @Test(expected = ActivityNotFoundException.class)
57d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    public void testTrustedWebIntentContainsRequiredExtra() {
58d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        CustomTabsSession mockSession = CustomTabsSession.createMockSessionForTesting(
59d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal                mActivityTestRule.getActivity().getComponentName());
60d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(mockSession).build();
61d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        TrustedWebUtils.launchAsTrustedWebActivity(
62d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal                mActivityTestRule.getActivity(), customTabsIntent, Uri.EMPTY);
63d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        assertNotNull(BundleCompat.getBinder(
64d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal                customTabsIntent.intent.getExtras(), CustomTabsIntent.EXTRA_SESSION));
65d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        assertEquals(customTabsIntent.intent.getAction(), Intent.ACTION_VIEW);
66d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal        assertTrue(customTabsIntent.intent.hasExtra(
67d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal                TrustedWebUtils.EXTRA_LAUNCH_AS_TRUSTED_WEB_ACTIVITY));
68d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal    }
69d3a61406d0204250d60c140d435f6848771bc740Yusuf Ozuysal}
70