jdk/test/java/awt/Window/ShapedAndTranslucentWindows/FocusAWTTest.java
author goetz
Tue, 14 Jun 2016 10:44:59 +0200
changeset 39056 d99e63b6d962
parent 25559 a101ec6ccfd3
permissions -rw-r--r--
8159690: [TESTBUG] Mark headful tests with @key headful. Reviewed-by: simonis, alexsch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     1
/*
39056
d99e63b6d962 8159690: [TESTBUG] Mark headful tests with @key headful.
goetz
parents: 25559
diff changeset
     2
 * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
25108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     4
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     7
 * published by the Free Software Foundation.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     8
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    13
 * accompanied this code).
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    14
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    18
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    21
 * questions.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    22
 */
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    23
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    24
import java.awt.*;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    25
import java.awt.event.WindowAdapter;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    26
import java.awt.event.WindowEvent;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    27
import java.awt.event.WindowFocusListener;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    28
import java.awt.geom.Area;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    29
import java.awt.geom.GeneralPath;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    30
import java.awt.geom.Rectangle2D;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    31
import java.util.HashMap;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    32
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    33
/*
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    34
 * @test
39056
d99e63b6d962 8159690: [TESTBUG] Mark headful tests with @key headful.
goetz
parents: 25559
diff changeset
    35
 * @key headful
25108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    36
 * @bug 8013450
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    37
 * @summary Check if the window events (Focus and Activation) are triggered correctly
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    38
 *          when clicked on visible and clipped areas.
25559
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    39
 *
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    40
 * Test Description: Check if PERPIXEL_TRANSPARENT Translucency type is supported
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    41
 *      by the current platform. Proceed if it is supported. Apply different
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    42
 *      types of shapes on a Window. Make it appear with a known background.
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    43
 *      Check if mouse events which result in window-activated events are
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    44
 *      triggered only within the window's shape and not outside. Repeat this
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    45
 *      for Window, Dialog and Frame.
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    46
 * Expected Result: If PERPIXEL_TRANSPARENT Translucency type is supported, window should
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    47
 *      gain focus and should trigger activated events only when it is clicked on the
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    48
 *      visible areas. Events should be delivered to the background window if clicked
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    49
 *      on the clipped areas.
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    50
 *
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
    51
 * @author mrkam
25108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    52
 * @author Dmitriy Ermashov (dmitriy.ermashov@oracle.com)
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    53
 * @library ../../../../lib/testlibrary
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    54
 * @build Common ExtendedRobot
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    55
 * @run main FocusAWTTest
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    56
 */
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    57
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    58
public class FocusAWTTest extends Common {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    59
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    60
    ExtendedRobot robot;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    61
    int dx;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    62
    int dy;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    63
    static final int x = 20;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    64
    static final int y = 400;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    65
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    66
    static volatile HashMap<String, Boolean> flags = new HashMap<String, Boolean>();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    67
    static {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    68
        flags.put("backgroundWindowActivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    69
        flags.put("backgroundWindowDeactivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    70
        flags.put("backgroundWindowGotFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    71
        flags.put("backgroundWindowLostFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    72
        flags.put("foregroundWindowGotFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    73
        flags.put("foregroundWindowLostFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    74
        flags.put("foregroundWindowActivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    75
        flags.put("foregroundWindowDeactivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    76
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    77
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    78
    public static void main(String[] ignored) throws Exception{
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    79
        if (checkTranslucencyMode(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    80
            for (Class<Window> windowClass: WINDOWS_TO_TEST) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    81
                new FocusAWTTest(windowClass).doTest();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    82
            }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    83
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    84
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    85
    public FocusAWTTest(Class windowClass) throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    86
        super(windowClass);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    87
        this.robot = new ExtendedRobot();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    88
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    89
        EventQueue.invokeAndWait(() -> {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    90
            dx = background.getX() - x;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    91
            dy = background.getY() - y;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    92
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    93
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    94
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    95
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    96
    @Override
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    97
    public void initBackgroundFrame() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    98
        background = new Frame();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    99
        background.setSize(300, 300);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   100
        background.setLocation(x, y);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   101
        background.setFocusable(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   102
        background.setFocusableWindowState(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   103
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   104
        background.addWindowFocusListener(new WindowFocusListener() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   105
            public void windowGainedFocus(WindowEvent e) { flags.put("backgroundWindowGotFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   106
            public void windowLostFocus(WindowEvent e) { flags.put("backgroundWindowLostFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   107
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   109
        background.addWindowListener(new WindowAdapter() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   110
            public void windowActivated(WindowEvent e) { flags.put("backgroundWindowActivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   111
            public void windowDeactivated(WindowEvent e) { flags.put("backgroundWindowDeactivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   112
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   113
        background.add(new TextArea());
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   114
        background.setVisible(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   115
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   116
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   117
    @Override
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   118
    public void initGUI() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   119
        if (windowClass.equals(Frame.class)) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   120
            window = new Frame() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   121
                public void paint(Graphics g) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   122
                    g.setColor(Color.BLUE);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   123
                    g.fillRect(0, 0, 200, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   124
                }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   125
            };
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   126
            ((Frame) window).setUndecorated(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   127
        } else if (windowClass.equals(Dialog.class)) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   128
            window = new Dialog(background) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   129
                public void paint(Graphics g) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   130
                    g.setColor(Color.BLUE);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   131
                    g.fillRect(0, 0, 200, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   132
                }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   133
            };
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   134
            ((Dialog) window).setUndecorated(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   135
        } else {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   136
            window = new Window(background) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   137
                public void paint(Graphics g) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   138
                    g.setColor(Color.BLUE);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   139
                    g.fillRect(0, 0, 200, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   140
                }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   141
            };
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   142
            window.setFocusable(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   143
            window.setFocusableWindowState(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   144
        }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   145
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   146
        window.setPreferredSize(new Dimension(200, 200));
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   147
        window.setLocation(70 + dx, 450 + dy);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   148
        window.setLayout(new BorderLayout());
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   149
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   150
        window.addWindowFocusListener(new WindowFocusListener() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   151
            public void windowGainedFocus(WindowEvent e) { flags.put("foregroundWindowGotFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   152
            public void windowLostFocus(WindowEvent e) { flags.put("foregroundWindowLostFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   153
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   154
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   155
        window.addWindowListener(new WindowAdapter() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   156
            public void windowActivated(WindowEvent e) { flags.put("foregroundWindowActivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   157
            public void windowDeactivated(WindowEvent e) { flags.put("foregroundWindowDeactivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   158
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   159
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   160
        applyShape();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   161
        window.pack();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   162
        window.setAlwaysOnTop(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   163
        window.setVisible(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   164
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   165
25559
a101ec6ccfd3 8043131: Move ShapedAndTranslucentWindows and GC functional AWT tests to regression tree
yan
parents: 25108
diff changeset
   166
    @Override
25108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   167
    public void doTest() throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   168
        super.doTest();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   169
        final Point wls = new Point();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   170
        final Dimension size = new Dimension();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   171
        EventQueue.invokeAndWait(() -> {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   172
            window.requestFocus();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   173
            wls.setLocation(window.getLocationOnScreen());
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   174
            window.getSize(size);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   175
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   176
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   177
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   178
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   179
        check(wls.x + size.width - 5, wls.y + 5, wls.x + size.width / 3, wls.y + size.height / 3);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   180
        check(wls.x + size.width / 2, wls.y + size.height / 2, wls.x + size.width * 2 / 3, wls.y + size.height * 2 / 3);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   181
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   182
        EventQueue.invokeAndWait(() -> {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   183
            background.dispose();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   184
            window.dispose();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   185
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   186
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   187
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   188
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   189
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   190
    @Override
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   191
    public void applyShape() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   192
        Shape shape;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   193
        Area a = new Area(new Rectangle2D.Float(0, 0, 200, 200));
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   194
        GeneralPath gp;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   195
        gp = new GeneralPath();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   196
        gp.moveTo(190, 0);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   197
        gp.lineTo(200, 0);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   198
        gp.lineTo(200, 10);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   199
        gp.lineTo(10, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   200
        gp.lineTo(0, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   201
        gp.lineTo(0, 190);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   202
        gp.closePath();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   203
        a.subtract(new Area(gp));
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   204
        shape = a;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   205
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   206
        window.setShape(shape);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   207
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   208
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   209
    private void check(int xb, int yb, int xw, int yw) throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   210
        checkClick(xb, yb, "backgroundWindowGotFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   211
        checkClick(xw, yw, "foregroundWindowGotFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   212
        checkClick(xb, yb, "foregroundWindowLostFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   213
        checkClick(xw, yw, "backgroundWindowLostFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   214
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   215
        if (window instanceof Dialog || window instanceof Frame) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   216
            checkClick(xb, yb, "backgroundWindowActivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   217
            checkClick(xw, yw, "foregroundWindowActivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   218
            checkClick(xb, yb, "foregroundWindowDeactivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   219
            checkClick(xw, yw, "backgroundWindowDeactivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   220
        }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   221
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   222
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   223
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   224
    private void checkClick(int x, int y, String flag) throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   225
        System.out.println("Trying to click point " + x + ", " + y + ", looking for " + flag + " to trigger.");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   226
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   227
        flags.put(flag, false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   228
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   229
        robot.mouseMove(x, y);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   230
        robot.click();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   231
        int i = 0;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   232
        while (i < 5000 && !flags.get(flag)) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   233
            robot.waitForIdle(50);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   234
            i += 50;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   235
        }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   236
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   237
        if (!flags.get(flag))
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   238
            throw new RuntimeException(flag + " is not triggered for click on point " + x + ", " + y + " for " + windowClass + "!");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   239
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   240
}