<?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>220498</bug_id>
          
          <creation_ts>2021-01-09 12:13:05 -0800</creation_ts>
          <short_desc>Stripe payment subframe contents missing sometimes</short_desc>
          <delta_ts>2022-04-23 19:34:11 -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>Compositing</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220231</see_also>
          <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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andybons</cc>
    
    <cc>hofman+webkit</cc>
    
    <cc>kzpsmm275395</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1718577</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-09 12:13:05 -0800</bug_when>
    <thetext>From bug 220231:

In Safari 13+ (and possibly earlier versions), a loaded iframe faded into view through a JavaScript based animation (e.g. `$.fadeIn()`) would sometimes paint blank. In those cases, no composite layer for the iframe would exist. Any reflow of the container would trigger the iframe paint. Applying a transform or other CSS style that would force a composite layer for the iframe would prevent the occurrence of this bug.

To reproduce:
- In Safari 13+ , open https://hofman-stripe-payments-demo.appspot.com/jq-repro/?stripeStaticLayer=false&amp;stripeTransitionFix=false
- Click CB (the frame is painted correctly)
- Refresh
- Click CB again (make sure network cache is not disabled if devtools are open)
- Observe blank painted iframe where card input should be
- The iframe is actually functional, can be filed through keyboard or autofill.
- Any resize of the container (window) caused the iframe to be painted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718578</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-09 12:14:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/72854595&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718579</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-09 12:16:02 -0800</bug_when>
    <thetext>These test pages are continually running requestAnimation frame when nothing is happening. That&apos;s very bad for battery life.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718580</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-09 13:44:44 -0800</bug_when>
    <thetext>We&apos;ve got layers with stray dirty bits:


S---------C---- -- t----- ------ 11 11 0x15dc7fa10 (0,0) width=1291 height=1109 (layerID 88) {sc 5} RenderView 0x1119e9270
S-------------- z- t----- ------ 11 11   + 0x14d6d4cf0 (0,0) width=1291 height=590 RenderBlock 0x14a8cae20 HTML 0x14b162ee0
--------------- -- ------ ------ 11 11     + 0x14d6d4e60 (312.16,32) width=666 height=482 RenderBlock (floating) 0x14a8cb2a0 DIV 0x14ce07c00 class=&apos;col-sm-8 col-sm-offset-2&apos;
S--A----------- zn ------ ------ 11 11     + 0x14b9e6170 (35,20) width=597 height=432 RenderBlock 0x14cdf0ea0 DIV 0x14a8a4500 id=&apos;credit-card&apos; class=&apos;active&apos;
--------------- -n ------ ------ 11 11       + 0x14bc14b80 (-15,10) width=627 height=74 RenderBlock (floating) 0x14cdf0a20 DIV 0x14a8a4600 class=&apos;col-md-12 col-sm-12&apos;
--------------- -n ------ ------ 11 11       + 0x14bc14450 (-15,89) width=366 height=167 RenderBlock (floating) 0x14cdf06c0 DIV 0x14a8a4700 class=&apos;col-md-7 col-sm-12&apos;
--------------- -n ------ ------ 11 11       + 0x14bc145c0 (5,10) width=361 height=49 RenderBlock (floating) 0x14cdf0480 DIV 0x14a8a4800 class=&apos;col-md-12 col-sm-12&apos;
--------------- -n ------ ------ 11 11       + 0x14d6bbb80 (5,64) width=361 height=49 RenderBlock (floating) 0x14cdf0240 DIV 0x14a8a4900 class=&apos;col-md-12 col-sm-12&apos;
--------------- -n t----- ------ 11 11       + 0x14bc90000 (25,15) width=311 height=24 RenderBlock (relative positioned) 0x14a8ca2e0 DIV 0x14a8a5900 class=&apos;__PrivateStripeElement&apos;
-N------------- -n ------ l----- 11 11         n 0x14bbba5c0 (0,0) width=311 height=24 RenderIFrame 0x14b1615c0 IFRAME 0x15fca94b0

Looks like layer 0x14d6d4e60 was inserted after 0x14bbba5c0 got dirtied, and left a gap in the chain of dirty bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718581</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-09 13:45:07 -0800</bug_when>
    <thetext>^ 0x14b9e6170 was inserted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718583</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-09 14:21:04 -0800</bug_when>
    <thetext>The iframe is created via script. At some point we call RenderLayerCompositor::layerStyleChanged() which calls layer.setNeedsPostLayoutCompositingUpdate(); for the iframe&apos;s layer, but the layer tree is not fully constructed here so RenderLayer::setAncestorsHaveCompositingDirtyFlag() doesn&apos;t have a valid paint order tree in which to set dirty bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718743</commentid>
    <comment_count>6</comment_count>
    <who name="Mathieu Hofman">hofman+webkit</who>
    <bug_when>2021-01-11 10:58:34 -0800</bug_when>
    <thetext>&gt; continually running requestAnimation frame when nothing is happening. That&apos;s very bad for battery life.

Apparently this is an old workaround we&apos;ve had for internal size calculations. Thanks for pointing it out, we&apos;ll look into removing that. It wouldn&apos;t have an impact on this rendering bug, right?</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>