<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>133043</bug_id>
          
          <creation_ts>2014-05-17 23:42:52 -0700</creation_ts>
          <short_desc>AX: iOS: using AXAttributeCacheEnabler is too slow for every accessibilityElementAtIndex:</short_desc>
          <delta_ts>2014-05-19 09:31:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1010053</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-17 23:42:52 -0700</bug_when>
    <thetext>On iOS, the attribute cache enabler is being used on every access to elementAtIndex. 
Sample shows that we&apos;re spending a lot of time creating and tearing down these objects. 

I think we need to provide the ability to enable and disable caching at a higher, more informed level, so that we can cut down on these costs.


&lt;rdar://problem/16945180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010054</commentid>
    <comment_count>1</comment_count>
      <attachid>231650</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-17 23:52:28 -0700</bug_when>
    <thetext>Created attachment 231650
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010070</commentid>
    <comment_count>2</comment_count>
      <attachid>231650</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-18 07:23:23 -0700</bug_when>
    <thetext>Comment on attachment 231650
patch

Who calls enableAttributeCaching and disableAttributeCaching, the OS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010071</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-18 07:48:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 231650 [details])
&gt; Who calls enableAttributeCaching and disableAttributeCaching, the OS?

The accessibility framework that is on the app side knows when a list of elements  is requested. That framework is able to start and stop the cache for us</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010175</commentid>
    <comment_count>4</comment_count>
      <attachid>231650</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-05-19 05:48:40 -0700</bug_when>
    <thetext>Comment on attachment 231650
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=231650&amp;action=review

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:346
&gt; +    m_object-&gt;axObjectCache()-&gt;startCachingComputedObjectAttributesUntilTreeMutates();

Perhaps you want to check whether axObjectCache() returns null here before using it?

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:351
&gt; +    m_object-&gt;axObjectCache()-&gt;stopCachingComputedObjectAttributes();

Same comment here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010201</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-19 09:11:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 231650 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231650&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:346
&gt; &gt; +    m_object-&gt;axObjectCache()-&gt;startCachingComputedObjectAttributesUntilTreeMutates();
&gt; 
&gt; Perhaps you want to check whether axObjectCache() returns null here before using it?
&gt; 
&gt; &gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:351
&gt; &gt; +    m_object-&gt;axObjectCache()-&gt;stopCachingComputedObjectAttributes();
&gt; 
&gt; Same comment here

Done.

Thanks

http://trac.webkit.org/changeset/169047</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231650</attachid>
            <date>2014-05-17 23:52:28 -0700</date>
            <delta_ts>2014-05-19 05:48:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>3046</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTAwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA1LTE3ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogdXNpbmcg
QVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIgaXMgdG9vIHNsb3cgZm9yIGV2ZXJ5IGFjY2Vzc2liaWxp
dHlFbGVtZW50QXRJbmRleDoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMzA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGlPUyBBY2Nlc3NpYmlsaXR5IGNvZGUgdHJpZXMgdG8gaW1wcm92ZSBwZXJmb3Jt
YW5jZSBieSBjYWNoaW5nIGF0dHJpYnV0ZXMgd2hlbiBhY2Nlc3NpbmcKKyAgICAgICAgZWxlbWVu
dHMgdGhyb3VnaCB0aGUgcGxhdGZvcm0gQVBJLiBIb3dldmVyLCB0aG9zZSBBUEkgY2FsbHMgY2Fu
IGJlIHVzZWQgdmVyeSBmcmVxdWVudGx5IHdoZW4gCisgICAgICAgIGl0ZXJhdGluZyBlbGVtZW50
cy4gQ3JlYXRpbmcgdGhlIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIG9iamVjdCBhbmQgdGVhcmlu
ZyBpdCBkb3duIGlzIHByb3ZpbmcKKyAgICAgICAgdG8gYmUgdGhlIGhvdHRlc3QgY29kZSBwYXRo
IGluIHNhbXBsZXMgZm9yIGFjY2Vzc2liaWxpdHkgYWNjZXNzLgorCisgICAgICAgIFdlIG5lZWQg
dG8gbW92ZSB0aGUgbG9naWMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYXR0cmlidXRlIGNh
Y2hlIHRvIGEgbGV2ZWwgdGhhdCBjYW4gbWFrZQorICAgICAgICBhIG1vcmUgaW5mb3JtZWQgZGVj
aXNpb24gYWJvdXQgd2hlbiB0byBlbmFibGUvZGlzYWJsZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBlbmFibGVBdHRyaWJ1dGVDYWNoaW5nXSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRpc2FibGVBdHRyaWJ1
dGVDYWNoaW5nXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlFbGVtZW50Q291bnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUVsZW1lbnRBdEluZGV4Ol0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpbmRleE9mQWNjZXNzaWJpbGl0eUVsZW1lbnQ6
XSk6CisKIDIwMTQtMDUtMTcgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb24ndCBhdHRlbXB0IHRvIHVwZGF0ZSBpZCBvciBuYW1lIGZvciBub2RlcyB0aGF0
IGFyZSBhbHJlYWR5IHJlbW92ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCShyZXZpc2lvbiAxNjg5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQxLDEyICszNDEsMjEgQEAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVuaWdub3Jl
ZEFuY2VzdG9yKGF4T2JqZWN0LT53cmFwcGVyKCkpOyAgICAKIH0KIAorLSAodm9pZCllbmFibGVB
dHRyaWJ1dGVDYWNoaW5nCit7CisgICAgbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+c3RhcnRD
YWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygpOworfQorCist
ICh2b2lkKWRpc2FibGVBdHRyaWJ1dGVDYWNoaW5nCit7CisgICAgbV9vYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKS0+c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKTsKK30KKwogLSAo
TlNJbnRlZ2VyKWFjY2Vzc2liaWxpdHlFbGVtZW50Q291bnQKIHsKICAgICBpZiAoIVtzZWxmIF9w
cmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFYQXR0
cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkp
OwogICAgIGlmIChbc2VsZiBpc0F0dGFjaG1lbnRdKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0
dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50XTsKICAgICAKQEAgLTM1OCw3
ICszNjcsNiBAQAogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBWEF0dHJpYnV0ZUNhY2hlRW5hYmxlciBlbmFibGVD
YWNoZShtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpKTsKICAgICBpZiAoW3NlbGYgaXNBdHRhY2ht
ZW50XSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUVsZW1lbnRBdEluZGV4OmluZGV4XTsKICAgICAKQEAgLTM3OCw3ICszODYsNiBAQAogICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBOU05v
dEZvdW5kOwogICAgIAotICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1f
b2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgIGlmIChbc2VsZiBpc0F0dGFjaG1lbnRdKQog
ICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBpbmRleE9mQWNjZXNzaWJpbGl0
eUVsZW1lbnQ6ZWxlbWVudF07CiAgICAgCg==
</data>
<flag name="review"
          id="256101"
          type_id="1"
          status="+"
          setter="mario"
    />
          </attachment>
      

    </bug>

</bugzilla>