From 45ee7c2aacb5a60aea2f7a2ff9aef3cf5dd240dc Mon Sep 17 00:00:00 2001 From: Yi-Ling Chuang Date: Mon, 18 Feb 2019 17:39:05 +0800 Subject: [PATCH] Dynamically return the uri of WifiSlice. WifiSlice is used by both ContextualWifiSlice and WifiSlice itself. In contextual homepage, we provide contextual_wifi slice for the homepage. So in our slice pre-check, contextual_wifi slice will gets pinned and bound. But when it comes to the state where wifi is on but not connected, it actually returns wifi slice instead of contextual_wifi slice, which will hit slice not pinned exception as wifi slice never gets pinned. Thus, we have to dynamically return the corresponding uri to avoid this. Fixes: 124627340 Test: robotests Change-Id: I54ba255871628bb8eb814442f990a5d1149461e0 --- src/com/android/settings/wifi/slice/WifiSlice.java | 3 +-- .../settings/wifi/slice/ContextualWifiSliceTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java index b6fc17c24f8..b4b94e10565 100644 --- a/src/com/android/settings/wifi/slice/WifiSlice.java +++ b/src/com/android/settings/wifi/slice/WifiSlice.java @@ -93,8 +93,7 @@ public class WifiSlice implements CustomSliceable { final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction, null /* actionTitle */, isWifiEnabled); - final ListBuilder listBuilder = new ListBuilder(mContext, WIFI_SLICE_URI, - ListBuilder.INFINITY) + final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(new ListBuilder.RowBuilder() .setTitle(title) diff --git a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java index b7f713d7e2f..d681afebf65 100644 --- a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java @@ -35,6 +35,7 @@ import androidx.slice.core.SliceAction; import androidx.slice.widget.SliceLiveData; import com.android.settings.R; +import com.android.settings.slices.CustomSliceRegistry; import org.junit.Before; import org.junit.Test; @@ -97,4 +98,13 @@ public class ContextualWifiSliceTest { R.drawable.ic_settings_wireless); assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString()); } + + @Test + public void getWifiSlice_contextualWifiSlice_shouldReturnContextualWifiSliceUri() { + mWifiSlice.mPreviouslyDisplayed = true; + + final Slice wifiSlice = mWifiSlice.getSlice(); + + assertThat(wifiSlice.getUri()).isEqualTo(CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI); + } }