Restrict secondary users to share Wi-Fi network am: 4c4a1f58c1 am: a30d123e12

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/17397180

Change-Id: If2619c93286363f268bb7021af1037195fcba4be
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Weng Su
2022-03-30 06:26:59 +00:00
committed by Automerger Merge Worker
2 changed files with 127 additions and 7 deletions

View File

@@ -15,6 +15,9 @@
*/
package com.android.settings.network;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_DISCONNECT;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_FORGET;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_SHARE;
import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT;
import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY;
@@ -78,6 +81,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -109,6 +113,8 @@ public class NetworkProviderSettingsTest {
@Mock
private WifiPickerTracker mMockWifiPickerTracker;
@Mock
private WifiEntry mWifiEntry;
@Mock
private PreferenceManager mPreferenceManager;
@Mock
private InternetResetHelper mInternetResetHelper;
@@ -117,6 +123,8 @@ public class NetworkProviderSettingsTest {
@Mock
private LayoutPreference mResetInternetPreference;
@Mock
private ContextMenu mContextMenu;
@Mock
private MenuItem mMenuItem;
@Mock
InternetUpdater mInternetUpdater;
@@ -322,12 +330,54 @@ public class NetworkProviderSettingsTest {
final View view = mock(View.class);
when(view.getTag()).thenReturn(connectedWifiEntryPreference);
final ContextMenu menu = mock(ContextMenu.class);
mNetworkProviderSettings.onCreateContextMenu(menu, view, null /* info */);
mNetworkProviderSettings.onCreateContextMenu(mContextMenu, view, null /* info */);
verify(menu).add(anyInt(), eq(NetworkProviderSettings.MENU_ID_FORGET), anyInt(), anyInt());
verify(menu).add(anyInt(), eq(NetworkProviderSettings.MENU_ID_DISCONNECT), anyInt(),
anyInt());
verify(mContextMenu).add(anyInt(), eq(MENU_ID_FORGET), anyInt(), anyInt());
verify(mContextMenu).add(anyInt(), eq(MENU_ID_DISCONNECT), anyInt(), anyInt());
}
@Test
public void onCreateContextMenu_canShare_shouldHaveShareMenuForConnectedWifiEntry() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(activity.getApplicationContext()).thenReturn(mContext);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mWifiEntry.canDisconnect()).thenReturn(true);
when(mWifiEntry.canShare()).thenReturn(true);
when(mWifiEntry.canForget()).thenReturn(true);
when(mWifiEntry.isSaved()).thenReturn(true);
when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
final LongPressWifiEntryPreference connectedWifiEntryPreference =
mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);
final View view = mock(View.class);
when(view.getTag()).thenReturn(connectedWifiEntryPreference);
mNetworkProviderSettings.onCreateContextMenu(mContextMenu, view, null /* info */);
verify(mContextMenu).add(anyInt(), eq(MENU_ID_SHARE), anyInt(), anyInt());
}
@Test
public void onCreateContextMenu_canNotShare_shouldDisappearShareMenuForConnectedWifiEntry() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(activity.getApplicationContext()).thenReturn(mContext);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mWifiEntry.canDisconnect()).thenReturn(true);
when(mWifiEntry.canShare()).thenReturn(false);
when(mWifiEntry.canForget()).thenReturn(true);
when(mWifiEntry.isSaved()).thenReturn(true);
when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
final LongPressWifiEntryPreference connectedWifiEntryPreference =
mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry);
final View view = mock(View.class);
when(view.getTag()).thenReturn(connectedWifiEntryPreference);
mNetworkProviderSettings.onCreateContextMenu(mContextMenu, view, null /* info */);
verify(mContextMenu, never()).add(anyInt(), eq(MENU_ID_SHARE), anyInt(), anyInt());
}
@Test
@@ -602,6 +652,46 @@ public class NetworkProviderSettingsTest {
verify(mAirplaneModeEnabler).stop();
}
@Test
public void addShareMenuIfSuitable_isAdmin_addMenu() {
mNetworkProviderSettings.mIsAdmin = true;
Mockito.reset(mContextMenu);
mNetworkProviderSettings.addShareMenuIfSuitable(mContextMenu);
verify(mContextMenu).add(anyInt(), eq(MENU_ID_SHARE), anyInt(), anyInt());
}
@Test
public void addShareMenuIfSuitable_isNotAdmin_notAddMenu() {
mNetworkProviderSettings.mIsAdmin = false;
Mockito.reset(mContextMenu);
mNetworkProviderSettings.addShareMenuIfSuitable(mContextMenu);
verify(mContextMenu, never()).add(anyInt(), eq(MENU_ID_SHARE), anyInt(), anyInt());
}
@Test
public void addForgetMenuIfSuitable_isAdmin_addMenu() {
mNetworkProviderSettings.mIsAdmin = true;
Mockito.reset(mContextMenu);
mNetworkProviderSettings.addForgetMenuIfSuitable(mContextMenu);
verify(mContextMenu).add(anyInt(), eq(MENU_ID_FORGET), anyInt(), anyInt());
}
@Test
public void addForgetMenuIfSuitable_isNotAdmin_notAddMenu() {
mNetworkProviderSettings.mIsAdmin = false;
Mockito.reset(mContextMenu);
mNetworkProviderSettings.addForgetMenuIfSuitable(mContextMenu);
verify(mContextMenu, never()).add(anyInt(), eq(MENU_ID_FORGET), anyInt(), anyInt());
}
@Implements(PreferenceFragmentCompat.class)
public static class ShadowPreferenceFragmentCompat {