[Rev 01] RFR: 8244418: MenuBar: IOOB exception on requestFocus on empty bar

Jeanette Winzenburg fastegal at openjdk.java.net
Sun May 17 10:07:18 UTC 2020


On Tue, 12 May 2020 12:27:11 GMT, Ajit Ghaisas <aghaisas at openjdk.org> wrote:

>> Issue :
>> https://bugs.openjdk.java.net/browse/JDK-8244418
>> 
>> Root Cause :
>> Incorrect assumption about menu list size.
>> 
>> Fix :
>> Added check for empty menu list before trying to access it.
>> 
>> Test :
>> Added a unit test that fails before fix and passes after it.
>
> Ajit Ghaisas has updated the pull request incrementally with one additional commit since the last revision:
> 
>   review_fixes

modules/javafx.controls/src/test/java/test/javafx/scene/control/MenuBarTest.java line 134:

> 133:         int focusedIndex = MenuBarSkinShim.getFocusedIndex(skin);
> 134:         assertEquals(focusedIndex, -1);
> 135:     }

the assert should be the other way round, expected value should be the first parameter :)

didn't notice on first read and now only when writing a test case against our argument, c&p'ed the test as-is, replaced
the requestFocus with simulating the notification from traversalListener and was confused about its value being -1

Here's that modified test method (requires test api in MenuBarSkin and shim):

    @Test public void testSimulateTraverseIntoOnEmptyMenubar() {
        menuBar.setFocusTraversable(true);

        AnchorPane root = new AnchorPane();
        root.getChildren().add(menuBar);
        startApp(root);

        MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
        assertTrue(skin != null);

        // simulate notification from traversalListener
        MenuBarSkinShim.setFocusedIndex(skin, 0);
        int focusedIndex = MenuBarSkinShim.getFocusedIndex(skin);
        assertEquals(-1, focusedIndex);
    }

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

PR: https://git.openjdk.java.net/jfx/pull/216


More information about the openjfx-dev mailing list