summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 03:06:39 +0000
committerjdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 03:06:39 +0000
commitbb151d6777bc2a42ba33b52a0633d68722fcd23a (patch)
tree705d124c2c5b8b440579950def1e27fe5de5f50a
parent1a98058ebdf2ed615d07059037d2e0847f615046 (diff)
downloadchromium_src-bb151d6777bc2a42ba33b52a0633d68722fcd23a.zip
chromium_src-bb151d6777bc2a42ba33b52a0633d68722fcd23a.tar.gz
chromium_src-bb151d6777bc2a42ba33b52a0633d68722fcd23a.tar.bz2
Use MSG.time for WebInputEvent timestamps on Windows
Previously on Windows, WebInputEvents generated from ui::Events would call |GetMessageTime()| to initialize the WebInputEvent timestamp. There are no guarantees that such a call is valid at that time. Instead, use the MSG.time timestamp generated when the ui::Event was first created from the HWND message. BUG=367156 Review URL: https://codereview.chromium.org/252083002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267056 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/input/web_input_event_builders_win.cc43
-rw-r--r--content/browser/renderer_host/input/web_input_event_builders_win.h21
-rw-r--r--content/browser/renderer_host/web_input_event_aura.cc8
-rw-r--r--content/browser/renderer_host/web_input_event_aurawin.cc17
4 files changed, 50 insertions, 39 deletions
diff --git a/content/browser/renderer_host/input/web_input_event_builders_win.cc b/content/browser/renderer_host/input/web_input_event_builders_win.cc
index 2541bca..19e8fc6 100644
--- a/content/browser/renderer_host/input/web_input_event_builders_win.cc
+++ b/content/browser/renderer_host/input/web_input_event_builders_win.cc
@@ -102,15 +102,15 @@ static void SetToggleKeyState(WebInputEvent* event) {
event->modifiers |= WebInputEvent::CapsLockOn;
}
-WebKeyboardEvent WebKeyboardEventBuilder::Build(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam) {
+WebKeyboardEvent WebKeyboardEventBuilder::Build(HWND hwnd,
+ UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ DWORD time_ms) {
WebKeyboardEvent result;
- // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that
- // GetMessageTime() refers to is the same one that we're passed in? Perhaps
- // one of the construction parameters should be the time passed by the
- // caller, who would know for sure.
- result.timeStampSeconds = ::GetMessageTime() / 1000.0;
+ DCHECK(time_ms);
+ result.timeStampSeconds = time_ms / 1000.0;
result.windowsKeyCode = static_cast<int>(wparam);
// Record the scan code (along with other context bits) for this key event.
@@ -181,8 +181,11 @@ static LPARAM GetRelativeCursorPos(HWND hwnd) {
return MAKELPARAM(pos.x, pos.y);
}
-WebMouseEvent WebMouseEventBuilder::Build(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam) {
+WebMouseEvent WebMouseEventBuilder::Build(HWND hwnd,
+ UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ DWORD time_ms) {
WebMouseEvent result;
switch (message) {
@@ -235,11 +238,8 @@ WebMouseEvent WebMouseEventBuilder::Build(HWND hwnd, UINT message,
NOTREACHED();
}
- // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that
- // GetMessageTime() refers to is the same one that we're passed in? Perhaps
- // one of the construction parameters should be the time passed by the
- // caller, who would know for sure.
- result.timeStampSeconds = ::GetMessageTime() / 1000.0;
+ DCHECK(time_ms);
+ result.timeStampSeconds = time_ms / 1000.0;
// set position fields:
@@ -312,18 +312,17 @@ WebMouseEvent WebMouseEventBuilder::Build(HWND hwnd, UINT message,
// WebMouseWheelEvent ---------------------------------------------------------
-WebMouseWheelEvent
-WebMouseWheelEventBuilder::Build(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam) {
+WebMouseWheelEvent WebMouseWheelEventBuilder::Build(HWND hwnd,
+ UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ DWORD time_ms) {
WebMouseWheelEvent result;
result.type = WebInputEvent::MouseWheel;
- // TODO(pkasting): http://b/1117926 Are we guaranteed that the message that
- // GetMessageTime() refers to is the same one that we're passed in? Perhaps
- // one of the construction parameters should be the time passed by the
- // caller, who would know for sure.
- result.timeStampSeconds = ::GetMessageTime() / 1000.0;
+ DCHECK(time_ms);
+ result.timeStampSeconds = time_ms / 1000.0;
result.button = WebMouseEvent::ButtonNone;
diff --git a/content/browser/renderer_host/input/web_input_event_builders_win.h b/content/browser/renderer_host/input/web_input_event_builders_win.h
index d3ec4a7..4cd6d0d 100644
--- a/content/browser/renderer_host/input/web_input_event_builders_win.h
+++ b/content/browser/renderer_host/input/web_input_event_builders_win.h
@@ -13,20 +13,29 @@ namespace content {
class WebKeyboardEventBuilder {
public:
- static blink::WebKeyboardEvent Build(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam);
+ static blink::WebKeyboardEvent Build(HWND hwnd,
+ UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ DWORD time_ms);
};
class WebMouseEventBuilder {
public:
- static blink::WebMouseEvent Build(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam);
+ static blink::WebMouseEvent Build(HWND hwnd,
+ UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ DWORD time_ms);
};
class WebMouseWheelEventBuilder {
public:
- static blink::WebMouseWheelEvent Build(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam);
+ static blink::WebMouseWheelEvent Build(HWND hwnd,
+ UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ DWORD time_ms);
};
} // namespace content
diff --git a/content/browser/renderer_host/web_input_event_aura.cc b/content/browser/renderer_host/web_input_event_aura.cc
index 792f2f7..dfec167 100644
--- a/content/browser/renderer_host/web_input_event_aura.cc
+++ b/content/browser/renderer_host/web_input_event_aura.cc
@@ -63,13 +63,13 @@ blink::WebUChar GetControlCharacter(int windows_key_code, bool shift) {
#endif
#if defined(OS_WIN)
blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent(
- base::NativeEvent native_event);
+ const base::NativeEvent& native_event);
blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent(
- base::NativeEvent native_event);
+ const base::NativeEvent& native_event);
blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent(
- base::NativeEvent native_event);
+ const base::NativeEvent& native_event);
blink::WebGestureEvent MakeWebGestureEventFromNativeEvent(
- base::NativeEvent native_event);
+ const base::NativeEvent& native_event);
#elif defined(USE_X11)
blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
ui::KeyEvent* event);
diff --git a/content/browser/renderer_host/web_input_event_aurawin.cc b/content/browser/renderer_host/web_input_event_aurawin.cc
index 06e2dbf..549e2f2 100644
--- a/content/browser/renderer_host/web_input_event_aurawin.cc
+++ b/content/browser/renderer_host/web_input_event_aurawin.cc
@@ -14,31 +14,34 @@ namespace content {
// construct our pre-translated events.
blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent(
- base::NativeEvent native_event) {
+ const base::NativeEvent& native_event) {
return WebMouseEventBuilder::Build(native_event.hwnd,
native_event.message,
native_event.wParam,
- native_event.lParam);
+ native_event.lParam,
+ native_event.time);
}
blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent(
- base::NativeEvent native_event) {
+ const base::NativeEvent& native_event) {
return WebMouseWheelEventBuilder::Build(native_event.hwnd,
native_event.message,
native_event.wParam,
- native_event.lParam);
+ native_event.lParam,
+ native_event.time);
}
blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent(
- base::NativeEvent native_event) {
+ const base::NativeEvent& native_event) {
return WebKeyboardEventBuilder::Build(native_event.hwnd,
native_event.message,
native_event.wParam,
- native_event.lParam);
+ native_event.lParam,
+ native_event.time);
}
blink::WebGestureEvent MakeWebGestureEventFromNativeEvent(
- base::NativeEvent native_event) {
+ const base::NativeEvent& native_event) {
// TODO: Create gestures from native event.
NOTIMPLEMENTED();
return blink::WebGestureEvent();