From 9c03ef48b67f153e9ad2e2fdb97e0e6a62317851 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 11 May 2018 09:26:51 -0700 Subject: Fix first-time slice permission grants Test: Added a test Change-Id: Ib4c0b65c6fec6fcb97bccb2f3d35f5c35ede3786 Fixes: 79567935 --- .../com/android/server/slice/SlicePermissionManager.java | 6 ++++++ .../android/server/slice/SlicePermissionManagerTest.java | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/slice/SlicePermissionManager.java b/services/core/java/com/android/server/slice/SlicePermissionManager.java index d25ec89e0057..c67f94b895fc 100644 --- a/services/core/java/com/android/server/slice/SlicePermissionManager.java +++ b/services/core/java/com/android/server/slice/SlicePermissionManager.java @@ -251,6 +251,9 @@ public class SlicePermissionManager implements DirtyTracker { } // Can't read or no permissions exist, create a clean object. client = new SliceClientPermissions(pkgUser, this); + synchronized (mCachedClients) { + mCachedClients.put(pkgUser, client); + } } return client; } @@ -278,6 +281,9 @@ public class SlicePermissionManager implements DirtyTracker { } // Can't read or no permissions exist, create a clean object. provider = new SliceProviderPermissions(pkgUser, this); + synchronized (mCachedProviders) { + mCachedProviders.put(pkgUser, provider); + } } return provider; } diff --git a/services/tests/uiservicestests/src/com/android/server/slice/SlicePermissionManagerTest.java b/services/tests/uiservicestests/src/com/android/server/slice/SlicePermissionManagerTest.java index 5443e73dd94f..dc057d564a84 100644 --- a/services/tests/uiservicestests/src/com/android/server/slice/SlicePermissionManagerTest.java +++ b/services/tests/uiservicestests/src/com/android/server/slice/SlicePermissionManagerTest.java @@ -26,7 +26,6 @@ import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; -import android.util.Log; import android.util.Xml.Encoding; import com.android.server.UiServiceTestCase; @@ -48,6 +47,20 @@ import java.io.IOException; @RunWithLooper public class SlicePermissionManagerTest extends UiServiceTestCase { + @Test + public void testGrant() { + File sliceDir = new File(mContext.getDataDir(), "system/slices"); + SlicePermissionManager permissions = new SlicePermissionManager(mContext, + TestableLooper.get(this).getLooper(), sliceDir); + Uri uri = new Builder().scheme(ContentResolver.SCHEME_CONTENT) + .authority("authority") + .path("something").build(); + + permissions.grantSliceAccess("my.pkg", 0, "provider.pkg", 0, uri); + + assertTrue(permissions.hasPermission("my.pkg", 0, uri)); + } + @Test public void testBackup() throws XmlPullParserException, IOException { File sliceDir = new File(mContext.getDataDir(), "system/slices"); -- cgit v1.2.3-59-g8ed1b