RFR: 8139228: JFileChooser renders file names as HTML document [v3]

Tejesh R tr at openjdk.org
Wed May 21 16:00:14 UTC 2025


On Wed, 21 May 2025 12:00:51 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>>> > When I try to iterate the test for all L&F, the test result of first L&F is explicitly taken for other L&F too. Any idea why ?
>>> 
>>> Indeed, `PassFailJFrame` doesn't support repeating tests. It never was a scenario that we thought of. There are lots of static fields, including the latch that's used to wait for the test result. The instruction frame and list of windows are also static fields.
>>> 
>>> Supporting repeating tests such as in this scenario would require a substantial redesign of the internal structures… Everything should be an instance field instead, that instance could be stored in a static variable to support all the static methods provided. Redesigning the `PassFailJFrame` framework this way would take significant amount of time.
>> 
>> I submitted the following enhancements:
>> 
>> * [JDK-8357455](https://bugs.openjdk.org/browse/JDK-8357455): Support running multiple PassFailJFrame test cases in one process;
>> * [JDK-8357456](https://bugs.openjdk.org/browse/JDK-8357456): Ensure JFileChooser doesn't render file names as HTML in all L&Fs support.
>
> As a workaround, I suggest testing Metal, the default L&F, and the system L&F on the platforms.
> 
> This can be achieved by having two sets of jtreg test tags:
> 
> 
> /*
>  * @test id=metal
>  * @bug 8139228
>  * @summary JFileChooser should not render Directory names in HTML format
>  * @library /java/awt/regtesthelpers
>  * @build PassFailJFrame
>  * @run main/manual HTMLFileName metal
>  */
> 
> /*
>  * @test id=system
>  * @bug 8139228
>  * @summary JFileChooser should not render Directory names in HTML format
>  * @library /java/awt/regtesthelpers
>  * @build PassFailJFrame
>  * @run main/manual HTMLFileName system
>  */
> 
> 
> Then add the following to your `main` method:
> 
> 
>     public static void main(String[] args) throws Exception {
>         if (args.length < 1) {
>             throw new IllegalArgumentException("Look-and-Feel keyword is required");
>         }
> 
>         final String lafClassName;
>         switch (args[0]) {
>             case "metal" -> lafClassName = UIManager.getCrossPlatformLookAndFeelClassName();
>             case "system" -> lafClassName = UIManager.getSystemLookAndFeelClassName();
>             default -> throw new IllegalArgumentException("Unsupported Look-and-Feel keyword: " + args[0]);
>         }
> 
>         SwingUtilities.invokeAndWait(() -> {
>             try {
>                 UIManager.setLookAndFeel(lafClassName);
>             } catch (Exception e) {
>                 throw new RuntimeException(e);
>             }
>         });
> 
>         PassFailJFrame.builder()
>                 // other configuration
>                 .awaitAndCheck();
> 
> 
> I tested it, and it works perfectly on Windows.

Yes, its working on windows too. Thank you. I have updated the test.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24439#discussion_r2100646531


More information about the client-libs-dev mailing list