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

Commit ab9a91fb 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
parent 361ba5c4
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -256,11 +256,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;
        return PackageManager.PERMISSION_DENIED;
    }
    }


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


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


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


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


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


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


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


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