<?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>32875</bug_id>
          
          <creation_ts>2009-12-22 12:09:16 -0800</creation_ts>
          <short_desc>[Android] Android requires ability to increase layout delay</short_desc>
          <delta_ts>2010-01-07 07:05:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</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="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>abarth</cc>
    
    <cc>android-webkit-unforking</cc>
    
    <cc>bdakin</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>klobag</cc>
    
    <cc>mitz</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174324</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-12-22 12:09:16 -0800</bug_when>
    <thetext>Android requires the ability to increase the delay used when scheduling layout. See FrameView::scheduleRelayout().

Android increases the delay used after the first layout has completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175883</commentid>
    <comment_count>1</comment_count>
      <attachid>45656</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-12-30 05:31:16 -0800</bug_when>
    <thetext>Created attachment 45656
Patch 1 for Bug 32875</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175884</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-30 05:31:40 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45656 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175948</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-30 09:40:46 -0800</bug_when>
    <thetext>Why is this desirable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176743</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-04 10:43:24 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why is this desirable?
The idea is to reduce the number of re-layouts performed, in order to reduce the total page load time. This is particularly relevant for mobile devices like Android.

On Android, once the first layout is complete, we call setExtraLayoutDelay() to reduce the frequency of future re-layouts.

CC&apos;ing Grace, who initially added this to Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176831</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-04 13:19:13 -0800</bug_when>
    <thetext>I don&apos;t know if this is a good idea, but Hyatt, Beth or Mitz might have opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176979</commentid>
    <comment_count>6</comment_count>
      <attachid>45656</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 18:07:17 -0800</bug_when>
    <thetext>Comment on attachment 45656
Patch 1 for Bug 32875

&gt; Index: WebCore/dom/Document.cpp
&gt; ===================================================================
&gt; --- WebCore/dom/Document.cpp	(revision 52652)
&gt; +++ WebCore/dom/Document.cpp	(working copy)
&gt; @@ -407,6 +407,7 @@ Document::Document(Frame* frame, bool is
&gt;      m_processingLoadEvent = false;
&gt;      m_startTime = currentTime();
&gt;      m_overMinimumLayoutThreshold = false;
&gt; +    m_extraLayoutDelay = 0;
&gt;      
&gt;      initSecurityContext();
&gt;      initDNSPrefetch();

I think you should be modifying cLayoutScheduleThreshold in Document.cpp instead of adding another member variable to Document.

Another approach (which the iPhone WebKit port uses) is to add a &apos;layoutInterval&apos; item to Settings (so the value can be injected), then change uses of cLayoutScheduleThreshold to call settings()-&gt;layoutInterval() instead.  (The Settings::setLayoutInterval() method doesn&apos;t allow values less than cLayoutScheduleThreshold to be set when it&apos;s called, but that requires exporting cLayoutScheduleThreshold and removing the static keyword.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176982</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 18:09:08 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Another approach (which the iPhone WebKit port uses) is to add a
&gt; &apos;layoutInterval&apos; item to Settings (so the value can be injected), then change
&gt; uses of cLayoutScheduleThreshold to call settings()-&gt;layoutInterval() instead. 
&gt; (The Settings::setLayoutInterval() method doesn&apos;t allow values less than
&gt; cLayoutScheduleThreshold to be set when it&apos;s called, but that requires
&gt; exporting cLayoutScheduleThreshold and removing the static keyword.)

And (obviously) the default value for layoutInterval is cLayoutScheduleThreshold as set in the WebKit port files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177037</commentid>
    <comment_count>8</comment_count>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2010-01-04 22:22:39 -0800</bug_when>
    <thetext>It will be nice if you can share the iPhone WebKit port.

In Android, we only add an extra delay during loading. After a page is completed, the extra layout delay is removed. So if there is any JavaScript modifying the DOM, the layout won&apos;t be delayed.

Do you still think it is a good idea to use setting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177042</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 23:13:41 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; It will be nice if you can share the iPhone WebKit port.

We want to merge the iPhone port back to trunk; it&apos;s simply a matter of time and resources.  The source code for various releases is available on &lt;http://www.opensource.apple.com/&gt;.

&gt; In Android, we only add an extra delay during loading. After a page is
&gt; completed, the extra layout delay is removed. So if there is any JavaScript
&gt; modifying the DOM, the layout won&apos;t be delayed.
&gt; 
&gt; Do you still think it is a good idea to use setting?

It probably doesn&apos;t make *as much* sense to use a setting here if you&apos;re going to vary it within the lifetime of the Document object, although you still have to export Document::setExtraLayoutDelay() to call it from your WebKit port.  The nice thing about using Settings is that you don&apos;t need exports since the getter/setter methods are all inline in Settings.h.

I would still favor using the Settings object, even though it&apos;s a bit unorthodox (unless someone else objects to it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177045</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-04 23:33:37 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I would still favor using the Settings object, even though it&apos;s a bit
&gt; unorthodox (unless someone else objects to it).

Hmm...the Settings object is per Page, not per Document.  The more I think about this, the less it feels like a setting.  And Document::setExtraLayoutDelay() doesn&apos;t have to be exported since it&apos;s also defined in the header.

I&apos;d go ahead and put the review? flag back on the patch to see what others say.  Sorry for the review flag churn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177114</commentid>
    <comment_count>11</comment_count>
      <attachid>45656</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-05 04:47:43 -0800</bug_when>
    <thetext>Comment on attachment 45656
Patch 1 for Bug 32875

Re-applying review? flag following result of discussion ...

Modifying cLayoutScheduleThreshold or using a setting is not appropriate, as the delay needs to be modified within the lifetime of the Document object, and is specific to a Document object, not to a Page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177334</commentid>
    <comment_count>12</comment_count>
      <attachid>45656</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 13:08:31 -0800</bug_when>
    <thetext>Comment on attachment 45656
Patch 1 for Bug 32875

&gt; +    m_extraLayoutDelay = 0;

Should use member initialization syntax instead of assignment.

Seems OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177336</commentid>
    <comment_count>13</comment_count>
      <attachid>45656</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 13:09:01 -0800</bug_when>
    <thetext>Comment on attachment 45656
Patch 1 for Bug 32875

In the .cpp file you probably need a comment mentioning this is used by Android. Otherwise, someone may remove this unused function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177375</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-05 13:51:19 -0800</bug_when>
    <thetext>I don&apos;t understand why minimumLayoutDelay returns an int.  It should be unsigned I would think.

I also think m_extraLayoutDelay should have a comment enxt to it in Document.h explaining what it&apos;s used for.

Otherwise this looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177656</commentid>
    <comment_count>15</comment_count>
      <attachid>45970</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-06 11:18:14 -0800</bug_when>
    <thetext>Created attachment 45970
Patch 2 for Bug 32875

&gt; &gt; +    m_extraLayoutDelay = 0;
&gt; Should use member initialization syntax instead of assignment.
I used assignment to keep this variable with the other variables used in minimumLayoutDelay(), which are
initialized in this way. Do you want me to move the entire group to the initializer list?
 
&gt; In the .cpp file you probably need a comment mentioning this is used by
&gt; Android. Otherwise, someone may remove this unused function.
Fixed.

&gt; I don&apos;t understand why minimumLayoutDelay returns an int.  It should be
&gt; unsigned I would think.
It looks like there are plenty of cases (in this file and elsewhere) where int is used for values which will always be non-negative and I don&apos;t think this is the place to fix them all.

&gt; I also think m_extraLayoutDelay should have a comment enxt to it in Document.h
&gt; explaining what it&apos;s used for.
Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177661</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 11:23:51 -0800</bug_when>
    <thetext>Attachment 45970 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 98, in &lt;module&gt;
    main()
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 62, in main
    defaults = style.ArgumentDefaults(style.DEFAULT_OUTPUT_FORMAT,
AttributeError: &apos;module&apos; object has no attribute &apos;ArgumentDefaults&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177663</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 11:25:24 -0800</bug_when>
    <thetext>Looks like either the style-queue needs a reboot, or CJ&apos;s patch broke check-webkit-style. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177694</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-06 12:13:28 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=45970) [details]
&gt; &gt; &gt; +    m_extraLayoutDelay = 0;
&gt; &gt; Should use member initialization syntax instead of assignment.
&gt; I used assignment to keep this variable with the other variables used in
&gt; minimumLayoutDelay(), which are
&gt; initialized in this way. Do you want me to move the entire group to the
&gt; initializer list?

Sure, although normally I&apos;d prefer to do that in a separate patch either before or after this one.

&gt; &gt; I don&apos;t understand why minimumLayoutDelay returns an int.  It should be
&gt; &gt; unsigned I would think.
&gt; It looks like there are plenty of cases (in this file and elsewhere) where int
&gt; is used for values which will always be non-negative and I don&apos;t think this is
&gt; the place to fix them all.

I think this is a weak argument. Was Eric proposing fixing them all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177695</commentid>
    <comment_count>19</comment_count>
      <attachid>45970</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-06 12:15:06 -0800</bug_when>
    <thetext>Comment on attachment 45970
Patch 2 for Bug 32875

Repeating the same comment for both setExtraLayoutDelay and m_extraLayoutDelay seems like overkill to me.

Because of adding the comment, I suggest putting setExtraLayoutDelay into a separate paragraph with its comment with a blank line before and after.

r=me as is though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177734</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-06 13:44:01 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Attachment 45970 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; Traceback (most recent call last):
&gt;   File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 98, in &lt;module&gt;
&gt;     main()
&gt;   File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 62, in main
&gt;     defaults = style.ArgumentDefaults(style.DEFAULT_OUTPUT_FORMAT,
&gt; AttributeError: &apos;module&apos; object has no attribute &apos;ArgumentDefaults&apos;

That&apos;s unusual. That line gets executed every time check-webkit-style runs.  Has check-webkit-style failed any more times since last night&apos;s patch?

https://bugs.webkit.org/show_bug.cgi?id=32966#c13

I know it has succeeded at least once this morning.  See here for instance:

https://bugs.webkit.org/show_bug.cgi?id=32971#c4

By the way, this morning&apos;s check-webkit-style patch does not seem to have landed yet, so it doesn&apos;t seem to be the culprit either:

https://bugs.webkit.org/show_bug.cgi?id=32971

I can also see that it hasn&apos;t landed yet from the error message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177741</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-06 13:52:44 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Looks like either the style-queue needs a reboot, or CJ&apos;s patch broke
&gt; check-webkit-style. :(

Seems to be running okay as of a few minutes ago (2010-01-06 13:48:05 PST):

https://bugs.webkit.org/show_bug.cgi?id=32689#c7

So perhaps it was an isolated incident.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178122</commentid>
    <comment_count>22</comment_count>
      <attachid>45970</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-07 03:38:12 -0800</bug_when>
    <thetext>Comment on attachment 45970
Patch 2 for Bug 32875

Will land manually</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178137</commentid>
    <comment_count>23</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-07 04:18:00 -0800</bug_when>
    <thetext>&gt; Sure, although normally I&apos;d prefer to do that in a separate patch either before
&gt; or after this one.
I&apos;ve opened Bug 33316 to do this.

&gt; I think this is a weak argument. Was Eric proposing fixing them all?
I don&apos;t think he was proposing to fix them all, but if we change the return type of the method, and the type of the variables and helper functions it uses, the original change might be lost in the churn. I&apos;ve opened Bug 33317 to address this.

&gt; Because of adding the comment, I suggest putting setExtraLayoutDelay into a
&gt; separate paragraph with its comment with a blank line before and after.
Fixed

Submitted as http://trac.webkit.org/changeset/52919</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178170</commentid>
    <comment_count>24</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-01-07 07:05:52 -0800</bug_when>
    <thetext>
Will making Timer prioritied help?

-Yong</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45656</attachid>
            <date>2009-12-30 05:31:16 -0800</date>
            <delta_ts>2010-01-06 11:18:14 -0800</delta_ts>
            <desc>Patch 1 for Bug 32875</desc>
            <filename>extraLayoutDelay.txt</filename>
            <type>text/plain</type>
            <size>2740</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjY1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMTItMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgdGhlIGFiaWxpdHkgdG8gaW5jcmVhc2UgdGhlIGRlbGF5IHVzZWQgd2hlbiBzY2hlZHVs
aW5nIGxheW91dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyODc1CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHBvc3NpYmxlLgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDogTW9kaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
RG9jdW1lbnQpOiBNb2RpZmllZC4gSW5pdGlhbGl6ZXMgZXh0cmEgbGF5b3V0IGRlbGF5IHRvIHpl
cm8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KTogTW9k
aWZpZWQuIEFkZHMgZXh0cmEgbGF5b3V0IGRlbGF5IHdoZW4gY2FsY3VsYXRpbmcgbWluaW11bSBs
YXlvdXQgZGVsYXkuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IE1vZGlmaWVkLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEV4dHJhTGF5b3V0RGVsYXkpOiBBZGRlZC4gU2V0cyB0
aGUgZXh0cmEgbGF5b3V0IGRlbGF5LgorCiAyMDA5LTEyLTMwICBMYXN6bG8gR29tYm9zICA8bGFz
emxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUyNjUyKQorKysgV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNiArNDA3LDcgQEAgRG9jdW1lbnQ6OkRv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgYm9vbCBpcwogICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9
IGZhbHNlOwogICAgIG1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKICAgICBtX292ZXJNaW5p
bXVtTGF5b3V0VGhyZXNob2xkID0gZmFsc2U7CisgICAgbV9leHRyYUxheW91dERlbGF5ID0gMDsK
ICAgICAKICAgICBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAgICAgaW5pdEROU1ByZWZldGNoKCk7
CkBAIC0xODE4LDEzICsxODE5LDEzIEBAIGJvb2wgRG9jdW1lbnQ6OnNob3VsZFNjaGVkdWxlTGF5
b3V0KCkKIGludCBEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KCkKIHsKICAgICBpZiAobV9v
dmVyTWluaW11bUxheW91dFRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBtX2V4dHJhTGF5b3V0RGVsYXk7CiAgICAgCiAgICAgaW50IGVsYXBzZWQgPSBlbGFwc2Vk
VGltZSgpOwogICAgIG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gY0xh
eW91dFNjaGVkdWxlVGhyZXNob2xkOwogICAgIAogICAgIC8vIFdlJ2xsIHdhbnQgdG8gc2NoZWR1
bGUgdGhlIHRpbWVyIHRvIGZpcmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRocmVzaG9sZC4KLSAg
ICByZXR1cm4gbWF4KDAsIGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCAtIGVsYXBzZWQpOworICAg
IHJldHVybiBtYXgoMCwgY0xheW91dFNjaGVkdWxlVGhyZXNob2xkIC0gZWxhcHNlZCkgKyBtX2V4
dHJhTGF5b3V0RGVsYXk7CiB9CiAKIGludCBEb2N1bWVudDo6ZWxhcHNlZFRpbWUoKSBjb25zdApJ
bmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiA1MjY1MikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJz
aW5nKGJvb2wpOwogICAgIGJvb2wgcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYlBhcnNpbmc7
IH0KICAgICBpbnQgbWluaW11bUxheW91dERlbGF5KCk7CisgICAgdm9pZCBzZXRFeHRyYUxheW91
dERlbGF5KGludCBkZWxheSkgeyBtX2V4dHJhTGF5b3V0RGVsYXkgPSBkZWxheTsgfQogICAgIGJv
b2wgc2hvdWxkU2NoZWR1bGVMYXlvdXQoKTsKICAgICBpbnQgZWxhcHNlZFRpbWUoKSBjb25zdDsK
ICAgICAKQEAgLTEwODksNiArMTA5MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxSZWZQdHI8
SGlzdG9yeUl0ZW0+ID4gbV9hc3NvY2lhdGVkSGlzdG9yeUl0ZW1zOwogICAgIGRvdWJsZSBtX3N0
YXJ0VGltZTsKICAgICBib29sIG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQ7CisgICAgaW50
IG1fZXh0cmFMYXlvdXREZWxheTsKIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U2NyaXB0RWxlbWVu
dERhdGEqLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+ID4gPiBtX3NjcmlwdHNU
b0V4ZWN1dGVTb29uOwogICAgIFRpbWVyPERvY3VtZW50PiBtX2V4ZWN1dGVTY3JpcHRTb29uVGlt
ZXI7Cg==
</data>
<flag name="review"
          id="27748"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45970</attachid>
            <date>2010-01-06 11:18:14 -0800</date>
            <delta_ts>2010-01-07 03:38:11 -0800</delta_ts>
            <desc>Patch 2 for Bug 32875</desc>
            <filename>extraLayoutDelay2.txt</filename>
            <type>text/plain</type>
            <size>3119</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mjc5NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDEtMDYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgdGhlIGFiaWxpdHkgdG8gaW5jcmVhc2UgdGhlIGRlbGF5IHVzZWQgd2hlbiBzY2hlZHVs
aW5nIGxheW91dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyODc1CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHBvc3NpYmxlLgorCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDogTW9kaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
RG9jdW1lbnQpOiBNb2RpZmllZC4gSW5pdGlhbGl6ZXMgZXh0cmEgbGF5b3V0IGRlbGF5IHRvIHpl
cm8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KTogTW9k
aWZpZWQuIEFkZHMgZXh0cmEgbGF5b3V0IGRlbGF5IHdoZW4gY2FsY3VsYXRpbmcgbWluaW11bSBs
YXlvdXQgZGVsYXkuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IE1vZGlmaWVkLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEV4dHJhTGF5b3V0RGVsYXkpOiBBZGRlZC4gU2V0cyB0
aGUgZXh0cmEgbGF5b3V0IGRlbGF5LgorCiAyMDEwLTAxLTA1ICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHRyaXZpYWwgU3lt
YmlhbiBidWlsZCBmaXgKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUyNjg5KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNiArNDA3LDcgQEAgRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgYm9vbCBpcwogICAgIG1fcHJvY2Vzc2luZ0xv
YWRFdmVudCA9IGZhbHNlOwogICAgIG1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKICAgICBt
X292ZXJNaW5pbXVtTGF5b3V0VGhyZXNob2xkID0gZmFsc2U7CisgICAgbV9leHRyYUxheW91dERl
bGF5ID0gMDsKICAgICAKICAgICBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAgICAgaW5pdEROU1By
ZWZldGNoKCk7CkBAIC0xODE4LDEzICsxODE5LDEzIEBAIGJvb2wgRG9jdW1lbnQ6OnNob3VsZFNj
aGVkdWxlTGF5b3V0KCkKIGludCBEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KCkKIHsKICAg
ICBpZiAobV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBtX2V4dHJhTGF5b3V0RGVsYXk7CiAgICAgCiAgICAgaW50IGVsYXBzZWQg
PSBlbGFwc2VkVGltZSgpOwogICAgIG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFw
c2VkID4gY0xheW91dFNjaGVkdWxlVGhyZXNob2xkOwogICAgIAogICAgIC8vIFdlJ2xsIHdhbnQg
dG8gc2NoZWR1bGUgdGhlIHRpbWVyIHRvIGZpcmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRocmVz
aG9sZC4KLSAgICByZXR1cm4gbWF4KDAsIGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCAtIGVsYXBz
ZWQpOworICAgIHJldHVybiBtYXgoMCwgY0xheW91dFNjaGVkdWxlVGhyZXNob2xkIC0gZWxhcHNl
ZCkgKyBtX2V4dHJhTGF5b3V0RGVsYXk7CiB9CiAKIGludCBEb2N1bWVudDo6ZWxhcHNlZFRpbWUo
KSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA1MjY4OSkKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQYXJzaW5nKGJvb2wpOwogICAgIGJvb2wgcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
YlBhcnNpbmc7IH0KICAgICBpbnQgbWluaW11bUxheW91dERlbGF5KCk7CisgICAgLy8gVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBtb2RpZnkgdGhlIG1pbmltdW0gbGF5b3V0IGRlbGF5IHVzZWQgYXQg
ZGlmZmVyZW50CisgICAgLy8gcG9pbnRzIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIERvY3Vt
ZW50LiBJdCBpcyB1c2VkIGJ5IEFuZHJvaWQuCisgICAgdm9pZCBzZXRFeHRyYUxheW91dERlbGF5
KGludCBkZWxheSkgeyBtX2V4dHJhTGF5b3V0RGVsYXkgPSBkZWxheTsgfQogICAgIGJvb2wgc2hv
dWxkU2NoZWR1bGVMYXlvdXQoKTsKICAgICBpbnQgZWxhcHNlZFRpbWUoKSBjb25zdDsKICAgICAK
QEAgLTEwODksNiArMTA5MiwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVmUHRyPEhpc3Rv
cnlJdGVtPiA+IG1fYXNzb2NpYXRlZEhpc3RvcnlJdGVtczsKICAgICBkb3VibGUgbV9zdGFydFRp
bWU7CiAgICAgYm9vbCBtX292ZXJNaW5pbXVtTGF5b3V0VGhyZXNob2xkOworICAgIC8vIFRoaXMg
aXMgdXNlZCB0byBpbmNyZWFzZSB0aGUgbWluaW11bSBkZWxheSBiZXR3ZWVuIHJlLWxheW91dHMu
IEl0IGlzIHNldAorICAgIC8vIHVzaW5nIHNldEV4dHJhTGF5b3V0RGVsYXkgdG8gbW9kaWZ5IHRo
ZSBtaW5pbXVtIGRlbGF5IHVzZWQgYXQgZGlmZmVyZW50CisgICAgLy8gcG9pbnRzIGR1cmluZyB0
aGUgbGlmZXRpbWUgb2YgdGhlIERvY3VtZW50LgorICAgIGludCBtX2V4dHJhTGF5b3V0RGVsYXk7
CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPFNjcmlwdEVsZW1lbnREYXRhKiwgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiA+ID4gbV9zY3JpcHRzVG9FeGVjdXRlU29vbjsKICAgICBU
aW1lcjxEb2N1bWVudD4gbV9leGVjdXRlU2NyaXB0U29vblRpbWVyOwo=
</data>
<flag name="review"
          id="28155"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="28236"
          type_id="3"
          status="-"
          setter="steveblock"
    />
          </attachment>
      

    </bug>

</bugzilla>