Bug 222623

Summary: AX: Updating aria-hidden on a role="row" is not reflected in VoiceOver on iOS
Product: WebKit Reporter: Devon Govett <govett>
Component: AccessibilityAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 14   
Hardware: All   
OS: iOS 14   

Description Devon Govett 2021-03-02 15:33:33 PST
Adding and removing aria-hidden from an element with role="row" within a grid does not seem to be properly reflected in VoiceOver on iOS.

Steps to reproduce:

1. Open https://codepen.io/devongovett/pen/xxRzxpv in iOS Safari
2. Turn on VoiceOver
3. Move the VO cursor to the first row in the grid. Navigate through each subsequent row.
4. Move the VO cursor to the "Add row aria-hidden" button and press it. This adds `aria-hidden="true"` to the second row in the grid.
5. Navigate through the grid again. Notice that the content in the second row is still visible.

This works properly if aria-hidden is added to the gridcell element instead of the row. This can be seen by using the "Add gridcell aria-hidden" button in step 4 instead. The content in the second row is correctly invisible.

Also note that this appears to work properly if you press the "Add row aria-hidden" button prior to navigating through the grid. Step 3 is necessary to reproduce the problem. However, in this case, after turning off aria-hidden by pressing the button again and navigating back through the grid, the second row is still skipped even though it does not have aria-hidden anymore. Seems like a caching issue to me.
Comment 1 Radar WebKit Bug Importer 2021-03-02 15:33:49 PST
<rdar://problem/74952475>