<?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>270282</bug_id>
          
          <creation_ts>2024-02-28 21:16:23 -0800</creation_ts>
          <short_desc>Add ability to settle a NativePromise with a function which will be run on the dispatcher given to then/whenSettled</short_desc>
          <delta_ts>2024-03-05 17:13:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>270118</dependson>
          <blocked>270320</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2017685</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2024-02-28 21:16:23 -0800</bug_when>
    <thetext>In bug 270118 we added the possibility to specify the SerialFunctionDispatcher on which the IPC&apos;s Decoder was going to run on.

But this is separated from the SerialFunctionDispatcher given to then/whenSettled and so you end up with a syntax call like:

sendWithPromisedReplyOnDispatcher(message, workQueue())-&gt;whenSettled(workQueue(), [] { ... });

You need to set workQueue twice, it would be much more intuitive to simply do something like:

sendWithPromisedReplyOnDispatcher(message)-&gt;whenSettled(workQueue(), [] { ... });

and the Connection would deliver the decoder directly to the promise.

One of the issue here is that the time sendWithPromisedReplyOnDispatcher is called, no listener (created with whenSettled) would be attach yet. So no WorkQueue set.

What we could have instead is a way to settle a promise with a pending CompletionHandler which would only be called once whenSettled/then is called, and would run that CompletionHandler on the target dispatcher rather than immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2017738</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-02-29 06:05:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/123830373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2017762</commentid>
    <comment_count>2</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2024-02-29 07:55:19 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/25295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2018933</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-03-05 17:13:33 -0800</bug_when>
    <thetext>Committed 275720@main (e323dca2b77f): &lt;https://commits.webkit.org/275720@main&gt;

Reviewed commits have been landed. Closing PR #25295 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>