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

Unified Diff: ash/sticky_keys/sticky_keys_controller.cc

Issue 2731283004: Do not use ash in chromeos::EventRewriter. (Closed)
Patch Set: Address review issues. 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
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..d3257a8adbe291f4094708eaea93a86d27b6e030 100644
--- a/ash/sticky_keys/sticky_keys_controller.cc
+++ b/ash/sticky_keys/sticky_keys_controller.cc
@@ -25,18 +25,20 @@ 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) {
if (consumed)
return ui::EVENT_REWRITE_DISCARD;
- if (released)
- return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
- if (changed_down_flags)
- return ui::EVENT_REWRITE_REWRITTEN;
+ if (mod_down_flags & ~event.flags()) {
+ *rewritten_event = ui::Event::Clone(event);
+ (*rewritten_event)->set_flags(event.flags() | mod_down_flags);
+ return released ? ui::EVENT_REWRITE_DISPATCH_ANOTHER
+ : ui::EVENT_REWRITE_REWRITTEN;
+ }
return ui::EVENT_REWRITE_CONTINUE;
}
@@ -82,84 +84,32 @@ void StickyKeysController::SetModifiersEnabled(bool mod3_enabled,
}
}
-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);
-}
-
-bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event,
- int* mod_down_flags,
- bool* released) {
- return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
- alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
- altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
- ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
- mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released);
-}
-
-bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event,
- int* mod_down_flags,
- bool* released) {
- return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags,
- released) ||
- alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) ||
- altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags,
- released) ||
- ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) ||
- mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released);
+StickyKeysOverlay* StickyKeysController::GetOverlayForTest() {
+ return overlay_.get();
}
-ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent(
- const ui::KeyEvent& event,
- ui::KeyboardCode key_code,
- int* flags) {
+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;
- 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);
-}
+ if (event.IsKeyEvent())
+ return RewriteKeyEvent(*event.AsKeyEvent(), rewritten_event);
-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);
+ if (event.IsMouseEvent())
+ return RewriteMouseEvent(*event.AsMouseEvent(), rewritten_event);
+
+ if (event.IsScrollEvent())
+ return RewriteScrollEvent(*event.AsScrollEvent(), 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();
@@ -176,6 +126,56 @@ ui::EventRewriteStatus StickyKeysController::NextDispatchEvent(
return ui::EVENT_REWRITE_REWRITTEN;
}
+ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent(
+ const ui::KeyEvent& event,
+ std::unique_ptr<ui::Event>* rewritten_event) {
+ DCHECK(enabled_);
+ int mod_down_flags = 0;
+ bool released = false;
+ bool consumed =
+ 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);
+ UpdateOverlay();
+ return RewriteUpdate(consumed, released, mod_down_flags, event,
+ rewritten_event);
+}
+
+ui::EventRewriteStatus StickyKeysController::RewriteMouseEvent(
+ const ui::MouseEvent& event,
+ std::unique_ptr<ui::Event>* rewritten_event) {
+ DCHECK(enabled_);
+ int mod_down_flags = 0;
+ bool released = false;
+ bool consumed =
+ shift_sticky_key_->HandleMouseEvent(event, &mod_down_flags, &released) ||
+ alt_sticky_key_->HandleMouseEvent(event, &mod_down_flags, &released) ||
+ altgr_sticky_key_->HandleMouseEvent(event, &mod_down_flags, &released) ||
+ ctrl_sticky_key_->HandleMouseEvent(event, &mod_down_flags, &released) ||
+ mod3_sticky_key_->HandleMouseEvent(event, &mod_down_flags, &released);
+ return RewriteUpdate(consumed, released, mod_down_flags, event,
+ rewritten_event);
+}
+
+ui::EventRewriteStatus StickyKeysController::RewriteScrollEvent(
+ const ui::ScrollEvent& event,
+ std::unique_ptr<ui::Event>* rewritten_event) {
+ DCHECK(enabled_);
+ int mod_down_flags = 0;
+ bool released = false;
+ bool consumed =
+ shift_sticky_key_->HandleScrollEvent(event, &mod_down_flags, &released) ||
+ alt_sticky_key_->HandleScrollEvent(event, &mod_down_flags, &released) ||
+ altgr_sticky_key_->HandleScrollEvent(event, &mod_down_flags, &released) ||
+ ctrl_sticky_key_->HandleScrollEvent(event, &mod_down_flags, &released) ||
+ mod3_sticky_key_->HandleScrollEvent(event, &mod_down_flags, &released);
+ return RewriteUpdate(consumed, released, mod_down_flags, event,
+ rewritten_event);
+}
+
void StickyKeysController::UpdateOverlay() {
overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN,
shift_sticky_key_->current_state());
@@ -201,10 +201,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 +212,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 +329,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 +356,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 +381,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:

Powered by Google App Engine
This is Rietveld 408576698