On Tue, 27 May 2025 18:57:32 GMT, Mikhail Yankelevich
<[email protected]> wrote:
>> 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.
>
> test/jdk/javax/accessibility/TestPopupMenuChildCount.java line 42:
>
>> 40: */
>> 41:
>> 42: public class TestPopupMenuChildCount {
>
> Nitpick: as far as I understand, this is for macOS only. Do you think it
> would make more sense to have a name mention that the test is Mac only? The
> same for test description. Seems to me a bit confusing otherwise
>
> It's fine with me if you leave it as it is though.
This test is only for macOS and that is conveyed through the jtreg tag
[here](https://github.com/openjdk/jdk/blob/a225bf4bbe75aefffa63d54d2dff5577b3268339/test/jdk/javax/accessibility/TestPopupMenuChildCount.java#L36).
I don't think test name needs to be changed.
Although it is not essentially required but will update the test summary and
instruction.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25470#discussion_r2110743375