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

Unified Diff: chrome/browser/chromeos/events/event_rewriter.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
Index: chrome/browser/chromeos/events/event_rewriter.cc
diff --git a/chrome/browser/chromeos/events/event_rewriter.cc b/chrome/browser/chromeos/events/event_rewriter.cc
index 5a68721e218eae08058ef9c1c5d5a96fa078ed47..be4e6d7f8ec962cfcd79af646f2b48ce74261ac2 100644
--- a/chrome/browser/chromeos/events/event_rewriter.cc
+++ b/chrome/browser/chromeos/events/event_rewriter.cc
@@ -8,9 +8,6 @@
#include <vector>
-#include "ash/common/wm/window_state.h"
-#include "ash/sticky_keys/sticky_keys_controller.h"
-#include "ash/wm/window_util.h"
#include "base/command_line.h"
#include "base/logging.h"
#include "base/macros.h"
@@ -37,18 +34,6 @@
#include "ui/events/keycodes/keyboard_code_conversion.h"
#include "ui/wm/core/window_util.h"
-#if defined(USE_X11)
-#include <X11/extensions/XInput2.h>
-#include <X11/Xlib.h>
-
-// Get rid of macros from Xlib.h that conflicts with other parts of the code.
-#undef RootWindow
-#undef Status
-
-#include "ui/base/x/x11_util.h"
-#include "ui/events/keycodes/keyboard_code_conversion_x.h"
-#endif
-
namespace chromeos {
namespace {
@@ -306,7 +291,7 @@ ui::DomCode RelocateModifier(ui::DomCode code, ui::DomKeyLocation location) {
} // namespace
-EventRewriter::EventRewriter(ash::StickyKeysController* sticky_keys_controller)
+EventRewriter::EventRewriter(ui::EventRewriter* sticky_keys_controller)
: last_keyboard_device_id_(ui::ED_UNKNOWN_DEVICE),
ime_keyboard_for_testing_(NULL),
pref_service_for_testing_(NULL),
@@ -370,7 +355,7 @@ ui::EventRewriteStatus EventRewriter::NextDispatchEvent(
// know that they don't have to be passed through the post-sticky key
// rewriting phases, |RewriteExtendedKeys()| and |RewriteFunctionKeys()|,
// because those phases do nothing with modifier key releases.
- return sticky_keys_controller_->NextDispatchEvent(new_event);
+ return sticky_keys_controller_->NextDispatchEvent(last_event, new_event);
}
NOTREACHED();
return ui::EVENT_REWRITE_CONTINUE;
@@ -523,8 +508,13 @@ ui::EventRewriteStatus EventRewriter::RewriteKeyEvent(
ui::EventRewriteStatus status = ui::EVENT_REWRITE_CONTINUE;
bool is_sticky_key_extension_command = false;
if (sticky_keys_controller_) {
- status = sticky_keys_controller_->RewriteKeyEvent(key_event, state.key_code,
- &state.flags);
+ std::unique_ptr<ui::Event> tmp_event = ui::Event::Clone(key_event);
+ tmp_event->AsKeyEvent()->set_key_code(state.key_code);
+ tmp_event->AsKeyEvent()->set_flags(state.flags);
+ std::unique_ptr<ui::Event> output_event;
+ status = sticky_keys_controller_->RewriteEvent(*tmp_event, &output_event);
+ if (status == ui::EVENT_REWRITE_REWRITTEN)
+ state.flags = output_event->flags();
if (status == ui::EVENT_REWRITE_DISCARD)
return ui::EVENT_REWRITE_DISCARD;
is_sticky_key_extension_command =
@@ -545,15 +535,6 @@ ui::EventRewriteStatus EventRewriter::RewriteKeyEvent(
}
if ((key_event.flags() == state.flags) &&
(key_event.key_code() == state.key_code) &&
-#if defined(USE_X11)
- // TODO(kpschoedel): This test is present because several consumers of
- // key events depend on having a native core X11 event, so we rewrite
- // all XI2 key events (GenericEvent) into corresponding core X11 key
- // events. Remove this when event consumers no longer care about
- // native X11 event details (crbug.com/380349).
- (!key_event.HasNativeEvent() ||
- (key_event.native_event()->type != GenericEvent)) &&
-#endif
(status == ui::EVENT_REWRITE_CONTINUE)) {
return ui::EVENT_REWRITE_CONTINUE;
}
@@ -573,8 +554,14 @@ ui::EventRewriteStatus EventRewriter::RewriteMouseButtonEvent(
int flags = mouse_event.flags();
RewriteLocatedEvent(mouse_event, &flags);
ui::EventRewriteStatus status = ui::EVENT_REWRITE_CONTINUE;
- if (sticky_keys_controller_)
- status = sticky_keys_controller_->RewriteMouseEvent(mouse_event, &flags);
+ if (sticky_keys_controller_) {
+ std::unique_ptr<ui::Event> tmp_event = ui::Event::Clone(mouse_event);
+ tmp_event->set_flags(flags);
+ std::unique_ptr<ui::Event> output_event;
+ status = sticky_keys_controller_->RewriteEvent(*tmp_event, &output_event);
+ if (status == ui::EVENT_REWRITE_REWRITTEN)
+ flags = output_event->flags();
+ }
int changed_button = ui::EF_NONE;
if ((mouse_event.type() == ui::ET_MOUSE_PRESSED) ||
(mouse_event.type() == ui::ET_MOUSE_RELEASED)) {
@@ -589,14 +576,8 @@ ui::EventRewriteStatus EventRewriter::RewriteMouseButtonEvent(
ui::MouseEvent* rewritten_mouse_event = new ui::MouseEvent(mouse_event);
rewritten_event->reset(rewritten_mouse_event);
rewritten_mouse_event->set_flags(flags);
-#if defined(USE_X11)
- ui::UpdateX11EventForFlags(rewritten_mouse_event);
-#endif
if (changed_button != ui::EF_NONE) {
rewritten_mouse_event->set_changed_button_flags(changed_button);
-#if defined(USE_X11)
- ui::UpdateX11EventForChangedButtonFlags(rewritten_mouse_event);
-#endif
}
return status;
}
@@ -608,21 +589,22 @@ ui::EventRewriteStatus EventRewriter::RewriteMouseWheelEvent(
return ui::EVENT_REWRITE_CONTINUE;
int flags = wheel_event.flags();
RewriteLocatedEvent(wheel_event, &flags);
+ std::unique_ptr<ui::Event> tmp_event = ui::Event::Clone(wheel_event);
+ tmp_event->set_flags(flags);
+ std::unique_ptr<ui::Event> output_event;
ui::EventRewriteStatus status =
- sticky_keys_controller_->RewriteMouseEvent(wheel_event, &flags);
- if ((wheel_event.flags() == flags) &&
- (status == ui::EVENT_REWRITE_CONTINUE)) {
- return ui::EVENT_REWRITE_CONTINUE;
- }
- if (status == ui::EVENT_REWRITE_CONTINUE)
+ sticky_keys_controller_->RewriteEvent(*tmp_event, &output_event);
+ if (status == ui::EVENT_REWRITE_REWRITTEN) {
+ flags = output_event->flags();
+ } else if (status == ui::EVENT_REWRITE_CONTINUE) {
+ if (wheel_event.flags() == flags)
+ return ui::EVENT_REWRITE_CONTINUE;
status = ui::EVENT_REWRITE_REWRITTEN;
+ }
ui::MouseWheelEvent* rewritten_wheel_event =
new ui::MouseWheelEvent(wheel_event);
rewritten_event->reset(rewritten_wheel_event);
rewritten_wheel_event->set_flags(flags);
-#if defined(USE_X11)
- ui::UpdateX11EventForFlags(rewritten_wheel_event);
-#endif
return status;
}
@@ -636,28 +618,15 @@ ui::EventRewriteStatus EventRewriter::RewriteTouchEvent(
ui::TouchEvent* rewritten_touch_event = new ui::TouchEvent(touch_event);
rewritten_event->reset(rewritten_touch_event);
rewritten_touch_event->set_flags(flags);
-#if defined(USE_X11)
- ui::UpdateX11EventForFlags(rewritten_touch_event);
-#endif
return ui::EVENT_REWRITE_REWRITTEN;
}
ui::EventRewriteStatus EventRewriter::RewriteScrollEvent(
const ui::ScrollEvent& scroll_event,
std::unique_ptr<ui::Event>* rewritten_event) {
- int flags = scroll_event.flags();
- ui::EventRewriteStatus status = ui::EVENT_REWRITE_CONTINUE;
- if (sticky_keys_controller_)
- status = sticky_keys_controller_->RewriteScrollEvent(scroll_event, &flags);
- if (status == ui::EVENT_REWRITE_CONTINUE)
- return status;
- ui::ScrollEvent* rewritten_scroll_event = new ui::ScrollEvent(scroll_event);
- rewritten_event->reset(rewritten_scroll_event);
- rewritten_scroll_event->set_flags(flags);
-#if defined(USE_X11)
- ui::UpdateX11EventForFlags(rewritten_scroll_event);
-#endif
- return status;
+ if (!sticky_keys_controller_)
+ return ui::EVENT_REWRITE_CONTINUE;
+ return sticky_keys_controller_->RewriteEvent(scroll_event, rewritten_event);
}
bool EventRewriter::RewriteModifierKeys(const ui::KeyEvent& key_event,
@@ -728,7 +697,6 @@ bool EventRewriter::RewriteModifierKeys(const ui::KeyEvent& key_event,
if (remapped_key && remapped_key->result.key_code == ui::VKEY_CAPITAL)
remapped_key = kModifierRemappingNeoMod3;
break;
-#if !defined(USE_X11)
case ui::DomKey::ALT_GRAPH_LATCH:
if (key_event.type() == ui::ET_KEY_PRESSED) {
pressed_modifier_latches_ |= ui::EF_ALTGR_DOWN;
@@ -748,7 +716,6 @@ bool EventRewriter::RewriteModifierKeys(const ui::KeyEvent& key_event,
state->key_code = ui::VKEY_ALTGR;
exact_event = true;
break;
-#endif
default:
break;
}
@@ -844,12 +811,6 @@ bool EventRewriter::RewriteModifierKeys(const ui::KeyEvent& key_event,
if (state->key_code == ui::VKEY_CAPITAL
// ... except on linux Chrome OS, where InputMethodChromeOS handles it.
&& (base::SysInfo::IsRunningOnChromeOS() || ime_keyboard_for_testing_)
-#if defined(USE_X11)
- // ... but for X11, do nothing if the original key is ui::VKEY_CAPITAL
- // (i.e. a Caps Lock key on an external keyboard is pressed) since X
- // handles that itself.
- && incoming.key_code != ui::VKEY_CAPITAL
-#endif
) {
chromeos::input_method::ImeKeyboard* ime_keyboard =
ime_keyboard_for_testing_
« ash/sticky_keys/sticky_keys_controller.cc ('K') | « chrome/browser/chromeos/events/event_rewriter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698