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 ab9a91fb69)
This commit is contained in:
@@ -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;
|
return PackageManager.PERMISSION_DENIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user