<?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>148580</bug_id>
          
          <creation_ts>2015-08-28 10:59:15 -0700</creation_ts>
          <short_desc>Web Inspector: Visual style editor shouldn&apos;t allow alpha characters in numeric input fields</short_desc>
          <delta_ts>2015-09-01 09:30:08 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=148678</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121752</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-28 10:59:15 -0700</bug_when>
    <thetext>* SUMMARY
Visual style editor shouldn&apos;t allow alpha characters in numeric input fields.

* STEPS TO REPRODUCE
1. Open Elements tab &gt; Styles - Visual
2. Select an element in the DOM tree
2. Expand Layout &gt; Position
3. Change Top to &quot;px&quot;
4. Type some non-numeric characters: &quot;abc&quot;
  =&gt; Element is updated with style=&quot;top: abcpx&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121755</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-28 11:00:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/22478271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122092</commentid>
    <comment_count>2</comment_count>
      <attachid>260257</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-30 17:35:39 -0700</bug_when>
    <thetext>Created attachment 260257
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122148</commentid>
    <comment_count>3</comment_count>
      <attachid>260257</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-31 06:14:08 -0700</bug_when>
    <thetext>Comment on attachment 260257
[Patch] Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=260257&amp;action=review

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:384
&gt; +            newValue = this.placeholder &amp;&amp; !isNaN(this.placeholder) ? parseFloat(this.placeholder) : 0;

So if a user had typed in &apos;50&apos;, then switched to &apos;abc&apos;, the value will now be &apos;0&apos;? It seems an early break is better if there&apos;s a non-placeholder value present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122217</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-31 11:06:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 260257 [details]
&gt; [Patch] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260257&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:384
&gt; &gt; +            newValue = this.placeholder &amp;&amp; !isNaN(this.placeholder) ? parseFloat(this.placeholder) : 0;
&gt; 
&gt; So if a user had typed in &apos;50&apos;, then switched to &apos;abc&apos;, the value will now
&gt; be &apos;0&apos;? It seems an early break is better if there&apos;s a non-placeholder value
&gt; present.

By the time the input control&apos;s change event fires we&apos;ve lost the previous value. VisualStyleNumberInputBox&apos;s value property is a wrapper around the input&apos;s value attribute, so we&apos;d need to store the value separately to be able to revert to the last valid state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122240</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-31 11:52:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 260257 [details]
&gt; &gt; [Patch] Proposed Fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=260257&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:384
&gt; &gt; &gt; +            newValue = this.placeholder &amp;&amp; !isNaN(this.placeholder) ? parseFloat(this.placeholder) : 0;
&gt; &gt; 
&gt; &gt; So if a user had typed in &apos;50&apos;, then switched to &apos;abc&apos;, the value will now
&gt; &gt; be &apos;0&apos;? It seems an early break is better if there&apos;s a non-placeholder value
&gt; &gt; present.
&gt; 
&gt; By the time the input control&apos;s change event fires we&apos;ve lost the previous
&gt; value. VisualStyleNumberInputBox&apos;s value property is a wrapper around the
&gt; input&apos;s value attribute, so we&apos;d need to store the value separately to be
&gt; able to revert to the last valid state.

And this is why we shouldn&apos;t store state in DOM elements! :_)

I suppose that could be a separate bug, if it will get too far out of scope (or the change has to be applied to every widget class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122243</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-31 12:01:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Comment on attachment 260257 [details]
&gt; &gt; &gt; [Patch] Proposed Fix
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=260257&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:384
&gt; &gt; &gt; &gt; +            newValue = this.placeholder &amp;&amp; !isNaN(this.placeholder) ? parseFloat(this.placeholder) : 0;
&gt; &gt; &gt; 
&gt; &gt; &gt; So if a user had typed in &apos;50&apos;, then switched to &apos;abc&apos;, the value will now
&gt; &gt; &gt; be &apos;0&apos;? It seems an early break is better if there&apos;s a non-placeholder value
&gt; &gt; &gt; present.
&gt; &gt; 
&gt; &gt; By the time the input control&apos;s change event fires we&apos;ve lost the previous
&gt; &gt; value. VisualStyleNumberInputBox&apos;s value property is a wrapper around the
&gt; &gt; input&apos;s value attribute, so we&apos;d need to store the value separately to be
&gt; &gt; able to revert to the last valid state.
&gt; 
&gt; And this is why we shouldn&apos;t store state in DOM elements! :_)

Indeed.

&gt; I suppose that could be a separate bug, if it will get too far out of scope
&gt; (or the change has to be applied to every widget class).

The intention was simply to prevent setting invalid styles like &quot;margin: abcpx&quot;. I think further refinements to the editing experience should go under a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122542</commentid>
    <comment_count>7</comment_count>
      <attachid>260257</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-01 08:41:44 -0700</bug_when>
    <thetext>Comment on attachment 260257
[Patch] Proposed Fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122551</commentid>
    <comment_count>8</comment_count>
      <attachid>260257</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-01 09:29:53 -0700</bug_when>
    <thetext>Comment on attachment 260257
[Patch] Proposed Fix

Clearing flags on attachment: 260257

Committed r189210: &lt;http://trac.webkit.org/changeset/189210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122552</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-01 09:30:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260257</attachid>
            <date>2015-08-30 17:35:39 -0700</date>
            <delta_ts>2015-09-01 09:29:53 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-148580-20150830173523.patch</filename>
            <type>text/plain</type>
            <size>3397</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
ZmE1MGZmYThjNWQxODhkNGE4YjIxODEyZmUwZTFjMDhlNmQ4OWU3Li5lYTY2MWY3ZDU4MGE2MTY0
Y2IzMGQ0YTdlNjU0YzFlNGVjNDk1MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wOC0zMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVmlzdWFsIHN0eWxlIGVkaXRvciBzaG91bGRuJ3Qg
YWxsb3cgYWxwaGEgY2hhcmFjdGVycyBpbiBudW1lcmljIGlucHV0IGZpZWxkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCk6CisgICAgICAgIEFkZGVkIGlucHV0IGVsZW1lbnQg
ImNoYW5nZWQiIGhhbmRsZXIsIHJlbmFtZWQgImtleXVwIiBoYW5kbGVyIHRvIG1hdGNoICJrZXlk
b3duIiBoYW5kbGVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3gucHJvdG90eXBlLl92YWx1ZU51bWJlcklucHV0Q2hhbmdlZCk6CisgICAgICAgIFZhbGlk
YXRlIGlucHV0IGluIHJlc3BvbnNlIHRvIGNoYW5nZWQgZXZlbnQuCisKIDIwMTUtMDgtMjggIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiAiYW5pbWF0aW9uRW5kIiBldmVudCBuYW1lcyBzaG91bGQgYmUgImFuaW1hdGlvbmVuZCIg
KGJyb2tlbiBkYXNoYm9hcmQgYW5pbWF0aW9uIGFmdGVyIHBhdXNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJ
bnB1dEJveC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanMKaW5kZXggZWMzYmUxNDgyMDllYjMwMzdjYTNkZjg5
OWI3NDFhYjRjZmJlYmY3MS4uMDFkZDg0NGE2NDFiNzQ3YzE4MTE2Yjg1ZmU5ZjllZjcwYjNmNTIy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzCkBAIC03NSw4
ICs3NSw5IEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94ID0gY2xhc3Mg
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCBleHRlbmRzCiAgICAgICAgIHRoaXMuX3ZhbHVlTnVt
YmVySW5wdXRFbGVtZW50LnNwZWxsY2hlY2sgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdmFsdWVO
dW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1c0Nv
bnRlbnRFbGVtZW50LmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fdmFsdWVOdW1iZXJJbnB1
dEtleURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fbnVtYmVySW5wdXRDaGFuZ2VkLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRLZXlVcC5iaW5kKHRoaXMp
KTsKICAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiYmx1ciIsIHRoaXMuX2JsdXJDb250ZW50RWxlbWVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwg
dGhpcy5fdmFsdWVOdW1iZXJJbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMu
X251bWJlclVuaXRzQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRF
bGVtZW50KTsKIAogICAgICAgICB0aGlzLl91bml0c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CkBAIC0zMDEsNyArMzAyLDcgQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3ggPSBjbGFzcyBWaXN1YWxTdHlsZU51bWJlcklucHV0Qm94IGV4dGVu
ZHMKICAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKICAgICB9CiAKLSAgICBfbnVtYmVy
SW5wdXRDaGFuZ2VkKCkKKyAgICBfdmFsdWVOdW1iZXJJbnB1dEtleVVwKGV2ZW50KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zNzYsNiArMzc3LDE5IEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94ID0gY2xhc3MgVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCBleHRlbmRzCiAgICAg
ICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZm9jdXNlZCIpOwogICAg
IH0KIAorICAgIF92YWx1ZU51bWJlcklucHV0Q2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAg
IGxldCBuZXdWYWx1ZSA9IHRoaXMudmFsdWU7CisgICAgICAgIGlmICghbmV3VmFsdWUgJiYgaXNO
YU4obmV3VmFsdWUpKQorICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnBsYWNlaG9sZGVyICYm
ICFpc05hTih0aGlzLnBsYWNlaG9sZGVyKSA/IHBhcnNlRmxvYXQodGhpcy5wbGFjZWhvbGRlcikg
OiAwOworCisgICAgICAgIGlmICghdGhpcy5fYWxsb3dOZWdhdGl2ZVZhbHVlcyAmJiBuZXdWYWx1
ZSA8IDApCisgICAgICAgICAgICBuZXdWYWx1ZSA9IDA7CisKKyAgICAgICAgdGhpcy52YWx1ZSA9
IE1hdGgucm91bmQobmV3VmFsdWUgKiAxMDApIC8gMTAwOworICAgICAgICB0aGlzLl92YWx1ZURp
ZENoYW5nZSgpOworICAgIH0KKwogICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVu
dHMoZGlzYWJsZWQpCiAgICAgewogICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC50
YWJJbmRleCA9IGRpc2FibGVkID8gIi0xIiA6IG51bGw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>