Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbeed148 authored by Weng Su's avatar Weng Su Committed by Android (Google) Code Review
Browse files

Merge "Get app label by launched package" into tm-dev

parents eb254aa0 25b0db21
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -20,26 +20,30 @@ import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.WindowManager;

import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentActivity;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.wifi.WifiPermissionChecker;

/**
 * This activity requests users permission to allow scanning even when Wi-Fi is turned off
 */
public class WifiScanModeActivity extends FragmentActivity {
    private DialogFragment mDialog;
    private String mApp;
    @VisibleForTesting
    String mApp;
    @VisibleForTesting
    WifiPermissionChecker mWifiPermissionChecker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -50,13 +54,7 @@ public class WifiScanModeActivity extends FragmentActivity {
        if (savedInstanceState == null) {
            if (intent != null && WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE
                    .equals(intent.getAction())) {
                ApplicationInfo ai;
                mApp = getCallingPackage();
                try {
                    PackageManager pm = getPackageManager();
                    ai = pm.getApplicationInfo(mApp, 0);
                    mApp = (String)pm.getApplicationLabel(ai);
                } catch (PackageManager.NameNotFoundException e) { }
                refreshAppLabel();
            } else {
                finish();
                return;
@@ -67,6 +65,19 @@ public class WifiScanModeActivity extends FragmentActivity {
        createDialog();
    }

    @VisibleForTesting
    void refreshAppLabel() {
        if (mWifiPermissionChecker == null) {
            mWifiPermissionChecker = new WifiPermissionChecker(this);
        }
        String packageName = mWifiPermissionChecker.getLaunchedPackage();
        if (TextUtils.isEmpty(packageName)) {
            mApp = null;
            return;
        }
        mApp = Utils.getApplicationLabel(getApplicationContext(), packageName).toString();
    }

    private void createDialog() {
        if (mDialog == null) {
            mDialog = AlertDialogFragment.newInstance(mApp);
+59 −0
Original line number Diff line number Diff line
@@ -16,16 +16,75 @@

package com.android.settings.wifi;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.text.TextUtils;

import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.wifi.WifiPermissionChecker;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowUtils.class})
public class WifiScanModeActivityTest {

    static final String LAUNCHED_PACKAGE = "launched_package";
    static final String APP_LABEL = "app_label";

    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Mock
    WifiPermissionChecker mWifiPermissionChecker;

    WifiScanModeActivity mActivity;

    @Before
    public void setUp() {
        mActivity = spy(Robolectric.setupActivity(WifiScanModeActivity.class));
        mActivity.mWifiPermissionChecker = mWifiPermissionChecker;
    }

    @After
    public void tearDown() {
        ShadowUtils.reset();
    }

    @Test
    public void launchActivity_noIntentAction_shouldNotFatalException() {
        WifiScanModeActivity wifiScanModeActivity =
                Robolectric.setupActivity(WifiScanModeActivity.class);
    }

    @Test
    public void refreshAppLabel_noPackageName_shouldNotFatalException() {
        when(mWifiPermissionChecker.getLaunchedPackage()).thenReturn(null);

        mActivity.refreshAppLabel();

        assertThat(TextUtils.isEmpty(mActivity.mApp)).isTrue();
    }

    @Test
    public void refreshAppLabel_hasPackageName_shouldHasAppLabel() {
        ShadowUtils.setApplicationLabel(LAUNCHED_PACKAGE, APP_LABEL);
        when(mWifiPermissionChecker.getLaunchedPackage()).thenReturn(LAUNCHED_PACKAGE);

        mActivity.refreshAppLabel();

        assertThat(mActivity.mApp).isEqualTo(APP_LABEL);
    }
}