<?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>39475</bug_id>
          
          <creation_ts>2010-05-21 00:18:12 -0700</creation_ts>
          <short_desc>[chromium] if keydown is prevented, don&apos;t update the IME and clear the IME state</short_desc>
          <delta_ts>2010-05-23 18:14:52 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>hbono</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228776</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-05-21 00:18:12 -0700</bug_when>
    <thetext>[chromium] if keydown is prevented, don&apos;t update the IME and clear the IME state</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228777</commentid>
    <comment_count>1</comment_count>
      <attachid>56678</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-05-21 00:18:40 -0700</bug_when>
    <thetext>Created attachment 56678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228778</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-05-21 00:19:44 -0700</bug_when>
    <thetext>This is similar to the original patch, but in addition to ignoring the event, we clear out any existing IME state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229033</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 12:10:24 -0700</bug_when>
    <thetext>How does this behavior compare to other WebKit ports?  Most noteably apple Mac and Apple Win?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229193</commentid>
    <comment_count>4</comment_count>
      <attachid>56678</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-21 17:52:25 -0700</bug_when>
    <thetext>Comment on attachment 56678
Patch

r=me with the added FIXME. Given the total inconsistency of IME preventDefault-handling on Mac browsers and that all Windows browsers seem to properly handle preventDefault in that case, I think it&apos;s safe to experiment in the direction of canceling. Also, this is an improvement over the bugs we found from r59735, so I&apos;m OK with committing it and trying it out on the dev channel.

WebKit/chromium/src/WebViewImpl.cpp:1193
 +      if ((command == WebCompositionCommandDiscard) || m_suppressNextKeypressEvent) {
Please add a FIXME that we should really try to cancel individual keydowns instead of discarding the entire composition.

(In reply to comment #2)
&gt; This is similar to the original patch, but in addition to ignoring the event, we clear out any existing IME state.

For context, the original patch is http://trac.webkit.org/changeset/59735. This is a better solution than r59735, but it&apos;s still not the ideal behavior. Ideally, preventDefault on a keydown would only cancel that key press, not the entire composition. For now, I&apos;m OK with trying this and seeing if it meets Wave&apos;s use case.

(In reply to comment #3)
&gt; How does this behavior compare to other WebKit ports?  Most noteably apple Mac and Apple Win?

preventDefault of keyDown is a no-op on Apple Mac. As best I can tell, Apple Win actually properly cancels preventDefaulted keydowns. Although, I only tested a few IMEs. There may be Windows IMEs that don&apos;t properly preventDefault.

It&apos;s not clear to me whether the original behavior (preventDefault is a no-op) or the new behavior (discard the composition) is better. Neither one meets the use-case of excluding certain types of characters (e.g. non-numbers), although I&apos;m not really sure there&apos;s much use-case for that when you are mid-composition. We should make sure to get actively solicit feedback from the relevant developers (e.g. Wave) and be ready to roll the whole thing back before the next beta/stable release. I&apos;m not sure if there&apos;s a use-case for just summarily disallowing any text entry in an editable area. If there is, then the new behavior at least affords that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229548</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-05-23 18:14:52 -0700</bug_when>
    <thetext>Committed r60054: &lt;http://trac.webkit.org/changeset/60054&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56678</attachid>
            <date>2010-05-21 00:18:40 -0700</date>
            <delta_ts>2010-05-21 17:52:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39475-20100521161838.patch</filename>
            <type>text/plain</type>
            <size>2103</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhhNjhjNGU2ZTg0MzQ1MzNhNzVkZjcyNDk1MDVkOGQ3OTI2MGJmM2Eu
Ljc1ODdkN2RjZmI2MGUwOTBhNTMyZTU3OWRiNDU4ZDRmMGFiNTEzZWQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEwLTA1LTIxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2No
cm9taXVtXSBpZiBrZXlkb3duIGlzIHByZXZlbnRlZCwgZG9uJ3QgdXBkYXRlIHRoZSBJTUUgYW5k
IGNsZWFyIHRoZSBJTUUgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NDc1CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlQ29tcG9zaXRpb25FdmVudCk6CisKIDIw
MTAtMDUtMjAgIFZpZXQtVHJ1bmcgTHV1ICA8dmlldHRydW5nbHV1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDA2NGY4MDFjYmE4MzAwZDVkMmI4YjlmOTRiMmRlYTQ0Nzk3Yzk3ZjguLmMx
NzBkOGE1MGJmMDEwYjA5YTM5MGM4ZmI1MzYzMjU3NTZhNWQ2YmIgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCkBAIC0xMTY0LDkgKzExNjQsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpo
YW5kbGVDb21wb3NpdGlvbkV2ZW50KFdlYkNvbXBvc2l0aW9uQ29tbWFuZCBjb21tYW5kLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGlt
ZVN0cmluZykKIHsKICAgICBGcmFtZSogZm9jdXNlZCA9IGZvY3VzZWRXZWJDb3JlRnJhbWUoKTsK
LSAgICAvLyBJZiB3ZSdyZSBub3QgZ29pbmcgdG8gZmlyZSBhIGtleXByZXNzIGV2ZW50LCB0aGVu
IHRoZSBrZXlkb3duIGV2ZW50IHdhcwotICAgIC8vIGNhbmNlbGVkIHNvIGRvbid0IHVwZGF0ZSB0
aGUgSU1FLgotICAgIGlmICghZm9jdXNlZCB8fCAhbV9pbWVBY2NlcHRFdmVudHMgfHwgbV9zdXBw
cmVzc05leHRLZXlwcmVzc0V2ZW50KQorICAgIGlmICghZm9jdXNlZCB8fCAhbV9pbWVBY2NlcHRF
dmVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFZGl0b3IqIGVkaXRvciA9IGZvY3Vz
ZWQtPmVkaXRvcigpOwogICAgIGlmICghZWRpdG9yKQpAQCAtMTE5MCw3ICsxMTg4LDkgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6aGFuZGxlQ29tcG9zaXRpb25FdmVudChXZWJDb21wb3NpdGlvbkNvbW1h
bmQgY29tbWFuZCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAo
Y29tbWFuZCA9PSBXZWJDb21wb3NpdGlvbkNvbW1hbmREaXNjYXJkKSB7CisgICAgLy8gSWYgd2Un
cmUgbm90IGdvaW5nIHRvIGZpcmUgYSBrZXlwcmVzcyBldmVudCwgdGhlbiB0aGUga2V5ZG93biBl
dmVudCB3YXMKKyAgICAvLyBjYW5jZWxlZC4gIEluIHRoYXQgY2FzZSwgY2FuY2VsIGFueSBleGlz
dGluZyBjb21wb3NpdGlvbi4KKyAgICBpZiAoKGNvbW1hbmQgPT0gV2ViQ29tcG9zaXRpb25Db21t
YW5kRGlzY2FyZCkgfHwgbV9zdXBwcmVzc05leHRLZXlwcmVzc0V2ZW50KSB7CiAgICAgICAgIC8v
IEEgYnJvd3NlciBwcm9jZXNzIHNlbnQgYW4gSVBDIG1lc3NhZ2Ugd2hpY2ggZG9lcyBub3QgY29u
dGFpbiBhIHZhbGlkCiAgICAgICAgIC8vIHN0cmluZywgd2hpY2ggbWVhbnMgYW4gb25nb2luZyBj
b21wb3NpdGlvbiBoYXMgYmVlbiBjYW5jZWxlZC4KICAgICAgICAgLy8gSWYgdGhlIG9uZ29pbmcg
Y29tcG9zaXRpb24gaGFzIGJlZW4gY2FuY2VsZWQsIHJlcGxhY2UgdGhlIG9uZ29pbmcK
</data>
<flag name="review"
          id="41136"
          type_id="1"
          status="+"
          setter="ojan"
    />
    <flag name="commit-queue"
          id="41137"
          type_id="3"
          status="-"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>