[Webkit-unassigned] [Bug 158120] New: AX: Voiceover does not follow browser focus on DOM reorder

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu May 26 10:29:11 PDT 2016


https://bugs.webkit.org/show_bug.cgi?id=158120

            Bug ID: 158120
           Summary: AX: Voiceover does not follow browser focus on DOM
                    reorder
    Classification: Unclassified
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Macintosh
                OS: All
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Accessibility
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: holla at marcysutton.com
                CC: webkit-bug-importer at group.apple.com

Created attachment 279894
  --> https://bugs.webkit.org/attachment.cgi?id=279894&action=review
HTML file with buggy reorder functionality

In Safari, Chrome and Firefox on OSX, Voiceover has problems following the browser's focus state when a list of similar items is reordered with `insertBefore`. I originally encountered it in Angular but was able to reproduce it in vanilla JavaScript (thanks to the Angular team for help. Related bug: https://github.com/angular/angular.js/issues/14677)

After exploring this problem, there appears to be a bug with Voiceover's tracking of elements and state change detection. When items (A, B) are swapped in the DOM to become (B, A), even with `A.focus()` Voiceover keeps focus on B (now in the first position).

Here is a screencast demonstrating the issue: https://www.youtube.com/watch?v=hqd4ZgQMuK0

I have attached a demo file, it can also be viewed on the Web: http://codepen.io/ExpertSystem/pen/mEbKMP

Steps to reproduce:

1. Open the attached page in Safari, Chrome or Firefox and turn on Voiceover.
2. Tab onto one of the reorder buttons.
3. Hit an arrow key to reorder up or down.
4. Observe Voiceover cursor becoming separated from the browser's (managed) focus state.


Expected behavior:

Voiceover should follow the browser's focus state when a list is reordered. Although not ideal, a temporary workaround was found by dynamically creating an offscreen button and sending focus to it before sending focus to item A. Voiceover can keep up, but the delay is problematic for users. Proof of concept: http://codepen.io/ExpertSystem/pen/bebKWR?editors=0010

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160526/8a9db2f8/attachment.html>


More information about the webkit-unassigned mailing list