<?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>44828</bug_id>
          
          <creation_ts>2010-08-28 12:47:54 -0700</creation_ts>
          <short_desc>FrameView should make more calls to postLayoutTasks() using the timer</short_desc>
          <delta_ts>2010-09-17 14:16:57 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271042</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-28 12:47:54 -0700</bug_when>
    <thetext>Right now, FrameView calls FrameView::postLayoutTasks() either synchronously, or via the postLayoutTasksTimer. If we make more of these calls through the timer, then some scripts will be able to run without hanging WebKit or the UI AND without hitting the JavaScript recursion limit. 

This change only allows synchronous calls to postLayoutTasks() if we are not already in a synchronous call to postLayoutTasks(). Furthermore, it de-couples the notion of &quot;the post layout timer should fire&quot; from m_postLayoutTasksTimer.isActive(), instead using a boolean to track the need to use the timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271044</commentid>
    <comment_count>1</comment_count>
      <attachid>65838</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-28 12:52:27 -0700</bug_when>
    <thetext>Created attachment 65838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271049</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-08-28 13:08:49 -0700</bug_when>
    <thetext>Cool! Have you tested that the sidebar in Safari RSS doesn’t jiggle when you scroll? That’s a good test for making sure that at least sometimes you do perform post-layout tasks synchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271050</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-28 13:10:37 -0700</bug_when>
    <thetext>I just tested, and it appears to be jiggle-free :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271051</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-08-28 13:10:58 -0700</bug_when>
    <thetext>The name m_shouldFirePostLayoutTimer should be improved. It is really about whether you have a pending need to perform post-layout tasks. The timer already knows if it should fire :-) you’re  really using this for the case(s) where you stopped the timer before it had a chance to fire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271053</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-28 13:16:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; The name m_shouldFirePostLayoutTimer should be improved. It is really about whether you have a pending need to perform post-layout tasks. The timer already knows if it should fire :-) you’re  really using this for the case(s) where you stopped the timer before it had a chance to fire.

Yes, I agree. I wasn&apos;t happy with the name. Some ideas:

m_needToPerformPostLayoutTasks
m_hasPostLayoutTasksPending</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271066</commentid>
    <comment_count>6</comment_count>
      <attachid>65838</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-28 15:13:34 -0700</bug_when>
    <thetext>Comment on attachment 65838
Patch

There&apos;s a lot of statefulness here that makes it very hard to follow. Can we pass state via parameters, rather than keeping it in member variables? Alternatively, maybe a single state enum would be easier to follow than two booleans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271075</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-28 17:03:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 65838 [details])
&gt; There&apos;s a lot of statefulness here that makes it very hard to follow. Can we pass state via parameters, rather than keeping it in member variables? Alternatively, maybe a single state enum would be easier to follow than two booleans.

I&apos;m not sure either of those would work. A single state enum seems weird to me since I see the two variables as being very different. m_inSynchronousPostLayout represents whether the current callstack would trace back to a synchronous call to performPostLayoutTakss(). m_shouldFirePostLayoutTimer represents whether we have a pending need to call performPostLayoutTaks() on the timer. I think a single variable representing these two concepts would be confusing.

In terms of passing parameters…it seems like that would be a mess for m_inSynchronousPostLayout. I think it would mean passing a parameter to performPostLayoutTasks(), and having performPostLayoutTasks() send that same parameter into m_frame-&gt;eventHandler()-&gt;sendResizeEvent(), and keep carrying it as a parameter until it got back to FrameView::layout(). It would be similarly sloppy for m_shouldFirePostLayoutTimer. Again, a member variable seems a lot cleaner to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272461</commentid>
    <comment_count>8</comment_count>
      <attachid>65838</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-31 16:09:01 -0700</bug_when>
    <thetext>Comment on attachment 65838
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272471</commentid>
    <comment_count>9</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-31 16:22:49 -0700</bug_when>
    <thetext>Thanks Dave! http://trac.webkit.org/changeset/66552</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272500</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-08-31 16:49:47 -0700</bug_when>
    <thetext>Oops! Forgot the name-change. http://trac.webkit.org/changeset/66555</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280851</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-09-17 14:16:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/8064938&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65838</attachid>
            <date>2010-08-28 12:52:27 -0700</date>
            <delta_ts>2010-08-31 16:09:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>forReview.txt</filename>
            <type>text/plain</type>
            <size>8921</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjMxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODI4IEZyYW1lVmll
dyAKKyAgICAgICAgc2hvdWxkIG1ha2UgbW9yZSBjYWxscyB0byBwb3N0TGF5b3V0VGFza3MoKSB1
c2luZyB0aGUgdGltZXIKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODA2NDkzOD4KKworICAgICAgICBUaGlzIGNoYW5nZSBvbmx5IGFsbG93cyBz
eW5jaHJvbm91cyBjYWxscyB0byBwb3N0TGF5b3V0VGFza3MoKSBpZiAKKyAgICAgICAgd2UgYXJl
IG5vdCBhbHJlYWR5IGluIGEgc3luY2hyb25vdXMgY2FsbCB0byBwb3N0TGF5b3V0VGFza3MoKS4g
CisgICAgICAgIEZ1cnRoZXJtb3JlLCBpdCBkZS1jb3VwbGVzIHRoZSBub3Rpb24gb2YgInRoZSBw
b3N0IGxheW91dCB0aW1lciAKKyAgICAgICAgc2hvdWxkIGZpcmUiIGZyb20gbV9wb3N0TGF5b3V0
VGFza3NUaW1lci5pc0FjdGl2ZSgpLCBpbnN0ZWFkIHVzaW5nIAorICAgICAgICBhIGJvb2xlYW4g
dG8gdHJhY2sgdGhlIG5lZWQgdG8gdXNlIHRoZSB0aW1lci4KKworICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJhbWVWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6fkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dW5zY2hlZHVsZVJlbGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAxMC0wOC0yOCAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJ
bmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDY2MjQyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsOCBAQCBGcmFtZVZpZXc6OkZy
YW1lVmlldyhGcmFtZSogZnJhbWUpCiAgICAgLCBtX2ZpeGVkT2JqZWN0Q291bnQoMCkKICAgICAs
IG1fbGF5b3V0VGltZXIodGhpcywgJkZyYW1lVmlldzo6bGF5b3V0VGltZXJGaXJlZCkKICAgICAs
IG1fbGF5b3V0Um9vdCgwKQorICAgICwgbV9zaG91bGRGaXJlUG9zdExheW91dFRpbWVyKGZhbHNl
KQorICAgICwgbV9pblN5bmNocm9ub3VzUG9zdExheW91dChmYWxzZSkKICAgICAsIG1fcG9zdExh
eW91dFRhc2tzVGltZXIodGhpcywgJkZyYW1lVmlldzo6cG9zdExheW91dFRpbWVyRmlyZWQpCiAg
ICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAgICAgLCBtX2Jhc2VCYWNrZ3JvdW5kQ29sb3Io
Q29sb3I6OndoaXRlKQpAQCAtMTY0LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8RnJhbWVWaWV3PiBG
cmFtZVZpZXc6OmNyZWF0ZSgKIAogRnJhbWVWaWV3Ojp+RnJhbWVWaWV3KCkKIHsKLSAgICBpZiAo
bV9wb3N0TGF5b3V0VGFza3NUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgaWYgKG1fc2hvdWxkRmly
ZVBvc3RMYXlvdXRUaW1lcikgewogICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLnN0b3Ao
KTsKICAgICAgICAgbV9zY2hlZHVsZWRFdmVudHMuY2xlYXIoKTsKICAgICAgICAgbV9lbnF1ZXVl
RXZlbnRzID0gMDsKQEAgLTIwNCw2ICsyMDYsOCBAQCB2b2lkIEZyYW1lVmlldzo6cmVzZXQoKQog
ICAgIG1fZG9GdWxsUmVwYWludCA9IHRydWU7CiAgICAgbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxl
ZCA9IHRydWU7CiAgICAgbV9pbkxheW91dCA9IGZhbHNlOworICAgIG1faW5TeW5jaHJvbm91c1Bv
c3RMYXlvdXQgPSBmYWxzZTsKKyAgICBtX3Nob3VsZEZpcmVQb3N0TGF5b3V0VGltZXIgPSBmYWxz
ZTsKICAgICBtX2xheW91dENvdW50ID0gMDsKICAgICBtX25lc3RlZExheW91dENvdW50ID0gMDsK
ICAgICBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLnN0b3AoKTsKQEAgLTYzOCwxMSArNjQyLDEzIEBA
IHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKIAogICAgIG1fbGF5b3V0
U2NoZWR1bGluZ0VuYWJsZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9uZXN0ZWRMYXlvdXRDb3Vu
dCAmJiBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICBpZiAoIW1fbmVz
dGVkTGF5b3V0Q291bnQgJiYgIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgbV9zaG91bGRG
aXJlUG9zdExheW91dFRpbWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgdG9wLWxldmVs
IGxheW91dC4gSWYgdGhlcmUgYXJlIGFueSByZW1haW5pbmcgdGFza3MgZnJvbSB0aGUgcHJldmlv
dXMKICAgICAgICAgLy8gbGF5b3V0LCBmaW5pc2ggdGhlbSBub3cuCisgICAgICAgIG1faW5TeW5j
aHJvbm91c1Bvc3RMYXlvdXQgPSB0cnVlOwogICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVy
LnN0b3AoKTsKICAgICAgICAgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpOworICAgICAgICBtX2lu
U3luY2hyb25vdXNQb3N0TGF5b3V0ID0gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gVmlld3BvcnQt
ZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVzIHRvIG5lZWQgY29tcGxldGVseSBk
aWZmZXJlbnQgc3R5bGUgaW5mb3JtYXRpb24uCkBAIC04MjEsMTcgKzgyNywyNSBAQCB2b2lkIEZy
YW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgIHVwZGF0ZU92ZXJmbG93
U3RhdHVzKGxheW91dFdpZHRoKCkgPCBjb250ZW50c1dpZHRoKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29udGVudHNIZWlnaHQoKSk7CiAKLSAgICBp
ZiAoIW1fcG9zdExheW91dFRhc2tzVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAvLyBDYWxs
cyByZXN1bWVTY2hlZHVsZWRFdmVudHMoKQotICAgICAgICBwZXJmb3JtUG9zdExheW91dFRhc2tz
KCk7CisgICAgaWYgKCFtX3Nob3VsZEZpcmVQb3N0TGF5b3V0VGltZXIpIHsKKyAgICAgICAgaWYg
KCFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0KSB7CisgICAgICAgICAgICBtX2luU3luY2hyb25v
dXNQb3N0TGF5b3V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIENhbGxzIHJlc3VtZVNjaGVkdWxl
ZEV2ZW50cygpCisgICAgICAgICAgICBwZXJmb3JtUG9zdExheW91dFRhc2tzKCk7CisgICAgICAg
ICAgICBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gZmFsc2U7CisgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fcG9zdExheW91dFRhc2tzVGltZXIuaXNBY3RpdmUoKSAmJiBuZWVkc0xheW91
dCgpKSB7Ci0gICAgICAgICAgICAvLyBQb3N0LWxheW91dCB3aWRnZXQgdXBkYXRlcyBvciBhbiBl
dmVudCBoYW5kbGVyIG1hZGUgdXMgbmVlZCBsYXlvdXQgYWdhaW4uCi0gICAgICAgICAgICAvLyBM
YXkgb3V0IGFnYWluLCBidXQgdGhpcyB0aW1lIGRlZmVyIHdpZGdldCB1cGRhdGVzIGFuZCBldmVu
dCBkaXNwYXRjaCB1bnRpbCBhZnRlcgotICAgICAgICAgICAgLy8gd2UgcmV0dXJuLgorICAgICAg
ICBpZiAoIW1fc2hvdWxkRmlyZVBvc3RMYXlvdXRUaW1lciAmJiAobmVlZHNMYXlvdXQoKSB8fCBt
X2luU3luY2hyb25vdXNQb3N0TGF5b3V0KSkgeworICAgICAgICAgICAgLy8gSWYgd2UgbmVlZCBs
YXlvdXQgb3IgYXJlIGFscmVhZHkgaW4gYSBzeW5jaHJvbm91cyBjYWxsIHRvIHBvc3RMYXlvdXRU
YXNrcygpLCAKKyAgICAgICAgICAgIC8vIGRlZmVyIHdpZGdldCB1cGRhdGVzIGFuZCBldmVudCBk
aXNwYXRjaCB1bnRpbCBhZnRlciB3ZSByZXR1cm4uIHBvc3RMYXlvdXRUYXNrcygpCisgICAgICAg
ICAgICAvLyBjYW4gbWFrZSB1cyBuZWVkIHRvIHVwZGF0ZSBhZ2FpbiwgYW5kIHdlIGNhbiBnZXQg
c3R1Y2sgaW4gYSBuYXN0eSBjeWNsZSB1bmxlc3MKKyAgICAgICAgICAgIC8vIHdlIGNhbGwgaXQg
dGhyb3VnaCB0aGUgdGltZXIgaGVyZS4KKyAgICAgICAgICAgIG1fc2hvdWxkRmlyZVBvc3RMYXlv
dXRUaW1lciA9IHRydWU7CiAgICAgICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKLSAgICAgICAgICAgIHBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7Ci0gICAgICAg
ICAgICBsYXlvdXQoKTsKKyAgICAgICAgICAgIGlmIChuZWVkc0xheW91dCgpKSB7CisgICAgICAg
ICAgICAgICAgcGF1c2VTY2hlZHVsZWRFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXQo
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3Vt
ZVNjaGVkdWxlZEV2ZW50cygpOwpAQCAtMTQ1Miw2ICsxNDY2LDggQEAgdm9pZCBGcmFtZVZpZXc6
OnNldE5lZWRzTGF5b3V0KCkKIAogdm9pZCBGcmFtZVZpZXc6OnVuc2NoZWR1bGVSZWxheW91dCgp
CiB7CisgICAgbV9wb3N0TGF5b3V0VGFza3NUaW1lci5zdG9wKCk7CisKICAgICBpZiAoIW1fbGF5
b3V0VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTk1LDYgKzE2MTEs
OCBAQCBib29sIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0cygpCiAgICAgCiB2b2lkIEZyYW1lVmll
dzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiB7CisgICAgbV9zaG91bGRGaXJlUG9zdExheW91
dFRpbWVyID0gZmFsc2U7CisKICAgICBpZiAobV9maXJzdExheW91dENhbGxiYWNrUGVuZGluZykg
ewogICAgICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdExheW91dCgpOwpJbmRleDogV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2
aXNpb24gNjYyNDIpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxOSw2ICszMTksOCBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgbV9sYXlvdXRTY2hl
ZHVsaW5nRW5hYmxlZDsKICAgICBib29sIG1faW5MYXlvdXQ7CisgICAgYm9vbCBtX3Nob3VsZEZp
cmVQb3N0TGF5b3V0VGltZXI7CisgICAgYm9vbCBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0Owog
ICAgIGludCBtX2xheW91dENvdW50OwogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGF5b3V0Q291bnQ7
CiAgICAgVGltZXI8RnJhbWVWaWV3PiBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNjYzMTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0yOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4MjggRnJhbWVW
aWV3IAorICAgICAgICBzaG91bGQgbWFrZSBtb3JlIGNhbGxzIHRvIHBvc3RMYXlvdXRUYXNrcygp
IHVzaW5nIHRoZSB0aW1lcgorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84MDY0OTM4PgorCisgICAgICAgICogZmFzdC9ldmVudHMvY2hhbmdlLW92
ZXJmbG93LW9uLW92ZXJmbG93LWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXZlbnRzL2NoYW5nZS1vdmVyZmxvdy1vbi1vdmVyZmxvdy1jaGFuZ2UuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDgtMjggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2NoYW5nZS1vdmVyZmxvdy1vbi1vdmVyZmxvdy1jaGFuZ2UtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NoYW5nZS1vdmVyZmxvdy1v
bi1vdmVyZmxvdy1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvY2hhbmdlLW92ZXJmbG93LW9uLW92ZXJmbG93LWNoYW5nZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorUEFTUworCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9jaGFuZ2Utb3ZlcmZsb3ctb24tb3ZlcmZsb3ctY2hhbmdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2hhbmdlLW92ZXJmbG93LW9u
LW92ZXJmbG93LWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvY2hhbmdlLW92ZXJmbG93LW9uLW92ZXJmbG93LWNoYW5nZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY3IEBACis8Ym9keT4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMjAwcHg7IG92ZXJmbG93OiBhdXRv
OyI+CisgICAgPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0iaGVpZ2h0OiA3NSU7IGJhY2tncm91bmQt
Y29sb3I6IHJlZDsiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLy8gRm9y
Y2UgYSBsYXlvdXQgd2l0aCBvZmZzZXRIZWlnaHQsIGFuZCB0aGVuIHN0YXJ0IHRvZ2dsaW5nIG92
ZXJmbG93LgorICAgICAgICB0YXJnZXQub2Zmc2V0SGVpZ2h0OworICAgICAgICB0b2dnbGVPdmVy
ZmxvdygpOworICAgIH0KKworICAgIHZhciBjYWxsQ291bnQgPSAwOworICAgIHZhciByZWN1cnNp
b25EZXB0aCA9IDA7CisKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldCIpOworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0Iik7CisgICAgCisgICAgZnVuY3Rpb24gcGFzcygpCisgICAgeworICAgICAgICByZXN1bHQu
aW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IH0KKyAgICAKKyAgICBmdW5jdGlvbiBmYWlsKCkKKyAgICB7CisgICAgICAgIHJlc3VsdC5pbm5l
ckhUTUwgPSAiRkFJTCI7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdG9nZ2xlT3ZlcmZsb3coKQorICAgIHsKKyAgICAgICAgKytyZWN1cnNp
b25EZXB0aDsKKyAgICAgICAgKytjYWxsQ291bnQ7CisKKyAgICAgICAgLy8gVGhlIGNvZGUgY2hh
bmdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlc3Qgd2lsbCBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRv
IHN0YXJ0IAorICAgICAgICAvLyBmaXJpbmcgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGlmIChy
ZWN1cnNpb25EZXB0aCA+IDIpIHsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlIGhhdmUgbWFkZSBpdCB0aGlzIGZh
ciB3aXRob3V0IGEgcmVjdXJzaW9uRGVwdGggb2YgMiBvciBncmVhdGVyLCB0aGVuIHdlIAorICAg
ICAgICAvLyBjYW4gc2F5IHRoYXQgdGhlIHRlc3QgcGFzc2VkLgorICAgICAgICBpZiAoY2FsbENv
dW50ID4gOCkgeworICAgICAgICAgICAgcGFzcygpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHRhcmdldC5zdHlsZS5oZWlnaHQgPT09ICI3NSUiKQorICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLmhlaWdodCA9ICIyMDAlIjsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLmhlaWdodCA9ICI3NSUiOworICAgICAgICB0YXJnZXQub2Zm
c2V0SGVpZ2h0OworCisgICAgICAgIC0tcmVjdXJzaW9uRGVwdGg7CisgICAgfQorICAgIHRhcmdl
dC5wYXJlbnROb2RlLmFkZEV2ZW50TGlzdGVuZXIoIm92ZXJmbG93Y2hhbmdlZCIsIHRvZ2dsZU92
ZXJmbG93KTsKKzwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="54717"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>