Add Enterprise restriction check for Wi-Fi QR code sharing

- In the Internet Picker, if a user tries to long press on the SSIDs
   that cannot be shared, the “Share” option should disappear.

Bug: 203169712
Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest
Change-Id: Iea5a25ba80f29be59c39988bba0dcc4689585461
This commit is contained in:
changbetty
2022-01-06 07:56:40 +00:00
parent 72f9e8eaf0
commit c13303c585
2 changed files with 52 additions and 1 deletions

View File

@@ -566,7 +566,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
} }
if (mSelectedWifiEntry.canDisconnect()) { if (mSelectedWifiEntry.canDisconnect()) {
if (mSelectedWifiEntry.canShare()) {
menu.add(Menu.NONE, MENU_ID_SHARE, 0 /* order */, R.string.share); menu.add(Menu.NONE, MENU_ID_SHARE, 0 /* order */, R.string.share);
}
menu.add(Menu.NONE, MENU_ID_DISCONNECT, 1 /* order */, menu.add(Menu.NONE, MENU_ID_DISCONNECT, 1 /* order */,
R.string.wifi_disconnect_button_text); R.string.wifi_disconnect_button_text);
} }

View File

@@ -328,6 +328,55 @@ public class NetworkProviderSettingsTest {
anyInt()); anyInt());
} }
@Test
public void onCreateContextMenu_canShare_shouldHaveShareMenuForConnectedWifiEntry() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(activity.getApplicationContext()).thenReturn(mContext);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
final WifiEntry wifiEntry = mock(WifiEntry.class);
when(wifiEntry.canDisconnect()).thenReturn(true);
when(wifiEntry.canShare()).thenReturn(true);
when(wifiEntry.canForget()).thenReturn(true);
when(wifiEntry.isSaved()).thenReturn(true);
when(wifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
final LongPressWifiEntryPreference connectedWifiEntryPreference =
mNetworkProviderSettings.createLongPressWifiEntryPreference(wifiEntry);
final View view = mock(View.class);
when(view.getTag()).thenReturn(connectedWifiEntryPreference);
final ContextMenu menu = mock(ContextMenu.class);
mNetworkProviderSettings.onCreateContextMenu(menu, view, null /* info */);
verify(menu).add(anyInt(), eq(NetworkProviderSettings.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);
final WifiEntry wifiEntry = mock(WifiEntry.class);
when(wifiEntry.canDisconnect()).thenReturn(true);
when(wifiEntry.canShare()).thenReturn(false);
when(wifiEntry.canForget()).thenReturn(true);
when(wifiEntry.isSaved()).thenReturn(true);
when(wifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
final LongPressWifiEntryPreference connectedWifiEntryPreference =
mNetworkProviderSettings.createLongPressWifiEntryPreference(wifiEntry);
final View view = mock(View.class);
when(view.getTag()).thenReturn(connectedWifiEntryPreference);
final ContextMenu menu = mock(ContextMenu.class);
mNetworkProviderSettings.onCreateContextMenu(menu, view, null /* info */);
verify(menu, never())
.add(anyInt(), eq(NetworkProviderSettings.MENU_ID_SHARE), anyInt(), anyInt());
}
@Test @Test
public void onWifiEntriesChanged_shouldChangeNextButtonState() { public void onWifiEntriesChanged_shouldChangeNextButtonState() {
mNetworkProviderSettings.onWifiEntriesChanged(); mNetworkProviderSettings.onWifiEntriesChanged();