Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e787374 authored by hughchen's avatar hughchen
Browse files

Remove parameter from uri when get slice

Slice may added parameter in their uri.
When get slice through uri, removed parameter from uri to get correct slice.

Bug: 128651940
Test: make -j42 RunSettingsRoboTests
Change-Id: Id3cb7b91026384ce4e22c157a2908a5e18bc7993
parent defd0155
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -322,7 +322,7 @@ public class CustomSliceRegistry {
    }

    public static Class<? extends CustomSliceable> getSliceClassByUri(Uri uri) {
        return sUriToSlice.get(uri);
        return sUriToSlice.get(removeParameterFromUri(uri));
    }

    public static Uri removeParameterFromUri(Uri uri) {
+17 −0
Original line number Diff line number Diff line
@@ -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);