From 4a7690919c65a984d13688c9e8cfa474df1cc321 Mon Sep 17 00:00:00 2001 From: Alan Huang Date: Fri, 21 Oct 2022 01:01:48 +0000 Subject: [PATCH 1/3] Fix the bluetooth extra control slice not visible The bluetooth extra control slice requires a parameter for the page width, but sometimes the onGlobalLayout callback is after the the fragment refresh the preference available state. Thus, setting the extra control slice to invisible, because the uri is not been set yet. So, add the displayPreference call to update the visibility of the slicePreference. Bug: 251450477 Test: manual build and QA automation testing. Change-Id: If7e5f426fc8b1d6887a5977600eaeaf3ede553d1 --- .../settings/bluetooth/BluetoothDeviceDetailsFragment.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java index 999e34da6bf..fa15b5ca336 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java @@ -153,8 +153,11 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment controlUri = null; } } - use(SlicePreferenceController.class).setSliceUri(sliceEnabled ? controlUri : null); - use(SlicePreferenceController.class).onStart(); + final SlicePreferenceController slicePreferenceController = use( + SlicePreferenceController.class); + slicePreferenceController.setSliceUri(sliceEnabled ? controlUri : null); + slicePreferenceController.onStart(); + slicePreferenceController.displayPreference(getPreferenceScreen()); } private final ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener = From ea8a4adc9184206aaf4032bcf289c23057293ef3 Mon Sep 17 00:00:00 2001 From: Simon Wingrove Date: Mon, 17 Oct 2022 15:05:15 +0100 Subject: [PATCH 2/3] Use correct menu key highlights for safety center Adds a menu key for the security deeplink, and adds a remapping to ensure the correct key is used depending on if safety center is available or not. Bug: 253553761 Test: manually Change-Id: I8ed9efd084e1fdfa298be1826a215218c84b1f4a --- AndroidManifest.xml | 2 ++ .../homepage/SettingsHomepageActivity.java | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f51719b4dd3..01d6c9efe92 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1724,6 +1724,8 @@ + Date: Fri, 28 Oct 2022 14:22:00 +0800 Subject: [PATCH 3/3] Remove "Hotspot" key from settings search if not needed - Remove "Hotspot" search key from TetherSettings - Disable page search from WifiTetherSettings Bug: 243876722 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=TetherSettingsTest make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherSettingsTest Change-Id: Ie04027600663321b35d8309c59084f630103e959 --- src/com/android/settings/TetherSettings.java | 4 ++++ .../wifi/tether/WifiTetherSettings.java | 5 +++-- .../android/settings/TetherSettingsTest.java | 13 +++++++++++++ .../wifi/tether/WifiTetherSettingsTest.java | 19 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java index 012996b878d..18c78556acf 100644 --- a/src/com/android/settings/TetherSettings.java +++ b/src/com/android/settings/TetherSettings.java @@ -20,6 +20,7 @@ import static android.net.ConnectivityManager.TETHERING_BLUETOOTH; import static android.net.ConnectivityManager.TETHERING_USB; import static android.net.TetheringManager.TETHERING_ETHERNET; +import static com.android.settings.wifi.WifiUtils.canShowWifiHotspot; import static com.android.settingslib.RestrictedLockUtilsInternal.checkIfUsbDataSignalingIsDisabled; import android.app.Activity; @@ -589,6 +590,9 @@ public class TetherSettings extends RestrictedSettingsFragment if (!TetherUtil.isTetherAvailable(context)) { keys.add(KEY_TETHER_PREFS_SCREEN); + } + + if (!canShowWifiHotspot(context) || !TetherUtil.isTetherAvailable(context)) { keys.add(KEY_WIFI_TETHER); } diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java index 1ff77463460..a7ce16fc413 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java +++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java @@ -41,6 +41,7 @@ import com.android.settings.core.FeatureFlags; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SettingsMainSwitchBar; +import com.android.settings.wifi.WifiUtils; import com.android.settingslib.TetherUtil; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; @@ -292,12 +293,12 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override protected boolean isPageSearchEnabled(Context context) { + if (context == null || !WifiUtils.canShowWifiHotspot(context)) return false; return !FeatureFlagUtils.isEnabled(context, FeatureFlags.TETHER_ALL_IN_ONE); } @Override - public List createPreferenceControllers( - Context context) { + public List createPreferenceControllers(Context context) { return buildPreferenceControllers(context, null /* listener */); } } diff --git a/tests/robotests/src/com/android/settings/TetherSettingsTest.java b/tests/robotests/src/com/android/settings/TetherSettingsTest.java index 71cb9d21045..79814b3b6d2 100644 --- a/tests/robotests/src/com/android/settings/TetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/TetherSettingsTest.java @@ -20,6 +20,8 @@ import static android.content.Intent.ACTION_MEDIA_SHARED; import static android.content.Intent.ACTION_MEDIA_UNSHARED; import static android.hardware.usb.UsbManager.ACTION_USB_STATE; +import static com.android.settings.wifi.WifiUtils.setCanShowWifiHotspotCached; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -93,6 +95,7 @@ public class TetherSettingsTest { any(String.class), anyInt(), any(UserHandle.class)); setupIsTetherAvailable(true); + setCanShowWifiHotspotCached(true); when(mTetheringManager.getTetherableUsbRegexs()).thenReturn(new String[0]); when(mTetheringManager.getTetherableBluetoothRegexs()).thenReturn(new String[0]); @@ -123,6 +126,16 @@ public class TetherSettingsTest { assertThat(niks).contains(TetherSettings.KEY_WIFI_TETHER); } + @Test + public void getNonIndexableKeys_canNotShowWifiHotspot_containsWifiTether() { + setCanShowWifiHotspotCached(false); + setupIsTetherAvailable(true); + + List keys = TetherSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); + + assertThat(keys).contains(TetherSettings.KEY_WIFI_TETHER); + } + @Test public void testTetherNonIndexableKeys_usbNotAvailable_usbKeyReturned() { when(mTetheringManager.getTetherableUsbRegexs()).thenReturn(new String[0]); diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java index 6d3b879188e..7f8a06d1521 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java @@ -37,6 +37,7 @@ import android.net.TetheringManager; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.UserManager; +import android.util.FeatureFlagUtils; import android.widget.TextView; import androidx.fragment.app.FragmentActivity; @@ -44,6 +45,7 @@ import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; +import com.android.settings.core.FeatureFlags; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.shadow.ShadowFragment; @@ -93,6 +95,7 @@ public class WifiTetherSettingsTest { @Before public void setUp() { + FeatureFlagUtils.setEnabled(mContext, FeatureFlags.TETHER_ALL_IN_ONE, false); setCanShowWifiHotspotCached(true); doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); doReturn(mConnectivityManager) @@ -218,6 +221,22 @@ public class WifiTetherSettingsTest { assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY); } + @Test + public void isPageSearchEnabled_canShowWifiHotspot_returnTrue() { + setCanShowWifiHotspotCached(true); + + assertThat(WifiTetherSettings.SEARCH_INDEX_DATA_PROVIDER.isPageSearchEnabled(mContext)) + .isTrue(); + } + + @Test + public void isPageSearchEnabled_canNotShowWifiHotspot_returnFalse() { + setCanShowWifiHotspotCached(false); + + assertThat(WifiTetherSettings.SEARCH_INDEX_DATA_PROVIDER.isPageSearchEnabled(mContext)) + .isFalse(); + } + private void spyWifiTetherSettings() { mWifiTetherSettings = spy(new WifiTetherSettings(mWifiRestriction)); final FragmentActivity activity = mock(FragmentActivity.class);