From c13303c585ac7f0ae8d2e38a5ff2e36b563e240c Mon Sep 17 00:00:00 2001 From: changbetty Date: Thu, 6 Jan 2022 07:56:40 +0000 Subject: [PATCH] Add Enterprise restriction check for Wi-Fi QR code sharing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .../network/NetworkProviderSettings.java | 4 +- .../network/NetworkProviderSettingsTest.java | 49 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 008293462ec..e0f818168d8 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -566,7 +566,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } if (mSelectedWifiEntry.canDisconnect()) { - menu.add(Menu.NONE, MENU_ID_SHARE, 0 /* order */, R.string.share); + if (mSelectedWifiEntry.canShare()) { + menu.add(Menu.NONE, MENU_ID_SHARE, 0 /* order */, R.string.share); + } menu.add(Menu.NONE, MENU_ID_DISCONNECT, 1 /* order */, R.string.wifi_disconnect_button_text); } diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java index f3e3674bda7..999487659cb 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java @@ -328,6 +328,55 @@ public class NetworkProviderSettingsTest { 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 public void onWifiEntriesChanged_shouldChangeNextButtonState() { mNetworkProviderSettings.onWifiEntriesChanged();