8176556: java/awt/dnd/ImageTransferTest/ImageTransferTest.java fails for JFIF
Reviewed-by: serb
This commit is contained in:
parent
8a5f5e0f34
commit
5d603b77d9
test/jdk
@ -186,7 +186,6 @@ java/awt/event/KeyEvent/KeyMaskTest/KeyMaskTest.java 8129778 generic-all
|
||||
java/awt/event/MouseEvent/MouseButtonsAndKeyMasksTest/MouseButtonsAndKeyMasksTest.java 8129778 generic-all
|
||||
|
||||
java/awt/dnd/URIListToFileListBetweenJVMsTest/URIListToFileListBetweenJVMsTest.html 8194947 generic-all
|
||||
java/awt/dnd/ImageTransferTest/ImageTransferTest.java 8176556 generic-all
|
||||
java/awt/Frame/SetMaximizedBounds/SetMaximizedBounds.java 8196006 windows-all
|
||||
java/awt/Frame/FramesGC/FramesGC.java 8079069 macosx-all
|
||||
java/awt/FullScreen/AltTabCrashTest/AltTabCrashTest.java 8047218 generic-all
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test
|
||||
* @key headful
|
||||
* @bug 4397404 4720930 8197926
|
||||
* @bug 4397404 4720930 8197926 8176556
|
||||
* @summary tests that images of all supported native image formats are
|
||||
* transferred properly
|
||||
* @library /test/lib
|
||||
@ -134,21 +134,29 @@ class Util {
|
||||
|
||||
abstract class ImageTransferer {
|
||||
Image image;
|
||||
Image imageForJpeg;
|
||||
String[] formats;
|
||||
int fi; // current format index
|
||||
Frame frame = new Frame();
|
||||
|
||||
|
||||
ImageTransferer() {
|
||||
image = createImage();
|
||||
image = createImage(false);
|
||||
imageForJpeg = createImage(true);
|
||||
frame.setSize(100, 100);
|
||||
}
|
||||
|
||||
private static Image createImage() {
|
||||
private static Image createImage(boolean forJpeg) {
|
||||
int w = 100;
|
||||
int h = 100;
|
||||
int[] pix = new int[w * h];
|
||||
|
||||
BufferedImage img;
|
||||
if (!forJpeg) {
|
||||
img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
|
||||
} else {
|
||||
img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
|
||||
}
|
||||
int index = 0;
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
@ -160,12 +168,18 @@ abstract class ImageTransferer {
|
||||
alpha = 0;
|
||||
red = 0;
|
||||
}
|
||||
pix[index++] =
|
||||
(alpha << 24) | (red << 16) | (green << 8) | blue;
|
||||
if (!forJpeg) {
|
||||
pix[index] =
|
||||
(alpha <<24) | (red << 16) | (green << 8) | blue;
|
||||
} else {
|
||||
pix[index] =
|
||||
(red << 16) | (green << 8) | blue;
|
||||
}
|
||||
img.setRGB(x, y, pix[index]);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
return Toolkit.getDefaultToolkit().
|
||||
createImage(new MemoryImageSource(w, h, pix, 0, w));
|
||||
return (Image)img;
|
||||
}
|
||||
|
||||
|
||||
@ -193,7 +207,7 @@ abstract class ImageTransferer {
|
||||
|
||||
boolean areImagesIdentical(Image im1, Image im2) {
|
||||
if (formats[fi].equals("JFIF") || formats[fi].equals("image/jpeg") ||
|
||||
formats[fi].equals("GIF") || formats[fi].equals("image/gif")) {
|
||||
formats[fi].equals("GIF") || formats[fi].equals("image/gif")) {
|
||||
// JFIF and GIF are lossy formats
|
||||
return true;
|
||||
}
|
||||
@ -205,8 +219,8 @@ abstract class ImageTransferer {
|
||||
}
|
||||
|
||||
if (formats[fi].equals("PNG") ||
|
||||
formats[fi].equals("image/png") ||
|
||||
formats[fi].equals("image/x-png")) {
|
||||
formats[fi].equals("image/png") ||
|
||||
formats[fi].equals("image/x-png")) {
|
||||
// check alpha as well
|
||||
for (int i = 0; i < ib1.length; i++) {
|
||||
if (ib1[i] != ib2[i]) {
|
||||
@ -268,7 +282,13 @@ class ImageDragSource extends ImageTransferer {
|
||||
|
||||
new DragSource().createDefaultDragGestureRecognizer(frame,
|
||||
DnDConstants.ACTION_COPY,
|
||||
dge -> dge.startDrag(null, new ImageSelection(image), dsl));
|
||||
dge -> {
|
||||
if (formats[fi].equals("JFIF") || formats[fi].equals("image/jpeg")) {
|
||||
dge.startDrag(null, new ImageSelection(imageForJpeg), dsl);
|
||||
} else {
|
||||
dge.startDrag(null, new ImageSelection(image), dsl);
|
||||
}
|
||||
});
|
||||
leaveFormat(formats[fi]);
|
||||
}
|
||||
|
||||
@ -314,6 +334,14 @@ class ImageDropTarget extends ImageTransferer {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* We are using RGB source image for jpeg
|
||||
* because there is no support for alpha channel.
|
||||
* Also we are not verifying pixel data for jpeg
|
||||
* in areImagesIdentical() since it is a lossy format.
|
||||
* So after image drop we are not handling any needed
|
||||
* special cases for jpeg.
|
||||
*/
|
||||
if (im == null) {
|
||||
System.err.println("getTransferData returned null");
|
||||
dtde.dropComplete(false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user