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

Commit 939e4c36 authored by Weng Su's avatar Weng Su Committed by Automerger Merge Worker
Browse files

Merge "Get app label by launched package" into tm-dev am: bbeed148 am: 1a2590eb

parents 57553815 1a2590eb
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);
    }
}