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

Commit 26bf81f9 authored by Pinyao Ting's avatar Pinyao Ting
Browse files

Removes undesirable invokation of checkUriPermission

Slice uses internal permission control, either the provider app can
specify a list of auto-grant permission, or the host app can request
user's consent on presenting slices from the provider app. In both cases
the invokation of checkUriPermission is non-neccessary.

Bug: 140727941
Test: atest SliceManagerServiceTest
Change-Id: Iac808eda08ac188185cd27f7ab8ce13accf7fce4
Merged-In: Iac808eda08ac188185cd27f7ab8ce13accf7fce4
(cherry picked from commit ab9a91fb)
parent 166d683e
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -251,11 +251,6 @@ public class SliceManagerService extends ISliceManager.Stub {
                }
            }
        }
        // Fallback to allowing uri permissions through.
        if (mContext.checkUriPermission(uri, pid, uid, Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
                == PERMISSION_GRANTED) {
            return PackageManager.PERMISSION_GRANTED;
        }
        return PackageManager.PERMISSION_DENIED;
    }

+10 −1
Original line number Diff line number Diff line
@@ -75,7 +75,6 @@ public class SliceManagerServiceTest extends UiServiceTestCase {
        LocalServices.addService(UsageStatsManagerInternal.class,
                mock(UsageStatsManagerInternal.class));
        mContext.addMockSystemService(AppOpsManager.class, mock(AppOpsManager.class));
        mContext.getTestablePermissions().setPermission(TEST_URI, PERMISSION_GRANTED);

        mContextSpy = spy(mContext);
        mService = spy(new SliceManagerService(mContextSpy, TestableLooper.get(this).getLooper()));
@@ -90,6 +89,7 @@ public class SliceManagerServiceTest extends UiServiceTestCase {

    @Test
    public void testAddPinCreatesPinned() throws RemoteException {
        grantSlicePermission();
        doReturn("pkg").when(mService).getDefaultHome(anyInt());

        mService.pinSlice("pkg", TEST_URI, EMPTY_SPECS, mToken);
@@ -99,6 +99,7 @@ public class SliceManagerServiceTest extends UiServiceTestCase {

    @Test
    public void testRemovePinDestroysPinned() throws RemoteException {
        grantSlicePermission();
        doReturn("pkg").when(mService).getDefaultHome(anyInt());

        mService.pinSlice("pkg", TEST_URI, EMPTY_SPECS, mToken);
@@ -130,11 +131,13 @@ public class SliceManagerServiceTest extends UiServiceTestCase {

    @Test(expected = IllegalStateException.class)
    public void testNoPinThrow() throws Exception {
        grantSlicePermission();
        mService.getPinnedSpecs(TEST_URI, "pkg");
    }

    @Test
    public void testGetPinnedSpecs() throws Exception {
        grantSlicePermission();
        SliceSpec[] specs = new SliceSpec[] {
            new SliceSpec("Something", 1) };
        mService.pinSlice("pkg", TEST_URI, specs, mToken);
@@ -143,4 +146,10 @@ public class SliceManagerServiceTest extends UiServiceTestCase {
        assertEquals(specs, mService.getPinnedSpecs(TEST_URI, "pkg"));
    }

    private void grantSlicePermission() {
        doReturn(PERMISSION_GRANTED).when(mService).checkSlicePermission(
                eq(TEST_URI), anyString(), anyString(), anyInt(), anyInt(), any());
        doReturn(PERMISSION_GRANTED).when(mService).checkAccess(
                anyString(), eq(TEST_URI), anyInt(), anyInt());
    }
}