From bea9acc55a7b0463a1b0b4dcb557f8ea17d8fe8c Mon Sep 17 00:00:00 2001
From: Tejesh R <tr@openjdk.org>
Date: Wed, 10 Apr 2024 07:11:02 +0000
Subject: [PATCH] 8328482: Convert and Open source few manual applet test to
 main based

Reviewed-by: abhiscxk, honkar, prr
---
 test/jdk/ProblemList.txt                      |   1 +
 .../java/awt/Frame/FrameMaximizedTest.java    |  62 ++++
 .../jdk/java/awt/Frame/FrameMinimizeTest.java |  59 ++++
 .../awt/Frame/MegaIconTest/MegaIconTest.java  | 273 ++++++++++++++++++
 .../java/awt/Frame/MegaIconTest/dukeWave.gif  | Bin 0 -> 1661 bytes
 .../java/awt/Frame/MegaIconTest/duke_404.gif  | Bin 0 -> 5529 bytes
 .../jdk/java/awt/Frame/MegaIconTest/fight.gif | Bin 0 -> 3737 bytes
 .../jdk/java/awt/Frame/SizeMinimizedTest.java | 140 +++++++++
 8 files changed, 535 insertions(+)
 create mode 100644 test/jdk/java/awt/Frame/FrameMaximizedTest.java
 create mode 100644 test/jdk/java/awt/Frame/FrameMinimizeTest.java
 create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java
 create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/dukeWave.gif
 create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/duke_404.gif
 create mode 100644 test/jdk/java/awt/Frame/MegaIconTest/fight.gif
 create mode 100644 test/jdk/java/awt/Frame/SizeMinimizedTest.java

diff --git a/test/jdk/ProblemList.txt b/test/jdk/ProblemList.txt
index 8344d2a977e..4ffc4bde90c 100644
--- a/test/jdk/ProblemList.txt
+++ b/test/jdk/ProblemList.txt
@@ -797,3 +797,4 @@ java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter.java 8254841 macos
 java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java 8256289 windows-x64
 java/awt/FullScreen/TranslucentWindow/TranslucentWindow.java 8258103 linux-all
 java/awt/Focus/FrameMinimizeTest/FrameMinimizeTest.java 8016266 linux-x64
+java/awt/Frame/SizeMinimizedTest.java 8305915 linux-x64
diff --git a/test/jdk/java/awt/Frame/FrameMaximizedTest.java b/test/jdk/java/awt/Frame/FrameMaximizedTest.java
new file mode 100644
index 00000000000..368132937fb
--- /dev/null
+++ b/test/jdk/java/awt/Frame/FrameMaximizedTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 1999, 2024, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Frame;
+import java.awt.Label;
+
+/*
+ * @test
+ * @bug 4106068
+ * @summary Test to verify maximized window is not too big
+ * @library /java/awt/regtesthelpers
+ * @build PassFailJFrame
+ * @run main/manual FrameMaximizedTest
+ */
+
+public class FrameMaximizedTest {
+    public static void main (String[] args) throws Exception {
+        String INSTRUCTIONS = """
+                Maximize the frame window. Check that the right and bottom edges of the
+                window are not off the edge of the screen. If they are not, the test
+                is successful and the bug is fixed.
+                """;
+
+        PassFailJFrame.builder()
+                .title("Test Instructions")
+                .instructions(INSTRUCTIONS)
+                .rows(4)
+                .columns(40)
+                .testUI(new TestFrame())
+                .build()
+                .awaitAndCheck();
+    }
+}
+
+class TestFrame extends Frame {
+    public TestFrame() {
+        setTitle("FrameMaximizedTest");
+        setSize(500, 300);
+        add("North", new Label("Maximize me and check if my " +
+                "bottom and right edge are on screen."));
+    }
+}
diff --git a/test/jdk/java/awt/Frame/FrameMinimizeTest.java b/test/jdk/java/awt/Frame/FrameMinimizeTest.java
new file mode 100644
index 00000000000..cd3459a7841
--- /dev/null
+++ b/test/jdk/java/awt/Frame/FrameMinimizeTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 1999, 2024, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Frame;
+
+/*
+ * @test
+ * @bug 4172782
+ * @summary Test if non-resizable frame is minimizable
+ * @library /java/awt/regtesthelpers
+ * @build PassFailJFrame
+ * @run main/manual FrameMinimizeTest
+ */
+
+public class FrameMinimizeTest {
+    public static void main(String[] args) throws Exception {
+        String INSTRUCTIONS = """
+                When the blank FrameMinimizeTest frame is shown, verify that
+                  1. It is not resizable;
+                  2. It is minimizable.
+                                """;
+
+        PassFailJFrame.builder()
+                .title("Test Instructions")
+                .instructions(INSTRUCTIONS)
+                .rows(4)
+                .columns(35)
+                .testUI(FrameMinimizeTest::initialize)
+                .build()
+                .awaitAndCheck();
+    }
+
+    public static Frame initialize() {
+        Frame f = new Frame("FrameMinimizeTest");
+        f.setSize(200, 200);
+        f.setResizable(false);
+        return f;
+    }
+}
diff --git a/test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java b/test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java
new file mode 100644
index 00000000000..3132d49df56
--- /dev/null
+++ b/test/jdk/java/awt/Frame/MegaIconTest/MegaIconTest.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (c) 1999, 2024, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GridLayout;
+import java.awt.Image;
+import java.awt.Label;
+import java.awt.MediaTracker;
+import java.awt.Panel;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.ImageProducer;
+import java.net.URL;
+
+/*
+ * @test
+ * @bug 4175560
+ * @summary Test use of user-defined icons
+ * @library /java/awt/regtesthelpers
+ * @build PassFailJFrame
+ * @run main/manual MegaIconTest
+ */
+
+public class MegaIconTest {
+    public static void main(String[] args) throws Exception {
+        String INSTRUCTIONS = """
+                Each of the buttons in the main window represents a test
+                of certain icon functionality -  background transparency/opacity
+                of the icon, scaling etc.
+                Clicking on each button brings up a window displaying the graphic
+                that should appear in the corresponding icon.
+                Click on each button, minimize the resulting window, and check that
+                the icon is displayed as the test name indicates.
+                On Win32, icons should also be displayed correctly in the title bar.
+                If all the test pass, then this test passes, else fail.
+                """;
+
+        PassFailJFrame.builder()
+                .title("Test Instructions")
+                .instructions(INSTRUCTIONS)
+                .rows(10)
+                .columns(35)
+                .testUI(MegaIconTest::initialize)
+                .build()
+                .awaitAndCheck();
+    }
+
+    public static Frame initialize() {
+        //Create the iconTestFrames and add to IconTestButtons
+        IconTestButtons itb = new IconTestButtons(new IconTestFrame[]{
+                new IconTestFrame("Opaque, Scaled Icon Test",
+                        "duke_404.gif"),
+
+                new IconTestFrame("Transparent Icon",
+                        "dukeWave.gif"),
+
+                new IconTestFrameBG("Transparent, Scaled Icon with bg",
+                        "fight.gif", Color.red),
+
+                new IconTestFrameDlg("Transparent icon w/ Dialog",
+                        "dukeWave.gif")
+        });
+        itb.pack();
+        return itb;
+    }
+}
+
+class IconTestButtons extends Frame {
+    public IconTestButtons(IconTestFrame[] iconTests) {
+        IconTestFrame tempTest;
+        Button newBtn;
+        Panel newPnl;
+        DoneLabel newLbl;
+
+        setTitle("MegaIconTest");
+
+        setLayout(new GridLayout(iconTests.length, 1));
+
+        //For each icon test frame
+        //Get name, add button with name and action to
+        //display the window, and add label "done" after
+
+        for (int i = 0; i < iconTests.length; i++) {
+            tempTest = iconTests[i];
+            newBtn = new Button(tempTest.getTestName());
+            newLbl = new DoneLabel();
+            newBtn.addActionListener(new IconTestActionListener(tempTest,
+                    newLbl));
+            newPnl = new Panel();
+            newPnl.add(newBtn);
+            newPnl.add(newLbl);
+            add(newPnl);
+        }
+    }
+
+    protected class DoneLabel extends Label {
+        public DoneLabel() {
+            super("Done");
+            setVisible(false);
+        }
+    }
+
+    protected class IconTestActionListener implements ActionListener {
+        IconTestFrame f;
+        DoneLabel l;
+
+        public IconTestActionListener(IconTestFrame frame, DoneLabel label) {
+            this.f = frame;
+            this.l = label;
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            f.pack();
+            f.setVisible(true);
+            l.setVisible(true);
+            IconTestButtons.this.pack();
+        }
+    }
+}
+
+class IconTestFrame extends Frame {
+    private String testName;
+    int width, height;
+    Image iconImage;
+    MediaTracker tracker;
+
+    public IconTestFrame(String testName, String iconFileName) {
+        super(testName);
+        this.testName = testName;
+        tracker = new MediaTracker(this);
+
+        //Set icon image
+        URL url = MegaIconTest.class.getResource(iconFileName);
+        Toolkit tk = Toolkit.getDefaultToolkit();
+        if (tk == null) {
+            System.out.println("Toolkit is null!");
+        }
+        if (url == null) {
+            System.out.println("Can't load icon is null!");
+            return;
+        }
+        try {
+            iconImage = tk.createImage((ImageProducer) url.getContent());
+        } catch (java.io.IOException e) {
+            System.out.println("Unable to load icon image from url: " + url);
+        }
+        tracker.addImage(iconImage, 0);
+        try {
+            tracker.waitForAll();
+        } catch (java.lang.InterruptedException e) {
+            System.err.println(e);
+        }
+        width = iconImage.getWidth(this);
+        height = iconImage.getHeight(this);
+        setIconImage(iconImage);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+            }
+        });
+
+        setLayout(new BorderLayout());
+        setBackground(Color.YELLOW);
+
+        //Add the icon graphic and instructions to the Frame
+        add(new IconCanvas(), "Center");
+        pack();
+    }
+
+    class IconCanvas extends Canvas {
+        public void paint(Graphics g) {
+            if (IconTestFrame.this.iconImage == null) {
+                throw new NullPointerException();
+            }
+            g.drawImage(IconTestFrame.this.iconImage, 0, 0, this);
+        }
+
+        public Dimension getPreferredSize() {
+            return new Dimension(IconTestFrame.this.width,
+                    IconTestFrame.this.height);
+        }
+
+        public Dimension getMinimumSize() {
+            return getPreferredSize();
+        }
+
+        public Dimension getMaximumSize() {
+            return getPreferredSize();
+        }
+    }
+
+    public String getTestName() {
+        return testName;
+    }
+}
+
+class IconTestFrameBG extends IconTestFrame {
+    public IconTestFrameBG(String testName, String iconFileName, Color bg) {
+        super(testName, iconFileName);
+        setBackground(bg);
+        Panel p = new Panel();
+        p.setLayout(new GridLayout(3, 1));
+        p.add(new Label("The background of this window has been set."));
+        p.add(new Label("Unless the default icon background is the same color,"));
+        p.add(new Label("the icon background should NOT be this color."));
+        add(p, "North");
+        pack();
+    }
+}
+
+class IconTestFrameDlg extends IconTestFrame implements ActionListener {
+    Dialog dlg;
+    Button dlgBtn;
+
+    public IconTestFrameDlg(String testName, String iconFilename) {
+        super(testName, iconFilename);
+        Panel p = new Panel();
+        p.setLayout(new GridLayout(4, 1));
+        p.add(new Label("Click on the button below to display a child dialog."));
+        p.add(new Label("On Win32, the Dialog's titlebar icon should match"));
+        p.add(new Label("the titlebar icon of this window."));
+        p.add(new Label("Minimizing this Frame should yield only one icon."));
+        add(p, "North");
+
+        dlg = new Dialog(this);
+        dlg.setSize(200, 200);
+        dlg.add(new Label("Dialog stuff."));
+        dlg.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+            }
+        });
+
+        dlgBtn = new Button("Display Dialog");
+        dlgBtn.addActionListener(this);
+        add(dlgBtn, "South");
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        dlg.setVisible(true);
+    }
+}
diff --git a/test/jdk/java/awt/Frame/MegaIconTest/dukeWave.gif b/test/jdk/java/awt/Frame/MegaIconTest/dukeWave.gif
new file mode 100644
index 0000000000000000000000000000000000000000..52ada7979ef573053a282c44b707759e7e47d24c
GIT binary patch
literal 1661
zcmdUu{ZA8j9LK*!S`HtN0($b`I16ZbQ0v1&b#Cnm3SEs_(CPUETy?`Uj(F(As#Cau
zO1BieD3LC!&YK$Pq|;MzIjm4l5xt-x)fv<HG*Q&ms7a?Tc3+tP#J)d#fB4)t`Mh7R
zcWz$6+#G$00T@6CfWpEz;cys15EMl*48w6;tJUgsI=x;`5QNEOvREu6Nm3L=(=@{{
zHk-|Ew{sllbUNK`w;%|zEc^ZbKp@c9*B1;1L!pqH=WPsw0DuC31E2-K1b_tq5&#MS
z8UO}>P$($N5{|>2DDURof?JeC&dE7>Cu3u1hNfuBLRv_QBus>!(ChR%T#I8khGHm!
zA^-s>j<KAbu$V}i`mi`0mSC8{D1s>RgZVyW<$2a_hv|diFvPI2EaVX+39|8m0P!Fv
zq-8k{;z4rA4=q^WoFt(Uy~zaCKtWIwKoE|HX=Nwx#&B&g1ef|DfSq&FjE$lhlZ6yS
z3GNt_5tbxb5JY}3jVMY`p3}**tR1F+Mr}40s{PL~lntdq>rg)|!DJ#~8?X~tjwJd;
zLDK68zZ`J$0)&<XnPZ)jTlNb9nfC|#f}vnYhEZgHU!YGEL>prZ$N|wU%A!n>l#RAA
z6hoV6(JqLr+fFccl(1uj4bj;VJqd6Y(P03w0WAx(7JxAW6RjSgB*1I{#{ohCj0HFi
zFzvuIOh0hLuW*jg0AXMy0C>G#c>j+M{w7iZKqtr=$UN{*0OUQWi%!aKab2uNVl!4;
zZaLIZi)u{He9z&|I&8%FdWYxd_C(+A=od@tyM}9{zI}~!H5~D!WbKJR5;N^#bsgDK
zlp4!;y%{sMuZ=ryEj@TpxmR(#)vH-hx+s07k&HzPlCqT3>vN8-H7kZ~^i>qcn6G`N
zzP4p$w>m9PyXsQzimuJixxMplKB`=LHeHifHOar`Zp&oFXQ}U0YxBR!jyMqU_S024
zzfATha!RdP)EjSm=Kf`B@87*AqDJAfCp=S=uRE{kD!XpapqETqfj>`KpR~_mm^5S4
z7uNaBR}+hVEp6SHm+8;yjo3T-bw{NlMK$7Wob|z@1ukNY=RNx1dd+UWsAb8F+D%Uv
zcULWMIB&*kZ;hEqn_H{m>%#8k=f0~zj63WfuO`aT!YgS<k41D>UqGn#DdQ0D&Mj@x
z)1|Rd>Aj0Hn|of~&F*j*s-nlEukzCsX5nURT}9)<INz<q-PK~`w00yN6yj-(k*HyW
z?_r4{aq4)kINRfU`FXU)QBF+x2%Td}OF*=_Yu2RhL9s~0+nsfxv6z_B=1Lzr@gSmo
zsBWz+Ls6CaPa~32RQbomA1WI7rg<;e8mF?}lMCWg539!R&c9!fdT2dS+q9uwn{+55
zrkZtZGE6Pd{8ZlFrQ$5-jU($yhTc)~XZqKH_vXuNS@RI<i+(pTu0%z$Ta7?*<o?zZ
zBZ#yD<;c$5lASH*q>L{|M#S#~r_LrUvNo(7o-0N62KIKO6eKJ)j~ZR^u7CK(E^Ka8
zXO_;;@@W5+s^;Xjd;1j8zNZ<g*>~!#*br1x-R9n~5S&cj8lyfNd0<`jw&eExL<fJP
z(YhwXWzg~SduFX(HFUkXEXMcvI{uX}KjpWkglFDMyLPa+`b6fiu{E1tdAP5y5jT2z
zxA|tLG%I7SI(A0H{PSd8+`elQ=3Y5j3U(>*?=LFp%!M!3MWVl3mAc^vZu>_19G-bb
zSMu%tVVdM)N?j7yA5mVD%BeKy>7jF0j!I5foN1cl+IEI8p|Qr}=F{6<_Y??jRQOih
z>rsDFWOx#{?DFF|KRW83I^xE0iC)#rySOHSLW;dh)Rl`2t=Wyc%JN*vJwxPEiJjnS
SYv`|cL2uOLZ9#<s%=#CGac;)|

literal 0
HcmV?d00001

diff --git a/test/jdk/java/awt/Frame/MegaIconTest/duke_404.gif b/test/jdk/java/awt/Frame/MegaIconTest/duke_404.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4958e0d0dfa8c059b704e11fe173f23091cfe8fd
GIT binary patch
literal 5529
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

literal 0
HcmV?d00001

diff --git a/test/jdk/java/awt/Frame/MegaIconTest/fight.gif b/test/jdk/java/awt/Frame/MegaIconTest/fight.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6be1b4972d0de57286ce645cee8f01633e9686a6
GIT binary patch
literal 3737
zcmc)M`(G0I{s-^@5eJoR04c;9;~ledyd-p6K{O<75k-wUrD3i{c`zy~Y6C?y#lplc
zE@xBH%^QW5)o!N(Q;xRfu}stI>w4*8m+fj>dpn--{1e~jygr|Ke?IS-$NVz$c+BdA
zcosV=AIJti%>uKiPoF;hZ~FA?&784kZ-$>e`}77~JwuJ5$Fs3H!(;tpWA?FORA>LN
z@oN8Y|C~m9ztL{*@3*52SM55pU1Pp#@4t$Y89V2gJI%wLjcEEiMH(}@Mm6@EjcDv<
zfwIxuILByjG+u2qpy_O6%Nm&yW2147;i}QlX*3v&x=y3cY()2AfsuxWYlPSaW1|73
zGaGb`294REX*4Jd23TM~TM(i{Z$g_WO`}d@)M<1&rBO#ibZ84i!_>@CYLrHe(x6f5
zG)lBqXcPtwSEPYp4MfvGkOo9FAXAA_7?cW~QlU_CMM@f|gg_;TDA5)`Q=nuTg-ods
zi4<&s0%0qdOa+W6Xovzr11dnKOren}WOJk%nN%s0Dr6Fo43WwZrVOOX08lEGNl_Ao
zR3ejtutXx0phW0ZQVEwU0caw0C6bCz0;xzK5eWn$5EcQjKp;U&0g5XUa0LPc5kNEn
zK;sHTTrL^`7sVEE*<3Dya6y<0(%5VPo6TjT5H1^Gv(X)ZhMo}w4T3P)2opgd7=dUA
z1R(&#M7T_Z&151>6pS!oCKG^QCJg^?z%&@9(O{4U0}u^H(2_O>qCqe^(EtcSOB4t}
zXbpf6fDRhE0#N`Oz-qMu{~zGra2Nm>0Yc{<KKD(;fU`h5!IN*PvlW9B`ikTxbyq3m
zCouBcO;-MB_|`|$Z6!TN7_r*a&h~~rT?wxxbR<5*ofaZ$Qo&4GSq=VQ#z%dFerwf1
z7I8sS?k#IZzR+sPnu<T{xeR@g?lv5%4y+gb$J2gZc7NrU?dq~Hd3D8tB!yL#%`c;b
z$|w56TXwj1$ZER%N3UEGMV?bd7ZKO+w~AZ;-p;Z$G-bBM`ERhENOZSXdL-!`%`v}F
z9Dq8GM~3avg*=`*>NS=`-&wP*-Tr8Ud+W_Z^DnPAvf!3-D>q?DY>i+)pVYGU==rTF
z+moJ0)LnArMx1dhj>#R^(`=|rD8`%DFPwcVj7tp@OMNx-%;#%u;C5d5&9ur_R_7=;
z$Dfuq_tjhmjwR#gTW)ESTt;zzV};JymeTl=)VdhVOL6YRzVhrr8izO_<~U{%ySrl;
zuO@8y43#i8)a0ts#h(=Jnb1Yv{amYrwbV6B7u{n`0S=${)MNXzrJD}V+gtbeXyQJ-
zjWCpbeswP6pC^(7gHrXJ>J7X50=`K;Oxg&IGN!VRul6M*JCJyK+p&#y<}+jBHA2uo
zHnlX96FkII-+rgU3xrxVF>t!x_qm}q!4K<P6ze?@APh@tc-tjPVmHR7azB$2%1T0C
z3@zqgg!7=9wcj^Gc5%&y4LSdrjXc#<kyGT)Ttf`viR1jE1*hLsl3c_8<(X3E<P@hT
zM(JbZR)=s#)`JUY27aVi7H$#VMp|>R<)J@y-|eD#Y(CxVD_9ipD1{BJuJMp&b8nG6
z_;L<m#R+^oee`1mo|eFulEbH)qo)=JxGxjN`b52bS|K5(#)id$6ZlZ`kF`e1tgS`>
zVQ=3rcXAY}ihZMk$74LtW`9`Y;u3aZlcD7v)S#dEh4!us8wG@y!51+E)jI30USzvU
zUKD~wFdn%<ulSp&taPu9m?ierLOAa!$i=_)GGMxfy15r^X=k=i0DoXAbGh5PPI8Fu
zTjW_7F~e9DQ64sn=_*w@ZB#oYx{0!vUI~_G;oaFYOG^uHHgCa8Ci8wc?yi6Ax_^}Q
z;p3CFs}|oWo?(Xm{v5t@;AjNn^y}YwrG-5+FE9Aa+%omEHvaLlUb6o6>mv)dZjWE&
zO~+g;NhDLYEN!9}!{0s*{_`!JdW6z3lFiW96B&vdiHVIp&!Mvq+~%LU_wCFx0V5u|
z731AdRFplrCXTwf9Qn2S#q&4W`}l!$zDH)vbq~k}J&tvC8=u7SFXRW@d~qs$71fkF
z@Kw4cM(cyqln8OLg+7OXu2*5^yx+J*^mRWAmSz?2PU;bRE!V2?CNSY~CN4Z#?aY@u
zBn7u&dwU(BSqVio@6S3-<8Kw6ya^1TXL{sQ`Uq*s8b@p|;dB%JS6mU{M5;afWvzg;
zvr5hNl$M#>t*$dYOAZEL=BfH{VE!=uObt&o(iC&ww@5c%#lXQMxAR*vTOHnU9gpw0
znZgRFNxK?AIjPd-H3&=N`7mMo%mVr~240e>Ivh!l!P_%0CVp;r^d2F3JBo^(1UQ_H
z#VHqcYcjSWlytf6`}~34DbGN*%T8{{TI*$|A^wZNrY>?!vHD98OE}gW54#NnzE$M_
zoRK3D4^&I(dl`PK;IjG)=_C#HD8qZ&alQ&6T-x?ZT)?D<*&z+%0^m1vIezI`c-E4g
z>PKb-tFZI|?5gHTTwSUM5cYn#I(HG4@o+OQMz~VUGdZu`Y6~G#>M&krh_vwN3GSeZ
zPKyMIw5Cb7t@VkyO^iiNoPT47>NCr@)RPusId6hw7dsrNvIMSa-Cd;P-*ZU5N3lr4
zLbJ<!1*5_^YF+K2dI=TyaOc5PFV?ga7XUBmcqm@?d#x7x6^~9n8thVk=`1dm6a?Ls
z?cTktw1<$@o^b@5SW7x{SiPg_H08+&i%*2vNtS$I&^s?A1FAcxNKjIyL(?(3?#Y~;
z5h<Bh3>c^-PhL%2v?b_R6@T0Cj<2^2mabj+U|6)c`Rhes_(j6Qky-mi%ug2Ws-HuW
zA7YOP14wb(4^%8$_zxcSM!;gztKRCv!S{EGK9qm_uA<5Gz5Up|xO?BskF&kPmXn8l
zYYK<%X(z;f#;L#hX4>NV@9$-hPg*tmBie6T+U`pvM7JlP$vO3r3KznvaM?NHv`8?o
z<cHX!H*iM@|2G7XeNPa+4<9<~vB7jH1om?NTQm8W+kxO}x<jyt;hvZm5@LsMgs)gg
zK5l{nSeSJ#D>j^E=!$U1H{Wb|RY=Qd5(b>#(;ok#xcc1dA|nyfF6fC~mCmsds;AEi
zLI5#b_(c$-#l~Kr33|3xR9$xs41M8p^u1)SUqxrH_qFoMpb=np|JsQse;xgBYT*p$
zpDg6{$q3)UAJO+_vHsQ;jpfe90@s-H>j_|ZsxHOYwLst&9=?NDj(stX&(Fm#&;oVI
z<L>^%m=UJ#P&eh;h&$D7My{K3N^0XSXd9Pvu6@um7_siE5%oNM2AwyZQq-G?@a0e3
zyszIRv`#BHzsg;cHq`HpQ{lp<%PWyYhXr2XZQMTV%c~mrzz~Stc#uq3(7#tLy!@f9
z*j7qnysubNW()2==`0P-TItE!e5p0AwF;XFED>Ggx2POr2i+HM$<XpRs&e39vN*cz
zCVV2TB<FF~O8UsIJgep0tA>fn=FuKn_RiZy`I_5|S&lZ)?L$cPwD0_?fvxzoD(utb
zJyj|0T>)F)mPu)FB<`}6o>ZN1BuKq{1<6qsdM~Z=!lk_V94+;MrF7*580=`{7FONC
z5zehiZ|iWL?_5R5*?DEE_Rn;hFX!L%&j{B4`oO!*>Cwe|I(>Vs`|{-uMTk)DTFt=F
zY-4NEv(!|RMVt4lN`)IxJ9|IVTyKz9r0+iyU&W1&;@LEp9T>5Pv_Bt#J4(4KMs$b&
zs~Fz`N9y>azg_D-Mad{AN_=FB6lG!nw@eon`fr6DxZ%~1S-ve*UCX`t)byM}nCHK9
zC3w?5=(S8A`EVtrM9A~Mr5)p6#^6&5Zp=bD#h2aw_zK3u*hs!t$zs(=R?ale<K95W
zN(&Q9q^YnpvM!T{Z4}4)j|w-DC~m`r&>vZ8Ha!?^1zRl(pFYD02M{^NW!o|MiqN@p
z9Q>}%aTUdNsLqM}-ix6kS=x7oJ`v?a(THKbgP)+~WEZDo%y}VEo0%&NQ)7x8|89w>
zO~(+&F=n1acO>lE?l&X^SB9sZ`Xma4A*!6xw+qUd??V+j+Qwb4)PY;voIR;uc^be`
zYtDycu{jxdTfmy^3hXNsyNV(Af#4;d1tofKu-*j>V(cq()C!3m_0C^#l0OzCl>p+d
z9?b$%L?{xw^)6tV)jL<~!BRO`t#`g+aS{w-J;HrBddy<2t5S$5WBF0_q!C}YqOKg0
zJha1~-x<B!TEZ%bDvvTPOKA$^vLF#PMaghpvV*dyE;^7~!E)Gl#xEtflz8|<29u`~
zpZDu43&w~YvX8CKMtn-fb*vk#Hz~_I0ujr*{SR_s+PliHdsw~Wd!xby<$6N<z`=Gs
zp<H!nat|Cw-FJzKp;~;RAOS~DcsRs9nYl|Ubd-kSQ_uLc*rFmtz@OlXx*mV(!1C?<
z0F1lGLBDkc?*pk;4|kHQDFc2Im)%6sco48zJG6<J0Yd}$wOx`ucdOFwCIN4g><g;a
z?%tvLl7!jAC4bY4J3r}a5<1ijN;Zi$_6{VClvQsqRr{)g){~c*gy1@Cb$qk`SLA@d
zSO7>VKR#t3N^8=Y5=Dx?Pz-MFTc@53l#U+znv9F8tE!GFEi)a-dwwiF;du8)ukEHI
U)zYBCAN*CnNe(bc7!0udzewrFYybcN

literal 0
HcmV?d00001

diff --git a/test/jdk/java/awt/Frame/SizeMinimizedTest.java b/test/jdk/java/awt/Frame/SizeMinimizedTest.java
new file mode 100644
index 00000000000..2520cf42892
--- /dev/null
+++ b/test/jdk/java/awt/Frame/SizeMinimizedTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 1999, 2024, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.Frame;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+/*
+ * @test
+ * @key headful
+ * @bug 4065534
+ * @summary Frame.setSize() doesn't change size if window is in an iconified state
+ * @run main SizeMinimizedTest
+ */
+
+public class SizeMinimizedTest {
+    private static Frame frame;
+    private static final int INITIAL_SIZE = 100;
+    private static final int INITIAL_X = 150;
+    private static final int INITIAL_Y = 50;
+    private static final int RESET_SIZE = 200;
+    private static final int OFFSET = 10;
+    private static int iterationCnt = 0;
+    private static Dimension expectedSize;
+    private static Dimension frameSize;
+    private static Point expectedLoc;
+    private static Point frameLoc;
+
+    public static void main(String[] args) throws Exception {
+        Robot robot = new Robot();
+        try {
+            EventQueue.invokeAndWait(() -> {
+                createUI();
+            });
+            robot.waitForIdle();
+            robot.delay(1000);
+
+            EventQueue.invokeAndWait(() -> {
+                frame.setState(Frame.ICONIFIED);
+            });
+            robot.waitForIdle();
+            robot.delay(100);
+
+            EventQueue.invokeAndWait(() -> {
+                frame.setSize(RESET_SIZE, RESET_SIZE);
+            });
+            robot.waitForIdle();
+            robot.delay(100);
+
+            for (int i = 0; i < 5; i++) {
+                EventQueue.invokeAndWait(() -> {
+                    Point pt = frame.getLocation();
+                    frame.setLocation(pt.x + OFFSET, pt.y);
+                });
+                iterationCnt++;
+                robot.waitForIdle();
+                robot.delay(100);
+            }
+            EventQueue.invokeAndWait(() -> {
+                frame.setState(Frame.NORMAL);
+            });
+            robot.waitForIdle();
+            robot.delay(100);
+
+            System.out.println("Test Passed!");
+        } finally {
+            EventQueue.invokeAndWait(() -> {
+                if (frame != null) {
+                    frame.dispose();
+                }
+            });
+        }
+    }
+
+    public static void createUI() {
+        frame = new Frame("Frame size test");
+        frame.setSize(INITIAL_SIZE, INITIAL_SIZE);
+        frame.setLocation(INITIAL_X, INITIAL_Y);
+
+        frame.addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowOpened(WindowEvent e) {
+                System.out.println("Initial Frame Size: " + frame.getSize());
+                System.out.println("Initial Frame Location: " +
+                        frame.getLocationOnScreen());
+            }
+        });
+
+        frame.addWindowStateListener(new WindowAdapter() {
+            @Override
+            public void windowStateChanged(WindowEvent e) {
+                if (e.getNewState() == Frame.NORMAL) {
+                    System.out.println("Frame Size: " + frame.getSize());
+                    System.out.println("Frame Location: " +
+                            frame.getLocationOnScreen());
+                    expectedSize = new Dimension(RESET_SIZE, RESET_SIZE);
+                    frameSize = frame.getSize();
+
+                    if (!expectedSize.equals(frameSize)) {
+                        throw new RuntimeException("Test Failed due to size mismatch.");
+                    }
+
+                    expectedLoc = new Point(INITIAL_X + OFFSET * iterationCnt,
+                            INITIAL_Y);
+                    frameLoc = frame.getLocationOnScreen();
+
+                    if (!expectedLoc.equals(frameLoc)) {
+                        throw new RuntimeException("Test Failed due to " +
+                                "location mismatch.");
+                    }
+                }
+            }
+        });
+        frame.setVisible(true);
+    }
+}