<?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>122985</bug_id>
          
          <creation_ts>2013-10-17 12:02:20 -0700</creation_ts>
          <short_desc>Rubber-banding is often not smooth on infinitely scrolling websites</short_desc>
          <delta_ts>2013-10-18 12:10:42 -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>Layout and Rendering</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>jonlee</cc>
    
    <cc>luiz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940887</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-10-17 12:02:20 -0700</bug_when>
    <thetext>Often if you are rubber-banding at the bottom of a page on a website like Facebook, Twitter, or Pinterest while there is more content loading, the normally-smooth rubber-band animation becomes very jarring and it will snap to a new location. This is unfortunate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940889</commentid>
    <comment_count>1</comment_count>
      <attachid>214484</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-10-17 12:12:10 -0700</bug_when>
    <thetext>Created attachment 214484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940941</commentid>
    <comment_count>2</comment_count>
      <attachid>214484</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-17 13:54:39 -0700</bug_when>
    <thetext>Comment on attachment 214484
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:66
&gt; +    if (state-&gt;hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)) {
&gt; +        if (scrollingTree()-&gt;isRubberBandInProgress())
&gt; +            m_totalContentsSizeForRubberBand = m_totalContentsSize;
&gt; +        else
&gt; +            m_totalContentsSizeForRubberBand = state-&gt;totalContentsSize();

Hmm, I think it might be cleaner to just store m_totalContentsSize in m_totalContentsSizeForRubberBand at the start of a rubberband, and unconditionally use m_totalContentsSizeForRubberBand here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941018</commentid>
    <comment_count>3</comment_count>
      <attachid>214524</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-10-17 15:41:32 -0700</bug_when>
    <thetext>Created attachment 214524
Patch

Simon&apos;s suggestion seems to work well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941023</commentid>
    <comment_count>4</comment_count>
      <attachid>214524</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-17 15:53:04 -0700</bug_when>
    <thetext>Comment on attachment 214524
Patch

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

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:276
&gt; +    // Since the rubberband timer has stopped, totalContentsSizeForRubberBand can be synchronized with totalContentsSize.
&gt; +    setTotalContentsSizeForRubberBand(totalContentsSize());

If it weren&apos;t for maximumScrollPosition, it would be OK to let m_totalContentsSizeForRubberBand go stale, right?

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:388
&gt; +    IntPoint position(totalContentsSizeForRubberBand().width() - viewportRect().width(),
&gt; +                      totalContentsSizeForRubberBand().height() - viewportRect().height());

Hmm, there&apos;s no guarantee that this is being called during a rubberband, right? Maybe totalContentSize should be passed in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941025</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-10-17 15:56:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 214524 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214524&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:276
&gt; &gt; +    // Since the rubberband timer has stopped, totalContentsSizeForRubberBand can be synchronized with totalContentsSize.
&gt; &gt; +    setTotalContentsSizeForRubberBand(totalContentsSize());
&gt; 
&gt; If it weren&apos;t for maximumScrollPosition, it would be OK to let m_totalContentsSizeForRubberBand go stale, right?
&gt; 

Yes, but see below.

&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:388
&gt; &gt; +    IntPoint position(totalContentsSizeForRubberBand().width() - viewportRect().width(),
&gt; &gt; +                      totalContentsSizeForRubberBand().height() - viewportRect().height());
&gt; 
&gt; Hmm, there&apos;s no guarantee that this is being called during a rubberband, right? Maybe totalContentSize should be passed in?

Yeah, I suppose it&apos;s not guaranteed. Right now we happen to only call this during a rubber band, but I can reasonably foresee reasons why people might add calls to it at other times…which kind of makes me like my original patch better since that would ensure that totalContentsSizeForRubberBand() was always as up-to-date as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941291</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-10-18 12:10:42 -0700</bug_when>
    <thetext>Thanks! Simon and I feel like there should ultimately be a state machine that actually keeps track of whether or not you are in the middle of a rubber band. That will make all of this code a lot clearer. But for the time being, this  will do: http://trac.webkit.org/changeset/157642</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214484</attachid>
            <date>2013-10-17 12:12:10 -0700</date>
            <delta_ts>2013-10-17 16:41:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>5827</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzU4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTEwLTE3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSdWJiZXItYmFuZGluZyBpcyBvZnRl
biBub3Qgc21vb3RoIG9uIGluZmluaXRlbHkgc2Nyb2xsaW5nIHdlYnNpdGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5ODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB0b3RhbENvbnRlbnRzU2l6ZSBp
cyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gZm9yIAorICAgICAgICBtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcmVwZWF0ZWRseSB0
aHJvdWdob3V0IHRoZSBjdXJ2ZSAKKyAgICAgICAgb2YgYSBydWJiZXItYmFuZCB0byBkZXRlcm1p
bmUgdGhlIHN0cmV0Y2ggYW1vdW50LiBUbyBrZWVwIHRoZSBydWJiZXItYmFuZCAKKyAgICAgICAg
YW5pbWF0aW9uIHNtb290aCwgaXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gZmluaXNoIGl0cyBhbmlt
YXRpb24gdXNpbmcgdGhlIG9sZCAKKyAgICAgICAgdG90YWxDb250ZW50c1NpemUuIFRoaXMgcGF0
Y2ggZG9lcyB0aGF0IGJ5IGFkZGluZyBhIG5ldyB2YXJpYWJsZSwgCisgICAgICAgIG1fdG90YWxD
b250ZW50c1NpemVGb3JSdWJiZXJCYW5kLiBUaGlzIHZhbHVlIHNob3VsZCBhbG1vc3QgYWx3YXlz
IGJlIGVxdWl2YWxlbnQgdG8gCisgICAgICAgIG1fdG90YWxDb250ZW50c1NpemUuIEl0IHdpbGwg
b25seSB2YXJ5IGlmIG1fdG90YWxDb250ZW50c1NpemUgaGFzIGNoYW5nZWQgaW4gdGhlIAorICAg
ICAgICBtaWRkbGUgb2YgYSBydWJiZXItYmFuZCwgYW5kIGluIHRoYXQgY2FzZSwgaXQgd2lsbCBz
dGF5IGVxdWl2YWxlbnQgdG8gdGhlIG9sZCAKKyAgICAgICAgdG90YWxDb250ZW50U2l6ZSB2YWx1
ZSB1bnRpbCB0aGUgcnViYmVyIGJhbmQgYW5pbWF0aW9uIGZpbmlzaGVzLgorCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxkcmVu
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnRvdGFsQ29u
dGVudHNTaXplRm9yUnViYmVyQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6c2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6c3RvcFNu
YXBSdWJiZXJiYW5kVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWM6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisKIDIwMTMtMTAtMTcgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBsYXRm
b3JtQ0FMYXllck1hYyB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzM5MDcxNj4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDE1NzUyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJ
TkcpCiAKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsOCArNTksMTMgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQgogICAgIGlmIChzdGF0ZS0+aGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Vmlld3BvcnRSZWN0
KSkKICAgICAgICAgbV92aWV3cG9ydFJlY3QgPSBzdGF0ZS0+dmlld3BvcnRSZWN0KCk7CiAKLSAg
ICBpZiAoc3RhdGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlRvdGFsQ29udGVudHNTaXplKSkKKyAgICBpZiAoc3RhdGUtPmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKSkgeworICAg
ICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5pc1J1YmJlckJhbmRJblByb2dyZXNzKCkpCisgICAg
ICAgICAgICBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCA9IG1fdG90YWxDb250ZW50
c1NpemU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG90YWxDb250ZW50c1NpemVGb3JS
dWJiZXJCYW5kID0gc3RhdGUtPnRvdGFsQ29udGVudHNTaXplKCk7CiAgICAgICAgIG1fdG90YWxD
b250ZW50c1NpemUgPSBzdGF0ZS0+dG90YWxDb250ZW50c1NpemUoKTsKKyAgICB9CiAKICAgICBp
ZiAoc3RhdGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OkZyYW1lU2NhbGVGYWN0b3IpKQogICAgICAgICBtX2ZyYW1lU2NhbGVGYWN0b3IgPSBzdGF0ZS0+
ZnJhbWVTY2FsZUZhY3RvcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCShyZXZpc2lvbiAx
NTc1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSwxMiBAQCBwcm90ZWN0ZWQ6
CiAgICAgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3
cG9ydFJlY3Q7IH0KICAgICBjb25zdCBJbnRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemU7IH0KIAorICAgIC8vIElmIHRoZSB0b3RhbENv
bnRlbnRzU2l6ZSBjaGFuZ2VzIGluIHRoZSBtaWRkbGUgb2YgYSBydWJiZXItYmFuZCwgd2Ugc3Rp
bGwgd2FudCB0byB1c2UgdGhlIG9sZCB0b3RhbENvbnRlbnRzU2l6ZSBmb3IgdGhlIHNha2Ugb2YK
KyAgICAvLyBjb21wdXRpbmcgdGhlIHN0cmV0Y2hBbW91bnQoKS4gVXNpbmcgdGhlIG9sZCB2YWx1
ZSB3aWxsIGtlZXAgdGhlIGFuaW1hdGlvbiBzbW9vdGguIFdoZW4gdGhlcmUgaXMgbm8gcnViYmVy
LWJhbmQgaW4gcHJvZ3Jlc3MgYXQKKyAgICAvLyBhbGwsIG1fdG90YWxDb250ZW50c1NpemVGb3JS
dWJiZXJCYW5kIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIG1fdG90YWxDb250ZW50c1NpemUuCisg
ICAgY29uc3QgSW50U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkgY29uc3Qg
eyByZXR1cm4gbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KKyAgICB2b2lkIHNl
dFRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZChjb25zdCBJbnRTaXplJiB0b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQg
PSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KKwogICAgIGZsb2F0IGZyYW1lU2Nh
bGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lU2NhbGVGYWN0b3I7IH0KIAogICAgIFNj
cm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CkBAIC03OSw2ICs4NSw3IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3ZpZXdwb3J0UmVjdDsKICAgICBJbnRTaXpl
IG1fdG90YWxDb250ZW50c1NpemU7CisgICAgSW50U2l6ZSBtX3RvdGFsQ29udGVudHNTaXplRm9y
UnViYmVyQmFuZDsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKICAgICAKICAgICBmbG9h
dCBtX2ZyYW1lU2NhbGVGYWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCShyZXZpc2lvbiAxNTc1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI3MCw2ICsyNzAsOSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpzdG9w
CiAKICAgICBzY3JvbGxpbmdUcmVlKCktPnNldE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyhmYWxz
ZSk7CiAKKyAgICAvLyBTaW5jZSB0aGUgcnViYmVyYmFuZCB0aW1lciBoYXMgc3RvcHBlZCwgdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kIGNhbiBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0b3Rh
bENvbnRlbnRzU2l6ZS4KKyAgICBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQodG90
YWxDb250ZW50c1NpemUoKSk7CisKICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV9zbmFw
UnViYmVyYmFuZFRpbWVyLmdldCgpKTsKICAgICBtX3NuYXBSdWJiZXJiYW5kVGltZXIgPSBudWxs
cHRyOwogfQpAQCAtMzc5LDggKzM4Miw4IEBAIEludFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlTWFjOjoKIAogSW50UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6Om1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgSW50UG9pbnQgcG9zaXRpb24odG90
YWxDb250ZW50c1NpemUoKS53aWR0aCgpIC0gdmlld3BvcnRSZWN0KCkud2lkdGgoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICB0b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpIC0gdmlld3BvcnRS
ZWN0KCkuaGVpZ2h0KCkpOworICAgIEludFBvaW50IHBvc2l0aW9uKHRvdGFsQ29udGVudHNTaXpl
Rm9yUnViYmVyQmFuZCgpLndpZHRoKCkgLSB2aWV3cG9ydFJlY3QoKS53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICAgIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpLmhlaWdodCgp
IC0gdmlld3BvcnRSZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgcG9zaXRpb24uY2xhbXBOZWdhdGl2
ZVRvWmVybygpOwogCg==
</data>
<flag name="review"
          id="237086"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214524</attachid>
            <date>2013-10-17 15:41:32 -0700</date>
            <delta_ts>2013-10-17 16:40:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>5067</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTEwLTE3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSdWJiZXItYmFuZGluZyBpcyBvZnRl
biBub3Qgc21vb3RoIG9uIGluZmluaXRlbHkgc2Nyb2xsaW5nIHdlYnNpdGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5ODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB0b3RhbENvbnRlbnRzU2l6ZSBp
cyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gZm9yIAorICAgICAgICBtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcmVwZWF0ZWRseSB0
aHJvdWdob3V0IHRoZSBjdXJ2ZSAKKyAgICAgICAgb2YgYSBydWJiZXItYmFuZCB0byBkZXRlcm1p
bmUgdGhlIHN0cmV0Y2ggYW1vdW50LiBUbyBrZWVwIHRoZSBydWJiZXItYmFuZCAKKyAgICAgICAg
YW5pbWF0aW9uIHNtb290aCwgaXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gZmluaXNoIGl0cyBhbmlt
YXRpb24gdXNpbmcgdGhlIG9sZCAKKyAgICAgICAgdG90YWxDb250ZW50c1NpemUuIFRoaXMgcGF0
Y2ggZG9lcyB0aGF0IGJ5IGFkZGluZyBhIG5ldyB2YXJpYWJsZSwgCisgICAgICAgIG1fdG90YWxD
b250ZW50c1NpemVGb3JSdWJiZXJCYW5kLiBUaGlzIHZhbHVlIHNob3VsZCBhbG1vc3QgYWx3YXlz
IGJlIGVxdWl2YWxlbnQgdG8gCisgICAgICAgIG1fdG90YWxDb250ZW50c1NpemUuIEl0IHdpbGwg
b25seSB2YXJ5IGlmIGl0IGhhc27igJl0IHlldCBoYWQgY2F1c2UgdG8gYmUgCisgICAgICAgIGlu
aXRpYWxpemVkIG9yIGlmIG1fdG90YWxDb250ZW50c1NpemUgaGFzIGNoYW5nZWQgaW4gdGhlIG1p
ZGRsZSBvZiBhIHJ1YmJlci1iYW5kLCAKKyAgICAgICAgYW5kIGluIHRoYXQgY2FzZSwgaXQgd2ls
bCBzdGF5IGVxdWl2YWxlbnQgdG8gdGhlIG9sZCB0b3RhbENvbnRlbnRTaXplIHZhbHVlIHVudGls
IAorICAgICAgICB0aGUgcnViYmVyIGJhbmQgYW5pbWF0aW9uIGZpbmlzaGVzLgorCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp0b3RhbENvbnRlbnRzU2l6ZUZv
clJ1YmJlckJhbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU6OnNldFRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnN0YXJ0U25hcFJ1YmJlcmJh
bmRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yzo6c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVNYWM6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisKIDIwMTMtMTAt
MTcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFtDU1MgUmVnaW9uc10gQ3Jhc2ggd2hlbiBoaWdobGlnaHRpbmcgYSBub2Rl
IG9mIGEgZmxvdyB3aXRoIG5vIHJlZ2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2
aXNpb24gMTU3NTIyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTIgQEAgcHJv
dGVjdGVkOgogICAgIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlld3BvcnRSZWN0OyB9CiAgICAgY29uc3QgSW50U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplOyB9CiAKKyAgICAvLyBJZiB0aGUg
dG90YWxDb250ZW50c1NpemUgY2hhbmdlcyBpbiB0aGUgbWlkZGxlIG9mIGEgcnViYmVyLWJhbmQs
IHdlIHN0aWxsIHdhbnQgdG8gdXNlIHRoZSBvbGQgdG90YWxDb250ZW50c1NpemUgZm9yIHRoZSBz
YWtlIG9mCisgICAgLy8gY29tcHV0aW5nIHRoZSBzdHJldGNoQW1vdW50KCkuIFVzaW5nIHRoZSBv
bGQgdmFsdWUgd2lsbCBrZWVwIHRoZSBhbmltYXRpb24gc21vb3RoLiBXaGVuIHRoZXJlIGlzIG5v
IHJ1YmJlci1iYW5kIGluIHByb2dyZXNzIGF0CisgICAgLy8gYWxsLCBtX3RvdGFsQ29udGVudHNT
aXplRm9yUnViYmVyQmFuZCBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBtX3RvdGFsQ29udGVudHNT
aXplLgorICAgIGNvbnN0IEludFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CisgICAg
dm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgSW50U2l6ZSYgdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKSB7IG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kID0gdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CisKICAgICBmbG9hdCBm
cmFtZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVNjYWxlRmFjdG9yOyB9CiAK
ICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsgfQpAQCAtNzksNiArODUsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEludFJlY3QgbV92aWV3cG9ydFJlY3Q7CiAgICAg
SW50U2l6ZSBtX3RvdGFsQ29udGVudHNTaXplOworICAgIEludFNpemUgbV90b3RhbENvbnRlbnRz
U2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAgICAgCiAg
ICAgZmxvYXQgbV9mcmFtZVNjYWxlRmFjdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZU1hYy5tbQkocmV2aXNpb24gMTU3NTIyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTcsNiArMjU3LDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yzo6c3RhcgogCiAgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZXJJbnRlcnZhbCA9IDEuMCAvIDYwLjA7
CiAKKyAgICBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQodG90YWxDb250ZW50c1Np
emUoKSk7CisKICAgICBtX3NuYXBSdWJiZXJiYW5kVGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRp
bWVyQ3JlYXRlV2l0aEhhbmRsZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyB0aW1lckludGVydmFsLCB0aW1lckludGVydmFsLCAwLCAwLCBeKENGUnVu
TG9vcFRpbWVyUmVmKSB7CiAgICAgICAgIG1fc2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIuc25h
cFJ1YmJlckJhbmRUaW1lckZpcmVkKCk7CiAgICAgfSkpOwpAQCAtMjcwLDYgKzI3Miw5IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnN0b3AKIAogICAgIHNjcm9sbGluZ1Ry
ZWUoKS0+c2V0TWFpbkZyYW1lSXNSdWJiZXJCYW5kaW5nKGZhbHNlKTsKIAorICAgIC8vIFNpbmNl
IHRoZSBydWJiZXJiYW5kIHRpbWVyIGhhcyBzdG9wcGVkLCB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1
YmJlckJhbmQgY2FuIGJlIHN5bmNocm9uaXplZCB3aXRoIHRvdGFsQ29udGVudHNTaXplLgorICAg
IHNldFRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCh0b3RhbENvbnRlbnRzU2l6ZSgpKTsK
KwogICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3NuYXBSdWJiZXJiYW5kVGltZXIuZ2V0
KCkpOwogICAgIG1fc25hcFJ1YmJlcmJhbmRUaW1lciA9IG51bGxwdHI7CiB9CkBAIC0zNzksOCAr
Mzg0LDggQEAgSW50UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OgogCiBJbnRQ
b2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6bWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKIHsKLSAgICBJbnRQb2ludCBwb3NpdGlvbih0b3RhbENvbnRlbnRzU2l6ZSgpLndp
ZHRoKCkgLSB2aWV3cG9ydFJlY3QoKS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgIHRv
dGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSB2aWV3cG9ydFJlY3QoKS5oZWlnaHQoKSk7Cisg
ICAgSW50UG9pbnQgcG9zaXRpb24odG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkud2lk
dGgoKSAtIHZpZXdwb3J0UmVjdCgpLndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkuaGVpZ2h0KCkgLSB2aWV3cG9ydFJlY3QoKS5o
ZWlnaHQoKSk7CiAKICAgICBwb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>