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

Commit f67661cc authored by Vladislav Kaznacheev's avatar Vladislav Kaznacheev
Browse files

Fix ClipData JavaDoc and behavior that contradicts JavaDoc

1. Expand JavaDoc for ClipData.addItem to clarify how MIME types are affected.
2. Add "text/uri-list" to MIME type list only for non-content URIs (as JavaDoc explicitly says).

Bug: 28564003
Change-Id: I074daf34310323725690a9ba2c7dff0542ed6349
parent c70e264d
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -18,13 +18,11 @@ package android.content;

import static android.content.ContentProvider.maybeAddUserId;

import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Process;
import android.os.StrictMode;
import android.text.Html;
import android.text.Spannable;
@@ -742,22 +740,17 @@ public class ClipData implements Parcelable {
        if ("content".equals(uri.getScheme())) {
            String realType = resolver.getType(uri);
            mimeTypes = resolver.getStreamTypes(uri, "*/*");
            if (mimeTypes == null) {
            if (realType != null) {
                    mimeTypes = new String[] { realType, ClipDescription.MIMETYPE_TEXT_URILIST };
                }
                if (mimeTypes == null) {
                    mimeTypes = new String[] { realType };
                } else {
                String[] tmp = new String[mimeTypes.length + (realType != null ? 2 : 1)];
                int i = 0;
                if (realType != null) {
                    String[] tmp = new String[mimeTypes.length + 1];
                    tmp[0] = realType;
                    i++;
                }
                System.arraycopy(mimeTypes, 0, tmp, i, mimeTypes.length);
                tmp[i + mimeTypes.length] = ClipDescription.MIMETYPE_TEXT_URILIST;
                    System.arraycopy(mimeTypes, 0, tmp, 1, mimeTypes.length);
                    mimeTypes = tmp;
                }
            }
        }
        if (mimeTypes == null) {
            mimeTypes = MIMETYPES_TEXT_URILIST;
        }
@@ -790,6 +783,11 @@ public class ClipData implements Parcelable {

    /**
     * Add a new Item to the overall ClipData container.
     * <p> This method will <em>not</em> update the list of available MIME types in the
     * {@link ClipDescription}. It should be used only when adding items which do not add new
     * MIME types to this clip. If this is not the case, {@link #ClipData(CharSequence, String[],
     * Item)} should be used with a complete list of MIME types.
     * @param item Item to be added.
     */
    public void addItem(Item item) {
        if (item == null) {