OLD | NEW |
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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/command_line.h" |
6 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
7 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
8 #include "content/browser/renderer_host/input/gesture_event_filter.h" | 9 #include "content/browser/renderer_host/input/gesture_event_filter.h" |
9 #include "content/browser/renderer_host/input/input_router_client.h" | 10 #include "content/browser/renderer_host/input/input_router_client.h" |
10 #include "content/browser/renderer_host/input/input_router_impl.h" | 11 #include "content/browser/renderer_host/input/input_router_impl.h" |
11 #include "content/browser/renderer_host/input/mock_input_ack_handler.h" | 12 #include "content/browser/renderer_host/input/mock_input_ack_handler.h" |
12 #include "content/browser/renderer_host/input/mock_input_router_client.h" | 13 #include "content/browser/renderer_host/input/mock_input_router_client.h" |
13 #include "content/common/content_constants_internal.h" | 14 #include "content/common/content_constants_internal.h" |
14 #include "content/common/edit_command.h" | 15 #include "content/common/edit_command.h" |
15 #include "content/common/input/synthetic_web_input_event_builders.h" | 16 #include "content/common/input/synthetic_web_input_event_builders.h" |
16 #include "content/common/input/web_input_event_traits.h" | 17 #include "content/common/input/web_input_event_traits.h" |
17 #include "content/common/input_messages.h" | 18 #include "content/common/input_messages.h" |
18 #include "content/common/view_messages.h" | 19 #include "content/common/view_messages.h" |
| 20 #include "content/public/common/content_switches.h" |
19 #include "content/public/test/mock_render_process_host.h" | 21 #include "content/public/test/mock_render_process_host.h" |
20 #include "content/public/test/test_browser_context.h" | 22 #include "content/public/test/test_browser_context.h" |
21 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
22 #include "ui/events/keycodes/keyboard_codes.h" | 24 #include "ui/events/keycodes/keyboard_codes.h" |
23 | 25 |
24 #if defined(OS_WIN) || defined(USE_AURA) | 26 #if defined(OS_WIN) || defined(USE_AURA) |
25 #include "content/browser/renderer_host/ui_events_helper.h" | 27 #include "content/browser/renderer_host/ui_events_helper.h" |
26 #include "ui/events/event.h" | 28 #include "ui/events/event.h" |
27 #endif | 29 #endif |
28 | 30 |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 scoped_ptr<IPC::Message> response( | 255 scoped_ptr<IPC::Message> response( |
254 new InputHostMsg_HandleInputEvent_ACK(0, type, ack_result, | 256 new InputHostMsg_HandleInputEvent_ACK(0, type, ack_result, |
255 ui::LatencyInfo())); | 257 ui::LatencyInfo())); |
256 input_router_->OnMessageReceived(*response); | 258 input_router_->OnMessageReceived(*response); |
257 } | 259 } |
258 | 260 |
259 InputRouterImpl* input_router() const { | 261 InputRouterImpl* input_router() const { |
260 return input_router_.get(); | 262 return input_router_.get(); |
261 } | 263 } |
262 | 264 |
263 bool no_touch_to_renderer() { | |
264 return input_router()->touch_event_queue_->no_touch_to_renderer(); | |
265 } | |
266 | |
267 bool TouchEventQueueEmpty() const { | 265 bool TouchEventQueueEmpty() const { |
268 return input_router()->touch_event_queue_->empty(); | 266 return input_router()->touch_event_queue_->empty(); |
269 } | 267 } |
270 | 268 |
| 269 bool TouchEventTimeoutEnabled() const { |
| 270 return input_router()->touch_event_queue_->ack_timeout_enabled(); |
| 271 } |
| 272 |
271 size_t GetSentMessageCountAndResetSink() { | 273 size_t GetSentMessageCountAndResetSink() { |
272 size_t count = process_->sink().message_count(); | 274 size_t count = process_->sink().message_count(); |
273 process_->sink().ClearMessages(); | 275 process_->sink().ClearMessages(); |
274 return count; | 276 return count; |
275 } | 277 } |
276 | 278 |
277 scoped_ptr<MockRenderProcessHost> process_; | 279 scoped_ptr<MockRenderProcessHost> process_; |
278 scoped_ptr<MockInputRouterClient> client_; | 280 scoped_ptr<MockInputRouterClient> client_; |
279 scoped_ptr<MockInputAckHandler> ack_handler_; | 281 scoped_ptr<MockInputAckHandler> ack_handler_; |
280 scoped_ptr<InputRouterImpl> input_router_; | 282 scoped_ptr<InputRouterImpl> input_router_; |
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 | 845 |
844 SendInputEventACK(WebInputEvent::GestureTap, | 846 SendInputEventACK(WebInputEvent::GestureTap, |
845 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 847 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
846 | 848 |
847 // Now that the Tap has been ACKed, the ShowPress events should receive | 849 // Now that the Tap has been ACKed, the ShowPress events should receive |
848 // synthetics acks, and fire immediately. | 850 // synthetics acks, and fire immediately. |
849 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); | 851 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); |
850 EXPECT_EQ(3U, ack_handler_->GetAndResetAckCount()); | 852 EXPECT_EQ(3U, ack_handler_->GetAndResetAckCount()); |
851 } | 853 } |
852 | 854 |
| 855 // Test that touch ack timeout behavior is properly configured via the command |
| 856 // line, and toggled by the view update flags. |
| 857 TEST_F(InputRouterImplTest, TouchAckTimeoutConfigured) { |
| 858 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| 859 switches::kTouchAckTimeoutDelayMs, "5"); |
| 860 TearDown(); |
| 861 SetUp(); |
| 862 ASSERT_TRUE(TouchEventTimeoutEnabled()); |
| 863 |
| 864 // A fixed page scale or mobile viewport should disable the touch timeout. |
| 865 input_router()->OnViewUpdated(InputRouter::FIXED_PAGE_SCALE); |
| 866 EXPECT_FALSE(TouchEventTimeoutEnabled()); |
| 867 |
| 868 input_router()->OnViewUpdated(InputRouter::VIEW_FLAGS_NONE); |
| 869 EXPECT_TRUE(TouchEventTimeoutEnabled()); |
| 870 |
| 871 input_router()->OnViewUpdated(InputRouter::MOBILE_VIEWPORT); |
| 872 EXPECT_FALSE(TouchEventTimeoutEnabled()); |
| 873 |
| 874 input_router()->OnViewUpdated(InputRouter::MOBILE_VIEWPORT | |
| 875 InputRouter::FIXED_PAGE_SCALE); |
| 876 EXPECT_FALSE(TouchEventTimeoutEnabled()); |
| 877 |
| 878 input_router()->OnViewUpdated(InputRouter::VIEW_FLAGS_NONE); |
| 879 EXPECT_TRUE(TouchEventTimeoutEnabled()); |
| 880 } |
| 881 |
853 } // namespace content | 882 } // namespace content |
OLD | NEW |