chromium/chrome/test/android/javatests/src/org/chromium/chrome/test/pagecontroller/rules/ChromeUiApplicationTestRule.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.test.pagecontroller.rules;

import androidx.test.core.app.ApplicationProvider;
import androidx.test.platform.app.InstrumentationRegistry;

import org.junit.rules.ExternalResource;

/** Test rule that provides access to a Chrome application. */
public class ChromeUiApplicationTestRule extends ExternalResource {
    public static final String PACKAGE_NAME_ARG =
            "org.chromium.chrome.test.pagecontroller.rules."
                    + "ChromeUiApplicationTestRule.PackageUnderTest";

    private String mPackageName;

    public String getApplicationPackage() {
        return mPackageName;
    }

    @Override
    protected void before() throws Throwable {
        super.before();
        mPackageName = InstrumentationRegistry.getArguments().getString(PACKAGE_NAME_ARG);
        // If the runner didn't pass the package name under test to us, then we can assume
        // that the target package name provided in the AndroidManifest is the app-under-test.
        if (mPackageName == null) {
            mPackageName = ApplicationProvider.getApplicationContext().getPackageName();
        }
    }
}