diff options
| author | 2016-07-01 01:23:27 +0000 | |
|---|---|---|
| committer | 2016-07-01 01:23:27 +0000 | |
| commit | 1a932852d4c8074bcf4ccbde5da5859e69c1427c (patch) | |
| tree | 042adbf1e7422afb9c7510d7f711c3c4d6bec4ae | |
| parent | 1b24ab8d20611674b33e29ff4638678f3f124312 (diff) | |
| parent | d2e046a72096f5b72e88517080436ed8b8aa33da (diff) | |
Merge \"Automatically grant URI permission as needed.\" into nyc-mr1-dev
am: d2e046a720
Change-Id: I376fdeddb57a923fd3a71086ef6f8e6021347cbb
| -rw-r--r-- | core/java/android/view/inputmethod/InputContentInfo.java | 2 | ||||
| -rw-r--r-- | core/java/com/android/internal/view/IInputConnectionWrapper.java | 16 |
2 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/view/inputmethod/InputContentInfo.java b/core/java/android/view/inputmethod/InputContentInfo.java index 9579bbf32835..b39705e0b1fa 100644 --- a/core/java/android/view/inputmethod/InputContentInfo.java +++ b/core/java/android/view/inputmethod/InputContentInfo.java @@ -191,8 +191,6 @@ public final class InputContentInfo implements Parcelable { mUriToken.release(); } catch (RemoteException e) { e.rethrowFromSystemServer(); - } finally { - mUriToken = null; } } diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java index 62e34a6780fc..644c7e90f8b0 100644 --- a/core/java/com/android/internal/view/IInputConnectionWrapper.java +++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java @@ -562,6 +562,8 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { } case DO_COMMIT_CONTENT: { final int flags = msg.arg1; + final boolean grantUriPermission = + (flags & InputConnection.INPUT_CONTENT_GRANT_READ_URI_PERMISSION) != 0; SomeArgs args = (SomeArgs) msg.obj; try { InputConnection ic = getInputConnection(); @@ -577,9 +579,17 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { args.callback.setCommitContentResult(false, args.seq); return; } - args.callback.setCommitContentResult( - ic.commitContent(inputContentInfo, flags, (Bundle) args.arg2), - args.seq); + if (grantUriPermission) { + inputContentInfo.requestPermission(); + } + final boolean result = + ic.commitContent(inputContentInfo, flags, (Bundle) args.arg2); + // If this request is not handled, then there is no reason to keep the URI + // permission. + if (grantUriPermission && !result) { + inputContentInfo.releasePermission(); + } + args.callback.setCommitContentResult(result, args.seq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling commitContent", e); } |