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

Unified Diff: ash/sticky_keys/sticky_keys_controller.cc

Issue 2731283004: Do not use ash in chromeos::EventRewriter. (Closed)
Patch Set: Fix a crash Created 3 years, 9 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
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.h ('k') | ash/sticky_keys/sticky_keys_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/sticky_keys/sticky_keys_controller.cc
diff --git a/ash/sticky_keys/sticky_keys_controller.cc b/ash/sticky_keys/sticky_keys_controller.cc
index abbcaf443bd72cc5aa6cb43547077f1e0f2acce7..f9c0485b9a0a8a61ef1114f6797b88bc089d5a21 100644
--- a/ash/sticky_keys/sticky_keys_controller.cc
+++ b/ash/sticky_keys/sticky_keys_controller.cc
@@ -25,18 +25,22 @@ bool ShouldModifyMouseEvent(const ui::MouseEvent& event) {
}
// Handle the common tail of event rewriting.
-ui::EventRewriteStatus RewriteUpdate(bool consumed,
- bool released,
- int mod_down_flags,
- int* flags) {
- int changed_down_flags = mod_down_flags & ~*flags;
- *flags |= mod_down_flags;
+ui::EventRewriteStatus RewriteUpdate(
+ bool consumed,
+ bool released,
+ int mod_down_flags,
+ const ui::Event& event,
+ std::unique_ptr<ui::Event>* rewritten_event) {
+ int changed_down_flags = mod_down_flags & event.flags();
if (consumed)
return ui::EVENT_REWRITE_DISCARD;
if (released)
return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
- if (changed_down_flags)
+ if (changed_down_flags) {
+ *rewritten_event = ui::Event::Clone(event);
+ (*rewritten_event)->set_flags(event.flags() | mod_down_flags);
return ui::EVENT_REWRITE_REWRITTEN;
+ }
return ui::EVENT_REWRITE_CONTINUE;
}
@@ -82,22 +86,73 @@ void StickyKeysController::SetModifiersEnabled(bool mod3_enabled,
}
}
+StickyKeysOverlay* StickyKeysController::GetOverlayForTest() {
+ return overlay_.get();
+}
+
+ui::EventRewriteStatus StickyKeysController::RewriteEvent(
+ const ui::Event& event,
+ std::unique_ptr<ui::Event>* rewritten_event) {
+ DCHECK(rewritten_event);
+ if (!enabled_)
+ return ui::EVENT_REWRITE_CONTINUE;
+
+ if (event.IsKeyEvent()) {
+ int mod_down_flags = 0;
+ bool released = false;
+ bool consumed =
+ HandleKeyEvent(*event.AsKeyEvent(), &mod_down_flags, &released);
+ UpdateOverlay();
+ return RewriteUpdate(consumed, released, mod_down_flags, event,
+ rewritten_event);
+ } else if (event.IsMouseEvent()) {
+ int mod_down_flags = 0;
+ bool released = false;
+ bool consumed =
+ HandleMouseEvent(*event.AsMouseEvent(), &mod_down_flags, &released);
+ UpdateOverlay();
+ return RewriteUpdate(consumed, released, mod_down_flags, event,
+ rewritten_event);
+ } else if (event.IsScrollEvent()) {
+ int mod_down_flags = 0;
+ bool released = false;
+ bool consumed =
+ HandleScrollEvent(*event.AsScrollEvent(), &mod_down_flags, &released);
+ UpdateOverlay();
+ return RewriteUpdate(consumed, released, mod_down_flags, event,
+ rewritten_event);
+ }
+ NOTREACHED();
+ return ui::EVENT_REWRITE_CONTINUE;
+}
+
+ui::EventRewriteStatus StickyKeysController::NextDispatchEvent(
+ const ui::Event& last_event,
+ std::unique_ptr<ui::Event>* new_event) {
+ DCHECK(new_event);
+ new_event->reset();
+ int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) +
+ alt_sticky_key_->GetModifierUpEvent(new_event) +
+ altgr_sticky_key_->GetModifierUpEvent(new_event) +
+ ctrl_sticky_key_->GetModifierUpEvent(new_event) +
+ mod3_sticky_key_->GetModifierUpEvent(new_event) +
+ search_sticky_key_->GetModifierUpEvent(new_event);
+ if (!new_event)
+ return ui::EVENT_REWRITE_CONTINUE;
+ if (remaining)
+ return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
+ return ui::EVENT_REWRITE_REWRITTEN;
+}
+
bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event,
- ui::KeyboardCode key_code,
int* mod_down_flags,
bool* released) {
- return shift_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
- released) ||
- alt_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
- released) ||
- altgr_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
- released) ||
- ctrl_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
- released) ||
- mod3_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
- released) ||
- search_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
- released);
+ return shift_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
+ alt_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
+ altgr_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
+ ctrl_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
+ mod3_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
+ search_sticky_key_->HandleKeyEvent(event, mod_down_flags, released);
}
bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event,
@@ -122,60 +177,6 @@ bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event,
mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released);
}
-ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent(
Tim Song 2017/03/07 18:48:54 Could you keep these functions (but make them priv
Peng 2017/03/07 19:43:16 Done
- const ui::KeyEvent& event,
- ui::KeyboardCode key_code,
- int* flags) {
- if (!enabled_)
- return ui::EVENT_REWRITE_CONTINUE;
- int mod_down_flags = 0;
- bool released = false;
- bool consumed = HandleKeyEvent(event, key_code, &mod_down_flags, &released);
- UpdateOverlay();
- return RewriteUpdate(consumed, released, mod_down_flags, flags);
-}
-
-ui::EventRewriteStatus StickyKeysController::RewriteMouseEvent(
- const ui::MouseEvent& event,
- int* flags) {
- if (!enabled_)
- return ui::EVENT_REWRITE_CONTINUE;
- int mod_down_flags = 0;
- bool released = false;
- bool consumed = HandleMouseEvent(event, &mod_down_flags, &released);
- UpdateOverlay();
- return RewriteUpdate(consumed, released, mod_down_flags, flags);
-}
-
-ui::EventRewriteStatus StickyKeysController::RewriteScrollEvent(
- const ui::ScrollEvent& event,
- int* flags) {
- if (!enabled_)
- return ui::EVENT_REWRITE_CONTINUE;
- int mod_down_flags = 0;
- bool released = false;
- bool consumed = HandleScrollEvent(event, &mod_down_flags, &released);
- UpdateOverlay();
- return RewriteUpdate(consumed, released, mod_down_flags, flags);
-}
-
-ui::EventRewriteStatus StickyKeysController::NextDispatchEvent(
- std::unique_ptr<ui::Event>* new_event) {
- DCHECK(new_event);
- new_event->reset();
- int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) +
- alt_sticky_key_->GetModifierUpEvent(new_event) +
- altgr_sticky_key_->GetModifierUpEvent(new_event) +
- ctrl_sticky_key_->GetModifierUpEvent(new_event) +
- mod3_sticky_key_->GetModifierUpEvent(new_event) +
- search_sticky_key_->GetModifierUpEvent(new_event);
- if (!new_event)
- return ui::EVENT_REWRITE_CONTINUE;
- if (remaining)
- return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
- return ui::EVENT_REWRITE_REWRITTEN;
-}
-
void StickyKeysController::UpdateOverlay() {
overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN,
shift_sticky_key_->current_state());
@@ -201,10 +202,6 @@ void StickyKeysController::UpdateOverlay() {
overlay_->Show(enabled_ && key_in_use);
}
-StickyKeysOverlay* StickyKeysController::GetOverlayForTest() {
- return overlay_.get();
-}
-
///////////////////////////////////////////////////////////////////////////////
// StickyKeysHandler
StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag)
@@ -216,16 +213,15 @@ StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag)
StickyKeysHandler::~StickyKeysHandler() {}
bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event,
- ui::KeyboardCode key_code,
int* mod_down_flags,
bool* released) {
switch (current_state_) {
case STICKY_KEY_STATE_DISABLED:
- return HandleDisabledState(event, key_code);
+ return HandleDisabledState(event);
case STICKY_KEY_STATE_ENABLED:
- return HandleEnabledState(event, key_code, mod_down_flags, released);
+ return HandleEnabledState(event, mod_down_flags, released);
case STICKY_KEY_STATE_LOCKED:
- return HandleLockedState(event, key_code, mod_down_flags, released);
+ return HandleLockedState(event, mod_down_flags, released);
}
NOTREACHED();
return false;
@@ -334,9 +330,8 @@ StickyKeysHandler::KeyEventType StickyKeysHandler::TranslateKeyEvent(
return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP;
}
-bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event,
- ui::KeyboardCode key_code) {
- switch (TranslateKeyEvent(event.type(), key_code)) {
+bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event) {
+ switch (TranslateKeyEvent(event.type(), event.key_code())) {
case TARGET_MODIFIER_UP:
if (preparing_to_enable_) {
preparing_to_enable_ = false;
@@ -362,10 +357,9 @@ bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event,
}
bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event,
- ui::KeyboardCode key_code,
int* mod_down_flags,
bool* released) {
- switch (TranslateKeyEvent(event.type(), key_code)) {
+ switch (TranslateKeyEvent(event.type(), event.key_code())) {
case NORMAL_KEY_UP:
case TARGET_MODIFIER_DOWN:
return false;
@@ -388,10 +382,9 @@ bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event,
}
bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event,
- ui::KeyboardCode key_code,
int* mod_down_flags,
bool* released) {
- switch (TranslateKeyEvent(event.type(), key_code)) {
+ switch (TranslateKeyEvent(event.type(), event.key_code())) {
case TARGET_MODIFIER_DOWN:
return true;
case TARGET_MODIFIER_UP:
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.h ('k') | ash/sticky_keys/sticky_keys_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698