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

Side by Side Diff: content/browser/renderer_host/input/web_input_event_builders_win.cc

Issue 252083002: Use MSG.time for WebInputEvent timestamps on Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix style Created 6 years, 7 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/renderer_host/input/web_input_event_builders_win.h" 5 #include "content/browser/renderer_host/input/web_input_event_builders_win.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/browser/renderer_host/input/web_input_event_util.h" 8 #include "content/browser/renderer_host/input/web_input_event_util.h"
9 9
10 using blink::WebInputEvent; 10 using blink::WebInputEvent;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 95
96 // Loads the state for toggle keys into the event. 96 // Loads the state for toggle keys into the event.
97 static void SetToggleKeyState(WebInputEvent* event) { 97 static void SetToggleKeyState(WebInputEvent* event) {
98 // Low bit set from GetKeyState indicates "toggled". 98 // Low bit set from GetKeyState indicates "toggled".
99 if (::GetKeyState(VK_NUMLOCK) & 1) 99 if (::GetKeyState(VK_NUMLOCK) & 1)
100 event->modifiers |= WebInputEvent::NumLockOn; 100 event->modifiers |= WebInputEvent::NumLockOn;
101 if (::GetKeyState(VK_CAPITAL) & 1) 101 if (::GetKeyState(VK_CAPITAL) & 1)
102 event->modifiers |= WebInputEvent::CapsLockOn; 102 event->modifiers |= WebInputEvent::CapsLockOn;
103 } 103 }
104 104
105 WebKeyboardEvent WebKeyboardEventBuilder::Build(HWND hwnd, UINT message, 105 WebKeyboardEvent WebKeyboardEventBuilder::Build(HWND hwnd,
106 WPARAM wparam, LPARAM lparam) { 106 UINT message,
107 WPARAM wparam,
108 LPARAM lparam,
109 DWORD time_ms) {
107 WebKeyboardEvent result; 110 WebKeyboardEvent result;
108 111
109 // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that 112 DCHECK(time_ms);
110 // GetMessageTime() refers to is the same one that we're passed in? Perhaps 113 result.timeStampSeconds = time_ms / 1000.0;
111 // one of the construction parameters should be the time passed by the
112 // caller, who would know for sure.
113 result.timeStampSeconds = ::GetMessageTime() / 1000.0;
114 114
115 result.windowsKeyCode = static_cast<int>(wparam); 115 result.windowsKeyCode = static_cast<int>(wparam);
116 // Record the scan code (along with other context bits) for this key event. 116 // Record the scan code (along with other context bits) for this key event.
117 result.nativeKeyCode = static_cast<int>(lparam); 117 result.nativeKeyCode = static_cast<int>(lparam);
118 118
119 switch (message) { 119 switch (message) {
120 case WM_SYSKEYDOWN: 120 case WM_SYSKEYDOWN:
121 result.isSystemKey = true; 121 result.isSystemKey = true;
122 case WM_KEYDOWN: 122 case WM_KEYDOWN:
123 result.type = WebInputEvent::RawKeyDown; 123 result.type = WebInputEvent::RawKeyDown;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 static int g_last_click_count = 0; 174 static int g_last_click_count = 0;
175 static double g_last_click_time = 0; 175 static double g_last_click_time = 0;
176 176
177 static LPARAM GetRelativeCursorPos(HWND hwnd) { 177 static LPARAM GetRelativeCursorPos(HWND hwnd) {
178 POINT pos = {-1, -1}; 178 POINT pos = {-1, -1};
179 GetCursorPos(&pos); 179 GetCursorPos(&pos);
180 ScreenToClient(hwnd, &pos); 180 ScreenToClient(hwnd, &pos);
181 return MAKELPARAM(pos.x, pos.y); 181 return MAKELPARAM(pos.x, pos.y);
182 } 182 }
183 183
184 WebMouseEvent WebMouseEventBuilder::Build(HWND hwnd, UINT message, 184 WebMouseEvent WebMouseEventBuilder::Build(HWND hwnd,
185 WPARAM wparam, LPARAM lparam) { 185 UINT message,
186 WPARAM wparam,
187 LPARAM lparam,
188 DWORD time_ms) {
186 WebMouseEvent result; 189 WebMouseEvent result;
187 190
188 switch (message) { 191 switch (message) {
189 case WM_MOUSEMOVE: 192 case WM_MOUSEMOVE:
190 result.type = WebInputEvent::MouseMove; 193 result.type = WebInputEvent::MouseMove;
191 if (wparam & MK_LBUTTON) 194 if (wparam & MK_LBUTTON)
192 result.button = WebMouseEvent::ButtonLeft; 195 result.button = WebMouseEvent::ButtonLeft;
193 else if (wparam & MK_MBUTTON) 196 else if (wparam & MK_MBUTTON)
194 result.button = WebMouseEvent::ButtonMiddle; 197 result.button = WebMouseEvent::ButtonMiddle;
195 else if (wparam & MK_RBUTTON) 198 else if (wparam & MK_RBUTTON)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 result.button = WebMouseEvent::ButtonMiddle; 231 result.button = WebMouseEvent::ButtonMiddle;
229 break; 232 break;
230 case WM_RBUTTONUP: 233 case WM_RBUTTONUP:
231 result.type = WebInputEvent::MouseUp; 234 result.type = WebInputEvent::MouseUp;
232 result.button = WebMouseEvent::ButtonRight; 235 result.button = WebMouseEvent::ButtonRight;
233 break; 236 break;
234 default: 237 default:
235 NOTREACHED(); 238 NOTREACHED();
236 } 239 }
237 240
238 // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that 241 DCHECK(time_ms);
239 // GetMessageTime() refers to is the same one that we're passed in? Perhaps 242 result.timeStampSeconds = time_ms / 1000.0;
240 // one of the construction parameters should be the time passed by the
241 // caller, who would know for sure.
242 result.timeStampSeconds = ::GetMessageTime() / 1000.0;
243 243
244 // set position fields: 244 // set position fields:
245 245
246 result.x = static_cast<short>(LOWORD(lparam)); 246 result.x = static_cast<short>(LOWORD(lparam));
247 result.y = static_cast<short>(HIWORD(lparam)); 247 result.y = static_cast<short>(HIWORD(lparam));
248 result.windowX = result.x; 248 result.windowX = result.x;
249 result.windowY = result.y; 249 result.windowY = result.y;
250 250
251 POINT global_point = { result.x, result.y }; 251 POINT global_point = { result.x, result.y };
252 ClientToScreen(hwnd, &global_point); 252 ClientToScreen(hwnd, &global_point);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 result.modifiers |= WebInputEvent::MiddleButtonDown; 305 result.modifiers |= WebInputEvent::MiddleButtonDown;
306 if (wparam & MK_RBUTTON) 306 if (wparam & MK_RBUTTON)
307 result.modifiers |= WebInputEvent::RightButtonDown; 307 result.modifiers |= WebInputEvent::RightButtonDown;
308 308
309 SetToggleKeyState(&result); 309 SetToggleKeyState(&result);
310 return result; 310 return result;
311 } 311 }
312 312
313 // WebMouseWheelEvent --------------------------------------------------------- 313 // WebMouseWheelEvent ---------------------------------------------------------
314 314
315 WebMouseWheelEvent 315 WebMouseWheelEvent WebMouseWheelEventBuilder::Build(HWND hwnd,
316 WebMouseWheelEventBuilder::Build(HWND hwnd, UINT message, 316 UINT message,
317 WPARAM wparam, LPARAM lparam) { 317 WPARAM wparam,
318 LPARAM lparam,
319 DWORD time_ms) {
318 WebMouseWheelEvent result; 320 WebMouseWheelEvent result;
319 321
320 result.type = WebInputEvent::MouseWheel; 322 result.type = WebInputEvent::MouseWheel;
321 323
322 // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that 324 DCHECK(time_ms);
323 // GetMessageTime() refers to is the same one that we're passed in? Perhaps 325 result.timeStampSeconds = time_ms / 1000.0;
324 // one of the construction parameters should be the time passed by the
325 // caller, who would know for sure.
326 result.timeStampSeconds = ::GetMessageTime() / 1000.0;
327 326
328 result.button = WebMouseEvent::ButtonNone; 327 result.button = WebMouseEvent::ButtonNone;
329 328
330 // Get key state, coordinates, and wheel delta from event. 329 // Get key state, coordinates, and wheel delta from event.
331 typedef SHORT (WINAPI *GetKeyStateFunction)(int key); 330 typedef SHORT (WINAPI *GetKeyStateFunction)(int key);
332 GetKeyStateFunction get_key_state_func; 331 GetKeyStateFunction get_key_state_func;
333 UINT key_state; 332 UINT key_state;
334 float wheel_delta; 333 float wheel_delta;
335 bool horizontal_scroll = false; 334 bool horizontal_scroll = false;
336 if ((message == WM_VSCROLL) || (message == WM_HSCROLL)) { 335 if ((message == WM_VSCROLL) || (message == WM_HSCROLL)) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 result.wheelTicksX = wheel_delta; 452 result.wheelTicksX = wheel_delta;
454 } else { 453 } else {
455 result.deltaY = scroll_delta; 454 result.deltaY = scroll_delta;
456 result.wheelTicksY = wheel_delta; 455 result.wheelTicksY = wheel_delta;
457 } 456 }
458 457
459 return result; 458 return result;
460 } 459 }
461 460
462 } // namespace content 461 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698