RFR: 8364088: ToolBarSkin: NPE in select()
Andy Goryachev
angorya at openjdk.org
Tue Jul 29 14:57:07 UTC 2025
On Fri, 25 Jul 2025 22:32:36 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
> Fixed an NPE in the ToolBar, looks like a corner case.
> Is this unit-testable?
> Any minimal test case?
Github ate my previous response! Restoring from memory.
The bug came out of testing JDK-8364049. I could not create a headless unit test: it looks like the focus subsystem is involved which is not easily reproducible with a headless test. I don't want to create a headful test for this particular scenario.
For the record, the test I tried to write:
@Test
public void testNPE_8364088() {
BorderPane bp = new BorderPane();
Button b = new Button("Create Schema Overflow");
bp.setTop(new HBox(new ToolBar(b)));
Stage stage = new Stage();
stage.setScene(new Scene(bp, 600, 400));
stage.setTitle(getClass().getSimpleName());
stage.show();
runLater(() -> {
b.requestFocus();
runLater(() -> {
stage.setWidth(50);
runLater(() -> {
stage.setWidth(40);
System.out.println(stage.getWidth());
stage.hide();
});
});
});
}
private static void runLater(Runnable r) {
AtomicInteger counter = new AtomicInteger(10);
Platform.runLater(new Runnable() {
@Override
public void run() {
if (counter.decrementAndGet() > 0) {
Platform.runLater(this);
} else {
r.run();
}
}
});
}
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1857#issuecomment-3132918888
More information about the openjfx-dev
mailing list