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

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

Issue 2785533003: Animated scroll shouldn't consume unhandled scrolls for OOPIFs. (Closed)
Patch Set: Fix Android compile. Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/mouse_wheel_event_queue.h" 5 #include "content/browser/renderer_host/input/mouse_wheel_event_queue.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 #define EXPECT_MOUSE_WHEEL(event) \ 134 #define EXPECT_MOUSE_WHEEL(event) \
135 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType()); 135 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType());
136 136
137 } // namespace 137 } // namespace
138 138
139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>, 139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>,
140 public MouseWheelEventQueueClient { 140 public MouseWheelEventQueueClient {
141 public: 141 public:
142 MouseWheelEventQueueTest() 142 MouseWheelEventQueueTest()
143 : acked_event_count_(0), 143 : acked_event_count_(0),
144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { 144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN),
145 is_in_gesture_scroll_(false) {
145 scroll_latching_enabled_ = GetParam(); 146 scroll_latching_enabled_ = GetParam();
146 queue_.reset(new MouseWheelEventQueue(this, scroll_latching_enabled_)); 147 queue_.reset(new MouseWheelEventQueue(this, scroll_latching_enabled_));
147 scroll_end_timeout_ms_ = scroll_latching_enabled_ ? 100 : 0; 148 scroll_end_timeout_ms_ = scroll_latching_enabled_ ? 100 : 0;
148 } 149 }
149 150
150 ~MouseWheelEventQueueTest() override {} 151 ~MouseWheelEventQueueTest() override {}
151 152
152 // MouseWheelEventQueueClient 153 // MouseWheelEventQueueClient
153 void SendMouseWheelEventImmediately( 154 void SendMouseWheelEventImmediately(
154 const MouseWheelEventWithLatencyInfo& event) override { 155 const MouseWheelEventWithLatencyInfo& event) override {
155 WebMouseWheelEvent* cloned_event = new WebMouseWheelEvent(); 156 WebMouseWheelEvent* cloned_event = new WebMouseWheelEvent();
156 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event); 157 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event);
157 *cloned_event = event.event; 158 *cloned_event = event.event;
158 sent_events_.push_back(std::move(cloned_event_holder)); 159 sent_events_.push_back(std::move(cloned_event_holder));
159 } 160 }
160 161
161 void ForwardGestureEventWithLatencyInfo( 162 void ForwardGestureEventWithLatencyInfo(
162 const blink::WebGestureEvent& event, 163 const blink::WebGestureEvent& event,
163 const ui::LatencyInfo& latency_info) override { 164 const ui::LatencyInfo& latency_info) override {
164 WebGestureEvent* cloned_event = new WebGestureEvent(); 165 WebGestureEvent* cloned_event = new WebGestureEvent();
165 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event); 166 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event);
166 *cloned_event = event; 167 *cloned_event = event;
167 sent_events_.push_back(std::move(cloned_event_holder)); 168 sent_events_.push_back(std::move(cloned_event_holder));
169
170 if (event.GetType() == blink::WebInputEvent::kGestureScrollBegin &&
171 !event.data.scroll_begin.synthetic) {
172 is_in_gesture_scroll_ = true;
173 } else if (event.GetType() == blink::WebInputEvent::kGestureScrollEnd &&
174 !event.data.scroll_end.synthetic) {
175 is_in_gesture_scroll_ = false;
176 }
168 } 177 }
169 178
179 bool is_in_gesture_scroll() override { return is_in_gesture_scroll_; }
180
170 void OnMouseWheelEventAck(const MouseWheelEventWithLatencyInfo& event, 181 void OnMouseWheelEventAck(const MouseWheelEventWithLatencyInfo& event,
171 InputEventAckState ack_result) override { 182 InputEventAckState ack_result) override {
172 ++acked_event_count_; 183 ++acked_event_count_;
173 last_acked_event_ = event.event; 184 last_acked_event_ = event.event;
174 last_acked_event_state_ = ack_result; 185 last_acked_event_state_ = ack_result;
175 } 186 }
176 187
177 base::TimeDelta DefaultScrollEndTimeoutDelay() { 188 base::TimeDelta DefaultScrollEndTimeoutDelay() {
178 return base::TimeDelta::FromMilliseconds(scroll_end_timeout_ms_); 189 return base::TimeDelta::FromMilliseconds(scroll_end_timeout_ms_);
179 } 190 }
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 } 456 }
446 457
447 std::unique_ptr<MouseWheelEventQueue> queue_; 458 std::unique_ptr<MouseWheelEventQueue> queue_;
448 std::vector<std::unique_ptr<WebInputEvent>> sent_events_; 459 std::vector<std::unique_ptr<WebInputEvent>> sent_events_;
449 size_t acked_event_count_; 460 size_t acked_event_count_;
450 InputEventAckState last_acked_event_state_; 461 InputEventAckState last_acked_event_state_;
451 base::MessageLoopForUI message_loop_; 462 base::MessageLoopForUI message_loop_;
452 WebMouseWheelEvent last_acked_event_; 463 WebMouseWheelEvent last_acked_event_;
453 int64_t scroll_end_timeout_ms_; 464 int64_t scroll_end_timeout_ms_;
454 bool scroll_latching_enabled_; 465 bool scroll_latching_enabled_;
466 bool is_in_gesture_scroll_;
455 }; 467 };
456 468
457 // Tests that mouse wheel events are queued properly. 469 // Tests that mouse wheel events are queued properly.
458 TEST_P(MouseWheelEventQueueTest, Basic) { 470 TEST_P(MouseWheelEventQueueTest, Basic) {
459 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 471 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
460 kWheelScrollGlobalY, 1, 1, 0, false); 472 kWheelScrollGlobalY, 1, 1, 0, false);
461 EXPECT_EQ(0U, queued_event_count()); 473 EXPECT_EQ(0U, queued_event_count());
462 EXPECT_TRUE(event_in_flight()); 474 EXPECT_TRUE(event_in_flight());
463 EXPECT_EQ(1U, GetAndResetSentEventCount()); 475 EXPECT_EQ(1U, GetAndResetSentEventCount());
464 476
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 EXPECT_EQ(0U, sent_gesture_event(0)->data.scroll_update.delta_x); 713 EXPECT_EQ(0U, sent_gesture_event(0)->data.scroll_update.delta_x);
702 EXPECT_EQ(1U, sent_gesture_event(0)->data.scroll_update.delta_y); 714 EXPECT_EQ(1U, sent_gesture_event(0)->data.scroll_update.delta_y);
703 EXPECT_EQ(1U, GetAndResetSentEventCount()); 715 EXPECT_EQ(1U, GetAndResetSentEventCount());
704 } 716 }
705 717
706 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, 718 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests,
707 MouseWheelEventQueueTest, 719 MouseWheelEventQueueTest,
708 testing::Bool()); 720 testing::Bool());
709 721
710 } // namespace content 722 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698