> VoiceOver announce incorrect number of child for a submenu of JPopupMenu when > it is visible for the first time only. After that VO is able to announce the > number of items correctly. > > Issue: Problem is with the a11y subsystem method call to get the accessible > children details. > > Analysis: When the Submenu of a JPopupMenu is opened, accessible component of > PopupMenu is created dynamically in the native side implementation and > `PostMenuOpened` notification is sent to the a11y subsystem for the newly > created PopupMenu. Once the notification is sent to a11y sub-system, it > invokes the `accessibilityChildren` method to get the children details for > the menu component. A11y subsystem always retrieve the information of the > root level PopupMenu irrespective of the submenu's PopupMenu (PopupMenu is > associated with each JMenu) and thus announce the root level PopupMenu child > count which is incorrect. > > Proposed Fix: Proposed fix is to ensure the correct child details are sent > back to a11y sub-system for correct announcement. So, whenever the > `accessibilityChildren` method is invoked, first try to find out the current > accessible PopupMenu which is opened for the Submenu and then return the > child details. > > Testing : Manual test case is attached to verify the fix and there is no > failure with fix in CI pipeline. > > `Current fix also ensures the correct child counts are announced for the > JMenu's Submenu which are present in the JMenubar.` > > **Note :** While verifying the fix, a new issue is unearthed for multi-level > submenu where VO is failed to announce the Submenu's text. Since the issue > exists without the proposed fix too, it shall be treated as a new bug finding > and will raise a separate JBS issue.
Abhishek Kumar has updated the pull request incrementally with one additional commit since the last revision: Minor update ------------- Changes: - all: https://git.openjdk.org/jdk/pull/25470/files - new: https://git.openjdk.org/jdk/pull/25470/files/a225bf4b..6cebdff4 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=25470&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25470&range=00-01 Stats: 4 lines in 1 file changed: 2 ins; 1 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/25470.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/25470/head:pull/25470 PR: https://git.openjdk.org/jdk/pull/25470