diff --git a/src/com/android/settings/slices/CustomSliceRegistry.java b/src/com/android/settings/slices/CustomSliceRegistry.java index 12e7b48ffb2..ebdcdbf8662 100644 --- a/src/com/android/settings/slices/CustomSliceRegistry.java +++ b/src/com/android/settings/slices/CustomSliceRegistry.java @@ -322,7 +322,7 @@ public class CustomSliceRegistry { } public static Class getSliceClassByUri(Uri uri) { - return sUriToSlice.get(uri); + return sUriToSlice.get(removeParameterFromUri(uri)); } public static Uri removeParameterFromUri(Uri uri) { diff --git a/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java b/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java index b5638684e63..d483f9e7842 100644 --- a/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java +++ b/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java @@ -37,6 +37,9 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class SpecialCaseSliceManagerTest { + private final String FAKE_PARAMETER_KEY = "fake_parameter_key"; + private final String FAKE_PARAMETER_VALUE = "fake_value"; + private Context mContext; @Before @@ -54,6 +57,20 @@ public class SpecialCaseSliceManagerTest { assertThat(sliceable).isInstanceOf(FakeSliceable.class); } + @Test + public void getSliceableFromUriWithParameter_returnsCorrectObject() { + final Uri parameterUri = FakeSliceable.URI + .buildUpon() + .clearQuery() + .appendQueryParameter(FAKE_PARAMETER_KEY, FAKE_PARAMETER_VALUE) + .build(); + + final CustomSliceable sliceable = CustomSliceable.createInstance( + mContext, CustomSliceRegistry.getSliceClassByUri(parameterUri)); + + assertThat(sliceable).isInstanceOf(FakeSliceable.class); + } + @Test public void isValidUri_validUri_returnsTrue() { final boolean isValidUri = CustomSliceRegistry.isValidUri(FakeSliceable.URI);