From 199286b084988976b3e5dd186210552b96e33d08 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 12 Apr 2018 19:47:50 -0400 Subject: [PATCH] Fix pinned slices returning different Uris. Test: cts Bug: 77980070 Change-Id: I3c5ba18e40a58371e2c9ccade9d565b38ad12a54 --- core/java/android/app/slice/SliceProvider.java | 3 ++- .../com/android/server/slice/SliceManagerService.java | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/java/android/app/slice/SliceProvider.java b/core/java/android/app/slice/SliceProvider.java index 7d8e394dbc355..9e4e97a011faf 100644 --- a/core/java/android/app/slice/SliceProvider.java +++ b/core/java/android/app/slice/SliceProvider.java @@ -37,6 +37,7 @@ import android.os.Handler; import android.os.Process; import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; +import android.util.ArraySet; import android.util.Log; import java.util.ArrayList; @@ -513,7 +514,7 @@ public abstract class SliceProvider extends ContentProvider { .detectAll() .penaltyDeath() .build()); - return onBindSlice(sliceUri, supportedSpecs); + return onBindSlice(sliceUri, new ArraySet<>(supportedSpecs)); } finally { StrictMode.setThreadPolicy(oldPolicy); } diff --git a/services/core/java/com/android/server/slice/SliceManagerService.java b/services/core/java/com/android/server/slice/SliceManagerService.java index b7b96126fa210..a9cdafd9aeaa4 100644 --- a/services/core/java/com/android/server/slice/SliceManagerService.java +++ b/services/core/java/com/android/server/slice/SliceManagerService.java @@ -44,7 +44,6 @@ import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Binder; -import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.Looper; @@ -52,7 +51,6 @@ import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; -import android.util.AtomicFile; import android.util.Slog; import android.util.Xml.Encoding; @@ -71,9 +69,7 @@ import org.xmlpull.v1.XmlSerializer; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -136,11 +132,16 @@ public class SliceManagerService extends ISliceManager.Stub { @Override public Uri[] getPinnedSlices(String pkg) { verifyCaller(pkg); + int callingUser = Binder.getCallingUserHandle().getIdentifier(); ArrayList ret = new ArrayList<>(); synchronized (mLock) { for (PinnedSliceState state : mPinnedSlicesByUri.values()) { if (Objects.equals(pkg, state.getPkg())) { - ret.add(state.getUri()); + Uri uri = state.getUri(); + int userId = ContentProvider.getUserIdFromUri(uri, callingUser); + if (userId == callingUser) { + ret.add(ContentProvider.getUriWithoutUserId(uri)); + } } } }