Merge "Do not throw SecurityException from getPrimaryClip." into sc-dev
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index ab67b13..093ecd5 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -379,7 +379,15 @@
return null;
}
synchronized (mLock) {
- addActiveOwnerLocked(intendingUid, pkg);
+ try {
+ addActiveOwnerLocked(intendingUid, pkg);
+ } catch (SecurityException e) {
+ // Permission could not be granted - URI may be invalid
+ Slog.i(TAG, "Could not grant permission to primary clip. Clearing clipboard.");
+ setPrimaryClipInternalLocked(null, intendingUid, pkg);
+ return null;
+ }
+
PerUserClipboard clipboard = getClipboardLocked(intendingUserId);
showAccessNotificationLocked(pkg, intendingUid, intendingUserId, clipboard);
notifyTextClassifierLocked(clipboard, pkg, intendingUid);