<?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>134512</bug_id>
          
          <creation_ts>2014-07-01 14:32:22 -0700</creation_ts>
          <short_desc>AX: [iOS WebKit2] Support for Speak selection</short_desc>
          <delta_ts>2014-07-01 15:26:00 -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>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019766</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-07-01 14:32:22 -0700</bug_when>
    <thetext>WebKit2 needs support for speak selection

&lt;rdar://problem/15212005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019770</commentid>
    <comment_count>1</comment_count>
      <attachid>234199</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-07-01 14:46:44 -0700</bug_when>
    <thetext>Created attachment 234199
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019775</commentid>
    <comment_count>2</comment_count>
      <attachid>234199</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-01 14:51:14 -0700</bug_when>
    <thetext>Comment on attachment 234199
patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1371
&gt; +    _page-&gt;getSelectionOrContentsAsString([self](const String&amp; string, CallbackBase::Error error) {
&gt; +        if (error != CallbackBase::Error::None)
&gt; +            return;
&gt; +        if ([self respondsToSelector:@selector(accessibilitySpeakSelectionSetContent:)])
&gt; +            [self accessibilitySpeakSelectionSetContent:string];
&gt; +    });

Is there a guarantee we won’t get the callback after self is deallocated? Do we need to retain/release self?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1372
&gt; +

Stray blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019779</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-07-01 15:02:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 234199 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234199&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1371
&gt; &gt; +    _page-&gt;getSelectionOrContentsAsString([self](const String&amp; string, CallbackBase::Error error) {
&gt; &gt; +        if (error != CallbackBase::Error::None)
&gt; &gt; +            return;
&gt; &gt; +        if ([self respondsToSelector:@selector(accessibilitySpeakSelectionSetContent:)])
&gt; &gt; +            [self accessibilitySpeakSelectionSetContent:string];
&gt; &gt; +    });
&gt; 
&gt; Is there a guarantee we won’t get the callback after self is deallocated? Do we need to retain/release self?

This is basically what define: does as well, so if that case is safe so will this one. 

Maybe someone else is able to speak to whether the connection callback blocks are torn down safely when WKContentView goes away...

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1372
&gt; &gt; +
&gt; 
&gt; Stray blank line.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019787</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-07-01 15:26:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170670</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234199</attachid>
            <date>2014-07-01 14:46:44 -0700</date>
            <delta_ts>2014-07-01 14:51:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1845</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDY2OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA3LTAxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtpT1MgV2ViS2l0
Ml0gU3VwcG9ydCBmb3IgU3BlYWsgc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYSBtZXRob2QgdGhhdCBTcGVhayBTZWxl
Y3Rpb24gY2FuIHVzZSB0byByZXRyaWV2ZSB0aGUgc2VsZWN0ZWQgY29udGVudC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVu
dF0pOgorCiAyMDE0LTA3LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggU2VydmljZXNPdmVybGF5Q29udHJvbGxlciB0ZWFyZG93bgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDE3MDY0MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEs
NiArMTkxLDEwIEBACiAKIEBlbmQKIAorQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS0ludGVy
YWN0aW9uUHJpdmF0ZSkKKy0gKHZvaWQpYWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uU2V0Q29u
dGVudDooTlNTdHJpbmcgKilzdHJpbmc7CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRl
bnRWaWV3IChXS0ludGVyYWN0aW9uKQogCiBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRvVUlX
ZWJTZWxlY3Rpb25Nb2RlKFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCkBAIC0x
MzU3LDYgKzEzNjEsMTcgQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0
cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQKK3sKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKFtzZWxmXShjb25zdCBTdHJpbmcmIHN0cmluZywgQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFtzZWxmIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uU2V0Q29udGVu
dDopXSkKKyAgICAgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvblNldENv
bnRlbnQ6c3RyaW5nXTsKKyAgICB9KTsKKworfQorCiAvLyBVSVdLSW50ZXJhY3Rpb25WaWV3UHJv
dG9jb2wKIAogc3RhdGljIGlubGluZSBHZXN0dXJlVHlwZSB0b0dlc3R1cmVUeXBlKFVJV0tHZXN0
dXJlVHlwZSBnZXN0dXJlVHlwZSkK
</data>
<flag name="review"
          id="258737"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>