<?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>312552</bug_id>
          
          <creation_ts>2026-04-17 00:28:41 -0700</creation_ts>
          <short_desc>ParentalControls Filters may accidentally vend an iframe shield instead of a mainframe shield.</short_desc>
          <delta_ts>2026-04-17 23:00:28 -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>New Bugs</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>jlee53</reporter>
          <assigned_to>jlee53</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2201410</commentid>
    <comment_count>0</comment_count>
    <who name="">jlee53</who>
    <bug_when>2026-04-17 00:28:41 -0700</bug_when>
    <thetext>ParentalControls Filters may accidentally vend an iframe shield instead of a mainframe shield. 

We use the criteria that the current mainFrameURL is null to determine whether or not we have an iframe or a mainframe. This worked for the most part because testing was done with URLs that trigger process swaps because the scheme of the blocked page is different. In that situation, we start with a brand new mainFrameURL as the load has not been populated yet.

But in the case where the same process is re-used, we still have the residual mainFrameURL and so we vend the iframe shield instead.

The code currently assumes that mainFrameURL will always be null on a fresh navigation. This is wrong. Instead, the code is changed to (a) make it clear that the &quot;mainFrameURL&quot; we are populating is explicitly for transitive trust / iFrames by refactoring mainDocumentURL to transitiveTrustMainDocumentURL, (b) we only populate the transitiveTrustMainDocumentURL if we are an iframe and we use existing DocumentLoader/NetworkResourceLoader to determine this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201411</commentid>
    <comment_count>1</comment_count>
    <who name="">jlee53</who>
    <bug_when>2026-04-17 00:30:15 -0700</bug_when>
    <thetext>I tested that this code works for correctly vending both mainFrame and iFrame shields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201415</commentid>
    <comment_count>2</comment_count>
    <who name="">jlee53</who>
    <bug_when>2026-04-17 00:34:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/173774144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201418</commentid>
    <comment_count>3</comment_count>
    <who name="">jlee53</who>
    <bug_when>2026-04-17 00:38:48 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/62959</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201781</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-17 23:00:25 -0700</bug_when>
    <thetext>Committed 311515@main (e48835c9f88c): &lt;https://commits.webkit.org/311515@main&gt;

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

    </bug>

</bugzilla>