Merge "Rename DropPermissions to DragAndDropPermissions" into nyc-dev

This commit is contained in:
Vladislav Kaznacheev
2016-04-21 21:34:24 +00:00
committed by Android (Google) Code Review
11 changed files with 79 additions and 75 deletions

View File

@@ -331,7 +331,7 @@ LOCAL_SRC_FILES += \
core/java/com/android/internal/textservice/ISpellCheckerSessionListener.aidl \
core/java/com/android/internal/textservice/ITextServicesManager.aidl \
core/java/com/android/internal/textservice/ITextServicesSessionListener.aidl \
core/java/com/android/internal/view/IDropPermissions.aidl \
core/java/com/android/internal/view/IDragAndDropPermissions.aidl \
core/java/com/android/internal/view/IInputContext.aidl \
core/java/com/android/internal/view/IInputContextCallback.aidl \
core/java/com/android/internal/view/IInputMethod.aidl \

View File

@@ -3580,7 +3580,7 @@ package android.app {
method public boolean releaseInstance();
method public final deprecated void removeDialog(int);
method public void reportFullyDrawn();
method public android.view.DropPermissions requestDropPermissions(android.view.DragEvent);
method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
method public final void requestKeyboardShortcutsHelper();
method public final void requestPermissions(java.lang.String[], int);
method public boolean requestVisibleBehind(boolean);
@@ -40973,6 +40973,10 @@ package android.view {
field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
}
public final class DragAndDropPermissions {
method public void release();
}
public class DragEvent implements android.os.Parcelable {
method public int describeContents();
method public int getAction();
@@ -40992,10 +40996,6 @@ package android.view {
field public static final android.os.Parcelable.Creator<android.view.DragEvent> CREATOR;
}
public final class DropPermissions {
method public void release();
}
public class FocusFinder {
method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);

View File

@@ -3699,7 +3699,7 @@ package android.app {
method public boolean releaseInstance();
method public final deprecated void removeDialog(int);
method public void reportFullyDrawn();
method public android.view.DropPermissions requestDropPermissions(android.view.DragEvent);
method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
method public final void requestKeyboardShortcutsHelper();
method public final void requestPermissions(java.lang.String[], int);
method public boolean requestVisibleBehind(boolean);
@@ -43924,6 +43924,10 @@ package android.view {
field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
}
public final class DragAndDropPermissions {
method public void release();
}
public class DragEvent implements android.os.Parcelable {
method public int describeContents();
method public int getAction();
@@ -43943,10 +43947,6 @@ package android.view {
field public static final android.os.Parcelable.Creator<android.view.DragEvent> CREATOR;
}
public final class DropPermissions {
method public void release();
}
public class FocusFinder {
method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);

View File

@@ -3580,7 +3580,7 @@ package android.app {
method public boolean releaseInstance();
method public final deprecated void removeDialog(int);
method public void reportFullyDrawn();
method public android.view.DropPermissions requestDropPermissions(android.view.DragEvent);
method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
method public final void requestKeyboardShortcutsHelper();
method public final void requestPermissions(java.lang.String[], int);
method public boolean requestVisibleBehind(boolean);
@@ -41050,6 +41050,10 @@ package android.view {
field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
}
public final class DragAndDropPermissions {
method public void release();
}
public class DragEvent implements android.os.Parcelable {
method public int describeContents();
method public int getAction();
@@ -41069,10 +41073,6 @@ package android.view {
field public static final android.os.Parcelable.Creator<android.view.DragEvent> CREATOR;
}
public final class DropPermissions {
method public void release();
}
public class FocusFinder {
method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);

View File

@@ -85,8 +85,8 @@ import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.ContextThemeWrapper;
import android.view.DragAndDropPermissions;
import android.view.DragEvent;
import android.view.DropPermissions;
import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
@@ -6505,16 +6505,16 @@ public class Activity extends ContextThemeWrapper
}
/**
* Create {@link DropPermissions} object bound to this activity and controlling the access
* permissions for content URIs associated with the {@link DragEvent}.
* Create {@link DragAndDropPermissions} object bound to this activity and controlling the
* access permissions for content URIs associated with the {@link DragEvent}.
* @param event Drag event
* @return The DropPermissions object used to control access to the content URIs. Null if
* no content URIs are associated with the event or if permissions could not be granted.
* @return The {@link DragAndDropPermissions} object used to control access to the content URIs.
* Null if no content URIs are associated with the event or if permissions could not be granted.
*/
public DropPermissions requestDropPermissions(DragEvent event) {
DropPermissions dropPermissions = DropPermissions.obtain(event);
if (dropPermissions != null && dropPermissions.take(getActivityToken())) {
return dropPermissions;
public DragAndDropPermissions requestDragAndDropPermissions(DragEvent event) {
DragAndDropPermissions dragAndDropPermissions = DragAndDropPermissions.obtain(event);
if (dragAndDropPermissions != null && dragAndDropPermissions.take(getActivityToken())) {
return dragAndDropPermissions;
}
return null;
}

View File

@@ -19,51 +19,52 @@ package android.view;
import android.app.ActivityManagerNative;
import android.os.IBinder;
import android.os.RemoteException;
import com.android.internal.view.IDropPermissions;
import com.android.internal.view.IDragAndDropPermissions;
import dalvik.system.CloseGuard;
/**
* {@link DropPermissions} controls the access permissions for the content URIs associated with a
* {@link DragEvent}.
* {@link DragAndDropPermissions} controls the access permissions for the content URIs associated
* with a {@link DragEvent}.
* <p>
* Permission are granted when this object is created by {@link
* android.app.Activity#requestDropPermissions(DragEvent) Activity.requestDropPermissions}.
* android.app.Activity#requestDragAndDropPermissions(DragEvent)
* Activity.requestDragAndDropPermissions}.
* Which permissions are granted is defined by the set of flags passed to {@link
* View#startDragAndDrop(android.content.ClipData, View.DragShadowBuilder, Object, int)
* View.startDragAndDrop} by the app that started the drag operation.
* <p>
* The life cycle of the permissions is bound to the activity used to call {@link
* android.app.Activity#requestDropPermissions(DragEvent) requestDropPermissions}. The
* android.app.Activity#requestDragAndDropPermissions(DragEvent) requestDragAndDropPermissions}. The
* permissions are revoked when this activity is destroyed, or when {@link #release()} is called,
* whichever occurs first.
*/
public final class DropPermissions {
public final class DragAndDropPermissions {
private final IDropPermissions mDropPermissions;
private final IDragAndDropPermissions mDragAndDropPermissions;
private IBinder mPermissionOwnerToken;
private final CloseGuard mCloseGuard = CloseGuard.get();
/**
* Create a new {@link DropPermissions} object to control the access permissions for content
* URIs associated with {@link DragEvent}.
* Create a new {@link DragAndDropPermissions} object to control the access permissions for
* content URIs associated with {@link DragEvent}.
* @param dragEvent Drag event
* @return {@link DropPermissions} object or null if there are no content URIs associated with
* the {@link DragEvent}.
* @return {@link DragAndDropPermissions} object or null if there are no content URIs associated
* with the {@link DragEvent}.
* @hide
*/
public static DropPermissions obtain(DragEvent dragEvent) {
if (dragEvent.getDropPermissions() == null) {
public static DragAndDropPermissions obtain(DragEvent dragEvent) {
if (dragEvent.getDragAndDropPermissions() == null) {
return null;
}
return new DropPermissions(dragEvent.getDropPermissions());
return new DragAndDropPermissions(dragEvent.getDragAndDropPermissions());
}
/** @hide */
private DropPermissions(IDropPermissions dropPermissions) {
mDropPermissions = dropPermissions;
private DragAndDropPermissions(IDragAndDropPermissions dragAndDropPermissions) {
mDragAndDropPermissions = dragAndDropPermissions;
}
/**
@@ -74,7 +75,7 @@ public final class DropPermissions {
*/
public boolean take(IBinder activityToken) {
try {
mDropPermissions.take(activityToken);
mDragAndDropPermissions.take(activityToken);
} catch (RemoteException e) {
return false;
}
@@ -91,7 +92,7 @@ public final class DropPermissions {
try {
mPermissionOwnerToken = ActivityManagerNative.getDefault().
newUriPermissionOwner("drop");
mDropPermissions.takeTransient(mPermissionOwnerToken);
mDragAndDropPermissions.takeTransient(mPermissionOwnerToken);
} catch (RemoteException e) {
return false;
}
@@ -104,7 +105,7 @@ public final class DropPermissions {
*/
public void release() {
try {
mDropPermissions.release();
mDragAndDropPermissions.release();
mPermissionOwnerToken = null;
} catch (RemoteException e) {
}

View File

@@ -21,7 +21,7 @@ import android.content.ClipDescription;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.view.IDropPermissions;
import com.android.internal.view.IDragAndDropPermissions;
//TODO: Improve Javadoc
/**
@@ -130,7 +130,7 @@ public class DragEvent implements Parcelable {
float mX, mY;
ClipDescription mClipDescription;
ClipData mClipData;
IDropPermissions mDropPermissions;
IDragAndDropPermissions mDragAndDropPermissions;
Object mLocalState;
boolean mDragResult;
@@ -257,13 +257,13 @@ public class DragEvent implements Parcelable {
}
private void init(int action, float x, float y, ClipDescription description, ClipData data,
IDropPermissions dropPermissions, Object localState, boolean result) {
IDragAndDropPermissions dragAndDropPermissions, Object localState, boolean result) {
mAction = action;
mX = x;
mY = y;
mClipDescription = description;
mClipData = data;
mDropPermissions = dropPermissions;
this.mDragAndDropPermissions = dragAndDropPermissions;
mLocalState = localState;
mDragResult = result;
}
@@ -274,13 +274,14 @@ public class DragEvent implements Parcelable {
/** @hide */
public static DragEvent obtain(int action, float x, float y, Object localState,
ClipDescription description, ClipData data, IDropPermissions dropPermissions,
boolean result) {
ClipDescription description, ClipData data,
IDragAndDropPermissions dragAndDropPermissions, boolean result) {
final DragEvent ev;
synchronized (gRecyclerLock) {
if (gRecyclerTop == null) {
ev = new DragEvent();
ev.init(action, x, y, description, data, dropPermissions, localState, result);
ev.init(action, x, y, description, data, dragAndDropPermissions, localState,
result);
return ev;
}
ev = gRecyclerTop;
@@ -291,7 +292,7 @@ public class DragEvent implements Parcelable {
ev.mRecycled = false;
ev.mNext = null;
ev.init(action, x, y, description, data, dropPermissions, localState, result);
ev.init(action, x, y, description, data, dragAndDropPermissions, localState, result);
return ev;
}
@@ -299,7 +300,7 @@ public class DragEvent implements Parcelable {
/** @hide */
public static DragEvent obtain(DragEvent source) {
return obtain(source.mAction, source.mX, source.mY, source.mLocalState,
source.mClipDescription, source.mClipData, source.mDropPermissions,
source.mClipDescription, source.mClipData, source.mDragAndDropPermissions,
source.mDragResult);
}
@@ -365,8 +366,8 @@ public class DragEvent implements Parcelable {
}
/** @hide */
public IDropPermissions getDropPermissions() {
return mDropPermissions;
public IDragAndDropPermissions getDragAndDropPermissions() {
return mDragAndDropPermissions;
}
/**
@@ -489,11 +490,11 @@ public class DragEvent implements Parcelable {
dest.writeInt(1);
mClipDescription.writeToParcel(dest, flags);
}
if (mDropPermissions == null) {
if (mDragAndDropPermissions == null) {
dest.writeInt(0);
} else {
dest.writeInt(1);
dest.writeStrongBinder(mDropPermissions.asBinder());
dest.writeStrongBinder(mDragAndDropPermissions.asBinder());
}
}
@@ -515,7 +516,8 @@ public class DragEvent implements Parcelable {
event.mClipDescription = ClipDescription.CREATOR.createFromParcel(in);
}
if (in.readInt() != 0) {
event.mDropPermissions = IDropPermissions.Stub.asInterface(in.readStrongBinder());;
event.mDragAndDropPermissions =
IDragAndDropPermissions.Stub.asInterface(in.readStrongBinder());;
}
return event;
}

View File

@@ -77,8 +77,8 @@ import android.view.ActionMode;
import android.view.ActionMode.Callback;
import android.view.ContextMenu;
import android.view.DisplayListCanvas;
import android.view.DragAndDropPermissions;
import android.view.DragEvent;
import android.view.DropPermissions;
import android.view.Gravity;
import android.view.InputDevice;
import android.view.LayoutInflater;
@@ -2379,9 +2379,9 @@ public class Editor {
void onDrop(DragEvent event) {
StringBuilder content = new StringBuilder("");
final DropPermissions dropPermissions = DropPermissions.obtain(event);
if (dropPermissions != null) {
dropPermissions.takeTransient();
final DragAndDropPermissions permissions = DragAndDropPermissions.obtain(event);
if (permissions != null) {
permissions.takeTransient();
}
try {
@@ -2393,8 +2393,8 @@ public class Editor {
}
}
finally {
if (dropPermissions != null) {
dropPermissions.release();
if (permissions != null) {
permissions.release();
}
}

View File

@@ -22,7 +22,7 @@ import android.os.IBinder;
* Interface to allow a drop receiver to request permissions for URIs passed along with ClipData
* contained in DragEvent.
*/
interface IDropPermissions {
interface IDragAndDropPermissions {
void take(IBinder activityToken);
void takeTransient(IBinder permissionOwnerToken);
void release();

View File

@@ -23,11 +23,12 @@ import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
import com.android.internal.view.IDropPermissions;
import com.android.internal.view.IDragAndDropPermissions;
import java.util.ArrayList;
class DropPermissionsHandler extends IDropPermissions.Stub implements IBinder.DeathRecipient {
class DragAndDropPermissionsHandler extends IDragAndDropPermissions.Stub
implements IBinder.DeathRecipient {
private final int mSourceUid;
private final String mTargetPackage;
@@ -40,8 +41,8 @@ class DropPermissionsHandler extends IDropPermissions.Stub implements IBinder.De
private IBinder mActivityToken = null;
private IBinder mPermissionOwnerToken = null;
DropPermissionsHandler(ClipData clipData, int sourceUid, String targetPackage, int mode,
int sourceUserId, int targetUserId) {
DragAndDropPermissionsHandler(ClipData clipData, int sourceUid, String targetPackage, int mode,
int sourceUserId, int targetUserId) {
mSourceUid = sourceUid;
mTargetPackage = targetPackage;
mMode = mode;

View File

@@ -59,7 +59,7 @@ import com.android.server.input.InputWindowHandle;
import com.android.server.wm.WindowManagerService.DragInputEventReceiver;
import com.android.server.wm.WindowManagerService.H;
import com.android.internal.view.IDropPermissions;
import com.android.internal.view.IDragAndDropPermissions;
import java.util.ArrayList;
@@ -484,10 +484,10 @@ class DragState {
final int targetUserId = UserHandle.getUserId(touchedWin.getOwningUid());
DropPermissionsHandler dropPermissions = null;
DragAndDropPermissionsHandler dragAndDropPermissions = null;
if ((mFlags & View.DRAG_FLAG_GLOBAL) != 0 &&
(mFlags & DRAG_FLAGS_URI_ACCESS) != 0) {
dropPermissions = new DropPermissionsHandler(
dragAndDropPermissions = new DragAndDropPermissionsHandler(
mData,
mUid,
touchedWin.getOwningPackage(),
@@ -501,7 +501,7 @@ class DragState {
final int myPid = Process.myPid();
final IBinder token = touchedWin.mClient.asBinder();
DragEvent evt = obtainDragEvent(touchedWin, DragEvent.ACTION_DROP, x, y,
null, null, mData, dropPermissions, false);
null, null, mData, dragAndDropPermissions, false);
try {
touchedWin.mClient.dispatchDragEvent(evt);
@@ -524,12 +524,12 @@ class DragState {
private static DragEvent obtainDragEvent(WindowState win, int action,
float x, float y, Object localState,
ClipDescription description, ClipData data,
IDropPermissions dropPermissions,
IDragAndDropPermissions dragAndDropPermissions,
boolean result) {
final float winX = win.translateToWindowX(x);
final float winY = win.translateToWindowY(y);
return DragEvent.obtain(action, winX, winY, localState, description, data,
dropPermissions, result);
dragAndDropPermissions, result);
}
boolean stepAnimationLocked(long currentTimeMs) {