Merge "Fix pinned slices returning different Uris." into pi-dev
diff --git a/core/java/android/app/slice/SliceProvider.java b/core/java/android/app/slice/SliceProvider.java
index 7d8e394..9e4e97a 100644
--- a/core/java/android/app/slice/SliceProvider.java
+++ b/core/java/android/app/slice/SliceProvider.java
@@ -37,6 +37,7 @@
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 @@
.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 b7b9612..a9cdafd 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.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.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 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 @@
@Override
public Uri[] getPinnedSlices(String pkg) {
verifyCaller(pkg);
+ int callingUser = Binder.getCallingUserHandle().getIdentifier();
ArrayList<Uri> 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));
+ }
}
}
}