<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - AX: Press tab to highlight items on a webpage is not working with voiceover enabled"
   href="https://bugs.webkit.org/show_bug.cgi?id=187824#c4">Comment # 4</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - AX: Press tab to highlight items on a webpage is not working with voiceover enabled"
   href="https://bugs.webkit.org/show_bug.cgi?id=187824">bug 187824</a>
              from <span class="vcard"><a class="email" href="mailto:zalan@apple.com" title="zalan <zalan@apple.com>"> <span class="fn">zalan</span></a>
</span></b>
        <pre>(In reply to Nan Wang from <a href="show_bug.cgi?id=187824#c3">comment #3</a>)
<span class="quote">> Comment on <span class=""><a href="attachment.cgi?id=345390&action=diff" name="attach_345390" title="patch">attachment 345390</a> <a href="attachment.cgi?id=345390&action=edit" title="patch">[details]</a></span>
> patch

> View in context:
> <a href="https://bugs.webkit.org/attachment.cgi?id=345390&action=review">https://bugs.webkit.org/attachment.cgi?id=345390&action=review</a>

> >> Source/WebCore/dom/Document.cpp:1871
> >> +            }
> > 
> > Any style mutation with an associated renderer will trigger a RenderElement::setStyle() call. Even mutations that don't need layout. Consulting StyleDifference in setStyle() might be a better way to get the AX cache updated.  
> > Also you may want to limit the performDeferredCacheUpdate() calls to focusable elements since calling AX cache on every repaint could be a performance hit.

> Here we are doing the AX cache update on the document level and it's under
> the styleUpdate check. Are you saying:
> 1. frameView.needsLayout() check is not enough, we should use the
> StyleDifference in renderElement?
> 2. We should move the AX cache update to a RenderElement level, so for each
> RenderElement we check and update the cache in setStyle()? I think
> performDeferredCacheUpdate() is designed as a batch update mechanism. We are
> calling that in FrameView performPostLayoutTasks(). So I'm looking for some
> place similar, that indicates the FrameView;s style is resolved.</span >

Oh right, this is the "perform" and not the "dirtying" part. So who is dirtying the AX tree when non-layout type of mutation happens? I would assume that if AX tree sees that the mutation is not going to trigger layout, it could just issue a timer and update the tree in the next runloop.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>