<?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>318414</bug_id>
          
          <creation_ts>2026-07-01 23:13:21 -0700</creation_ts>
          <short_desc>Digital Credentials: a pending &quot;wait&quot; request is not aborted when its requesting document becomes non-fully-active</short_desc>
          <delta_ts>2026-08-18 20:05:53 -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>WebDriver</component>
          <version>Safari 26</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>
          
          <blocked>268516</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Marcos Caceres">marcosc</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2226036</commentid>
    <comment_count>0</comment_count>
    <who name="Marcos Caceres">marcosc</who>
    <bug_when>2026-07-01 23:13:21 -0700</bug_when>
    <thetext>The Digital Credentials specification&apos;s &quot;request a digital credential&quot; algorithm requires that if the requesting document stops being fully active, the credential request is aborted with an AbortError DOMException (w3c-fedid.github.io/digital-credentials/, &quot;If document stops being fully active, abort the credential request with an AbortError&quot;).

WebKit does not abort a request that is parked pending when the requesting document — such as a subframe — becomes non-fully-active (e.g. the iframe is removed or navigated). The promise is left unsettled indefinitely.

This is observable with the virtual-wallet &quot;wait&quot; behavior used for automated testing: a pending request in a subframe that is then removed never settles. WebPageProxy::abortPendingDigitalCredentialWaitHandlers currently fires only on page close, page reset, and chooser dismissal — not when a subframe&apos;s document becomes non-fully-active.

A WPT regression test (digital-credentials/wait-non-fully-active.https.html) times out because of this; it should be landed together with the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2226037</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-07-01 23:13:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/181201101&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2241653</commentid>
    <comment_count>2</comment_count>
    <who name="Marcos Caceres">marcosc</who>
    <bug_when>2026-08-18 20:05:43 -0700</bug_when>
    <thetext>Fixed by 319421@main. A pending request now belongs to a per-document DigitalCredentialsSession, so when the requesting document is stopped the session rejects the promise with an AbortError instead of leaving it unsettled indefinitely.

digital-credentials/get-non-fully-active.https.html covers the rejection directly — its second subtest, &quot;Promise rejects with DOMException when the document becomes non-fully active&quot;, now passes. digital-credentials/concurrent-requests.https.html separately covers the coordinator returning to idle: it parks a &quot;wait&quot; request in a subframe, removes the subframe, then requires a subsequent top-level request to be served.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>