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

Commit f53f3e6e authored by Weng Su's avatar Weng Su
Browse files

Restrict AddAppNetworksActivity for guest user

- Don't show AddAppNetworksActivity if the user is a guest.

Bug: 224772678
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=AddAppNetworksActivityTest

Change-Id: I17571905f1c4a38db884e6d0523b7f8d668df607
parent 5f50ce04
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -18,11 +18,14 @@ package com.android.settings.wifi.addappnetworks;

import android.app.ActivityManager;
import android.app.IActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
import android.view.Gravity;
import android.view.Window;
@@ -85,7 +88,13 @@ public class AddAppNetworksActivity extends FragmentActivity {
    }

    @VisibleForTesting
    protected boolean showAddNetworksFragment() {
    boolean showAddNetworksFragment() {
        if (isGuestUser(getApplicationContext())) {
            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
            EventLog.writeEvent(0x534e4554, "224772678", -1 /* UID */, "User is a guest");
            return false;
        }

        if (!isAddWifiConfigAllow()) {
            Log.d(TAG, "Not allowed by Enterprise Restriction");
            return false;
@@ -130,4 +139,11 @@ public class AddAppNetworksActivity extends FragmentActivity {
    boolean isAddWifiConfigAllow() {
        return WifiEnterpriseRestrictionUtils.isAddWifiConfigAllowed(this);
    }

    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();
    }
}
+36 −5
Original line number Diff line number Diff line
@@ -18,24 +18,38 @@ package com.android.settings.wifi.addappnetworks;

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

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

import android.annotation.Nullable;
import android.app.IActivityManager;
import android.content.Context;
import android.os.RemoteException;
import android.os.UserManager;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import androidx.test.core.app.ApplicationProvider;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;

@RunWith(RobolectricTestRunner.class)
public class AddAppNetworksActivityTest {

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

@@ -43,10 +57,13 @@ public class AddAppNetworksActivityTest {

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

        mActivity = Robolectric.buildActivity(FakeAddAppNetworksActivity.class).create().get();
        mActivity = spy(Robolectric.buildActivity(FakeAddAppNetworksActivity.class).create().get());
        when(mActivity.getApplicationContext()).thenReturn(mContext);
        mActivity.mActivityManager = mIActivityManager;
        fakeCallingPackage("com.android.settings");
    }

    @Test
@@ -84,6 +101,20 @@ public class AddAppNetworksActivityTest {
        assertThat(mActivity.showAddNetworksFragment()).isFalse();
    }

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

        assertThat(mActivity.showAddNetworksFragment()).isFalse();
    }

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

        assertThat(mActivity.showAddNetworksFragment()).isTrue();
    }

    private void fakeCallingPackage(@Nullable String packageName) {
        try {
            when(mIActivityManager.getLaunchedFromPackage(any())).thenReturn(packageName);