On Sat, 15 Feb 2025 00:08:22 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
> ## Added Missing Controls > > ButtonBar > ProgressIndicator > Separator > Slider, > > ## Added Node Classes > > AnchorPane > AmbientLight > Arc > BorderPane > Box > Circle > CubicCurve > Cylinder > DialogPane > DirectionalLight > Ellipse > FlowPane > GridPane > Group > HBox > ImageView > Line > MediaView > MeshView > Pane > ParallelCamera > Path > PerspectiveCamera > PointLight > Polygon > Polyline > QuadCurve > Rectangle > Region > Sphere > StackPane > SVGPath > TilePane > VBox > > > ## Miscellaneous > > - minor improvements > - remove tests that execute show() in non-fx threads per > [JDK-8350048](https://bugs.openjdk.org/browse/JDK-8350048) > > > > ## Not Included Due to Threading Limitations > > HTMLEditor > MenuBar > SwingNode > WebView > > ## Note to the Reviewers > > To avoid merge conflicts, the preferred order of integrations: > > #1697 > #1713 > #1717 The newly added tests look good, as do the modified tests to eliminate calling show / hide from a background thread. One more test that would be useful is one that verifies that Scene can be constructed and modified (root node changed and descendants of the root node modified / added / removed) on a background thread. I left a few questions / comments inline as well. tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 224: > 222: * Also, the visible node gets accessed periodically in the FX > application thread just to shake things up. > 223: */ > 224: @TestMethodOrder(MethodOrderer.MethodName.class) Why is this needed? Our tests use the JUnit5 default (which is random) without a compelling reason to do otherwise. I recommend removing it. tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 227: > 225: public class NodeInitializationStressTest extends RobotTestBase { > 226: /* debugging aid: set this flag to true and comment out > assumeFalse(SKIP_TEST) to run specific test(s). */ > 227: private static final boolean SKIP_TEST = false; Maybe it's time to remove this flag? Does Eclipse not provide a way to run a single test? tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 328: > 326: c.setCenter(n); > 327: BorderPane.setAlignment(n, nextEnum(Pos.class)); > 328: accessNode(c); Should this call `accessRegion` instead? tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 656: > 654: > 655: @Test > 656: public void imageView() { You mentioned that there was a problem with modifying a writable image on a background thread. Similarly, there might be a problem loading animated GIF images on a background thread. Is there a bug filed? tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 737: > 735: c.setFitHeight(nextDouble(200)); > 736: c.setFitWidth(nextDouble(200)); > 737: //c.setMediaPlayer(new MediaPlayer(new > Media("no-data-url-support"))); Would it be useful to load a media file? If so, you could use the default media file that Ensemble uses. tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 1124: > 1122: } > 1123: > 1124: //@Test disabled because it times out Please file a bug and add an `@Disabled` annotation using that bug ID. tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 1388: > 1386: > 1387: private static void accessPane(Pane p, Consumer<Node> onChild) { > 1388: ObservableList<Node> children = p.getChildren(); It might be useful for this method to call `accessRegion` (as is done from `accessControl`). tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 1423: > 1421: c.setDrawMode(nextEnum(DrawMode.class)); > 1422: PhongMaterial m = new PhongMaterial(); > 1423: //m.setSelfIlluminationMap(Image); // what is expected? There is a good description of the material properties and how they work, complete with illustrations, in the `PhongMaterial` class docs. tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 1426: > 1424: m.setSpecularColor(nextColor()); > 1425: //m.setSpecularMap(Image); // what is expected? > 1426: m.setSpecularPower(nextDouble(100)); // what is the acceptable > range? There is technically no upper limit, but 1.0 - 200.0 is a good range (so maybe add 1.0 to the value returned by `nextDouble`). tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 1671: > 1669: > 1670: private static PathElement createPathElement() { > 1671: switch (nextInt(7)) { Minor: fix Indentation tests/system/src/test/java/test/robot/javafx/scene/NodeInitializationStressTest.java line 1755: > 1753: > 1754: private static String createSvgPath() { > 1755: switch(nextInt(4)) { Minor: space after switch ------------- PR Review: https://git.openjdk.org/jfx/pull/1713#pullrequestreview-2641843482 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970196814 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970198168 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970258183 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970231968 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970236555 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970267812 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970271244 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970276883 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970277986 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970288827 PR Review Comment: https://git.openjdk.org/jfx/pull/1713#discussion_r1970292234