<?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>135103</bug_id>
          
          <creation_ts>2014-07-20 10:54:58 -0700</creation_ts>
          <short_desc>[iOS WK1] Single touch div scrolling in Mobile Safari doesn&apos;t work in framesets (breaks Word previews)</short_desc>
          <delta_ts>2014-07-21 11:27:30 -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>528+ (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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023544</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-20 10:54:58 -0700</bug_when>
    <thetext>[iOS WK1] Single touch div scrolling in Mobile Safari doesn&apos;t work in framesets (breaks Word previews)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023548</commentid>
    <comment_count>1</comment_count>
      <attachid>235188</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-20 11:04:51 -0700</bug_when>
    <thetext>Created attachment 235188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023549</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-20 11:05:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/11830219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023559</commentid>
    <comment_count>3</comment_count>
      <attachid>235188</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-20 13:41:00 -0700</bug_when>
    <thetext>Comment on attachment 235188
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=235188&amp;action=review

r=me, not sure if you need to switch to a post-order traversal

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:474
&gt; +    notifySubframesAfterLayerFlush();
&gt; +    didFlushLayers();

It seems strange to flush the top frame separately.

Also, I think the function should be named for what it does rather than in what circumstance it’s called in. Maybe flushDescendantLayers, except that argues against putting it in there.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:500
&gt; +    for (Frame* currFrame = frame.tree().firstChild(); currFrame; currFrame = currFrame-&gt;tree().traverseNext(&amp;frame)) {

I suggest naming this variable subframe or descendant rather than currFrame.

Since we want to flush subframes before their parent, this traversal is not the one we want. This is a pre-order traversal, where each frame is visited before its children. I think what we want is a post-order traversal, where children are visited before their parents.

Unfortunately, we don’t have a post-order traversal function in FrameTree. It’s not hard to write one. The nextPostOrder function in NodeTraversal.cpp is not a bad model:

    static Frame* firstDescendantFramePostOrder(Frame&amp; frame)
    {
        Frame* descendant = &amp;frame;
        while (Frame* firstChild = descendant-&gt;tree()-&gt;firstChild())
            descendant = firstChild;
        return descendant;
    }

    static Frame* nextFramePostOrder(Frame* frame)
    {
        Frame* next = frame-&gt;tree()-&gt;nextSibling();
        if (!next)
            return frame-&gt;tree()-&gt;parent();
        return firstDescendantFramePostOrder(*next);
    }

And the loop is a little different:

    for (Frame* subframe = firstDescendantFramePostOrder(frame); subframe != &amp;frame; subframe = nextFramePostOrder(subframe)) {
        ...
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023707</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-21 10:38:04 -0700</bug_when>
    <thetext>The order in which we notify subframes doesn&apos;t really matter in this code, and I&apos;d rather not add an O(N^2) post-order frame traversal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023723</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-21 11:27:30 -0700</bug_when>
    <thetext>https://trac.webkit.org/r171306</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235188</attachid>
            <date>2014-07-20 11:04:51 -0700</date>
            <delta_ts>2014-07-20 13:41:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135103-20140720110435.patch</filename>
            <type>text/plain</type>
            <size>4389</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhODlhYzJjYmZjNDIw
MjhkYzI2OTdhZWNmMjY1NDliODg1Zjc2OS4uY2JjMGE3ZDMwMmJiMzIyZWE4ZjdjN2EwY2Q1NWQz
NjYyNjk5YTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTA3LTIwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0sxXSBT
aW5nbGUgdG91Y2ggZGl2IHNjcm9sbGluZyBkb2Vzbid0IHdvcmsgaW4gZnJhbWVzZXRzIChicmVh
a3MgV29yZCBwcmV2aWV3cykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTEwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTE4MzAyMTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgcjE2NjEx
NyBhbGwgbGF5ZXIgZmx1c2hpbmcgc3RhcnRzIG9uIHRoZSByb290IGZyYW1lOyB3ZSBubyBsb25n
ZXIgZmx1c2ggbGF5ZXJzCisgICAgICAgIGZvciBlYWNoIGZyYW1lIGR1cmluZyBwYWludGluZy4g
SG93ZXZlciwgZmx1c2hpbmcgR3JhcGhpY3NMYXllcnMgY2FuIHNldCBzb21lIHN0YXRlCisgICAg
ICAgIG9uIGEgc3ViZnJhbWUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIHRoYXQgaXMgbm93IG5ldmVy
IHByb2Nlc3NlZCwgd2hpY2ggYnJlYWtzIHNjcm9sbAorICAgICAgICBsYXllciByZWdpc3RyYXRp
b24uCisgICAgICAgIAorICAgICAgICBGaXggYnkgZG9pbmcgYSB3YWxrIG9mIHRoZSBGcmFtZSB0
cmVlLCBhbmQgY2FsbGluZyBkaWRGbHVzaExheWVycygpIG9uIHN1YmZyYW1lIFJlbmRlckxheWVy
Q29tcG9zaXRvcnMKKyAgICAgICAgYmVmb3JlIGNhbGxpbmcgZGlkRmx1c2hMYXllcnMoKSBvbiBz
ZWxmLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZEZs
dXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90
aWZ5U3ViZnJhbWVzQWZ0ZXJMYXllckZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6ZW5jbG9zaW5nQ29tcG9zaXRvckZsdXNoaW5nTGF5ZXJzKTogRHJpdmUt
YnkgbnVsbHB0ci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6
CisKIDIwMTQtMDctMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPUyBXSzJdIHBvc2l0aW9uOmZpeGVkIGluIGlmcmFtZXMgd2l0aCBwcm9ncmFt
bWF0aWMgc2Nyb2xsIGNvdWxkIGVuZCB1cCBpbiB0aGUgd3JvbmcgcGxhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYjY2
N2NmN2E2NmJiMTI0YzdjYjE2YmZlODU4Yjg0MjllMzM4ODI3Ny4uN2ViMTE2NDU2ZjZmZGM2ZjRk
YjZhNzJmMTA0NmE3MGU2ZjQ2OTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQ3MCwxOSArNDcwLDQwIEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoYm9vbCBpc0Zs
dXNoUm9vdCkKICAgICBBU1NFUlQobV9mbHVzaGluZ0xheWVycyk7CiAgICAgbV9mbHVzaGluZ0xh
eWVycyA9IGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHVwZGF0ZUN1c3RvbUxheWVy
c0FmdGVyRmx1c2goKTsKKyAgICBub3RpZnlTdWJmcmFtZXNBZnRlckxheWVyRmx1c2goKTsKKyAg
ICBkaWRGbHVzaExheWVycygpOwogCisjaWYgUExBVEZPUk0oSU9TKQogICAgIENocm9tZUNsaWVu
dCogY2xpZW50ID0gdGhpcy0+Y2hyb21lQ2xpZW50KCk7CiAgICAgaWYgKGNsaWVudCAmJiBpc0Zs
dXNoUm9vdCkKICAgICAgICAgY2xpZW50LT5kaWRGbHVzaENvbXBvc2l0aW5nTGF5ZXJzKCk7CiAj
ZW5kaWYKIAorICAgIHN0YXJ0TGF5ZXJGbHVzaFRpbWVySWZOZWVkZWQoKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZEZsdXNoTGF5ZXJzKCkKK3sKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgdXBkYXRlQ3VzdG9tTGF5ZXJzQWZ0ZXJGbHVzaCgpOworI2VuZGlmCisKICAgICBm
b3IgKGF1dG8gaXQgPSBtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5iZWdp
bigpLCBlbmQgPSBtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KQogICAgICAgICB1cGRhdGVTY3JvbGxDb29yZGluYXRlZFN0YXR1cygq
Kml0KTsKIAogICAgIG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNOZWVkaW5nVXBkYXRlLmNsZWFy
KCk7Ci0gICAgc3RhcnRMYXllckZsdXNoVGltZXJJZk5lZWRlZCgpOworfQorCit2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5U3ViZnJhbWVzQWZ0ZXJMYXllckZsdXNoKCkKK3sKKyAg
ICBGcmFtZSYgZnJhbWUgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZnJhbWUoKTsKKyAgICBm
b3IgKEZyYW1lKiBjdXJyRnJhbWUgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjdXJyRnJh
bWU7IGN1cnJGcmFtZSA9IGN1cnJGcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmZnJhbWUpKSB7
CisgICAgICAgIFJlbmRlclZpZXcqIHZpZXcgPSBjdXJyRnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
OworICAgICAgICBpZiAoIXZpZXcpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB2
aWV3LT5jb21wb3NpdG9yKCkuZGlkRmx1c2hMYXllcnMoKTsKKyAgICB9CiB9CiAKICNpZiBQTEFU
Rk9STShJT1MpCkBAIC02MDAsNyArNjIxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmxheWVyVGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGcKIFJl
bmRlckxheWVyQ29tcG9zaXRvciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbmNsb3NpbmdDb21w
b3NpdG9yRmx1c2hpbmdMYXllcnMoKSBjb25zdAogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnBhcmVudCgpKSB7Ci0gICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9z
aXRvciA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSA/ICZmcmFtZS0+Y29udGVudFJlbmRlcmVy
KCktPmNvbXBvc2l0b3IoKSA6IDA7CisgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29t
cG9zaXRvciA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSA/ICZmcmFtZS0+Y29udGVudFJlbmRl
cmVyKCktPmNvbXBvc2l0b3IoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChjb21wb3NpdG9yLT5p
c0ZsdXNoaW5nTGF5ZXJzKCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcG9zaXRvcjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggZWZkMzJkZjBhYTI1YmYyODM0ZGI0NDU4NjFiZTc0MGYxN2EyZTJjMC4uOTgxN2EyY2Jk
YTkxMmNjMTczYjQwZGU2ODhiNWMwNGRkNjczODZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzgxLDYgKzM4MSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlJRnJhbWVzT2ZDb21wb3NpdGluZ0NoYW5nZSgpOwogCiAg
ICAgYm9vbCBpc0ZsdXNoaW5nTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9mbHVzaGluZ0xheWVy
czsgfQorICAgIHZvaWQgZGlkRmx1c2hMYXllcnMoKTsKKyAgICB2b2lkIG5vdGlmeVN1YmZyYW1l
c0FmdGVyTGF5ZXJGbHVzaCgpOwogICAgIAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKICAgICAK
</data>
<flag name="review"
          id="259747"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>