<?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>192788</bug_id>
          
          <creation_ts>2018-12-17 16:41:29 -0800</creation_ts>
          <short_desc>Wrong value for key property in keydown and keyup events generated holding Control key</short_desc>
          <delta_ts>2018-12-20 09:52:01 -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>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192824</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>
          
          <blocked>190571</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>darin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488668</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-17 16:41:29 -0800</bug_when>
    <thetext>Steps to reproduce:

1. Visit &lt;https://unixpapa.com/js/testkey.html&gt;.
2. Ensure default handling is not suppressed for any of the offered events.
3. Enable attribute DOM 3.
4. Focus the text field.
5. Press some key while holding Control down, say Control + A.

The keydown and keyup events visually show an empty string for the key property. Compare to Mac, which has output of the form:

[[
keydown  keyCode=17        which=17        charCode=0        
         key=Control char=undefined location=1 repeat=false
keydown  keyCode=65  (A)   which=65  (A)   charCode=0        
         key=a char=undefined location=0 repeat=false
keyup    keyCode=65  (A)   which=65  (A)   charCode=0        
         key=a char=undefined location=0 repeat=false
keyup    keyCode=17        which=17        charCode=0        
         key=Control char=undefined location=1 repeat=false
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488669</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-17 16:41:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/46795214&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488679</commentid>
    <comment_count>2</comment_count>
      <attachid>357504</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-17 17:02:45 -0800</bug_when>
    <thetext>Created attachment 357504
Patch

I did not include a test with this change as the patch uses the same code as we do on Mac, we do currently have infrastructure to generate a key event with a Control key modifier flag that has different unmodified and modified input strings, and I wanted to post this patch sooner. When I have a moment I will look to add testing support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489132</commentid>
    <comment_count>3</comment_count>
      <attachid>357504</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-18 16:23:28 -0800</bug_when>
    <thetext>Comment on attachment 357504
Patch

Clearing flags on attachment: 357504

Committed r239361: &lt;https://trac.webkit.org/changeset/239361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489133</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-18 16:23:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489867</commentid>
    <comment_count>5</comment_count>
      <attachid>357504</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-20 09:20:23 -0800</bug_when>
    <thetext>Comment on attachment 357504
Patch

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

&gt; Source/WebCore/platform/ios/PlatformEventFactoryIOS.mm:199
&gt; +    NSString *characters = isControlDown ? event.charactersIgnoringModifiers : event.characters;

Does this do the right thing for Control+Shift+A and other combinations that include both Control and other modifiers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489892</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-20 09:52:01 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 357504 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357504&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/PlatformEventFactoryIOS.mm:199
&gt; &gt; +    NSString *characters = isControlDown ? event.charactersIgnoringModifiers : event.characters;
&gt; 
&gt; Does this do the right thing for Control+Shift+A and other combinations that
&gt; include both Control and other modifiers?

It will once we fix &lt;rdar://problem/46874406&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357504</attachid>
            <date>2018-12-17 17:02:45 -0800</date>
            <delta_ts>2018-12-18 16:23:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192788-20181217170244.patch</filename>
            <type>text/plain</type>
            <size>3361</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM2OGI2MDBiYzdhY2Zm
Y2JhNzhhYWZmYjQwYWQxOGEyNzI3MTFjYS4uZjU1ZDAyMTMzOTk3MjE0M2IyMDYwYWZjMzgwNGI5
YzVjZWU1MTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEyLTE3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBXcm9uZyB2YWx1ZSBmb3Ig
a2V5IHByb3BlcnR5IGluIGtleWRvd24gYW5kIGtleXVwIGV2ZW50cyBnZW5lcmF0ZWQgaG9sZGlu
ZyBDb250cm9sIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkyNzg4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5NTIxND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRvIHdoYXQg
d2UgZG8gb24gTWFjLCBjb21wdXRlIHRoZSBET00ga2V5IHByb3BlcnR5IGZyb20gdGhlIGNoYXJh
Y3RlcnMgaWdub3JpbmcKKyAgICAgICAgbW9kaWZpZXIga2V5cyBpbnB1dCBzdHJpbmcgd2hlbiB0
aGUgQ29udHJvbCBrZXkgaXMgaGVsZCBkb3duLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6a2V5Rm9yS2V5RXZl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmtleUZvcktleUV2ZW50KToKKwogMjAxOC0xMi0xNyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBEb2N1bWVudE1hcmtl
cjo6YWxsTWFya2VycygpIGNvbnN0ZXhwcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCmluZGV4IGE2NzY0OGYyMmU5NGVl
MTkyOGMzNzc0NWJhYjE5YzI0YjNiODRkOTYuLmE5ZTcxNmFjNzEzZmY0OWIzMTM3NTljOTBlMzdi
MDlkOTg0ODUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KQEAgLTE5MCw3ICsxOTAsMTMgQEAgU3RyaW5nIGtl
eUZvcktleUV2ZW50KFdlYkV2ZW50ICpldmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIE5T
U3RyaW5nICpjaGFyYWN0ZXJzID0gZXZlbnQuY2hhcmFjdGVyczsKKyAgICAvLyBJZiBtb3JlIHRo
YW4gb25lIGtleSBpcyBiZWluZyBwcmVzc2VkIGFuZCB0aGUga2V5IGNvbWJpbmF0aW9uIGluY2x1
ZGVzIG9uZSBvciBtb3JlIG1vZGlmaWVyIGtleXMKKyAgICAvLyB0aGF0IHJlc3VsdCBpbiB0aGUg
a2V5IG5vIGxvbmdlciBwcm9kdWNpbmcgYSBwcmludGFibGUgY2hhcmFjdGVyIChlLmcuLCBDb250
cm9sICsgYSksIHRoZW4gdGhlCisgICAgLy8ga2V5IHZhbHVlIHNob3VsZCBiZSB0aGUgcHJpbnRh
YmxlIGtleSB2YWx1ZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBwcm9kdWNlZCBpZiB0aGUga2V5IGhh
ZCBiZWVuCisgICAgLy8gdHlwZWQgd2l0aCB0aGUgZGVmYXVsdCBrZXlib2FyZCBsYXlvdXQgd2l0
aCBubyBtb2RpZmllciBrZXlzIGV4Y2VwdCBmb3IgU2hpZnQgYW5kIEFsdEdyIGFwcGxpZWQuCisg
ICAgLy8gU2VlIDxodHRwczovL3d3dy53My5vcmcvVFIvMjAxNS9XRC11aWV2ZW50cy0yMDE1MTIx
NS8ja2V5cy1ndWlkZWxpbmVzPi4KKyAgICBib29sIGlzQ29udHJvbERvd24gPSBldmVudC5tb2Rp
ZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2xLZXk7CisgICAgTlNTdHJpbmcgKmNo
YXJhY3RlcnMgPSBpc0NvbnRyb2xEb3duID8gZXZlbnQuY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzIDogZXZlbnQuY2hhcmFjdGVyczsKICAgICBhdXRvIGxlbmd0aCA9IFtjaGFyYWN0ZXJzIGxl
bmd0aF07CiAgICAgLy8gY2hhcmFjdGVycyByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGZvciBkZWFk
IGtleXMuCiAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3JlZmVyZW5jZS9hcHBr
aXQvbnNldmVudC8xNTM0MTgzLWNoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQppbmRleCBlMzk5YjYyODE1
NWExOWJiYzk4NDMyYjIwYjMwY2U5YjU4Yzk5NTA5Li4xYzdjNDljYTE0OWQ0NzczNWQwYzZlNDNm
OTJjM2MwZTI1ZWM0NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCkBAIC0yNjAsNyArMjYwLDcgQEAgU3RyaW5n
IGtleUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIHRoYXQgcmVzdWx0IGluIHRo
ZSBrZXkgbm8gbG9uZ2VyIHByb2R1Y2luZyBhIHByaW50YWJsZSBjaGFyYWN0ZXIgKGUuZy4sIENv
bnRyb2wgKyBhKSwgdGhlbiB0aGUKICAgICAvLyBrZXkgdmFsdWUgc2hvdWxkIGJlIHRoZSBwcmlu
dGFibGUga2V5IHZhbHVlIHRoYXQgd291bGQgaGF2ZSBiZWVuIHByb2R1Y2VkIGlmIHRoZSBrZXkg
aGFkIGJlZW4KICAgICAvLyB0eXBlZCB3aXRoIHRoZSBkZWZhdWx0IGtleWJvYXJkIGxheW91dCB3
aXRoIG5vIG1vZGlmaWVyIGtleXMgZXhjZXB0IGZvciBTaGlmdCBhbmQgQWx0R3IgYXBwbGllZC4K
LSAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vdWlldmVudHMvI2tleXMtZ3VpZGVsaW5lcwor
ICAgIC8vIFNlZSA8aHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTUvV0QtdWlldmVudHMtMjAxNTEy
MTUvI2tleXMtZ3VpZGVsaW5lcz4uCiAgICAgYm9vbCBpc0NvbnRyb2xEb3duID0gKFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdDb250cm9sKTsKICAgICBOU1N0cmlu
ZyAqcyA9IGlzQ29udHJvbERvd24gPyBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
XSA6IFtldmVudCBjaGFyYWN0ZXJzXTsKICAgICBhdXRvIGxlbmd0aCA9IFtzIGxlbmd0aF07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>