From ab9a91fb6983552095d5ebfcbf6610ec1b048090 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Fri, 4 Dec 2020 12:00:25 -0800 Subject: [PATCH] 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 --- .../com/android/server/slice/SliceManagerService.java | 5 ----- .../android/server/slice/SliceManagerServiceTest.java | 11 ++++++++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/slice/SliceManagerService.java b/services/core/java/com/android/server/slice/SliceManagerService.java index ee9694f902166..ee0e5ba916b9c 100644 --- a/services/core/java/com/android/server/slice/SliceManagerService.java +++ b/services/core/java/com/android/server/slice/SliceManagerService.java @@ -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; } diff --git a/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java index a4436951f48b0..dd0c162d84679 100644 --- a/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java @@ -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()); + } }