<?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>18819</bug_id>
          
          <creation_ts>2008-04-30 17:49:30 -0700</creation_ts>
          <short_desc>WebKit misplaces cursor on option/control-pageup/pagedown</short_desc>
          <delta_ts>2010-03-04 20:45:59 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>jon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79311</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-30 17:49:30 -0700</bug_when>
    <thetext>WebKit misplaces cursor on option/control-pageup/pagedown

1.  Type a bunch of text into a text area.
2.  use control (or option) + page down or page up to scroll the text area

Expected:
This should behave identical to TextEdit: move the caret, as well as placing the caret in the center of the scrolled region.  Instead, WebKit only scrolls the text area enough so that the caret is visible.  it does not scroll to center the caret.

This is the Mac version of this bug.  Our behavior is also wrong on Windows (but different).  I&apos;ll file that in a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79313</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-30 17:53:26 -0700</bug_when>
    <thetext>The windows version of this bug is:
https://bugs.webkit.org/show_bug.cgi?id=18820
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194627</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-28 21:44:06 -0800</bug_when>
    <thetext>*** Bug 21955 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194639</commentid>
    <comment_count>3</comment_count>
      <attachid>49710</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-01 00:16:35 -0800</bug_when>
    <thetext>Created attachment 49710
v1

Specifically, we were ignoring the scroll unless there was an overflow style set or if it was a text area.  This fixes option+pageup/down for contenteditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194807</commentid>
    <comment_count>4</comment_count>
      <attachid>49710</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-01 14:00:36 -0800</bug_when>
    <thetext>Comment on attachment 49710
v1

&gt; -    if (!(style-&gt;overflowY() == OSCROLL || style-&gt;overflowY() == OAUTO || renderer-&gt;isTextArea()))
&gt; +    if (!(style-&gt;overflowY() == OSCROLL || style-&gt;overflowY() == OAUTO || renderer-&gt;isTextArea() || focusedNode-&gt;isContentEditable()))

There is no comment here explaining why this code change is correct.

And, further, I think this code change is wrong. If we want the editing meaning of page-down or option-page-down to win out over the scrolling meaning of the same equivalent, that may be fine, but we should *not* do it by returning 0 from verticalScrollDistance when there is a editable node focused. That&apos;s too low a level for this sort of policy decision. I don&apos;t immediately know which level should make this tradeoff, but this is slightly too low.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194809</commentid>
    <comment_count>5</comment_count>
      <attachid>49710</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-01 14:02:13 -0800</bug_when>
    <thetext>Comment on attachment 49710
v1

Hmm, maybe I was too quick to state it&apos;s wrong. I don&apos;t understand, though, why this would be correct in all editable content. For one thing, the isTextArea test is redundant once we have the editable check. For another, I&apos;m not sure we want this in  &lt;input type=text&gt;.

Did you test this key equivalent in plain old &lt;input type=text&gt; to make sure it still works as expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194810</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-01 14:02:52 -0800</bug_when>
    <thetext>The original bug says this is broken in &lt;textarea&gt;, but the bug fix has no effect on &lt;textarea&gt;. What&apos;s up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194859</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-01 16:11:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; The original bug says this is broken in &lt;textarea&gt;, but the bug fix has no
&gt; effect on &lt;textarea&gt;. What&apos;s up?

The bug description is wrong, it option+pageup/down only doesn&apos;t work for some contentedtiable cases.  Here&apos;s a test case with a input type=text, a textarea, a contenteditable div, and an iframe with a contenteditable body.  option+pagedown works in the first three, but not the last case.

http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cdiv%3E%0A%3Cinput%20type%3D%22text%22%20value%3D%22foo%20bar%20betz%20foo%20bar%20betz%22%20%2F%3E%0A%3C%2Fdiv%3E%0A%0A%3Cdiv%3E%20%20%0A%3Ctextarea%3E%0Aline1%0Aline2%20%0Aline3%20%0Aline4%0Aline5%0Aline6%0Aline7%0A%3C%2Ftextarea%3E%0A%0A%3Cdiv%20contentEditable%3D%22true%22%20style%3D%22overflow%3A%20auto%3B%20height%3A50px%3B%20width%3A%20150px%22%3E%0Aline1%3Cbr%2F%3E%0Aline2%3Cbr%2F%3E%0Aline3%3Cbr%2F%3E%20%0Aline4%3Cbr%2F%3E%0Aline5%3Cbr%2F%3E%0Aline6%3Cbr%2F%3E%0Aline7%3Cbr%2F%3E%0A%3C%2Fdiv%3E%0A%0A%3Ciframe%20%20style%3D&apos;height%3A50px&apos;%20src%3D%22data%3Atext%2Fhtml%2C%3Cbody%20contenteditable%3Dtrue%3Eline1%3Cbr%3Eline2%3Cbr%3Eline3%3Cbr%3Eline4%3Cbr%3Eline5%3Cbr%3Eline6%3C%2Fdiv%3E%22%3E%3C%2Fiframe%3E%0A&amp;ohh=1&amp;ohj=1&amp;jt=&amp;ojh=1&amp;ojj=1&amp;ms=100&amp;oth=0&amp;otj=0&amp;cex=1

I verified that this doesn&apos;t change the behavior in &lt;input type=&quot;text&quot;&gt; because apparently, they are not considered contenteditable.

You&apos;re right that we no longer need the check for isTextArea, isContentEditable covers that case.  I will upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194860</commentid>
    <comment_count>8</comment_count>
      <attachid>49762</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-01 16:14:14 -0800</bug_when>
    <thetext>Created attachment 49762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194861</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-01 16:20:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 49710 [details])
&gt; &gt; -    if (!(style-&gt;overflowY() == OSCROLL || style-&gt;overflowY() == OAUTO || renderer-&gt;isTextArea()))
&gt; &gt; +    if (!(style-&gt;overflowY() == OSCROLL || style-&gt;overflowY() == OAUTO || renderer-&gt;isTextArea() || focusedNode-&gt;isContentEditable()))
&gt; 
&gt; There is no comment here explaining why this code change is correct.
&gt; 
&gt; And, further, I think this code change is wrong. If we want the editing meaning
&gt; of page-down or option-page-down to win out over the scrolling meaning of the
&gt; same equivalent, that may be fine, but we should *not* do it by returning 0
&gt; from verticalScrollDistance when there is a editable node focused. That&apos;s too
&gt; low a level for this sort of policy decision. I don&apos;t immediately know which
&gt; level should make this tradeoff, but this is slightly too low.

Oh, I think maybe you&apos;re reading the code wrong. If a contenteditable node is focused, we were previously returning 0, and with the patch, we now return the amount that we already scrolled.  The return value is used to update the selection, which wasn&apos;t happening before.  Scrolling happens regardless of what this function returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196191</commentid>
    <comment_count>10</comment_count>
      <attachid>49762</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-04 13:14:32 -0800</bug_when>
    <thetext>Comment on attachment 49762
Patch

OK.  I think historically others have split out platform-specific bits into separate tests and check them into platform/mac or whatever.

But this is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196329</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-04 20:34:15 -0800</bug_when>
    <thetext>Committed r55566: &lt;http://trac.webkit.org/changeset/55566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196334</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-04 20:45:59 -0800</bug_when>
    <thetext>*** Bug 18820 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49710</attachid>
            <date>2010-03-01 00:16:35 -0800</date>
            <delta_ts>2010-03-01 16:14:09 -0800</delta_ts>
            <desc>v1</desc>
            <filename>pagedown.diff</filename>
            <type>text/plain</type>
            <size>4655</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ODcxOWI5Li5hZjMzMGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDIt
MjggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MTkKKyAgICAgICAgUHJlc3Npbmcgb3B0aW9uK3BhZ2V7ZG93bix1cH0g
c2hvdWxkIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIGluCisgICAgICAgIGNvbnRlbnQgZWRp
dGFibGUgYXJlYXMuICBPbiBvdGhlciBwbGF0Zm9ybXMsIHByZXNzaW5nIHBhZ2V7ZG93bix1cH0K
KyAgICAgICAgc2hvdWxkIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIGluIGNvbnRlbnQgZWRp
dGFibGUgYXJlYXMuCisKKyAgICAgICAgKiBlZGl0aW5nL2lucHV0L29wdGlvbi1wYWdlLXVwLWRv
d24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2lucHV0L29wdGlvbi1w
YWdlLXVwLWRvd24uaHRtbDogQWRkZWQuCisKIDIwMTAtMDItMjggIFJvYmVydCBIb2dhbiAgPHJv
YmVydEByb2JlcnRob2dhbi5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L29wdGlvbi1wYWdlLXVw
LWRvd24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9vcHRpb24tcGFn
ZS11cC1kb3duLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45OGE1YmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9v
cHRpb24tcGFnZS11cC1kb3duLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK09uIE1hYywg
b3B0aW9uK3BhZ2Vkb3duIHNob3VsZCBtb3ZlIHRoZSBtb3VzZSBjdXJzb3IgYW5kIHNjcm9sbCBp
biB0ZXh0IGFyZWFzLiBPbiBvdGhlciBwbGF0Zm9ybXMsIHBhZ2Vkb3duIHNob3VsZCBtb3ZlIHRo
ZSBtb3VzZSBjdXJzb3IgYW5kIHNjcm9sbCBpbiB0ZXh0IGFyZWFzLiBUaGlzIHRlc3QgcmVxdWly
ZXMgRFJUIHRvIHBhc3MuCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5wdXQvb3B0aW9uLXBhZ2UtdXAtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1
dC9vcHRpb24tcGFnZS11cC1kb3duLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjU1NmEzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5w
dXQvb3B0aW9uLXBhZ2UtdXAtZG93bi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGZyYW1lID0gZnJhbWVzWzBd
OworICAgIHZhciBkb2MgPSBmcmFtZS5kb2N1bWVudDsKKyAgICB2YXIgYm9keSA9IGRvYy5ib2R5
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgYm9keS5pbm5lckhU
TUwgKz0gIjxwPmxpbmUgIiArIGkgKyAiPC9wPlxuIjsKKyAgICBmcmFtZS5mb2N1cygpOworICAg
IGZyYW1lLmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGJvZHkuZmlyc3RDaGlsZCwgMCk7CisK
KyAgICB2YXIgb25NYWNQbGF0Zm9ybSA9IG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1h
YyBPUyBYXGIvKSAhPSAtMTsKKyAgICB2YXIgbW9kaWZpZXJzID0gb25NYWNQbGF0Zm9ybSA/IFsi
YWx0S2V5Il0gOiBbXTsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIsIG1vZGlmaWVycyk7
CisgICAgdmFyIGxpbmUgPSBmcmFtZS5nZXRTZWxlY3Rpb24oKS5iYXNlTm9kZS5ub2RlVmFsdWU7
CisgICAgaWYgKGxpbmUgIT0gImxpbmUgOCIpCisgICAgICAgIHRocm93ICJjdXJzb3Igc2hvdWxk
IGJlIGF0IGxpbmUgOCwgbm90ICIgKyBsaW5lOworCisgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
cGFnZURvd24iLCBtb2RpZmllcnMpOworICAgIHZhciBsaW5lID0gZnJhbWUuZ2V0U2VsZWN0aW9u
KCkuYmFzZU5vZGUubm9kZVZhbHVlOworICAgIGlmIChsaW5lICE9ICJsaW5lIDkiKQorICAgICAg
ICB0aHJvdyAiY3Vyc29yIHNob3VsZCBiZSBhdCBsaW5lIDksIG5vdCAiICsgbGluZTsKKworICAg
IGV2ZW50U2VuZGVyLmtleURvd24oInBhZ2VVcCIsIG1vZGlmaWVycyk7CisgICAgdmFyIGxpbmUg
PSBmcmFtZS5nZXRTZWxlY3Rpb24oKS5iYXNlTm9kZS5ub2RlVmFsdWU7CisgICAgaWYgKGxpbmUg
IT0gImxpbmUgMSIpCisgICAgICAgIHRocm93ICJjdXJzb3Igc2hvdWxkIGJlIGF0IGxpbmUgMSwg
bm90ICIgKyBsaW5lOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5p
bm5lclRleHQgPSAiUEFTUyI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
PC9zY3JpcHQ+CisKKzxkaXY+T24gTWFjLCBvcHRpb24rcGFnZWRvd24gc2hvdWxkIG1vdmUgdGhl
IG1vdXNlIGN1cnNvciBhbmQgc2Nyb2xsIGluIHRleHQgYXJlYXMuICBPbgorb3RoZXIgcGxhdGZv
cm1zLCBwYWdlZG93biBzaG91bGQgbW92ZSB0aGUgbW91c2UgY3Vyc29yIGFuZCBzY3JvbGwgaW4g
dGV4dCBhcmVhcy4gIFRoaXMKK3Rlc3QgcmVxdWlyZXMgRFJUIHRvIHBhc3MuPC9kaXY+Cis8aWZy
YW1lIHNyYz0iLi4vcmVzb3VyY2VzL2NvbnRlbnRlZGl0YWJsZS1pZnJhbWUtc3JjLmh0bWwiIG9u
bG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxkaXYgaWQ9InJlc3VsdHMiPkZBSUw8L2Rpdj4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM4Y2MwMS4uYWExNjI5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMi0yOCAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgx
OQorICAgICAgICBQcmVzc2luZyBvcHRpb24rcGFnZXtkb3duLHVwfSBzaG91bGQgbW92ZSB0aGUg
Y3Vyc29yIGFuZCBzY3JvbGwgaW4KKyAgICAgICAgY29udGVudCBlZGl0YWJsZSBhcmVhcy4gIE9u
IG90aGVyIHBsYXRmb3JtcywgcHJlc3NpbmcgcGFnZXtkb3duLHVwfQorICAgICAgICBzaG91bGQg
bW92ZSB0aGUgY3Vyc29yIGFuZCBzY3JvbGwgaW4gY29udGVudCBlZGl0YWJsZSBhcmVhcy4KKwor
ICAgICAgICBUZXN0OiBlZGl0aW5nL2lucHV0L29wdGlvbi1wYWdlLXVwLWRvd24uaHRtbAorCisg
ICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZl
cnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgorCiAyMDEwLTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggNDM3ZDU4NC4uMTcxZWIyNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBpbnQgdmVydGlj
YWxTY3JvbGxEaXN0YW5jZShGcmFtZSogZnJhbWUpCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0g
cmVuZGVyZXItPnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgaWYgKCEoc3R5bGUtPm92ZXJmbG93WSgpID09IE9TQ1JPTEwgfHwgc3R5bGUtPm92ZXJmbG93
WSgpID09IE9BVVRPIHx8IHJlbmRlcmVyLT5pc1RleHRBcmVhKCkpKQorICAgIGlmICghKHN0eWxl
LT5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPQVVUTyB8
fCByZW5kZXJlci0+aXNUZXh0QXJlYSgpIHx8IGZvY3VzZWROb2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaW50IGhlaWdodCA9IHRvUmVuZGVyQm94KHJl
bmRlcmVyKS0+Y2xpZW50SGVpZ2h0KCk7CiAgICAgcmV0dXJuIG1heChtYXg8aW50PihoZWlnaHQg
KiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBoZWlnaHQgLSBTY3Jv
bGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49762</attachid>
            <date>2010-03-01 16:14:14 -0800</date>
            <delta_ts>2010-03-04 13:14:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-18819-20100302091412.patch</filename>
            <type>text/plain</type>
            <size>4631</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NWY1OTg5Li5jZmJmNjhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDIt
MjggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MTkKKyAgICAgICAgUHJlc3Npbmcgb3B0aW9uK3BhZ2V7ZG93bix1cH0g
c2hvdWxkIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIGluCisgICAgICAgIGNvbnRlbnQgZWRp
dGFibGUgYXJlYXMuICBPbiBvdGhlciBwbGF0Zm9ybXMsIHByZXNzaW5nIHBhZ2V7ZG93bix1cH0K
KyAgICAgICAgc2hvdWxkIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIGluIGNvbnRlbnQgZWRp
dGFibGUgYXJlYXMuCisKKyAgICAgICAgKiBlZGl0aW5nL2lucHV0L29wdGlvbi1wYWdlLXVwLWRv
d24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2lucHV0L29wdGlvbi1w
YWdlLXVwLWRvd24uaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMDEgIFRoYXRjaGVyIFVscmljaCAg
PHR1bHJpY2hAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L29wdGlvbi1wYWdlLXVwLWRv
d24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9vcHRpb24tcGFnZS11
cC1kb3duLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
OGE1YmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9vcHRp
b24tcGFnZS11cC1kb3duLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK09uIE1hYywgb3B0
aW9uK3BhZ2Vkb3duIHNob3VsZCBtb3ZlIHRoZSBtb3VzZSBjdXJzb3IgYW5kIHNjcm9sbCBpbiB0
ZXh0IGFyZWFzLiBPbiBvdGhlciBwbGF0Zm9ybXMsIHBhZ2Vkb3duIHNob3VsZCBtb3ZlIHRoZSBt
b3VzZSBjdXJzb3IgYW5kIHNjcm9sbCBpbiB0ZXh0IGFyZWFzLiBUaGlzIHRlc3QgcmVxdWlyZXMg
RFJUIHRvIHBhc3MuCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5w
dXQvb3B0aW9uLXBhZ2UtdXAtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9v
cHRpb24tcGFnZS11cC1kb3duLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjU1NmEzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQv
b3B0aW9uLXBhZ2UtdXAtZG93bi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGZyYW1lID0gZnJhbWVzWzBdOwor
ICAgIHZhciBkb2MgPSBmcmFtZS5kb2N1bWVudDsKKyAgICB2YXIgYm9keSA9IGRvYy5ib2R5Owor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgYm9keS5pbm5lckhUTUwg
Kz0gIjxwPmxpbmUgIiArIGkgKyAiPC9wPlxuIjsKKyAgICBmcmFtZS5mb2N1cygpOworICAgIGZy
YW1lLmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGJvZHkuZmlyc3RDaGlsZCwgMCk7CisKKyAg
ICB2YXIgb25NYWNQbGF0Zm9ybSA9IG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBP
UyBYXGIvKSAhPSAtMTsKKyAgICB2YXIgbW9kaWZpZXJzID0gb25NYWNQbGF0Zm9ybSA/IFsiYWx0
S2V5Il0gOiBbXTsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIsIG1vZGlmaWVycyk7Cisg
ICAgdmFyIGxpbmUgPSBmcmFtZS5nZXRTZWxlY3Rpb24oKS5iYXNlTm9kZS5ub2RlVmFsdWU7Cisg
ICAgaWYgKGxpbmUgIT0gImxpbmUgOCIpCisgICAgICAgIHRocm93ICJjdXJzb3Igc2hvdWxkIGJl
IGF0IGxpbmUgOCwgbm90ICIgKyBsaW5lOworCisgICAgZXZlbnRTZW5kZXIua2V5RG93bigicGFn
ZURvd24iLCBtb2RpZmllcnMpOworICAgIHZhciBsaW5lID0gZnJhbWUuZ2V0U2VsZWN0aW9uKCku
YmFzZU5vZGUubm9kZVZhbHVlOworICAgIGlmIChsaW5lICE9ICJsaW5lIDkiKQorICAgICAgICB0
aHJvdyAiY3Vyc29yIHNob3VsZCBiZSBhdCBsaW5lIDksIG5vdCAiICsgbGluZTsKKworICAgIGV2
ZW50U2VuZGVyLmtleURvd24oInBhZ2VVcCIsIG1vZGlmaWVycyk7CisgICAgdmFyIGxpbmUgPSBm
cmFtZS5nZXRTZWxlY3Rpb24oKS5iYXNlTm9kZS5ub2RlVmFsdWU7CisgICAgaWYgKGxpbmUgIT0g
ImxpbmUgMSIpCisgICAgICAgIHRocm93ICJjdXJzb3Igc2hvdWxkIGJlIGF0IGxpbmUgMSwgbm90
ICIgKyBsaW5lOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5pbm5l
clRleHQgPSAiUEFTUyI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9z
Y3JpcHQ+CisKKzxkaXY+T24gTWFjLCBvcHRpb24rcGFnZWRvd24gc2hvdWxkIG1vdmUgdGhlIG1v
dXNlIGN1cnNvciBhbmQgc2Nyb2xsIGluIHRleHQgYXJlYXMuICBPbgorb3RoZXIgcGxhdGZvcm1z
LCBwYWdlZG93biBzaG91bGQgbW92ZSB0aGUgbW91c2UgY3Vyc29yIGFuZCBzY3JvbGwgaW4gdGV4
dCBhcmVhcy4gIFRoaXMKK3Rlc3QgcmVxdWlyZXMgRFJUIHRvIHBhc3MuPC9kaXY+Cis8aWZyYW1l
IHNyYz0iLi4vcmVzb3VyY2VzL2NvbnRlbnRlZGl0YWJsZS1pZnJhbWUtc3JjLmh0bWwiIG9ubG9h
ZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxkaXYgaWQ9InJlc3VsdHMiPkZBSUw8L2Rpdj4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk4
ZDQxMi4uYTYyM2ViYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMi0yOCAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgxOQor
ICAgICAgICBQcmVzc2luZyBvcHRpb24rcGFnZXtkb3duLHVwfSBzaG91bGQgbW92ZSB0aGUgY3Vy
c29yIGFuZCBzY3JvbGwgaW4KKyAgICAgICAgY29udGVudCBlZGl0YWJsZSBhcmVhcy4gIE9uIG90
aGVyIHBsYXRmb3JtcywgcHJlc3NpbmcgcGFnZXtkb3duLHVwfQorICAgICAgICBzaG91bGQgbW92
ZSB0aGUgY3Vyc29yIGFuZCBzY3JvbGwgaW4gY29udGVudCBlZGl0YWJsZSBhcmVhcy4KKworICAg
ICAgICBUZXN0OiBlZGl0aW5nL2lucHV0L29wdGlvbi1wYWdlLXVwLWRvd24uaHRtbAorCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRp
Y2FsU2Nyb2xsRGlzdGFuY2UpOgorCiAyMDEwLTAzLTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA0MzdkNTg0Li4zNGZhNDZkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIGludCB2ZXJ0
aWNhbFNjcm9sbERpc3RhbmNlKEZyYW1lKiBmcmFtZSkKICAgICBSZW5kZXJTdHlsZSogc3R5bGUg
PSByZW5kZXJlci0+c3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsK
LSAgICBpZiAoIShzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZs
b3dZKCkgPT0gT0FVVE8gfHwgcmVuZGVyZXItPmlzVGV4dEFyZWEoKSkpCisgICAgaWYgKCEoc3R5
bGUtPm92ZXJmbG93WSgpID09IE9TQ1JPTEwgfHwgc3R5bGUtPm92ZXJmbG93WSgpID09IE9BVVRP
IHx8IGZvY3VzZWROb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgaW50IGhlaWdodCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2xpZW50SGVpZ2h0KCk7
CiAgICAgcmV0dXJuIG1heChtYXg8aW50PihoZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9u
VG9TdGVwV2hlblBhZ2luZygpLCBoZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVu
UGFnZXMoKSksIDEpOwo=
</data>
<flag name="review"
          id="32725"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>