Merge "Automatically grant URI permission as needed." into nyc-mr1-dev

This commit is contained in:
Yohei Yukawa
2016-07-01 01:09:54 +00:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 5 deletions

View File

@@ -191,8 +191,6 @@ public final class InputContentInfo implements Parcelable {
mUriToken.release();
} catch (RemoteException e) {
e.rethrowFromSystemServer();
} finally {
mUriToken = null;
}
}

View File

@@ -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);
}