changeset 60594:20374b37dd01

8240786: [TESTBUG] The test java/awt/Window/GetScreenLocation/GetScreenLocationTest.java fails on HiDPI screen Reviewed-by: jdv, pbansal
author serb
date Thu, 19 Mar 2020 22:22:39 -0700
parents 39f8c4e79ae2
children 59035a7fab5d
files test/jdk/java/awt/Window/GetScreenLocation/GetScreenLocationTest.java
diffstat 1 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/test/jdk/java/awt/Window/GetScreenLocation/GetScreenLocationTest.java	Wed Mar 18 22:27:31 2020 -0700
+++ b/test/jdk/java/awt/Window/GetScreenLocation/GetScreenLocationTest.java	Thu Mar 19 22:22:39 2020 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,30 +34,35 @@
 public class GetScreenLocationTest {
 
     public static void main(String[] args) throws Exception {
+        Window frame = new Frame();
+        frame.pack();
+        // size less than the minimum will be ignored by the window manager
+        int width = Math.max(frame.getWidth() * 2, 200);
+        int height = Math.max(frame.getHeight() * 2, 100);
+
         Robot robot = new Robot();
-        Window frame = null;
         for(int i = 0; i < 30; i++) {
-            if(frame != null) frame.dispose();
+            frame.dispose();
             frame = new Dialog((Frame)null);
-            frame.setBounds(0, 0, 200, 100);
+            frame.setBounds(0, 0, width, height);
             frame.setVisible(true);
             robot.waitForIdle();
             robot.delay(200);
-            frame.setLocation(321, 121);
+            frame.setLocation(421, 321);
             robot.waitForIdle();
             robot.delay(200);
             Dimension size = frame.getSize();
-            if(size.width != 200 || size.height != 100) {
+            if (size.width != width || size.height != height) {
                 frame.dispose();
                 throw new RuntimeException("getSize() is wrong " + size);
             }
             Rectangle r = frame.getBounds();
             frame.dispose();
-            if(r.x != 321 || r.y != 121) {
+            if (r.x != 421 || r.y != 321) {
                 throw new RuntimeException("getLocation() returns " +
                         "wrong coordinates " + r.getLocation());
             }
-            if(r.width != 200 || r.height != 100) {
+            if (r.width != width || r.height != height) {
                 throw new RuntimeException("getSize() is wrong " + r.getSize());
             }
         }