<?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>282983</bug_id>
          
          <creation_ts>2024-11-12 05:23:03 -0800</creation_ts>
          <short_desc>REGRESSION(286456@main) [WebDriver] WebAutomationSessionProxy::evaluateJavaScriptFunction completionHandler should always be called</short_desc>
          <delta_ts>2024-11-12 12:16:15 -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>WebDriver</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lauro Moura">lmoura</reporter>
          <assigned_to name="Lauro Moura">lmoura</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2074488</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2024-11-12 05:23:03 -0800</bug_when>
    <thetext>286456@main made Messages::WebAutomationSessionProxy::EvaluateJavaScriptFunction use sendWithAsyncReply, but stored the completionHandler only if expectsImplicitCallbackArgument is true.

This results in the sendWithAsyncReply completionHandler never being called if expectsImplicitCallbackArgument is false. For example, when using EvaluateJavaScriptFunction to get the page title.

IIUC, the expectsImplicitCallbackArgument parameter is related to the actual JS function being evaluated having an implicit callback parameter to be called with the result of the evaluation. Something like a promise&apos;s &quot;resolve&quot; function, as handled by Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js in fact. In this case, expectsImplicitCallbackArgument is not related to the IPC reply itself, which handles the communication inside the browser.

The previous code also guarded the &quot;callbackID&quot; only if expectsImplicitCallbackArgument was true, but did not block as it called a given callbackID unconditionally on WebAutomationSessionProxy::didEvaluateJavaScriptFunction.

Tentative patch incoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074489</commentid>
    <comment_count>1</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2024-11-12 05:29:51 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/36524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074594</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-11-12 12:15:52 -0800</bug_when>
    <thetext>Committed 286495@main (c64901beb5ef): &lt;https://commits.webkit.org/286495@main&gt;

Reviewed commits have been landed. Closing PR #36524 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074595</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-11-12 12:16:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/139741114&gt;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>