<?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>42076</bug_id>
          
          <creation_ts>2010-07-12 07:00:15 -0700</creation_ts>
          <short_desc>Keyboard operations for &lt;input type=number&gt;</short_desc>
          <delta_ts>2010-07-16 16:12:49 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>27968</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249809</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-12 07:00:15 -0700</bug_when>
    <thetext>Keyboard operations for &lt;input type=number&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249812</commentid>
    <comment_count>1</comment_count>
      <attachid>61224</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-12 07:04:52 -0700</bug_when>
    <thetext>Created attachment 61224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251935</commentid>
    <comment_count>2</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-07-15 09:36:07 -0700</bug_when>
    <thetext>Just curious, this does not seem to cover non latin numbers (try Japanese for example).

Another common behavior of number inputs is that the increment increases if the user holds down the up/down key for a while, making it easier to make big changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252213</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-15 16:35:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Just curious, this does not seem to cover non latin numbers (try Japanese for example).

Right. The number type of HTML5 accepts only ASCII digits.
We should implement conversion from non-ASCII digits to HTML5 number in the future, and change the key input restriction too.

&gt; Another common behavior of number inputs is that the increment increases if the user holds down the up/down key for a while, making it easier to make big changes.

It works with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252595</commentid>
    <comment_count>4</comment_count>
      <attachid>61224</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-16 10:48:31 -0700</bug_when>
    <thetext>Comment on attachment 61224
Patch

WebCore/html/HTMLInputElement.cpp:2131
&gt; +      }
nit: please add a new line before the &quot;if (isTextField()...&quot;

WebCore/html/HTMLInputElement.cpp:2119
&gt; +      if (hasSpinButton() &amp;&amp; evt-&gt;type() == eventNames().keydownEvent &amp;&amp; evt-&gt;isKeyboardEvent()) {
nit: maybe it is better to put the isTextField case about the spin button
case since text fields are probably more common than spin buttons?

WebCore/html/HTMLInputElement.cpp:2121
&gt; +          if (key == &quot;Up&quot;) {
nit: how about using a temporary to avoid having to repeat the
work of calling those functions twice?

  int step = 0;
  if (key == &quot;Up&quot;)
      step = 1;
  else if (key == &quot;Down&quot;)
      step = -1;
  if (step != 0) {
      stepUpFromRenderer(step);
      evt-&gt;setDefaultHandled();
      return;
  }


WebCore/html/HTMLInputElement.cpp:2399
&gt; +  static bool isNumberCharacter(UChar ch)
nit: normally better to put static helper functions at the top of the file.
that way the flow of HTMLInputElement methods is not interrupted by a non-
member function implementation.

i&apos;m a little surprised that there isn&apos;t already a function like this
somewhere in webkit.  i didn&apos;t see it in ASCIICType.h :(]

R=me with these minor issues addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252711</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-16 14:55:44 -0700</bug_when>
    <thetext>Thank you for reviewing.

(In reply to comment #4)
&gt; WebCore/html/HTMLInputElement.cpp:2131
&gt; &gt; +      }
&gt; nit: please add a new line before the &quot;if (isTextField()...&quot;

Done.

&gt; WebCore/html/HTMLInputElement.cpp:2119
&gt; &gt; +      if (hasSpinButton() &amp;&amp; evt-&gt;type() == eventNames().keydownEvent &amp;&amp; evt-&gt;isKeyboardEvent()) {
&gt; nit: maybe it is better to put the isTextField case about the spin button
&gt; case since text fields are probably more common than spin buttons?

Did not.  It&apos;s possible that non-textfield has spin buttons in the future.

&gt; WebCore/html/HTMLInputElement.cpp:2121
&gt; &gt; +          if (key == &quot;Up&quot;) {
&gt; nit: how about using a temporary to avoid having to repeat the
&gt; work of calling those functions twice?

Done.

&gt; WebCore/html/HTMLInputElement.cpp:2399
&gt; &gt; +  static bool isNumberCharacter(UChar ch)
&gt; nit: normally better to put static helper functions at the top of the file.
&gt; that way the flow of HTMLInputElement methods is not interrupted by a non-
&gt; member function implementation.

Moved it to the top.


Landed as http://trac.webkit.org/changeset/63586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252713</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-16 14:59:52 -0700</bug_when>
    <thetext>+        - Reject characters other than + - 0-9 . e E

I think that at least this part of patch is wrong enough to be rolled out. Number formatting is different in different locales, and the implementation is not a step in the right direction.

Please roll this out, and let&apos;s discuss number validation separately.

+    return ch == &apos;+&apos; || ch == &apos;-&apos; || ch == &apos;.&apos; || ch == &apos;e&apos; || ch == &apos;E&apos;
+        || ch &gt;= &apos;0&apos; &amp;&amp; ch &lt;= &apos;9&apos;;

It&apos;s also formatted incorrectly, this line is not long enough to be wrapped.

+        if (key == &quot;Up&quot;) {

Should we be checking for modifiers? What if the user presses Shift+Up to select to beginning, for example?

As far as I can tell, the behavior will be wrong.

WebCore/html/HTMLInputElement.cpp:2131
&gt; +      }
nit: please add a new line before the &quot;if (isTextField()...&quot;

This style of comment is more precise, but I also find it very difficult to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252729</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-16 15:34:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; +        - Reject characters other than + - 0-9 . e E
&gt; 
&gt; I think that at least this part of patch is wrong enough to be rolled out. Number formatting is different in different locales, and the implementation is not a step in the right direction.
&gt; Please roll this out, and let&apos;s discuss number validation separately.

I think this patch is harmless for the current implementation of &lt;input type=number&gt;.  It doesn&apos;t accept localized numbers as a valid value, and we shouldn&apos;t submit localized numbers.

I filed Bug 42484 for localized number support.

&gt; +        if (key == &quot;Up&quot;) {
&gt; 
&gt; Should we be checking for modifiers? What if the user presses Shift+Up to select to beginning, for example?

Hmm, good point.  I have no idea what should happen for Shift+Up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252746</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-16 16:12:49 -0700</bug_when>
    <thetext>&gt; I think this patch is harmless for the current implementation of &lt;input type=number&gt;.  It doesn&apos;t 
&gt; accept localized numbers as a valid value, and we shouldn&apos;t submit localized numbers.

A correct implementation would use an entirely different approach, which is why I think that this is a step in a wrong direction, and should be rolled out. Someone could copy/paste or reuse this wrong code elsewhere.

This makes me unhappy that the support for input type=number isn&apos;t behind an ENABLE macro. An &lt;input type=number&gt; that I cannot even use &quot;12345,80&quot; in seems to be premature to expose in a shipping product.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61224</attachid>
            <date>2010-07-12 07:04:52 -0700</date>
            <delta_ts>2010-07-16 10:48:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42076-20100712230450.patch</filename>
            <type>text/plain</type>
            <size>7931</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyOTA4OTZkZjg2OTg3MTQ3Y2YzMmYwYTgwY2VjN2I1ZmQyZGJlZDIwLi44YzkxYzRj
N2NhZmIyMjdhMjBhMTk3MmJlODFlMWEzNjFjMjFkYWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDctMTIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtleWJvYXJkIG9wZXJhdGlv
bnMgZm9yIDxpbnB1dCB0eXBlPW51bWJlcj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyMDc2CisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51
bWJlci1rZXlvcGVyYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2lucHV0LW51bWJlci1rZXlvcGVyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtbnVtYmVyLWtleW9wZXJhdGlvbi5qczogQWRkZWQu
CisKIDIwMTAtMDctMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LW51bWJlci1rZXlvcGVyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIta2V5b3BlcmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mY2E1NTZiODYxNjZkZjNhNzg2NGYwMDk4ZGEyNDQ1MjkzYzA4ODRjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIta2V5b3BlcmF0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IGZvciBrZXlib2FyZCBvcGVyYXRp
b25zIGZvciA8aW5wdXQgdHlwZT1udW1iZXI+CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitJbnNlcnRpbmcgImFiMTIzY2QiOgorUEFTUyBpbnB1dC52YWx1ZSBpcyAiMTIzIgorUHJl
c3MgdGhlIHVwIGFycm93IGtleToKK1BBU1MgaW5wdXQudmFsdWUgaXMgIjEyNCIKK1ByZXNzIHRo
ZSBkb3duIGFycm93IGtleToKK1BBU1MgaW5wdXQudmFsdWUgaXMgIjEyMyIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1rZXlvcGVyYXRpb24uaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWtleW9wZXJhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBhOWUxYTE5ZjFiMWI4NDAyMDcwYTdhNzQ2ODMxMzU2ZmRjMTBjZmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1rZXlvcGVyYXRpb24u
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pbnB1dC1udW1iZXIta2V5b3BlcmF0
aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtbnVtYmVyLWtleW9wZXJh
dGlvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LW51bWJl
ci1rZXlvcGVyYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRlZDdhMDhhMThlNmFjYjgyMjg3NGE4NmZl
ZTA3YTcxNGNmNTVkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2NyaXB0LXRlc3RzL2lucHV0LW51bWJlci1rZXlvcGVyYXRpb24uanMKQEAgLTAsMCArMSwyMCBA
QAorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIGtleWJvYXJkIG9wZXJhdGlvbnMgZm9yICZsdDtpbnB1
dCB0eXBlPW51bWJlcj4nKTsKK3ZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhU
TUwgPSAnPGlucHV0IHR5cGU9bnVtYmVyIGlkPW51bWJlcj4nOworCit2YXIgaW5wdXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtYmVyJyk7CitpbnB1dC5mb2N1cygpOworZGVidWcoJ0lu
c2VydGluZyAiYWIxMjNjZCI6Jyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcs
IGZhbHNlLCAnYWIxMjNjZCcpOworc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyIxMjMiJyk7CisK
K2RlYnVnKCdQcmVzcyB0aGUgdXAgYXJyb3cga2V5OicpOworZXZlbnRTZW5kZXIua2V5RG93bign
dXBBcnJvdycpOworc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyIxMjQiJyk7CisKK2RlYnVnKCdQ
cmVzcyB0aGUgZG93biBhcnJvdyBrZXk6Jyk7CitldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJy
b3cnKTsKK3Nob3VsZEJlKCdpbnB1dC52YWx1ZScsICciMTIzIicpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZTMyMzM4MDUxYTBkYzI2NGUyNjEwODM4NGIxY2QzZTA4MTJiNGQ1
OC4uNmZmZTA5MzIwNDNlZDkwYzljYjJlNjNmZmE0YmRmMDk2ZjY3NzY4YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxMC0wNy0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2V5Ym9hcmQgb3BlcmF0
aW9ucyBmb3IgPGlucHV0IHR5cGU9bnVtYmVyPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwNzYKKworICAgICAgICAtIFRoZSB1cCBhcnJvdyBrZXkg
d29ya3MgYXMgc3RlcFVwKCkuCisgICAgICAgIC0gVGhlIGRvd24gYXJyb3cga2V5IHdvcmtzIGFz
IHN0ZXBEb3duKCkuCisgICAgICAgIC0gUmVqZWN0IGNoYXJhY3RlcnMgb3RoZXIgdGhhbiArIC0g
MC05IC4gZSBFCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIta2V5b3Bl
cmF0aW9uLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgIEFkZCB1cC9kb3duIGFycm93IGtleXMgc3VwcG9ydCwgYW5kIGNhbGwgaGFuZGxlQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OmlzTnVtYmVyQ2hhcmFj
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50KToKKyAgICAgICAgIEZvciB0eXBlPW51bWJlciwgcmVtb3ZlIHVuYWNj
ZXB0YWJsZSBjaGFyYWN0ZXJzLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgor
CiAyMDEwLTA3LTEwICBGcmFuw6dvaXMgU2F1c3NldCAgPHNhdXNzZXRAZ21haWwuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IGY2NjM2YzljNzBiM2RmYjlkZDVhYjk4OTM3N2NlNWY1NGVm
YTk3OWQuLmU1ZWE2Njc3ZTY5MWIyODljNTNkNTlmZmNiNWY0OTRhNDdjOWEyYWMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFYT2Jq
ZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudC5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgpAQCAtMjExNSw2
ICsyMTE2LDE5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZ0KQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKGhhc1NwaW5CdXR0b24oKSAm
JiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2dC0+aXNLZXli
b2FyZEV2ZW50KCkpIHsKKyAgICAgICAgU3RyaW5nIGtleSA9IHN0YXRpY19jYXN0PEtleWJvYXJk
RXZlbnQqPihldnQpLT5rZXlJZGVudGlmaWVyKCk7CisgICAgICAgIGlmIChrZXkgPT0gIlVwIikg
eworICAgICAgICAgICAgc3RlcFVwRnJvbVJlbmRlcmVyKDEpOworICAgICAgICAgICAgZXZ0LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChrZXkgPT0gIkRvd24iKSB7CisgICAgICAgICAgICBzdGVwVXBGcm9tUmVuZGVyZXIo
LTEpOworICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIGlmIChpc1RleHRGaWVsZCgpCiAgICAgICAg
ICAgICAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50CiAgICAgICAg
ICAgICAmJiBldnQtPmlzS2V5Ym9hcmRFdmVudCgpCkBAIC0yMzcwLDcgKzIzODQsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICB9
CiAKICAgICBpZiAoZXZ0LT5pc0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkpCi0gICAgICAgIElu
cHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQobV9kYXRhLCB0aGlzLCB0
aGlzLCBldnQpOworICAgICAgICBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChldnQpOwog
CiAgICAgaWYgKGlzVGV4dEZpZWxkKCkgJiYgcmVuZGVyZXIoKSAmJiAoZXZ0LT5pc01vdXNlRXZl
bnQoKSB8fCBldnQtPmlzRHJhZ0V2ZW50KCkgfHwgZXZ0LT5pc1doZWVsRXZlbnQoKSB8fCBldnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5mb2N1c0V2ZW50KSkKICAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUocmVuZGVyZXIoKSktPmZvcndhcmRFdmVudChldnQpOwpAQCAtMjM4Miw2ICsyMzk2LDM5IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQog
ICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkZWZhdWx0RXZlbnRIYW5k
bGVyKGV2dCk7CiB9CiAKK3N0YXRpYyBib29sIGlzTnVtYmVyQ2hhcmFjdGVyKFVDaGFyIGNoKQor
eworICAgIHJldHVybiBjaCA9PSAnKycgfHwgY2ggPT0gJy0nIHx8IGNoID09ICcuJyB8fCBjaCA9
PSAnZScgfHwgY2ggPT0gJ0UnCisgICAgICAgIHx8IGNoID49ICcwJyAmJiBjaCA8PSAnOSc7Cit9
CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQo
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChpbnB1dFR5cGUoKSA9PSBOVU1CRVIpIHsKKyAgICAg
ICAgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqIHRleHRFdmVudCA9IHN0YXRpY19jYXN0PEJlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50Kj4oZXZlbnQpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0
ZXh0RXZlbnQtPnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgYm9vbCBoYXNJbnZhbGlkQ2hhciA9
IGZhbHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGlmICghaXNOdW1iZXJDaGFyYWN0ZXIodGV4dEV2ZW50LT50ZXh0KClbaV0p
KSB7CisgICAgICAgICAgICAgICAgaGFzSW52YWxpZENoYXIgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChoYXNJbnZh
bGlkQ2hhcikgeworICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBzdHJpcHBlZDsKKyAgICAgICAg
ICAgIHN0cmlwcGVkLnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgVUNoYXIg
Y2ggPSB0ZXh0RXZlbnQtPnRleHQoKVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVy
Q2hhcmFjdGVyKGNoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgc3RyaXBwZWQuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRl
eHRFdmVudC0+c2V0VGV4dChTdHJpbmc6OmFkb3B0KHN0cmlwcGVkKSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgSW5wdXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChtX2Rh
dGEsIHRoaXMsIHRoaXMsIGV2ZW50KTsKK30KKwogUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVRlbXBvcmFyeUZvcm1Gb3JJc0luZGV4KCkKIHsKICAg
ICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtID0gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBiMDU1ZTczNTQ5YmQxZjNi
YTU0ZDgzNjMzZWZlYTRiZDk0MWI5MTc2Li45ZTU3NWRmYmQ1ZDA2OTVkMWEyOTY3ZGY2YjNkOTUy
YWY4YTcyNmMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI5OSw2ICsyOTksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVDaGVja2VkUmFkaW9CdXR0b25zKCk7CiAgICAgCisg
ICAgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChFdmVudCopOwogICAgIFBhc3NS
ZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGVUZW1wb3JhcnlGb3JtRm9ySXNJbmRleCgpOwog
ICAgIC8vIEhlbHBlciBmb3IgZ2V0QWxsb3dlZFZhbHVlU3RlcCgpOwogICAgIGJvb2wgZ2V0U3Rl
cFBhcmFtZXRlcnMoZG91YmxlKiBkZWZhdWx0U3RlcCwgZG91YmxlKiBzdGVwU2NhbGVGYWN0b3Ip
IGNvbnN0Owo=
</data>
<flag name="review"
          id="49208"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="49916"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>