From f67661cc7a97754ed916f328e0aed3ea8f48bc49 Mon Sep 17 00:00:00 2001 From: Vladislav Kaznacheev Date: Tue, 3 May 2016 15:02:33 -0700 Subject: [PATCH] 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 --- core/java/android/content/ClipData.java | 28 ++++++++++++------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/core/java/android/content/ClipData.java b/core/java/android/content/ClipData.java index 58630b0204913..0db8a2607bb5a 100644 --- a/core/java/android/content/ClipData.java +++ b/core/java/android/content/ClipData.java @@ -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,20 +740,15 @@ 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 }; - } - } else { - String[] tmp = new String[mimeTypes.length + (realType != null ? 2 : 1)]; - int i = 0; - if (realType != null) { + if (realType != null) { + if (mimeTypes == null) { + mimeTypes = new String[] { realType }; + } else { + String[] tmp = new String[mimeTypes.length + 1]; tmp[0] = realType; - i++; + System.arraycopy(mimeTypes, 0, tmp, 1, mimeTypes.length); + mimeTypes = tmp; } - System.arraycopy(mimeTypes, 0, tmp, i, mimeTypes.length); - tmp[i + mimeTypes.length] = ClipDescription.MIMETYPE_TEXT_URILIST; - mimeTypes = tmp; } } if (mimeTypes == null) { @@ -787,9 +780,14 @@ public class ClipData implements Parcelable { public ClipDescription getDescription() { return mClipDescription; } - + /** * Add a new Item to the overall ClipData container. + *

This method will not 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) {