RFR: 8316146: Open some swing tests 4 [v3]

Alexey Ivanov aivanov at openjdk.org
Thu Sep 28 15:56:35 UTC 2023


On Mon, 25 Sep 2023 22:32:05 GMT, Alisen Chung <achung at openjdk.org> wrote:

>> Opening closed tests:
>> 12 javax/swing/ToolTipManager/5078214/bug5078214.java
>> 13 javax/swing/plaf/basic/BasicMenuItemUI/4239714/bug4239714.java
>> 14 javax/swing/plaf/basic/BasicMenuUI/4244616/bug4244616.java
>> 15 javax/swing/plaf/metal/4306431/bug4306431.java
>
> Alisen Chung has updated the pull request incrementally with one additional commit since the last revision:
> 
>   updated tests based on feedback

Changes requested by aivanov (Reviewer).

test/jdk/javax/swing/BasicMenuUI/bug4244616.java line 41:

> 39: public class bug4244616 {
> 40:     static PrintStream oldOut;
> 41:     static PrintStream oldErr;

Declare them before the try block, there's no need for them to be fields. See below.

test/jdk/javax/swing/BasicMenuUI/bug4244616.java line 61:

> 59: 
> 60:             oldOut = System.out;
> 61:             oldErr = System.err;

// Redirect streams
        final PrintStream oldOut = System.out;
        final PrintStream oldErr = System.err;
        try (ByteArrayOutputStream bout = new ByteArrayOutputStream();
             ByteArrayOutputStream berr = new ByteArrayOutputStream();
             PrintStream out = new PrintStream(bout);
             PrintStream err = new PrintStream(berr)) {

             // Perform the test
        } finally {
            // Restore streams
            System.setOut(oldOut);
            System.setErr(oldErr);
        }

test/jdk/javax/swing/ToolTipManager/bug5078214.java line 58:

> 56:     static volatile Rectangle bounds;
> 57:     static volatile Insets insets;
> 58:     static volatile JRobot r;

Robot is created and used on the main thread only, it doesn't need to be `volatile`. You should rename it to `robot`.

test/jdk/javax/swing/ToolTipManager/bug5078214.java line 147:

> 145:         });
> 146: 
> 147:     }

As I said, there's absolutely no reason to call `GraphicsEnvironment` methods on EDT — these are not Swing components.

There's no reason to store any of these as static fields, they are local variables.

Suggestion:

    private static GraphicsConfiguration getGraphicsConfig() {
        GraphicsDevice[] devices = GraphicsEnvironment.getLocalGraphicsEnvironment()
                                                      .getScreenDevices();
        for (GraphicsDevice device : devices) {
            GraphicsConfiguration[] gc = device.getConfigurations();
            for (int i = 0; i < gc.length; i++) {
                insets = Toolkit.getDefaultToolkit().getScreenInsets(gc[i]);
                if (insets.bottom != 0) {
                    return gc[i];
                }
            }
        }
        return null;
    }


You call this function from the `main` method.

-------------

PR Review: https://git.openjdk.org/jdk/pull/15875#pullrequestreview-1644408576
PR Review Comment: https://git.openjdk.org/jdk/pull/15875#discussion_r1337294239
PR Review Comment: https://git.openjdk.org/jdk/pull/15875#discussion_r1337301304
PR Review Comment: https://git.openjdk.org/jdk/pull/15875#discussion_r1337327968
PR Review Comment: https://git.openjdk.org/jdk/pull/15875#discussion_r1337319542


More information about the client-libs-dev mailing list