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

Commit 2d0e1dc7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Restrict AddAppNetworksActivity for guest user" into tm-qpr-dev

parents 16dfffd6 f53f3e6e
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -18,11 +18,14 @@ package com.android.settings.wifi.addappnetworks;


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


    @VisibleForTesting
    @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()) {
        if (!isAddWifiConfigAllow()) {
            Log.d(TAG, "Not allowed by Enterprise Restriction");
            Log.d(TAG, "Not allowed by Enterprise Restriction");
            return false;
            return false;
@@ -130,4 +139,11 @@ public class AddAppNetworksActivity extends FragmentActivity {
    boolean isAddWifiConfigAllow() {
    boolean isAddWifiConfigAllow() {
        return WifiEnterpriseRestrictionUtils.isAddWifiConfigAllowed(this);
        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 Original line 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 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.annotation.Nullable;
import android.app.IActivityManager;
import android.app.IActivityManager;
import android.content.Context;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.UserManager;


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


import org.junit.Before;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.Mock;
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.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RobolectricTestRunner;


@RunWith(RobolectricTestRunner.class)
@RunWith(RobolectricTestRunner.class)
public class AddAppNetworksActivityTest {
public class AddAppNetworksActivityTest {


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


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


    @Before
    @Before
    public void setUp() {
    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;
        mActivity.mActivityManager = mIActivityManager;
        fakeCallingPackage("com.android.settings");
    }
    }


    @Test
    @Test
@@ -84,6 +101,20 @@ public class AddAppNetworksActivityTest {
        assertThat(mActivity.showAddNetworksFragment()).isFalse();
        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) {
    private void fakeCallingPackage(@Nullable String packageName) {
        try {
        try {
            when(mIActivityManager.getLaunchedFromPackage(any())).thenReturn(packageName);
            when(mIActivityManager.getLaunchedFromPackage(any())).thenReturn(packageName);