Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d46efc0 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge \"Tweaks to DragAndDropPermissions behavior\" into nyc-dev am:...

Merge "Merge \"Tweaks to DragAndDropPermissions behavior\" into nyc-dev am: 22faa5dd" into nyc-mr1-dev
parents a762f712 d2253666
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -40994,8 +40994,11 @@ package android.view {
    field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
  }
  public final class DragAndDropPermissions {
  public final class DragAndDropPermissions implements android.os.Parcelable {
    method public int describeContents();
    method public void release();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR;
  }
  public class DragEvent implements android.os.Parcelable {
+4 −1
Original line number Diff line number Diff line
@@ -44098,8 +44098,11 @@ package android.view {
    field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
  }
  public final class DragAndDropPermissions {
  public final class DragAndDropPermissions implements android.os.Parcelable {
    method public int describeContents();
    method public void release();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR;
  }
  public class DragEvent implements android.os.Parcelable {
+4 −1
Original line number Diff line number Diff line
@@ -41074,8 +41074,11 @@ package android.view {
    field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
  }
  public final class DragAndDropPermissions {
  public final class DragAndDropPermissions implements android.os.Parcelable {
    method public int describeContents();
    method public void release();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR;
  }
  public class DragEvent implements android.os.Parcelable {
+40 −17
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package android.view;

import android.app.Activity;
import android.app.ActivityManagerNative;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
import com.android.internal.view.IDragAndDropPermissions;
import dalvik.system.CloseGuard;

import com.android.internal.view.IDragAndDropPermissions;

/**
 * {@link DragAndDropPermissions} controls the access permissions for the content URIs associated
@@ -33,20 +35,27 @@ import dalvik.system.CloseGuard;
 * 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>
 * <p>
 * The life cycle of the permissions is bound to the activity used to call {@link
 * android.app.Activity#requestDragAndDropPermissions(DragEvent) requestDragAndDropPermissions}. The
 * permissions are revoked when this activity is destroyed, or when {@link #release()} is called,
 * whichever occurs first.
 * </p>
 * <p>
 * If you anticipate that your application will receive a large number of drops (e.g. document
 * editor), you should try to call {@link #release()} on the obtained permissions as soon as they
 * are no longer required. Permissions can be added to your activity's
 * {@link Activity#onSaveInstanceState} bundle and later retrieved in order to manually release
 * the permissions once they are no longer needed.
 * </p>
 */
public final class DragAndDropPermissions {
public final class DragAndDropPermissions implements Parcelable {

    private final IDragAndDropPermissions mDragAndDropPermissions;

    private IBinder mPermissionOwnerToken;

    private final CloseGuard mCloseGuard = CloseGuard.get();

    /**
     * Create a new {@link DragAndDropPermissions} object to control the access permissions for
     * content URIs associated with {@link DragEvent}.
@@ -79,7 +88,6 @@ public final class DragAndDropPermissions {
        } catch (RemoteException e) {
            return false;
        }
        mCloseGuard.open("release");
        return true;
    }

@@ -96,7 +104,6 @@ public final class DragAndDropPermissions {
        } catch (RemoteException e) {
            return false;
        }
        mCloseGuard.open("release");
        return true;
    }

@@ -109,18 +116,34 @@ public final class DragAndDropPermissions {
            mPermissionOwnerToken = null;
        } catch (RemoteException e) {
        }
        mCloseGuard.close();
    }

    public static final Parcelable.Creator<DragAndDropPermissions> CREATOR =
            new Parcelable.Creator<DragAndDropPermissions> () {
        @Override
    protected void finalize() throws Throwable {
        try {
            if (mCloseGuard != null) {
                mCloseGuard.warnIfOpen();
        public DragAndDropPermissions createFromParcel(Parcel source) {
            return new DragAndDropPermissions(source);
        }

        @Override
        public DragAndDropPermissions[] newArray(int size) {
            return new DragAndDropPermissions[size];
        }
            release();
        } finally {
            super.finalize();
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel destination, int flags) {
        destination.writeStrongInterface(mDragAndDropPermissions);
        destination.writeStrongBinder(mPermissionOwnerToken);
    }

    private DragAndDropPermissions(Parcel in) {
        mDragAndDropPermissions = IDragAndDropPermissions.Stub.asInterface(in.readStrongBinder());
        mPermissionOwnerToken = in.readStrongBinder();
    }
}