• dmazzoni's avatar
    Hook up guest browser plugins to the accessibility tree. · a656928e
    dmazzoni authored
    This change refactors the existing support for cross-process iframe
    accessibility and extends it to make guest browser plugins, for example
    the <webview> element in apps, accessible too.
    
    In this change, a new class, FrameAccessibility, manages all links
    from one frame's accessibility tree to either a child iframe's tree,
    or a guest web contents' tree. This is cleaner than storing ids in
    BrowserAccessibility nodes - now the accessibility tree just needs a
    single bit indicating which nodes in one tree are acting as a host of
    another tree.
    
    FrameAccessibility doesn't try to be efficient yet, it scans its list
    for every operation - the goal is for it to be simple and safe first.
    Hash maps could make it much faster later if needed.
    
    None of the APIs needed to test this are available outside of content
    yet. Once http://crbug.com/396137 is finished we'll have a clean way
    to test this. In the meantime, this can be tested by visiting
    chrome://accessibility on Windows or Mac, and observing that the
    accessibility tree for an app includes all nodes within <webview>
    elements now. Also tested with VoiceOver on Mac; there are some bugs
    but the <webview> is definitely part of the accessibility tree now.
    
    BUG=330307,368298
    
    Review URL: https://codereview.chromium.org/558073002
    
    Cr-Commit-Position: refs/heads/master@{#294883}
    a656928e
content_browser.gypi 92.8 KB