<?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>40417</bug_id>
          
          <creation_ts>2010-06-10 03:57:05 -0700</creation_ts>
          <short_desc>HTML5Tokenizer needs to tell the InspectorTimelineAgent before and after it writes</short_desc>
          <delta_ts>2010-06-12 00:23:37 -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>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>pfeldman</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236293</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 03:57:05 -0700</bug_when>
    <thetext>HTML5Tokenizer needs to tell the InspectorTimelineAgent before and after it writes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236296</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 04:00:54 -0700</bug_when>
    <thetext>I&apos;m not 100% certain if we&apos;re supposed to call the willWrite/didWrite methods before every time we pump the lexer, or just during the write() call.  a write() call might not actually finish the block in question.  If the timeline agent is trying to know every time we&apos;re pumping the lexer it will want slightly different calls.

Then again, I dont&apos; think the old tokenizer &quot;correctly&quot; recorded resumes etc. either, so I think this code may just need some further tweaking from the inspector timeline folks.  It would be easy to move these calls to inside pumpLexer() if that&apos;s what&apos;s desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236297</commentid>
    <comment_count>2</comment_count>
      <attachid>58359</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 04:01:03 -0700</bug_when>
    <thetext>Created attachment 58359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236298</commentid>
    <comment_count>3</comment_count>
      <attachid>58359</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 04:03:55 -0700</bug_when>
    <thetext>Comment on attachment 58359
Patch

Thinking about this more, I think we do want to move this to inside pumpLexer.  We&apos;d need a more complicated test which caused the parser to pause due to script loads to see any difference.

I think the old code reported the wrong source since when the parser resumed it would report an empty SegmentedString to the inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236409</commentid>
    <comment_count>4</comment_count>
      <attachid>58359</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-10 10:16:37 -0700</bug_when>
    <thetext>Comment on attachment 58359
Patch

http://wkrietveld.appspot.com/40417/diff/1/3
File WebCore/html/HTML5Tokenizer.cpp (right):

http://wkrietveld.appspot.com/40417/diff/1/3#newcode160
WebCore/html/HTML5Tokenizer.cpp:160: willWriteHTML(source);
Are we supposed to call this when appendData is true?  If so, why don&apos;t we call when write() is nested and appendData is true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236456</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 11:16:43 -0700</bug_when>
    <thetext>I think we&apos;re supposed to call this in pumpLexer.  The question is what SegementedString we&apos;re supposed to pass it then.

The old tokenizer used write() as the pump lexer, basically.  I also think that even in the old system this code commonly got strange results for the SegementedString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236628</commentid>
    <comment_count>6</comment_count>
      <attachid>58431</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 18:25:02 -0700</bug_when>
    <thetext>Created attachment 58431
Another wip patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236630</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 18:28:37 -0700</bug_when>
    <thetext>This current WIP causes this diff:

--- /tmp/layout-test-results/inspector/timeline-script-tag-1-expected.txt	2010-06-10 18:18:48.000000000 -0700
+++ /tmp/layout-test-results/inspector/timeline-script-tag-1-actual.txt	2010-06-10 18:18:48.000000000 -0700
@@ -1,6 +1,7 @@
 Tests the Timeline API instrumentation of an HTML script tag.
 
 ParseHTML
+ParseHTML
 ----&gt; EvaluateScript
 --------&gt; MarkTimeline : SCRIPT TAG
 EvaluateScript Properties:
@@ -16,4 +17,5 @@
     usedHeapSize : &lt;number&gt;
     totalHeapSize : &lt;number&gt;
 }
+ParseHTML
 

I think we could avoid that by changing the pump loop into a do {} while, and having it check to see if we have any tokens to process before we inform the timeline agent.

Then again, I&apos;m still not really sure what the InspectorTimelineAgent is looking for here.  CCing some inspector folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236994</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-06-11 13:16:58 -0700</bug_when>
    <thetext>The intent is to bracket HTML processing (initiated from the network or document.write() or .innerHTML) with willwrite/didwrite calls so that something reasonable can be placed on the timeline.  The string itself is just used for char count, which is supposed to be the number of characters processed but I&apos;m pretty sure it&apos;s buggy in some cases due to pause/resumes.  The char count is of marginal utility anyway - the important bit is having some way for the developer looking at the timeline to know what piece of HTML was being processed if it ended up taking a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237020</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-11 14:05:27 -0700</bug_when>
    <thetext>I talked with James on #webkit.  He agrees we should give the inspector information about every pump and it should ignore any 0-length pumps, etc.  So the current patch is correct.  I&apos;ll upload a copy with more comments/explanation.

James and I also discussed that eventually the inspector should move the charCount from willWrite to didWrite at which time the HTML5Lexer could provide exact numbers of how many chars it processed in that pump, instead of the current number which is always the count of how many chars it has left in its buffer.  The old Tokenizer always provided the number of chars passed to write() which was 0 in the case of parser resumes.  So both are wrong in different ways with the current behavior of passing the charCount to willWrite() instead of didWrite().  But that&apos;s a separate issue. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237063</commentid>
    <comment_count>10</comment_count>
      <attachid>58512</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-11 15:16:30 -0700</bug_when>
    <thetext>Created attachment 58512
Updated after conversation with James, ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237086</commentid>
    <comment_count>11</comment_count>
      <attachid>58512</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-11 15:39:20 -0700</bug_when>
    <thetext>Comment on attachment 58512
Updated after conversation with James, ready for review

okiedokes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237252</commentid>
    <comment_count>12</comment_count>
      <attachid>58512</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-12 00:23:29 -0700</bug_when>
    <thetext>Comment on attachment 58512
Updated after conversation with James, ready for review

Clearing flags on attachment: 58512

Committed r61055: &lt;http://trac.webkit.org/changeset/61055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237253</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-12 00:23:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58359</attachid>
            <date>2010-06-10 04:01:03 -0700</date>
            <delta_ts>2010-06-10 18:24:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40417-20100610040102.patch</filename>
            <type>text/plain</type>
            <size>2985</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmRiNzVlYTc0MjY1ZWZhNDMzZTgyYzZmMDFhMGViNGQzNzQxMjVlOC4uZTY2MzE1OTJiMzU0YWRk
ZTNjMDIzYTEyOGU0MWY1OTUzNGE5MjlkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEhUTUw1VG9rZW5pemVyIG5lZWRzIHRv
IHRlbGwgdGhlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgYmVmb3JlIGFuZCBhZnRlciBpdCB3cml0
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNDE3
CisKKyAgICAgICAgVGhpcyBmaXhlcyB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gIEl0J3MgcG9zc2li
bGUgdGhpcyB3aWxsIG5lZWQgZnVydGhlcgorICAgICAgICB0d2Vha2luZyBpZiB0aGUgaW5zcGVj
dG9yIGV4cGVjdHMgdG8gYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgd2UgcHVtcAorICAgICAgICB0aGUg
bGV4ZXIgaW5zdGVhZCBvZiBqdXN0IGV2ZXJ5IHRpbWUgd2UgY2FsbCB3cml0ZSgpIGZvciBpbnN0
YW5jZS4KKworICAgICAgICBUZXN0ZWQgYnkgaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWct
MS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1VG9rZW5pemVyOjp3aWxsV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUw1VG9rZW5pemVyOjpkaWRXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVU
b2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmg6CisKKzIw
MTAtMDYtMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEhUTUw1IFBhcnNlciBzaG91bGQgY29u
dGludWUgcGFyc2luZyBhZnRlciBzY3JpcHQgZXhlY3V0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDQxNgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNw
cAppbmRleCA2NWRiZTA2MzFhZWQzNTA0MWZiNGM2MDY1OTk3MjM5Yzc4ZWVkMWM5Li5jZWEzNDhk
MmI4NTczNzUyNjhmNjJmYmZjN2ViMzA2N2UzNGJhMjYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTDVUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5j
cHAKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJYU1NBdWRpdG9yLmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIklu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSB7CkBAIC0xMTksNiArMTIzLDIyIEBAIHZvaWQgSFRNTDVUb2tlbml6ZXI6OnB1
bXBMZXhlcigpCiAgICAgfQogfQogCit2b2lkIEhUTUw1VG9rZW5pemVyOjp3aWxsV3JpdGVIVE1M
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvY3Vt
ZW50LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndp
bGxXcml0ZUhUTUwoc291cmNlLmxlbmd0aCgpLCBtX2xleGVyLT5saW5lTnVtYmVyKCkpOworI2Vu
ZGlmCit9CisKK3ZvaWQgSFRNTDVUb2tlbml6ZXI6OmRpZFdyaXRlSFRNTCgpCit7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IG1fZG9jdW1lbnQtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1MKG1fbGV4ZXItPmxpbmVOdW1iZXIoKSk7CisjZW5kaWYK
K30KKwogdm9pZCBIVE1MNVRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIGJvb2wgYXBwZW5kRGF0YSkKIHsKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQpAQCAt
MTM3LDcgKzE1NywxMCBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCBhcHBlbmREYXRhKQogICAgIH0gZWxzZQogICAgICAgICBt
X2lucHV0Lmluc2VydEF0Q3VycmVudEluc2VydGlvblBvaW50KHNvdXJjZSk7CiAKKyAgICB3aWxs
V3JpdGVIVE1MKHNvdXJjZSk7CiAgICAgcHVtcExleGVySWZQb3NzaWJsZSgpOworICAgIGRpZFdy
aXRlSFRNTCgpOworCiAgICAgZW5kSWZEZWxheWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MNVRva2VuaXplci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgK
aW5kZXggYzRlZTlkZjllODI3ODcwZjkzYzFiNmFmZTgyN2FlYjA0MDBmOTIwYS4uODY0MDAwYzQ3
YjYzODMyZWQ4N2UxYjY0YjVkYzI4YTEzYWQ5YjRiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUw1VG9rZW5pemVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmgKQEAg
LTE2MCw2ICsxNjAsOSBAQCBwcml2YXRlOgogICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9uZXh0
OwogICAgIH07CiAKKyAgICB2b2lkIHdpbGxXcml0ZUhUTUwoY29uc3QgU2VnbWVudGVkU3RyaW5n
Jik7CisgICAgdm9pZCBkaWRXcml0ZUhUTUwoKTsKKwogICAgIHZvaWQgcHVtcExleGVyKCk7CiAg
ICAgdm9pZCBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAgICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0
ZXJTY3JpcHRFeGVjdXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58431</attachid>
            <date>2010-06-10 18:25:02 -0700</date>
            <delta_ts>2010-06-11 15:16:25 -0700</delta_ts>
            <desc>Another wip patch</desc>
            <filename>bug-40417-20100610182500.patch</filename>
            <type>text/plain</type>
            <size>3105</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODY2NzJlY2JkNWFkZmZmMTgxYTA2YTg1YmE5MjY4NGM3YTkzMGJjMC4uMzIxZDkyY2Q3YjEyMDk2
Yjc3NjhjOGFhNDJjNTNjMTdhZTkyNmM2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNi0xMCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDVUb2tlbml6ZXIgbmVlZHMgdG8gdGVsbCB0aGUgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCBiZWZvcmUgYW5kIGFmdGVyIGl0IHdyaXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA0MTcKKworICAgICAgICBU
aGlzIGZpeGVzIHRoZSB0ZXN0IGluIHF1ZXN0aW9uLiAgSXQncyBwb3NzaWJsZSB0aGlzIHdpbGwg
bmVlZCBmdXJ0aGVyCisgICAgICAgIHR3ZWFraW5nIGlmIHRoZSBpbnNwZWN0b3IgZXhwZWN0cyB0
byBiZSBjYWxsZWQgZXZlcnkgdGltZSB3ZSBwdW1wCisgICAgICAgIHRoZSBsZXhlciBpbnN0ZWFk
IG9mIGp1c3QgZXZlcnkgdGltZSB3ZSBjYWxsIHdyaXRlKCkgZm9yIGluc3RhbmNlLgorCisgICAg
ICAgIFRlc3RlZCBieSBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLmh0bWwKKworICAg
ICAgICAqIGh0bWwvSFRNTDVUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVU
b2tlbml6ZXI6OndpbGxQdW1wTGV4ZXIpOgorICAgICAgICAgLSBOb3RpZnkgdGhlIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQgd2UncmUgYWJvdXQgdG8gcHJvY2VzcyBpbnB1dC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1VG9rZW5pemVyOjpkaWRQdW1wTGV4ZXIpOgorICAgICAgICAgLSBOb3RpZnkg
dGhlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgd2UgZGlkIHByb2Nlc3MgdG9rZW5zLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OnB1bXBMZXhlcik6CisgICAgICAgICAtIENhbGwg
d2lsbFB1bXAgYW5kIGRpZFB1bXAKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW5pemVyLmg6CisK
IDIwMTAtMDYtMTAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRv
a2VuaXplci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCmluZGV4IGEyZjlj
M2Y5YzJiZWEwYzAzMmM3NzVhY2RjMzIwMWFkOWNhNWU1MjAuLjRlYzUwYjc4YWFkYzkyZWMyODYz
M2NmNmJmNzZlNDM5YmY4MThiNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2Vu
aXplci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcApAQCAtMzYsNiAr
MzYsMTAgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0
b3IuaCIKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsK
QEAgLTkzLDYgKzk3LDggQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVySWZQb3NzaWJs
ZSgpCiAKIHZvaWQgSFRNTDVUb2tlbml6ZXI6OnB1bXBMZXhlcigpCiB7CisgICAgd2lsbFB1bXBM
ZXhlcigpOworCiAgICAgQVNTRVJUKCFtX3BhcnNlclN0b3BwZWQpOwogICAgIEFTU0VSVCghbV90
cmVlQnVpbGRlci0+aXNQYXVzZWQoKSk7CiAgICAgd2hpbGUgKCFtX3BhcnNlclN0b3BwZWQgJiYg
bV9sZXhlci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkgewpAQCAtMTE3
LDYgKzEyMywyNCBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjpwdW1wTGV4ZXIoKQogICAgICAgICBp
ZiAoIXNob3VsZENvbnRpbnVlUGFyc2luZykKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CisK
KyAgICBkaWRQdW1wTGV4ZXIoKTsKK30KKwordm9pZCBIVE1MNVRva2VuaXplcjo6d2lsbFB1bXBM
ZXhlcigpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IG1fZG9jdW1lbnQtPmluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFdyaXRlSFRNTChtX2lucHV0LmN1cnJl
bnQoKS5sZW5ndGgoKSwgbV9sZXhlci0+bGluZU51bWJlcigpKTsKKyNlbmRpZgorfQorCit2b2lk
IEhUTUw1VG9rZW5pemVyOjpkaWRQdW1wTGV4ZXIoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvY3Vt
ZW50LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZFdyaXRlSFRNTChtX2xleGVyLT5saW5lTnVtYmVyKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRN
TDVUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sIGFw
cGVuZERhdGEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5oCmluZGV4IGM0ZWU5ZGY5ZTgyNzg3MGY5M2MxYjZh
ZmU4MjdhZWIwNDAwZjkyMGEuLmM4YWM2MmIxZmE5N2E2M2Q4YzVhYTE0NTZjODdmNGFlZGQ0NzBm
NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MNVRva2VuaXplci5oCkBAIC0xNjAsNiArMTYwLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgU2VnbWVudGVkU3RyaW5nIG1fbmV4dDsKICAgICB9OwogCisgICAgdm9pZCB3aWxsUHVt
cExleGVyKCk7CisgICAgdm9pZCBkaWRQdW1wTGV4ZXIoKTsKKwogICAgIHZvaWQgcHVtcExleGVy
KCk7CiAgICAgdm9pZCBwdW1wTGV4ZXJJZlBvc3NpYmxlKCk7CiAgICAgdm9pZCByZXN1bWVQYXJz
aW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58512</attachid>
            <date>2010-06-11 15:16:30 -0700</date>
            <delta_ts>2010-06-12 00:23:29 -0700</delta_ts>
            <desc>Updated after conversation with James, ready for review</desc>
            <filename>bug-40417-20100611151629.patch</filename>
            <type>text/plain</type>
            <size>5300</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGM5MTJjMjU4NGMxZDVkNTMxMDAwODRhOGYyZGVjZWVmYjNlNDdjYi4uZjIxNWFmMzEzZWVhZDhl
YjQ2NjVjOTMxNTlmODhiNmNiM2U3YmM5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNi0xMSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDVUb2tlbml6ZXIgbmVlZHMgdG8gdGVsbCB0aGUgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCBiZWZvcmUgYW5kIGFmdGVyIGl0IHdyaXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA0MTcKKworICAgICAgICBU
aGlzICJmaXhlcyIgaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sLiAgSFRNTDUg
cmVzdWx0cworICAgICAgICBkaWZmZXIgZnJvbSB0aGUgb2xkIHBhcnNlciBmb3IgZXhwZWN0ZWQg
cmVhc29ucy4KKworICAgICAgICBIVE1MNVRva2VuaXplciBjYWxscyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp3aWxsL2RpZFdyaXRlSFRNTCBldmVyeQorICAgICAgICB0aW1lIHdlIHB1bXAgdGhl
IGxleGVyIGluc3RlYWQgb2YgZXZlcnkgd3JpdGUoKSBjYWxsLgorICAgICAgICBXZSBlbmQgdXAg
cHVtcGluZyB0aGUgbGV4ZXIgc2xpZ2h0bHkgbW9yZSBvZnRlbiB0aGFuIHRoZSBvbGQgY29kZSBj
YWxsZWQKKyAgICAgICAgd3JpdGUoKSBpbiBvcmRlciB0byBjbGVhbmx5IGhhbmRsZSB1bmNsb3Nl
ZC1lbnRpdGllcywgdW5jbG9zZWQgdGFncywKKyAgICAgICAgYnVmZmVyZWQgY2hhcmFjdGVycywg
ZXRjLiBhdCB0aGUgZW5kIG9mIGEgZG9jdW1lbnQuCisKKyAgICAgICAgSSBkaXNjdXNzZWQgdGhp
cyBleHRlbnNpdmVseSB3aXRoIEphbWVzIFJvYmluc29uIGluICN3ZWJraXQgYW5kIHdlIGRlY2lk
ZWQKKyAgICAgICAgdGhhdCBpdCB3YXMgYmV0dGVyIGZvciB0aGUgSFRNTDVUb2tlbml6ZXIgdG8g
Y2FsbCBmb3IgZXZlcnkgcHVtcCBhbmQKKyAgICAgICAgdGhhdCB0aGUgSW5zcGVjdG9yIHNob3Vs
ZCBsYXRlciBmaWx0ZXIgb3V0IGVtcHR5IHB1bXBzLgorCisgICAgICAgIFdlIGNhbid0IGZpbHRl
ciBvdXQgZW1wdHkgcHVtcHMgeWV0LCBiZWNhdXNlIHRoZSBudW1iZXIgb2YgcGFyc2VkCisgICAg
ICAgIGNoYXJhY3RlcnMgaXMgcGFzc2VkIGluIHdpbGxXcml0ZSBpbnN0ZWFkIG9mIGRpZFdyaXRl
IGFuZCB0aHVzIGlzCisgICAgICAgIHNwZWN1bGF0aXZlIChhbmQgd3JvbmcpLiAgVGhpcyBpcyBh
IHByb2JsZW0gaW5kZXBlbmRlbnQgb2YgdGhpcyBjaGFuZ2UKKyAgICAgICAgYXMgd2lsbFdyaXRl
J3MgImxlbmd0aCIgYXJndW1lbnQgaXMgd3JvbmcgaW4gZGlmZmVyZW50IHdheXMgZm9yIHRoZSBv
bGQKKyAgICAgICAgcGFyc2VyLCBpbmNsdWRpbmcgYWx3YXlzIGJlaW5nIDAgd2hlbiB0aGUgb2xk
IHBhcnNlciByZXN1bWVzLgorCisgICAgICAgIFRlc3RlZCBieSBpbnNwZWN0b3IvdGltZWxpbmUt
c2NyaXB0LXRhZy0xLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTDVUb2tlbml6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OndpbGxQdW1wTGV4ZXIpOgorICAgICAg
ICAgLSBOb3RpZnkgdGhlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgd2UncmUgYWJvdXQgdG8gcHJv
Y2VzcyBpbnB1dC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW5pemVyOjpkaWRQdW1wTGV4
ZXIpOgorICAgICAgICAgLSBOb3RpZnkgdGhlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgd2UgZGlk
IHByb2Nlc3MgdG9rZW5zLgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbml6ZXI6OnB1bXBM
ZXhlcik6CisgICAgICAgICAtIENhbGwgd2lsbFB1bXAgYW5kIGRpZFB1bXAKKyAgICAgICAgKiBo
dG1sL0hUTUw1VG9rZW5pemVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaDoKKyAgICAgICAgIC0gQWRkIGEgRklYTUUgYWJvdXQgcGFzc2luZyBsZW5ndGgg
dG8gZGlkV3JpdGUgaW5zdGVhZCBvZiB3aWxsV3JpdGUuCisKIDIwMTAtMDYtMTEgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW5pemVyLmNwcAppbmRleCBlMzlhYTI2MGNlZDc4ZWY4
MmVmNzA4YjUxNTQ4NmZlOWVlYTI2YjU0Li5kNmM5YjAyMzA4OTYzNTIwNGZmNGI4YWU1YThiYWUw
ZDU0MzNiNTk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuaXplci5jcHAKQEAgLTM2LDYgKzM2LDEwIEBACiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkBAIC05Myw2ICs5
NywxMCBAQCB2b2lkIEhUTUw1VG9rZW5pemVyOjpwdW1wTGV4ZXJJZlBvc3NpYmxlKCkKIAogdm9p
ZCBIVE1MNVRva2VuaXplcjo6cHVtcExleGVyKCkKIHsKKyAgICAvLyBXZSB0ZWxsIHRoZSBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50IGFib3V0IGV2ZXJ5IHB1bXAsIGV2ZW4gaWYgd2UKKyAgICAvLyBl
bmQgdXAgcHVtcGluZyBub3RoaW5nLiAgSXQgY2FuIGZpbHRlciBvdXQgZW1wdHkgcHVtcHMgaXRz
ZWxmLgorICAgIHdpbGxQdW1wTGV4ZXIoKTsKKwogICAgIEFTU0VSVCghbV9wYXJzZXJTdG9wcGVk
KTsKICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwogICAgIHdoaWxlICgh
bV9wYXJzZXJTdG9wcGVkICYmIG1fbGV4ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwg
bV90b2tlbikpIHsKQEAgLTExNyw2ICsxMjUsMjcgQEAgdm9pZCBIVE1MNVRva2VuaXplcjo6cHVt
cExleGVyKCkKICAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZVBhcnNpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQorCisgICAgZGlkUHVtcExleGVyKCk7Cit9CisKK3ZvaWQgSFRNTDVU
b2tlbml6ZXI6OndpbGxQdW1wTGV4ZXIoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
Ly8gRklYTUU6IG1faW5wdXQuY3VycmVudCgpLmxlbmd0aCgpIGlzIG9ubHkgYWNjdXJhdGUgaWYg
d2UgZW5kIHVwIHB1bXBpbmcKKyAgICAvLyB0aGUgZW5kIHVwIHBhcnNpbmcgdGhlIHdob2xlIGJ1
ZmZlciBpbiB0aGlzIHB1bXAuICBXZSBzaG91bGQgcGFzcyBob3cKKyAgICAvLyBtdWNoIHdlIHBh
cnNlZCBhcyBwYXJ0IG9mIGRpZFdyaXRlSFRNTCBpbnN0ZWFkIG9mIHdpbGxXcml0ZUhUTUwuCisg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvY3VtZW50
LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxX
cml0ZUhUTUwobV9pbnB1dC5jdXJyZW50KCkubGVuZ3RoKCksIG1fbGV4ZXItPmxpbmVOdW1iZXIo
KSk7CisjZW5kaWYKK30KKwordm9pZCBIVE1MNVRva2VuaXplcjo6ZGlkUHVtcExleGVyKCkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gbV9kb2N1bWVudC0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRXcml0ZUhUTUwobV9sZXhlci0+bGluZU51bWJlcigpKTsK
KyNlbmRpZgogfQogCiB2b2lkIEhUTUw1VG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgYm9vbCBhcHBlbmREYXRhKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUw1VG9rZW5pemVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaAppbmRleCBk
MTkyNDcyOWI1NGEwNWVjNGIwMjJkNjNlMmI2MzVkYTg5ZjhiOTZjLi42ZjhkMTljYTFhYTA4NjA4
ZDU2N2QyNDIzM2Y2NTk0MTE2YjFlNjJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVU
b2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbml6ZXIuaApAQCAtMTY0LDYg
KzE2NCw5IEBAIHByaXZhdGU6CiAgICAgICAgIFNlZ21lbnRlZFN0cmluZyBtX25leHQ7CiAgICAg
fTsKIAorICAgIHZvaWQgd2lsbFB1bXBMZXhlcigpOworICAgIHZvaWQgZGlkUHVtcExleGVyKCk7
CisKICAgICB2b2lkIHB1bXBMZXhlcigpOwogICAgIHZvaWQgcHVtcExleGVySWZQb3NzaWJsZSgp
OwogICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggNGM1YjkzOWRmMzM2NzMz
ZWQwMzBiMzBlZmY1NWE5MjcxODdhMjU3My4uZmUzMzRiZTIzYTU1MTFlYjQ4N2FmMGZhN2NkMWE5
MWVhNjMwZTQyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aApAQCAtOTcsOSArOTcsMTEgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBhaW50KGNvbnN0IElu
dFJlY3QmKTsKICAgICB2b2lkIGRpZFBhaW50KCk7CiAKKyAgICAvLyBGSVhNRTogfGxlbmd0aHwg
c2hvdWxkIGJlIHBhc3NlZCBpbiBkaWRXcml0ZSBpbnN0ZWFkIHdpbGxXcml0ZQorICAgIC8vIGFz
IHRoZSBwYXJzZXIgY2FuIG5vdCBrbm93IGhvdyBtdWNoIGl0IHdpbGwgcHJvY2VzcyB1bnRpbCBp
dCB0cmllcy4KICAgICB2b2lkIHdpbGxXcml0ZUhUTUwodW5zaWduZWQgaW50IGxlbmd0aCwgdW5z
aWduZWQgaW50IHN0YXJ0TGluZSk7CiAgICAgdm9pZCBkaWRXcml0ZUhUTUwodW5zaWduZWQgaW50
IGVuZExpbmUpOwotICAgICAgICAKKwogICAgIHZvaWQgZGlkSW5zdGFsbFRpbWVyKGludCB0aW1l
cklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICB2b2lkIGRpZFJlbW92ZVRp
bWVyKGludCB0aW1lcklkKTsKICAgICB2b2lkIHdpbGxGaXJlVGltZXIoaW50IHRpbWVySWQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>