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

Unified Diff: remoting/host/event_executor_linux.cc

Issue 10255007: Clamp events before they are sent to EventExecutors. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo. Created 8 years, 8 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 | « remoting/host/client_session.cc ('k') | remoting/host/event_executor_mac.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/event_executor_linux.cc
diff --git a/remoting/host/event_executor_linux.cc b/remoting/host/event_executor_linux.cc
index 31e43b98510ecb95422895bcb6361aff1012cc78..ff07af7e3a043766d8917922080109d77456264b 100644
--- a/remoting/host/event_executor_linux.cc
+++ b/remoting/host/event_executor_linux.cc
@@ -34,7 +34,7 @@ using protocol::MouseEvent;
// A class to generate events on Linux.
class EventExecutorLinux : public EventExecutor {
public:
- EventExecutorLinux(MessageLoop* message_loop, Capturer* capturer);
+ EventExecutorLinux(MessageLoop* message_loop);
virtual ~EventExecutorLinux();
bool Init();
@@ -61,8 +61,6 @@ class EventExecutorLinux : public EventExecutor {
// X11 graphics context.
Display* display_;
Window root_window_;
- int width_;
- int height_;
int test_event_base_;
int test_error_base_;
@@ -264,13 +262,10 @@ int ChromotocolKeycodeToX11Keysym(int32_t keycode) {
return kUsVkeyToKeysym[keycode];
}
-EventExecutorLinux::EventExecutorLinux(MessageLoop* message_loop,
- Capturer* capturer)
+EventExecutorLinux::EventExecutorLinux(MessageLoop* message_loop)
: message_loop_(message_loop),
display_(XOpenDisplay(NULL)),
- root_window_(BadValue),
- width_(0),
- height_(0) {
+ root_window_(BadValue) {
}
EventExecutorLinux::~EventExecutorLinux() {
@@ -295,17 +290,6 @@ bool EventExecutorLinux::Init() {
return false;
}
- // Grab the width and height so we can figure out if mouse moves are out of
- // range.
- XWindowAttributes root_attr;
- // TODO(ajwong): Handle resolution changes.
- if (!XGetWindowAttributes(display_, root_window_, &root_attr)) {
- LOG(ERROR) << "Unable to get window attributes";
- return false;
- }
-
- width_ = root_attr.width;
- height_ = root_attr.height;
return true;
}
@@ -383,7 +367,6 @@ void EventExecutorLinux::InjectScrollWheelClicks(int button, int count) {
XTestFakeButtonEvent(display_, button, true, CurrentTime);
XTestFakeButtonEvent(display_, button, false, CurrentTime);
}
- XFlush(display_);
}
void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
@@ -396,20 +379,11 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
}
if (event.has_x() && event.has_y()) {
- if (event.x() < 0 || event.y() < 0 ||
- event.x() > width_ || event.y() > height_) {
- // A misbehaving client may send these. Drop events that are out of range.
- // TODO(ajwong): How can we log this sanely? We don't want to DOS the
- // server with a misbehaving client by logging like crazy.
- return;
- }
-
VLOG(3) << "Moving mouse to " << event.x()
<< "," << event.y();
XTestFakeMotionEvent(display_, DefaultScreen(display_),
event.x(), event.y(),
CurrentTime);
- XFlush(display_);
}
if (event.has_button() && event.has_button_down()) {
@@ -426,7 +400,6 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
<< button_number;
XTestFakeButtonEvent(display_, button_number, event.button_down(),
CurrentTime);
- XFlush(display_);
}
if (event.has_wheel_offset_y() && event.wheel_offset_y() != 0) {
@@ -438,6 +411,8 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
InjectScrollWheelClicks(HorizontalScrollWheelToX11ButtonNumber(dx),
abs(dx));
}
+
+ XFlush(display_);
}
} // namespace
@@ -445,10 +420,9 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
scoped_ptr<protocol::HostEventStub> EventExecutor::Create(
MessageLoop* message_loop, Capturer* capturer) {
scoped_ptr<EventExecutorLinux> executor(
- new EventExecutorLinux(message_loop, capturer));
- if (!executor->Init()) {
- executor.reset(NULL);
- }
+ new EventExecutorLinux(message_loop));
+ if (!executor->Init())
+ return scoped_ptr<protocol::HostEventStub>(NULL);
return executor.PassAs<protocol::HostEventStub>();
}
« no previous file with comments | « remoting/host/client_session.cc ('k') | remoting/host/event_executor_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698