chromium/chrome/android/javatests/src/org/chromium/chrome/browser/vr/rules/CustomTabActivityArTestRule.java

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.vr.rules;

import androidx.test.core.app.ApplicationProvider;

import org.junit.runner.Description;
import org.junit.runners.model.Statement;

import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule;
import org.chromium.chrome.browser.customtabs.CustomTabsIntentTestUtils;
import org.chromium.chrome.browser.vr.rules.XrActivityRestriction.SupportedActivity;
import org.chromium.chrome.browser.vr.util.ArTestRuleUtils;

/**
 * AR extension of CustomTabActivityTestRule. Applies CustomTabActivityTestRule then opens up a
 * CustomTabActivity to a blank page while performing some additional AR-only setup.
 */
public class CustomTabActivityArTestRule extends CustomTabActivityTestRule implements ArTestRule {
    @Override
    public Statement apply(final Statement base, final Description desc) {
        return super.apply(
                new Statement() {
                    @Override
                    public void evaluate() throws Throwable {
                        ArTestRuleUtils.evaluateArTestRuleImpl(
                                base,
                                desc,
                                CustomTabActivityArTestRule.this,
                                () -> {
                                    startCustomTabActivityWithIntent(
                                            CustomTabsIntentTestUtils.createMinimalCustomTabIntent(
                                                    ApplicationProvider.getApplicationContext(),
                                                    "about:blank"));
                                });
                    }
                },
                desc);
    }

    @Override
    public @SupportedActivity int getRestriction() {
        return SupportedActivity.CCT;
    }
}