On Wed, 19 Feb 2025 20:39:19 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

> - enforced fx application thread
> - added a headful test `TestThreadingRestrictions`
> 
> ## Note to the Reviewers
> 
> To avoid merge conflicts, the preferred order of integrations:
> 
> #1697 
> #1713 
> #1717

The API doc changes look good, although I noted a couple additional changes 
that are needed.

The API docs for `Dialog::hide` should also be documented to throw ISE (since 
it calls `close()` directly the implementation is fine)

The API docs for `Stage::close` should also be documented to throw ISE (since 
it calls `hide()` directly the implementation is fine)

For `ComboBoxBase`, were you going to get rid of the word "aspect" in the 
opening sentence "... display the popup aspect of the user interface."? I think 
that's a little awkward even with that word removed. Maybe it could just be: 
"... display the popup associated with this control."

As for the implementation, There are a few places where the skin will call 
hide(), and I can't tell by just looking at the code that they are all 
guaranteed to be on the FX app thread.

For example, I recommend checking the following:

* `MenuBarSkin` line 799
* `ComboBoxListViewSkin` line 199

There may be others.

tests/system/src/test/java/test/robot/javafx/scene/TestThreadingRestrictions.java
 line 63:

> 61:  * This test ensures that the threading restrictions are in place where 
> required.
> 62:  */
> 63: @TestMethodOrder(MethodOrderer.MethodName.class)

This is unnecessary (and not a usual practice).

tests/system/src/test/java/test/robot/javafx/scene/TestThreadingRestrictions.java
 line 239:

> 237:         test(TPopupWindow::new, (p) -> p.show(stage));
> 238:         test(TPopupWindow::new, (p) -> p.show(stage, 0, 0));
> 239:         test(TPopupWindow::new, (p) -> p.show(contentPane, 0, 0));

It's probably worth adding a test for `hide` when it isn't showing (like you've 
done for other objects).

tests/system/src/test/java/test/robot/javafx/scene/TestThreadingRestrictions.java
 line 262:

> 260:                 p.show();
> 261:             });
> 262:             p.hide(); // do we need to fail early here, or only when 
> showing?

We should fail early (although this comment seems misplaced, since it is the 
case where it _is_ showing).

tests/system/src/test/java/test/robot/javafx/scene/TestThreadingRestrictions.java
 line 268:

> 266: 
> 267:     @Test
> 268:     @Timeout(value = 1, unit = TimeUnit.DAYS)

Um, 1 DAY???

Seriously, though: Remove the timeout (it isn't needed or wanted).

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

PR Review: https://git.openjdk.org/jfx/pull/1717#pullrequestreview-2642150796
PR Review Comment: https://git.openjdk.org/jfx/pull/1717#discussion_r1970380200
PR Review Comment: https://git.openjdk.org/jfx/pull/1717#discussion_r1970398687
PR Review Comment: https://git.openjdk.org/jfx/pull/1717#discussion_r1970400883
PR Review Comment: https://git.openjdk.org/jfx/pull/1717#discussion_r1970401521

Reply via email to