Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(346)

Unified Diff: ui/events/event.cc

Issue 1284433002: Revise ui::DomKey to unify character and non-character codes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/event.cc
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 953220d0a634f1de2ae7ec3ca738dfc34a879839..db27545c41c9ae59a32eea223e328b2a18df8670 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -671,8 +671,7 @@ KeyEvent::KeyEvent(const base::NativeEvent& native_event)
code_(CodeFromNative(native_event)),
is_char_(IsCharFromNative(native_event)),
platform_keycode_(PlatformKeycodeFromNative(native_event)),
- key_(DomKey::NONE),
- character_(0) {
+ key_() {
Wez 2015/08/13 22:31:48 No need to initialize |key_| if it takes no ctor p
kpschoedel 2015/08/17 20:16:14 Done.
if (IsRepeated(*this))
set_flags(flags() | ui::EF_IS_REPEAT);
@@ -682,7 +681,7 @@ KeyEvent::KeyEvent(const base::NativeEvent& native_event)
#if defined(OS_WIN)
// Only Windows has native character events.
if (is_char_)
- character_ = native_event.wParam;
+ key_ = DomKey(native_event.wParam);
#endif
}
@@ -694,8 +693,7 @@ KeyEvent::KeyEvent(EventType type,
code_(UsLayoutKeyboardCodeToDomCode(key_code)),
is_char_(false),
platform_keycode_(0),
Wez 2015/08/13 22:31:48 Could any of these fields have their initial value
kpschoedel 2015/08/17 20:16:14 Yes, this hasn't been touched since inline initial
Wez 2015/08/18 22:34:32 Acknowledged.
- key_(DomKey::NONE),
- character_() {
+ key_() {
}
KeyEvent::KeyEvent(EventType type,
@@ -707,8 +705,7 @@ KeyEvent::KeyEvent(EventType type,
code_(code),
is_char_(false),
platform_keycode_(0),
- key_(DomKey::NONE),
- character_(0) {
+ key_() {
}
KeyEvent::KeyEvent(EventType type,
@@ -716,15 +713,13 @@ KeyEvent::KeyEvent(EventType type,
DomCode code,
int flags,
DomKey key,
- base::char16 character,
base::TimeDelta time_stamp)
: Event(type, time_stamp, flags),
key_code_(key_code),
code_(code),
is_char_(false),
platform_keycode_(0),
- key_(key),
- character_(character) {
+ key_(key) {
}
KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags)
@@ -733,8 +728,7 @@ KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags)
code_(DomCode::NONE),
is_char_(true),
platform_keycode_(0),
- key_(DomKey::CHARACTER),
- character_(character) {
+ key_(character) {
}
KeyEvent::KeyEvent(const KeyEvent& rhs)
@@ -743,8 +737,7 @@ KeyEvent::KeyEvent(const KeyEvent& rhs)
code_(rhs.code_),
is_char_(rhs.is_char_),
platform_keycode_(rhs.platform_keycode_),
- key_(rhs.key_),
- character_(rhs.character_) {
+ key_(rhs.key_) {
if (rhs.extended_key_event_data_)
extended_key_event_data_.reset(rhs.extended_key_event_data_->Clone());
}
@@ -757,7 +750,6 @@ KeyEvent& KeyEvent::operator=(const KeyEvent& rhs) {
key_ = rhs.key_;
is_char_ = rhs.is_char_;
platform_keycode_ = rhs.platform_keycode_;
- character_ = rhs.character_;
if (rhs.extended_key_event_data_)
extended_key_event_data_.reset(rhs.extended_key_event_data_->Clone());
@@ -772,14 +764,6 @@ void KeyEvent::SetExtendedKeyEventData(scoped_ptr<ExtendedKeyEventData> data) {
}
void KeyEvent::ApplyLayout() const {
- // If the client has set the character (e.g. faked key events from virtual
- // keyboard), it's client's responsibility to set the dom key correctly.
- // Otherwise, set the dom key as unidentified.
- // Please refer to crbug.com/443889.
- if (character_ != 0) {
- key_ = DomKey::UNIDENTIFIED;
- return;
- }
ui::DomCode code = code_;
if (code == DomCode::NONE) {
// Catch old code that tries to do layout without a physical key, and try
@@ -803,13 +787,12 @@ void KeyEvent::ApplyLayout() const {
// returns 'a' for VKEY_A even if the key is actually bound to 'à' in X11.
// GetCharacterFromXEvent returns 'à' in that case.
if (!IsControlDown() && native_event()) {
- GetMeaningFromXEvent(native_event(), &key_, &character_);
+ key_ = GetDomKeyFromXEvent(native_event());
return;
}
#elif defined(USE_OZONE)
if (KeyboardLayoutEngineManager::GetKeyboardLayoutEngine()->Lookup(
- code, flags(), &key_, &character_, &dummy_key_code,
- &platform_keycode_)) {
+ code, flags(), &key_, &dummy_key_code, &platform_keycode_)) {
return;
}
#else
@@ -818,33 +801,32 @@ void KeyEvent::ApplyLayout() const {
EventTypeFromNative(native_event()) == ET_KEY_RELEASED);
}
#endif
- if (!DomCodeToUsLayoutMeaning(code, flags(), &key_, &character_,
- &dummy_key_code)) {
+ if (!DomCodeToUsLayoutDomKey(code, flags(), &key_, &dummy_key_code))
key_ = DomKey::UNIDENTIFIED;
- }
}
DomKey KeyEvent::GetDomKey() const {
- // Determination of character_ and key_ may be done lazily.
+ // Determination of key_ may be done lazily.
if (key_ == DomKey::NONE)
ApplyLayout();
return key_;
}
base::char16 KeyEvent::GetCharacter() const {
kpschoedel 2015/08/07 20:42:12 We still need a separate GetCharacter() for cases
Wez 2015/08/13 22:31:48 Acknowledged.
- // Determination of character_ and key_ may be done lazily.
+ // Determination of key_ may be done lazily.
if (key_ == DomKey::NONE)
ApplyLayout();
- return character_;
+ if (key_.IsUnicode())
+ return key_;
dtapuska 2015/08/13 14:47:25 I find this tricky.. In that the code assumes that
kpschoedel 2015/08/13 15:46:06 This proposal is for a DomKey that is explicitly d
Wez 2015/08/13 22:31:48 I'd be fine with something like DomKey::ToChar(key
kpschoedel 2015/08/17 20:16:14 I haven't looked into it, but I assume builds use
Wez 2015/08/26 23:38:33 Acknowledged.
+ return 0;
}
base::char16 KeyEvent::GetText() const {
if ((flags() & EF_CONTROL_DOWN) != 0) {
- base::char16 character;
ui::DomKey key;
ui::KeyboardCode key_code;
- if (DomCodeToControlCharacter(code_, flags(), &key, &character, &key_code))
- return character;
+ if (DomCodeToControlCharacter(code_, flags(), &key, &key_code))
+ return key;
}
return GetUnmodifiedText();
}
@@ -905,7 +887,7 @@ KeyboardCode KeyEvent::GetLocatedWindowsKeyboardCode() const {
uint16 KeyEvent::GetConflatedWindowsKeyCode() const {
if (is_char_)
- return character_;
+ return key_;
return key_code_;
}

Powered by Google App Engine
This is Rietveld 408576698