diff --git a/src/share/classes/sun/awt/datatransfer/DataTransferer.java b/src/share/classes/sun/awt/datatransfer/DataTransferer.java index 79c2792800fb7d250c0b1dcd8e0da661258d63fc..a5bd0f559ec1ee163346a75e44241baaf8b012c4 100644 --- a/src/share/classes/sun/awt/datatransfer/DataTransferer.java +++ b/src/share/classes/sun/awt/datatransfer/DataTransferer.java @@ -2898,13 +2898,7 @@ search: return comp; } } else { - // First, prefer application types. - comp = compareIndices(primaryTypes, primaryType1, primaryType2, - UNKNOWN_OBJECT_LOSES); - if (comp != 0) { - return comp; - } - + // First, prefer text types if (flavor1.isFlavorTextType()) { return 1; } @@ -2913,6 +2907,13 @@ search: return -1; } + // Next, prefer application types. + comp = compareIndices(primaryTypes, primaryType1, primaryType2, + UNKNOWN_OBJECT_LOSES); + if (comp != 0) { + return comp; + } + // Next, look for application/x-java-* types. Prefer unknown // MIME types because if the user provides his own data flavor, // it will likely be the most descriptive one. diff --git a/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java b/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java index cc926c807580db34add6ab041fd877968d7ab769..d9af913dc56c5d2a789fa9abe957968ab8b3bff1 100644 --- a/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java +++ b/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java @@ -37,42 +37,61 @@ public class DataFlavorComparatorTest1 { public static void main(String[] args) throws Exception { String[] mimes = new String[] { + "text/plain;class=java.nio.ByteBuffer;charset=UTF-8", + "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-8", + "text/plain;class=java.nio.ByteBuffer;charset=UTF-16LE", + "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-16LE", + "application/x-java-text-encoding", + "application/x-java-serialized-object;class=java.lang.String", + "text/plain;class=java.io.InputStream;charset=UTF-8", + "text/uri-list;class=java.io.InputStream;charset=UTF-8", + "text/plain;class=java.io.InputStream;charset=windows-1252", + "text/uri-list;class=java.io.InputStream;charset=windows-1252", + "application/x-java-url;class=java.net.URL", + "text/plain;class=java.io.Reader", + "text/plain;charset=windows-1252", + "text/uri-list;class=java.io.Reader", + "text/uri-list;charset=windows-1252", + "text/plain;charset=UTF-8", + "text/uri-list;charset=UTF-8", + "text/plain;class=java.io.InputStream;charset=US-ASCII", + "text/uri-list;class=java.io.InputStream;charset=US-ASCII", + "text/plain;class=java.io.InputStream;charset=UTF-16LE", + "text/plain;charset=US-ASCII", + "text/uri-list;class=java.io.InputStream;charset=UTF-16LE", + "text/uri-list;charset=US-ASCII", + "text/plain;charset=UTF-16LE", + "text/uri-list;charset=UTF-16LE", + "text/plain;class=java.nio.ByteBuffer;charset=UTF-16BE", + "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-16BE", + "text/plain;class=java.nio.ByteBuffer;charset=ISO-8859-1", + "text/uri-list;class=java.nio.ByteBuffer;charset=ISO-8859-1", "text/plain", - "text/plain; charset=unicode", - "text/plain; charset=cp1251", - "text/plain; charset=unicode; class=java.io.InputStream", - "text/plain; charset=unicode; class=java.io.Serializable", - "text/plain; charset=unicode; class=java.lang.Object", - "text/plain; class=java.lang.String", - "text/plain; class=java.io.Reader", - "text/plain; class=java.lang.Object", - "text/html", - "text/html; charset=unicode", - "text/html; charset=cp1251", - "text/html; charset=unicode; class=java.io.InputStream", - "text/html; charset=unicode; class=java.io.Serializable", - "text/html; charset=unicode; class=java.lang.Object", - "text/html; class=java.lang.String", - "text/html; class=java.io.Reader", - "text/html; class=java.lang.Object", - "text/unknown", - "text/unknown; charset=unicode", - "text/unknown; charset=cp1251", - "text/unknown; charset=unicode; class=java.io.InputStream", - "text/unknown; charset=unicode; class=java.io.Serializable", - "text/unknown; charset=unicode; class=java.lang.Object", - "text/unknown; class=java.lang.String", - "text/unknown; class=java.io.Reader", - "text/unknown; class=java.lang.Object", - "application/unknown; class=java.io.InputStream", - "application/unknown; class=java.lang.Object", - "application/unknown", - "application/x-java-jvm-local-objectref; class=java.io.InputStream", - "application/x-java-jvm-local-objectref; class=java.lang.Object", - "application/x-java-jvm-local-objectref", - "unknown/flavor", - "unknown/flavor; class=java.io.InputStream", - "unknown/flavor; class=java.lang.Object", + "text/uri-list", + "text/plain;class=java.nio.ByteBuffer;charset=UTF-16", + "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-16", + "text/plain;class=java.io.InputStream;charset=unicode", + "text/uri-list;class=java.io.InputStream;charset=UTF-16", + "text/plain;class=java.nio.CharBuffer", + "text/uri-list;class=java.nio.CharBuffer", + "text/plain;class=java.lang.String", + "text/plain;charset=UTF-16BE", + "text/uri-list;class=java.lang.String", + "text/uri-list;charset=UTF-16BE", + "text/plain;charset=ISO-8859-1", + "text/uri-list;charset=ISO-8859-1", + "text/plain;class=java.io.InputStream;charset=UTF-16BE", + "text/uri-list;class=java.io.InputStream;charset=UTF-16BE", + "text/plain;class=java.nio.ByteBuffer;charset=US-ASCII", + "text/uri-list;class=java.nio.ByteBuffer;charset=US-ASCII", + "text/plain;class=java.io.InputStream;charset=ISO-8859-1", + "text/uri-list;class=java.io.InputStream;charset=ISO-8859-1", + "text/plain;charset=UTF-16", + "text/plain;class=java.nio.ByteBuffer;charset=windows-1252", + "text/uri-list;charset=UTF-16", + "text/uri-list;class=java.nio.ByteBuffer;charset=windows-1252", + "text/plain;class=java.io.InputStream;charset=windows-1252", + "text/uri-list;class=java.io.InputStream;charset=windows-1252", }; DataFlavor[] flavors = new DataFlavor[mimes.length];