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

Side by Side Diff: remoting/host/event_executor_win.cc

Issue 3229007: Chromoting: Get screen size locally if it wasn't given in the mouse message.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/event_executor_win.h ('k') | remoting/host/mock_objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/event_executor_win.h" 5 #include "remoting/host/event_executor_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include "base/keyboard_codes.h" 8 #include "base/keyboard_codes.h"
9 #include "base/stl_util-inl.h" 9 #include "base/stl_util-inl.h"
10 #include "remoting/host/capturer.h"
10 11
11 namespace remoting { 12 namespace remoting {
12 13
13 // TODO(hclam): Move this method to base. 14 // TODO(hclam): Move this method to base.
14 // TODO(hclam): Using values look ugly, change it to something else. 15 // TODO(hclam): Using values look ugly, change it to something else.
15 static base::KeyboardCode WindowsKeyCodeForPosixKeyCode(int keycode) { 16 static base::KeyboardCode WindowsKeyCodeForPosixKeyCode(int keycode) {
16 switch (keycode) { 17 switch (keycode) {
17 case 0x08: 18 case 0x08:
18 return base::VKEY_BACK; 19 return base::VKEY_BACK;
19 case 0x09: 20 case 0x09:
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 return base::VKEY_NONAME; 341 return base::VKEY_NONAME;
341 case 0xFD: 342 case 0xFD:
342 return base::VKEY_PA1; 343 return base::VKEY_PA1;
343 case 0xFE: 344 case 0xFE:
344 return base::VKEY_OEM_CLEAR; 345 return base::VKEY_OEM_CLEAR;
345 default: 346 default:
346 return base::VKEY_UNKNOWN; 347 return base::VKEY_UNKNOWN;
347 } 348 }
348 } 349 }
349 350
350 EventExecutorWin::EventExecutorWin() { 351 EventExecutorWin::EventExecutorWin(Capturer* capturer)
352 : EventExecutor(capturer) {
351 } 353 }
352 354
353 EventExecutorWin::~EventExecutorWin() { 355 EventExecutorWin::~EventExecutorWin() {
354 } 356 }
355 357
356 void EventExecutorWin::HandleInputEvents(ClientMessageList* messages) { 358 void EventExecutorWin::HandleInputEvents(ClientMessageList* messages) {
357 for (size_t i = 0; i < messages->size(); ++i) { 359 for (size_t i = 0; i < messages->size(); ++i) {
358 ChromotingClientMessage* msg = (*messages)[i]; 360 ChromotingClientMessage* msg = (*messages)[i];
359 if (msg->has_mouse_set_position_event()) { 361 if (msg->has_mouse_set_position_event()) {
360 HandleMouseSetPosition(msg); 362 HandleMouseSetPosition(msg);
(...skipping 13 matching lines...) Expand all
374 // TODO(hclam): Delete messages processed. 376 // TODO(hclam): Delete messages processed.
375 STLDeleteElements<ClientMessageList>(messages); 377 STLDeleteElements<ClientMessageList>(messages);
376 } 378 }
377 379
378 void EventExecutorWin::HandleMouseSetPosition(ChromotingClientMessage* msg) { 380 void EventExecutorWin::HandleMouseSetPosition(ChromotingClientMessage* msg) {
379 int x = msg->mouse_set_position_event().x(); 381 int x = msg->mouse_set_position_event().x();
380 int y = msg->mouse_set_position_event().y(); 382 int y = msg->mouse_set_position_event().y();
381 int width = msg->mouse_set_position_event().width(); 383 int width = msg->mouse_set_position_event().width();
382 int height = msg->mouse_set_position_event().height(); 384 int height = msg->mouse_set_position_event().height();
383 385
386 // Get width and height from the capturer if they are missing from the
387 // message.
388 if (width == 0 || height == 0) {
389 width = capturer_->width();
390 height = capturer_->height();
391 }
392 if (width == 0 || height == 0) {
393 return;
394 }
395
396
384 INPUT input; 397 INPUT input;
385 input.type = INPUT_MOUSE; 398 input.type = INPUT_MOUSE;
386 input.mi.time = 0; 399 input.mi.time = 0;
387 input.mi.dx = static_cast<int>((x * 65535) / width); 400 input.mi.dx = static_cast<int>((x * 65535) / width);
388 input.mi.dy = static_cast<int>((y * 65535) / height); 401 input.mi.dy = static_cast<int>((y * 65535) / height);
389 input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE; 402 input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
390 SendInput(1, &input, sizeof(INPUT)); 403 SendInput(1, &input, sizeof(INPUT));
391 } 404 }
392 405
393 void EventExecutorWin::HandleMouseMove(ChromotingClientMessage* msg) { 406 void EventExecutorWin::HandleMouseMove(ChromotingClientMessage* msg) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 input.ki.wScan = msg->key_event().key(); 483 input.ki.wScan = msg->key_event().key();
471 input.ki.dwFlags = KEYEVENTF_UNICODE; 484 input.ki.dwFlags = KEYEVENTF_UNICODE;
472 if (!msg->key_event().pressed()) { 485 if (!msg->key_event().pressed()) {
473 input.ki.dwFlags |= KEYEVENTF_KEYUP; 486 input.ki.dwFlags |= KEYEVENTF_KEYUP;
474 } 487 }
475 488
476 SendInput(1, &input, sizeof(INPUT)); 489 SendInput(1, &input, sizeof(INPUT));
477 } 490 }
478 491
479 } // namespace remoting 492 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/event_executor_win.h ('k') | remoting/host/mock_objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698