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

Commit 0553d8fb authored by Weng Su's avatar Weng Su Committed by Automerger Merge Worker
Browse files

Merge "Restrict WifiScanModeActivity for guest user" into tm-qpr-dev am: b4ad581f am: 17070ee0

parents 99de6b66 17070ee0
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -18,11 +18,15 @@ package com.android.settings.wifi;

import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
import android.view.WindowManager;

import androidx.annotation.VisibleForTesting;
@@ -39,6 +43,7 @@ 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 static final String TAG = "WifiScanModeActivity";
    private DialogFragment mDialog;
    @VisibleForTesting
    String mApp;
@@ -78,7 +83,15 @@ public class WifiScanModeActivity extends FragmentActivity {
        mApp = Utils.getApplicationLabel(getApplicationContext(), packageName).toString();
    }

    private void createDialog() {
    @VisibleForTesting
    void createDialog() {
        if (isGuestUser(getApplicationContext())) {
            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi Scan Mode!");
            EventLog.writeEvent(0x534e4554, "235601169", -1 /* UID */, "User is a guest");
            finish();
            return;
        }

        if (mDialog == null) {
            mDialog = AlertDialogFragment.newInstance(mApp);
            mDialog.show(getSupportFragmentManager(), "dialog");
@@ -169,4 +182,11 @@ public class WifiScanModeActivity extends FragmentActivity {
            ((WifiScanModeActivity) getActivity()).doNegativeClick();
        }
    }

    private static boolean isGuestUser(Context context) {
        if (context == null) return false;
        final UserManager userManager = context.getSystemService(UserManager.class);
        if (userManager == null) return false;
        return userManager.isGuestUser();
    }
}
+33 −0
Original line number Diff line number Diff line
@@ -18,11 +18,17 @@ package com.android.settings.wifi;

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

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

import android.content.Context;
import android.os.UserManager;
import android.text.TextUtils;

import androidx.test.core.app.ApplicationProvider;

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

@@ -32,6 +38,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
@@ -47,6 +54,10 @@ public class WifiScanModeActivityTest {

    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Spy
    Context mContext = ApplicationProvider.getApplicationContext();
    @Mock
    UserManager mUserManager;
    @Mock
    WifiPermissionChecker mWifiPermissionChecker;

@@ -54,7 +65,11 @@ public class WifiScanModeActivityTest {

    @Before
    public void setUp() {
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.isGuestUser()).thenReturn(false);

        mActivity = spy(Robolectric.setupActivity(WifiScanModeActivity.class));
        when(mActivity.getApplicationContext()).thenReturn(mContext);
        mActivity.mWifiPermissionChecker = mWifiPermissionChecker;
    }

@@ -87,4 +102,22 @@ public class WifiScanModeActivityTest {

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

    @Test
    public void createDialog_isNotGuestUser_shouldNotFinishDialog() {
        when(mUserManager.isGuestUser()).thenReturn(false);

        mActivity.createDialog();

        verify(mActivity, never()).finish();
    }

    @Test
    public void createDialog_isGuestUser_shouldFinishDialog() {
        when(mUserManager.isGuestUser()).thenReturn(true);

        mActivity.createDialog();

        verify(mActivity).finish();
    }
}