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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 2943133002: Async Wheel Event with only the first one cancellable behind a flag. (Closed)
Patch Set: 'k' removed from constant string Created 3 years, 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 572
573 const WebInputEvent* GetInputEventFromMessage(const IPC::Message& message) { 573 const WebInputEvent* GetInputEventFromMessage(const IPC::Message& message) {
574 base::PickleIterator iter(message); 574 base::PickleIterator iter(message);
575 const char* data; 575 const char* data;
576 int data_length; 576 int data_length;
577 if (!iter.ReadData(&data, &data_length)) 577 if (!iter.ReadData(&data, &data_length))
578 return nullptr; 578 return nullptr;
579 return reinterpret_cast<const WebInputEvent*>(data); 579 return reinterpret_cast<const WebInputEvent*>(data);
580 } 580 }
581 581
582 enum WheelScrollingMode {
583 kWheelScrollingModeNone,
584 kWheelScrollLatching,
585 kAsyncWheelEvents,
586 };
587
582 } // namespace 588 } // namespace
583 589
584 class RenderWidgetHostViewAuraTest : public testing::Test { 590 class RenderWidgetHostViewAuraTest : public testing::Test {
585 public: 591 public:
586 RenderWidgetHostViewAuraTest() 592 RenderWidgetHostViewAuraTest()
587 : widget_host_uses_shutdown_to_destroy_(false), 593 : widget_host_uses_shutdown_to_destroy_(false),
588 is_guest_view_hack_(false) {} 594 is_guest_view_hack_(false) {}
589 595
590 static void InstallDelegatedFrameHostClient( 596 static void InstallDelegatedFrameHostClient(
591 RenderWidgetHostViewAura* render_widget_host_view, 597 RenderWidgetHostViewAura* render_widget_host_view,
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 void EnableWheelScrollLatching() { 745 void EnableWheelScrollLatching() {
740 feature_list_.InitFromCommandLine( 746 feature_list_.InitFromCommandLine(
741 features::kTouchpadAndWheelScrollLatching.name, ""); 747 features::kTouchpadAndWheelScrollLatching.name, "");
742 } 748 }
743 749
744 void DisableWheelScrollLatching() { 750 void DisableWheelScrollLatching() {
745 feature_list_.InitFromCommandLine( 751 feature_list_.InitFromCommandLine(
746 "", features::kTouchpadAndWheelScrollLatching.name); 752 "", features::kTouchpadAndWheelScrollLatching.name);
747 } 753 }
748 754
749 void SetFeatureList(bool raf_aligned_touch, bool wheel_scroll_latching) { 755 void SetFeatureList(
750 if (raf_aligned_touch && wheel_scroll_latching) { 756 bool raf_aligned_touch,
757 WheelScrollingMode wheel_scrolling_mode = kWheelScrollLatching) {
758 if (raf_aligned_touch && wheel_scrolling_mode == kAsyncWheelEvents) {
759 feature_list_.InitWithFeatures({features::kRafAlignedTouchInputEvents,
760 features::kTouchpadAndWheelScrollLatching,
761 features::kAsyncWheelEvents},
762 {});
763 } else if (raf_aligned_touch &&
764 wheel_scrolling_mode == kWheelScrollLatching) {
751 feature_list_.InitWithFeatures( 765 feature_list_.InitWithFeatures(
752 {features::kRafAlignedTouchInputEvents, 766 {features::kRafAlignedTouchInputEvents,
753 features::kTouchpadAndWheelScrollLatching}, 767 features::kTouchpadAndWheelScrollLatching},
754 {}); 768 {features::kAsyncWheelEvents});
755 } else if (raf_aligned_touch && !wheel_scroll_latching) { 769 } else if (raf_aligned_touch &&
756 feature_list_.InitWithFeatures( 770 wheel_scrolling_mode == kWheelScrollingModeNone) {
757 {features::kRafAlignedTouchInputEvents}, 771 feature_list_.InitWithFeatures({features::kRafAlignedTouchInputEvents},
758 {features::kTouchpadAndWheelScrollLatching}); 772 {features::kTouchpadAndWheelScrollLatching,
759 } else if (!raf_aligned_touch && wheel_scroll_latching) { 773 features::kAsyncWheelEvents});
774 } else if (!raf_aligned_touch &&
775 wheel_scrolling_mode == kAsyncWheelEvents) {
776 feature_list_.InitWithFeatures({features::kTouchpadAndWheelScrollLatching,
777 features::kAsyncWheelEvents},
778 {features::kRafAlignedTouchInputEvents});
779 } else if (!raf_aligned_touch &&
780 wheel_scrolling_mode == kWheelScrollLatching) {
760 feature_list_.InitWithFeatures( 781 feature_list_.InitWithFeatures(
761 {features::kTouchpadAndWheelScrollLatching}, 782 {features::kTouchpadAndWheelScrollLatching},
762 {features::kRafAlignedTouchInputEvents}); 783 {features::kRafAlignedTouchInputEvents, features::kAsyncWheelEvents});
763 } else { // !raf_aligned_touch && !wheel_scroll_latching 784 } else { // !raf_aligned_touch && wheel_scroll_latching ==
764 feature_list_.InitWithFeatures( 785 // kWheelScrollingModeNone.
765 {}, {features::kRafAlignedTouchInputEvents, 786 feature_list_.InitWithFeatures({},
766 features::kTouchpadAndWheelScrollLatching}); 787 {features::kRafAlignedTouchInputEvents,
788 features::kTouchpadAndWheelScrollLatching,
789 features::kAsyncWheelEvents});
767 } 790 }
768 } 791 }
769 792
770 protected: 793 protected:
771 BrowserContext* browser_context() { return browser_context_.get(); } 794 BrowserContext* browser_context() { return browser_context_.get(); }
772 795
773 MockRenderWidgetHostDelegate* render_widget_host_delegate() const { 796 MockRenderWidgetHostDelegate* render_widget_host_delegate() const {
774 return delegates_.back().get(); 797 return delegates_.back().get();
775 } 798 }
776 799
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 925
903 private: 926 private:
904 927
905 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuestAuraTest); 928 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuestAuraTest);
906 }; 929 };
907 930
908 class RenderWidgetHostViewAuraOverscrollTest 931 class RenderWidgetHostViewAuraOverscrollTest
909 : public RenderWidgetHostViewAuraTest { 932 : public RenderWidgetHostViewAuraTest {
910 public: 933 public:
911 RenderWidgetHostViewAuraOverscrollTest( 934 RenderWidgetHostViewAuraOverscrollTest(
912 bool wheel_scroll_latching_enabled = true) 935 WheelScrollingMode wheel_scrolling_mode = kWheelScrollLatching)
913 : wheel_scroll_latching_enabled_(wheel_scroll_latching_enabled) {} 936 : wheel_scroll_latching_enabled_(wheel_scrolling_mode !=
937 kWheelScrollingModeNone),
938 wheel_scrolling_mode_(wheel_scrolling_mode) {}
914 939
915 // We explicitly invoke SetUp to allow gesture debounce customization. 940 // We explicitly invoke SetUp to allow gesture debounce customization.
916 void SetUp() override {} 941 void SetUp() override {}
917 942
918 protected: 943 protected:
919 void SetUpOverscrollEnvironmentWithDebounce(int debounce_interval_in_ms) { 944 void SetUpOverscrollEnvironmentWithDebounce(int debounce_interval_in_ms) {
920 SetUpOverscrollEnvironmentImpl(debounce_interval_in_ms); 945 SetUpOverscrollEnvironmentImpl(debounce_interval_in_ms);
921 } 946 }
922 947
923 void SetUpOverscrollEnvironment() { SetUpOverscrollEnvironmentImpl(0); } 948 void SetUpOverscrollEnvironment() { SetUpOverscrollEnvironmentImpl(0); }
924 949
925 void SetUpOverscrollEnvironmentImpl(int debounce_interval_in_ms) { 950 void SetUpOverscrollEnvironmentImpl(int debounce_interval_in_ms) {
926 SetFeatureList(true, wheel_scroll_latching_enabled_); 951 SetFeatureList(true, wheel_scrolling_mode_);
927 ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms( 952 ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
928 debounce_interval_in_ms); 953 debounce_interval_in_ms);
929 954
930 RenderWidgetHostViewAuraTest::SetUp(); 955 RenderWidgetHostViewAuraTest::SetUp();
931 956
932 view_->SetOverscrollControllerEnabled(true); 957 view_->SetOverscrollControllerEnabled(true);
933 overscroll_delegate_.reset(new TestOverscrollDelegate(view_)); 958 overscroll_delegate_.reset(new TestOverscrollDelegate(view_));
934 view_->overscroll_controller()->set_delegate(overscroll_delegate_.get()); 959 view_->overscroll_controller()->set_delegate(overscroll_delegate_.get());
935 960
936 view_->InitAsChild(nullptr); 961 view_->InitAsChild(nullptr);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1122 1147
1123 EXPECT_EQ(1U, sink_->message_count()); 1148 EXPECT_EQ(1U, sink_->message_count());
1124 InputMsg_HandleInputEvent::Param params; 1149 InputMsg_HandleInputEvent::Param params;
1125 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) { 1150 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) {
1126 const blink::WebInputEvent* event = std::get<0>(params); 1151 const blink::WebInputEvent* event = std::get<0>(params);
1127 EXPECT_EQ(WebInputEvent::kGestureScrollEnd, event->GetType()); 1152 EXPECT_EQ(WebInputEvent::kGestureScrollEnd, event->GetType());
1128 } 1153 }
1129 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1154 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1130 } 1155 }
1131 1156
1132 void ExpectGestureScrollEventsAfterMouseWheelACK(bool is_first_ack, 1157 void ExpectGestureScrollEventsAfterMouseWheelACK(
1133 bool enqueued_mouse_wheel) { 1158 bool is_first_ack,
1159 size_t enqueued_wheel_event_count) {
1134 InputMsg_HandleInputEvent::Param params; 1160 InputMsg_HandleInputEvent::Param params;
1135 const blink::WebInputEvent* event; 1161 const blink::WebInputEvent* event;
1136 size_t expected_message_count; 1162 size_t expected_message_count;
1137 if (is_first_ack) { 1163 if (is_first_ack) {
1138 expected_message_count = enqueued_mouse_wheel ? 3 : 2; 1164 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
1165 // If the ack for the first sent event is not consumed,
1166 // MouseWheelEventQueue(MWEQ) sends the rest of the wheel events in the
1167 // current scrolling sequence as non-blocking events. Since MWEQ
1168 // receives the ack for non-blocking events asynchronously, it sends the
1169 // next queued wheel event immediately and this continues till the queue
1170 // is empty.
1171 expected_message_count = enqueued_wheel_event_count + 2;
1172 } else {
1173 // Since the MWEQ must wait for ack of the sent event before sending the
1174 // next queued event, when wheel events are blocking only one queued
1175 // event will be sent regardless of the number of the queued wheel
1176 // events.
1177 expected_message_count = enqueued_wheel_event_count ? 3 : 2;
1178 }
1179
1139 EXPECT_EQ(expected_message_count, sink_->message_count()); 1180 EXPECT_EQ(expected_message_count, sink_->message_count());
1140 1181
1141 // The first message is GestureScrollBegin. 1182 // The first message is GestureScrollBegin.
1142 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) { 1183 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) {
1143 event = std::get<0>(params); 1184 event = std::get<0>(params);
1144 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, event->GetType()); 1185 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, event->GetType());
1145 } 1186 }
1146 1187
1147 // The second message is GestureScrollUpdate. 1188 // The second message is GestureScrollUpdate.
1148 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(1), &params)) { 1189 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(1), &params)) {
1149 event = std::get<0>(params); 1190 event = std::get<0>(params);
1150 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, event->GetType()); 1191 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, event->GetType());
1151 } 1192 }
1152 1193
1153 if (enqueued_mouse_wheel) { 1194 for (size_t i = 2; i < expected_message_count; i++) {
1154 // The last message is the queued MouseWheel. 1195 // The last messages are the queued MouseWheel event(s).
1155 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(2), &params)) { 1196 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(i), &params)) {
1156 event = std::get<0>(params); 1197 event = std::get<0>(params);
1157 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType()); 1198 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType());
1158 } 1199 }
1159 } 1200 }
1160 } else { // !is_first_ack 1201 } else { // !is_first_ack
1161 expected_message_count = enqueued_mouse_wheel ? 2 : 1; 1202 expected_message_count = enqueued_wheel_event_count ? 2 : 1;
1162 size_t scroll_update_index = 0; 1203 size_t scroll_update_index = 0;
1163 1204
1164 if (!wheel_scroll_latching_enabled_) { 1205 if (!wheel_scroll_latching_enabled_) {
1165 // The first message is GestureScrollBegin even in the middle of 1206 // The first message is GestureScrollBegin even in the middle of
1166 // scrolling. 1207 // scrolling.
1167 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) { 1208 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) {
1168 event = std::get<0>(params); 1209 event = std::get<0>(params);
1169 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, event->GetType()); 1210 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, event->GetType());
1170 } 1211 }
1171 expected_message_count++; 1212 expected_message_count++;
1172 scroll_update_index++; 1213 scroll_update_index++;
1173 } 1214 }
1174 1215
1175 // Check the GestureScrollUpdate message. 1216 // Check the GestureScrollUpdate message.
1176 if (InputMsg_HandleInputEvent::Read( 1217 if (InputMsg_HandleInputEvent::Read(
1177 sink_->GetMessageAt(scroll_update_index), &params)) { 1218 sink_->GetMessageAt(scroll_update_index), &params)) {
1178 event = std::get<0>(params); 1219 event = std::get<0>(params);
1179 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, event->GetType()); 1220 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, event->GetType());
1180 } 1221 }
1181 1222
1182 if (enqueued_mouse_wheel) { 1223 if (enqueued_wheel_event_count) {
1183 // The last message is the queued MouseWheel. 1224 // The last message is the queued MouseWheel.
1184 if (InputMsg_HandleInputEvent::Read( 1225 if (InputMsg_HandleInputEvent::Read(
1185 sink_->GetMessageAt(expected_message_count - 1), &params)) { 1226 sink_->GetMessageAt(expected_message_count - 1), &params)) {
1186 event = std::get<0>(params); 1227 event = std::get<0>(params);
1187 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType()); 1228 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType());
1188 } 1229 }
1189 } 1230 }
1190 } 1231 }
1191 EXPECT_EQ(expected_message_count, GetSentMessageCountAndResetSink()); 1232 EXPECT_EQ(expected_message_count, GetSentMessageCountAndResetSink());
1192 } 1233 }
1193 1234
1235 void ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(
1236 bool wheel_was_queued) {
1237 size_t gesture_scroll_update_index;
1238 InputMsg_HandleInputEvent::Param params;
1239 if (wheel_was_queued) {
1240 // The queued wheel event is already sent.
1241 gesture_scroll_update_index = 0;
1242 } else {
1243 // The first sent must be the wheel event and the second one must be
1244 // GestureScrollUpdate since the ack for the wheel event is non-blocking.
1245 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) {
1246 EXPECT_EQ(WebInputEvent::kMouseWheel, (std::get<0>(params))->GetType());
1247 }
1248 gesture_scroll_update_index = 1;
1249 }
1250 if (InputMsg_HandleInputEvent::Read(
1251 sink_->GetMessageAt(gesture_scroll_update_index), &params)) {
1252 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate,
1253 (std::get<0>(params))->GetType());
1254 }
1255 EXPECT_EQ(gesture_scroll_update_index + 1,
1256 GetSentMessageCountAndResetSink());
1257 }
1258
1259 void ExpectGestureScrollEndAfterNonBlockingMouseWheelACK() {
1260 InputMsg_HandleInputEvent::Param params;
1261 // The first sent must be the wheel event and the second one must be
1262 // GestureScrollEnd since the ack for the wheel event is non-blocking.
1263 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) {
1264 EXPECT_EQ(WebInputEvent::kMouseWheel, (std::get<0>(params))->GetType());
1265 }
1266
1267 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(1), &params)) {
1268 EXPECT_EQ(WebInputEvent::kGestureScrollEnd,
1269 (std::get<0>(params))->GetType());
1270 }
1271 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
1272 }
1273
1194 void WheelNotPreciseScrollEvent(); 1274 void WheelNotPreciseScrollEvent();
1195 void WheelScrollOverscrollToggle(); 1275 void WheelScrollOverscrollToggle();
1196 void OverscrollMouseMoveCompletion(); 1276 void OverscrollMouseMoveCompletion();
1197 void WheelScrollEventOverscrolls(); 1277 void WheelScrollEventOverscrolls();
1198 void WheelScrollConsumedDoNotHorizOverscroll(); 1278 void WheelScrollConsumedDoNotHorizOverscroll();
1199 void ScrollEventsOverscrollWithFling(); 1279 void ScrollEventsOverscrollWithFling();
1200 void OverscrollDirectionChangeMouseWheel(); 1280 void OverscrollDirectionChangeMouseWheel();
1201 void OverscrollStateResetsAfterScroll(); 1281 void OverscrollStateResetsAfterScroll();
1282 void ScrollDeltasResetOnEnd();
1202 void ScrollEventsOverscrollWithZeroFling(); 1283 void ScrollEventsOverscrollWithZeroFling();
1203 1284
1204 SyntheticWebTouchEvent touch_event_; 1285 SyntheticWebTouchEvent touch_event_;
1205 1286
1206 std::unique_ptr<TestOverscrollDelegate> overscroll_delegate_; 1287 std::unique_ptr<TestOverscrollDelegate> overscroll_delegate_;
1207 1288
1208 bool wheel_scroll_latching_enabled_; 1289 bool wheel_scroll_latching_enabled_;
1290 WheelScrollingMode wheel_scrolling_mode_;
1209 1291
1210 private: 1292 private:
1211 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAuraOverscrollTest); 1293 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAuraOverscrollTest);
1212 }; 1294 };
1213 1295
1214 class RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest 1296 class RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest
1215 : public RenderWidgetHostViewAuraOverscrollTest { 1297 : public RenderWidgetHostViewAuraOverscrollTest {
1216 public: 1298 public:
1217 RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest() 1299 RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest()
1218 : RenderWidgetHostViewAuraOverscrollTest(false) {} 1300 : RenderWidgetHostViewAuraOverscrollTest(kWheelScrollingModeNone) {}
1301 };
1302
1303 class RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest
1304 : public RenderWidgetHostViewAuraOverscrollTest {
1305 public:
1306 RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest()
1307 : RenderWidgetHostViewAuraOverscrollTest(kAsyncWheelEvents) {}
1219 }; 1308 };
1220 1309
1221 class RenderWidgetHostViewAuraShutdownTest 1310 class RenderWidgetHostViewAuraShutdownTest
1222 : public RenderWidgetHostViewAuraTest { 1311 : public RenderWidgetHostViewAuraTest {
1223 public: 1312 public:
1224 RenderWidgetHostViewAuraShutdownTest() {} 1313 RenderWidgetHostViewAuraShutdownTest() {}
1225 1314
1226 void TearDown() override { 1315 void TearDown() override {
1227 // No TearDownEnvironment here, we do this explicitly during the test. 1316 // No TearDownEnvironment here, we do this explicitly during the test.
1228 } 1317 }
(...skipping 2487 matching lines...) Expand 10 before | Expand all | Expand 10 after
3716 WebMouseWheelEvent::kPhaseBegan); // sent directly 3805 WebMouseWheelEvent::kPhaseBegan); // sent directly
3717 SimulateWheelEventPossiblyIncludingPhase( 3806 SimulateWheelEventPossiblyIncludingPhase(
3718 !wheel_scroll_latching_enabled_, -60, 1, 0, false, 3807 !wheel_scroll_latching_enabled_, -60, 1, 0, false,
3719 WebMouseWheelEvent::kPhaseChanged); // enqueued 3808 WebMouseWheelEvent::kPhaseChanged); // enqueued
3720 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3809 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3721 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3810 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3722 3811
3723 // Receive ACK the first wheel event as not processed. 3812 // Receive ACK the first wheel event as not processed.
3724 SendInputEventACK(WebInputEvent::kMouseWheel, 3813 SendInputEventACK(WebInputEvent::kMouseWheel,
3725 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3814 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3726 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 3815 ExpectGestureScrollEventsAfterMouseWheelACK(true, 1);
3727 3816
3728 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3817 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3729 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3818 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3730 ExpectGestureScrollEndForWheelScrolling(false);
3731 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3819 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3732 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3820 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3733 3821
3734 SendInputEventACK(WebInputEvent::kMouseWheel, 3822 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3735 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3823 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(true);
3736 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 3824 } else {
3825 ExpectGestureScrollEndForWheelScrolling(false);
3826 SendInputEventACK(WebInputEvent::kMouseWheel,
3827 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3828 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
3829 }
3737 3830
3738 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3831 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3739 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3832 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3740 if (wheel_scroll_latching_enabled_) { 3833 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3741 SimulateWheelEventWithPhase(0, 0, 0, false, 3834 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
3742 WebMouseWheelEvent::kPhaseEnded); 3835 ExpectGestureScrollEndAfterNonBlockingMouseWheelACK();
3836 } else if (wheel_scroll_latching_enabled_) {
3837 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
3743 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3838 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3744 SendInputEventACK(WebInputEvent::kMouseWheel, 3839 SendInputEventACK(WebInputEvent::kMouseWheel,
3745 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3840 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3841 ExpectGestureScrollEndForWheelScrolling(true);
3842 } else {
3843 ExpectGestureScrollEndForWheelScrolling(true);
3746 } 3844 }
3747 ExpectGestureScrollEndForWheelScrolling(true);
3748 3845
3749 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3846 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3750 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3847 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3751 } 3848 }
3752 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelNotPreciseScrollEvent) { 3849 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelNotPreciseScrollEvent) {
3753 WheelNotPreciseScrollEvent(); 3850 WheelNotPreciseScrollEvent();
3754 } 3851 }
3755 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 3852 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3756 WheelNotPreciseScrollEvent) { 3853 WheelNotPreciseScrollEvent) {
3757 WheelNotPreciseScrollEvent(); 3854 WheelNotPreciseScrollEvent();
3758 } 3855 }
3856 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
3857 WheelNotPreciseScrollEvent) {
3858 WheelNotPreciseScrollEvent();
3859 }
3759 3860
3760 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() { 3861 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() {
3761 SetUpOverscrollEnvironment(); 3862 SetUpOverscrollEnvironment();
3762 3863
3763 // Simulate wheel events. 3864 // Simulate wheel events.
3764 SimulateWheelEventPossiblyIncludingPhase( 3865 SimulateWheelEventPossiblyIncludingPhase(
3765 !wheel_scroll_latching_enabled_, -5, 0, 0, true, 3866 !wheel_scroll_latching_enabled_, -5, 0, 0, true,
3766 WebMouseWheelEvent::kPhaseBegan); // sent directly 3867 WebMouseWheelEvent::kPhaseBegan); // sent directly
3767 SimulateWheelEventPossiblyIncludingPhase( 3868 SimulateWheelEventPossiblyIncludingPhase(
3768 !wheel_scroll_latching_enabled_, -1, 1, 0, true, 3869 !wheel_scroll_latching_enabled_, -1, 1, 0, true,
3769 WebMouseWheelEvent::kPhaseChanged); // enqueued 3870 WebMouseWheelEvent::kPhaseChanged); // enqueued
3770 SimulateWheelEventPossiblyIncludingPhase( 3871 SimulateWheelEventPossiblyIncludingPhase(
3771 !wheel_scroll_latching_enabled_, -10, -3, 0, true, 3872 !wheel_scroll_latching_enabled_, -10, -3, 0, true,
3772 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 3873 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3773 SimulateWheelEventPossiblyIncludingPhase( 3874 SimulateWheelEventPossiblyIncludingPhase(
3774 !wheel_scroll_latching_enabled_, -15, -1, 0, true, 3875 !wheel_scroll_latching_enabled_, -15, -1, 0, true,
3775 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 3876 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3776 SimulateWheelEventPossiblyIncludingPhase( 3877 SimulateWheelEventPossiblyIncludingPhase(
3777 !wheel_scroll_latching_enabled_, -30, -3, 0, true, 3878 !wheel_scroll_latching_enabled_, -30, -3, 0, true,
3778 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 3879 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3779 SimulateWheelEventPossiblyIncludingPhase( 3880 SimulateWheelEventPossiblyIncludingPhase(
3780 !wheel_scroll_latching_enabled_, -20, 6, 1, true, 3881 !wheel_scroll_latching_enabled_, -20, 6, 1, true,
3781 WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers 3882 WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers
3782 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3883 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3783 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3884 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3784 3885
3785 // Receive ACK the first wheel event as not processed. 3886 // Receive ACK the first wheel event as not processed.
3786 SendInputEventACK(WebInputEvent::kMouseWheel, 3887 SendInputEventACK(WebInputEvent::kMouseWheel,
3787 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3888 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3788 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 3889 ExpectGestureScrollEventsAfterMouseWheelACK(true, 2);
3789 3890
3790 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3891 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3791 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3892 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3792 ExpectGestureScrollEndForWheelScrolling(false);
3793 3893
3794 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3894 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3795 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3895 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3796 3896 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3797 // Receive ACK for the second (coalesced) event as not processed. This will 3897 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(true);
3798 // start a back navigation. However, this will also cause the queued next 3898 } else {
3799 // event to be sent to the renderer. But since overscroll navigation has 3899 ExpectGestureScrollEndForWheelScrolling(false);
3800 // started, that event will also be included in the overscroll computation 3900 // Receive ACK for the second (coalesced) event as not processed. This will
3801 // instead of being sent to the renderer. So the result will be an overscroll 3901 // start a back navigation. However, this will also cause the queued next
3802 // back navigation, and no ScrollUpdate event will be sent to the renderer. 3902 // event to be sent to the renderer. But since overscroll navigation has
3803 SendInputEventACK(WebInputEvent::kMouseWheel, 3903 // started, that event will also be included in the overscroll computation
3804 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3904 // instead of being sent to the renderer. So the result will be an
3805 ExpectGestureScrollEventsAfterMouseWheelACK(false, true); 3905 // overscroll back navigation, and no ScrollUpdate event will be sent to the
3806 3906 // renderer.
3907 SendInputEventACK(WebInputEvent::kMouseWheel,
3908 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3909 ExpectGestureScrollEventsAfterMouseWheelACK(false, 1);
3910 }
3807 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3911 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3808 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3912 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3809 ExpectGestureScrollEndForWheelScrolling(false); 3913 ExpectGestureScrollEndForWheelScrolling(false);
3810 3914
3811 SendInputEventACK(WebInputEvent::kMouseWheel, 3915 SendInputEventACK(WebInputEvent::kMouseWheel,
3812 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3916 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3813 if (wheel_scroll_latching_enabled_) { 3917 if (wheel_scroll_latching_enabled_) {
3814 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3918 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3815 } else { 3919 } else {
3816 // ScrollBegin and ScrollEnd will be queued events. 3920 // ScrollBegin and ScrollEnd will be queued events.
(...skipping 13 matching lines...) Expand all
3830 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3934 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3831 EXPECT_EQ(1U, sink_->message_count()); 3935 EXPECT_EQ(1U, sink_->message_count());
3832 } 3936 }
3833 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) { 3937 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) {
3834 WheelScrollEventOverscrolls(); 3938 WheelScrollEventOverscrolls();
3835 } 3939 }
3836 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 3940 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3837 WheelScrollEventOverscrolls) { 3941 WheelScrollEventOverscrolls) {
3838 WheelScrollEventOverscrolls(); 3942 WheelScrollEventOverscrolls();
3839 } 3943 }
3944 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
3945 WheelScrollEventOverscrolls) {
3946 WheelScrollEventOverscrolls();
3947 }
3840 3948
3841 // Tests that if some scroll events are consumed towards the start, then 3949 // Tests that if some scroll events are consumed towards the start, then
3842 // subsequent scrolls do not horizontal overscroll. 3950 // subsequent scrolls do not horizontal overscroll.
3843 void RenderWidgetHostViewAuraOverscrollTest:: 3951 void RenderWidgetHostViewAuraOverscrollTest::
3844 WheelScrollConsumedDoNotHorizOverscroll() { 3952 WheelScrollConsumedDoNotHorizOverscroll() {
3845 SetUpOverscrollEnvironment(); 3953 SetUpOverscrollEnvironment();
3846 3954
3847 // Simulate wheel events. 3955 // Simulate wheel events.
3848 SimulateWheelEventPossiblyIncludingPhase( 3956 SimulateWheelEventPossiblyIncludingPhase(
3849 !wheel_scroll_latching_enabled_, -5, 0, 0, true, 3957 !wheel_scroll_latching_enabled_, -5, 0, 0, true,
(...skipping 13 matching lines...) Expand all
3863 SimulateWheelEventPossiblyIncludingPhase( 3971 SimulateWheelEventPossiblyIncludingPhase(
3864 !wheel_scroll_latching_enabled_, -20, 6, 1, true, 3972 !wheel_scroll_latching_enabled_, -20, 6, 1, true,
3865 WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers 3973 WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers
3866 3974
3867 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3975 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3868 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3976 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3869 3977
3870 // Receive ACK the first wheel event as processed. 3978 // Receive ACK the first wheel event as processed.
3871 SendInputEventACK(WebInputEvent::kMouseWheel, 3979 SendInputEventACK(WebInputEvent::kMouseWheel,
3872 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3980 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3873 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 3981 ExpectGestureScrollEventsAfterMouseWheelACK(true, 2);
3874
3875 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3876 INPUT_EVENT_ACK_STATE_CONSUMED);
3877 ExpectGestureScrollEndForWheelScrolling(false);
3878 3982
3879 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3983 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3880 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3984 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3881 3985
3882 // Receive ACK for the second (coalesced) event as not processed. This should 3986 if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
3883 // not initiate overscroll, since the beginning of the scroll has been 3987 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3884 // consumed. The queued event with different modifiers should be sent to the 3988 INPUT_EVENT_ACK_STATE_CONSUMED);
3885 // renderer. 3989 ExpectGestureScrollEndForWheelScrolling(false);
3886 SendInputEventACK(WebInputEvent::kMouseWheel, 3990 // Receive ACK for the second (coalesced) event as not processed. This
3887 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3991 // should not initiate overscroll, since the beginning of the scroll has
3992 // been consumed. The queued event with different modifiers should be sent
3993 // to the renderer.
3994 SendInputEventACK(WebInputEvent::kMouseWheel,
3995 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3996 ExpectGestureScrollEventsAfterMouseWheelACK(false, 1);
3997 }
3888 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3998 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3889 ExpectGestureScrollEventsAfterMouseWheelACK(false, true); 3999
4000 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4001 // The first and second GSU events are coalesced. This is the ack for the
4002 // coalesced event. Since it is the first GSU, the ack should be consumed.
4003 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4004 INPUT_EVENT_ACK_STATE_CONSUMED);
4005 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(true);
4006 } else {
4007 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4008 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4009 ExpectGestureScrollEndForWheelScrolling(false);
4010 SendInputEventACK(WebInputEvent::kMouseWheel,
4011 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4012 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4013 }
3890 4014
3891 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4015 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3892 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4016 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3893 ExpectGestureScrollEndForWheelScrolling(false); 4017 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3894 4018 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
3895 SendInputEventACK(WebInputEvent::kMouseWheel, 4019 ExpectGestureScrollEndAfterNonBlockingMouseWheelACK();
3896 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4020 } else if (wheel_scroll_latching_enabled_) {
3897 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3898
3899 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3900 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3901 if (wheel_scroll_latching_enabled_) {
3902 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded); 4021 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
3903 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4022 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3904 SendInputEventACK(WebInputEvent::kMouseWheel, 4023 SendInputEventACK(WebInputEvent::kMouseWheel,
3905 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4024 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4025 ExpectGestureScrollEndForWheelScrolling(true);
4026 } else {
4027 ExpectGestureScrollEndForWheelScrolling(true);
3906 } 4028 }
3907
3908 ExpectGestureScrollEndForWheelScrolling(true);
3909 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4029 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3910 } 4030 }
3911 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4031 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3912 WheelScrollConsumedDoNotHorizOverscroll) { 4032 WheelScrollConsumedDoNotHorizOverscroll) {
3913 WheelScrollConsumedDoNotHorizOverscroll(); 4033 WheelScrollConsumedDoNotHorizOverscroll();
3914 } 4034 }
3915 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4035 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3916 WheelScrollConsumedDoNotHorizOverscroll) { 4036 WheelScrollConsumedDoNotHorizOverscroll) {
3917 WheelScrollConsumedDoNotHorizOverscroll(); 4037 WheelScrollConsumedDoNotHorizOverscroll();
3918 } 4038 }
4039 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
4040 WheelScrollConsumedDoNotHorizOverscroll) {
4041 WheelScrollConsumedDoNotHorizOverscroll();
4042 }
3919 4043
3920 // Tests that wheel-scrolling correctly turns overscroll on and off. 4044 // Tests that wheel-scrolling correctly turns overscroll on and off.
3921 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() { 4045 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
3922 SetUpOverscrollEnvironment(); 4046 SetUpOverscrollEnvironment();
3923 4047
3924 // Send a wheel event. ACK the event as not processed. This should not 4048 // Send a wheel event. ACK the event as not processed. This should not
3925 // initiate an overscroll gesture since it doesn't cross the threshold yet. 4049 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3926 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10, 4050 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10,
3927 0, 0, true, 4051 0, 0, true,
3928 WebMouseWheelEvent::kPhaseBegan); 4052 WebMouseWheelEvent::kPhaseBegan);
3929 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4053 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3930 SendInputEventACK(WebInputEvent::kMouseWheel, 4054 SendInputEventACK(WebInputEvent::kMouseWheel,
3931 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4055 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3932 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4056 ExpectGestureScrollEventsAfterMouseWheelACK(true, 0);
3933 4057
3934 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4058 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3935 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4059 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3936 ExpectGestureScrollEndForWheelScrolling(false); 4060 ExpectGestureScrollEndForWheelScrolling(false);
3937 4061
3938 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4062 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3939 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4063 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3940 4064
3941 // Scroll some more so as to not overscroll. 4065 // Scroll some more so as to not overscroll.
3942 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10, 4066 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10,
3943 0, 0, true, 4067 0, 0, true,
3944 WebMouseWheelEvent::kPhaseChanged); 4068 WebMouseWheelEvent::kPhaseChanged);
3945 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4069 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3946 SendInputEventACK(WebInputEvent::kMouseWheel, 4070 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
3947 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4071 } else {
3948 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4072 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4073 SendInputEventACK(WebInputEvent::kMouseWheel,
4074 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4075 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4076 }
3949 4077
3950 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4078 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3951 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4079 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3952 ExpectGestureScrollEndForWheelScrolling(false); 4080 ExpectGestureScrollEndForWheelScrolling(false);
3953 4081
3954 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4082 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3955 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4083 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3956 4084
3957 // Scroll some more to initiate an overscroll. 4085 // Scroll some more to initiate an overscroll.
3958 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 40, 4086 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 40,
3959 0, 0, true, 4087 0, 0, true,
3960 WebMouseWheelEvent::kPhaseChanged); 4088 WebMouseWheelEvent::kPhaseChanged);
3961 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4089 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3962 SendInputEventACK(WebInputEvent::kMouseWheel, 4090 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
3963 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4091 } else {
3964 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4092 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4093 SendInputEventACK(WebInputEvent::kMouseWheel,
4094 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4095 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4096 }
3965 4097
3966 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4098 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3967 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4099 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3968 ExpectGestureScrollEndForWheelScrolling(false); 4100 ExpectGestureScrollEndForWheelScrolling(false);
3969 4101
3970 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4102 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3971 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4103 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3972 EXPECT_EQ(60.f, overscroll_delta_x()); 4104 EXPECT_EQ(60.f, overscroll_delta_x());
3973 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 4105 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3974 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4106 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
(...skipping 12 matching lines...) Expand all
3987 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 4119 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3988 } 4120 }
3989 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4121 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3990 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4122 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3991 4123
3992 // Continue to scroll in the reverse direction. 4124 // Continue to scroll in the reverse direction.
3993 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, -20, 4125 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, -20,
3994 0, 0, true, 4126 0, 0, true,
3995 WebMouseWheelEvent::kPhaseChanged); 4127 WebMouseWheelEvent::kPhaseChanged);
3996 4128
3997 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4129 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
3998 SendInputEventACK(WebInputEvent::kMouseWheel, 4130 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
3999 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4131 } else {
4000 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4132 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4133 SendInputEventACK(WebInputEvent::kMouseWheel,
4134 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4135 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4136 }
4001 4137
4002 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4138 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4003 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4139 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4004 ExpectGestureScrollEndForWheelScrolling(false); 4140 ExpectGestureScrollEndForWheelScrolling(false);
4005 4141
4006 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4142 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4007 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4143 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4008 4144
4009 // Continue to scroll in the reverse direction enough to initiate overscroll 4145 // Continue to scroll in the reverse direction enough to initiate overscroll
4010 // in that direction. 4146 // in that direction.
4011 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, -55, 4147 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, -55,
4012 0, 0, true, 4148 0, 0, true,
4013 WebMouseWheelEvent::kPhaseChanged); 4149 WebMouseWheelEvent::kPhaseChanged);
4014 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4150 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4015 SendInputEventACK(WebInputEvent::kMouseWheel, 4151 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
4016 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4152 } else {
4017 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4153 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4154 SendInputEventACK(WebInputEvent::kMouseWheel,
4155 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4156 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4157 }
4018 4158
4019 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4159 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4020 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4160 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4021 if (wheel_scroll_latching_enabled_) { 4161 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4162 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
4163 ExpectGestureScrollEndAfterNonBlockingMouseWheelACK();
4164 } else if (wheel_scroll_latching_enabled_) {
4022 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded); 4165 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
4023 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4166 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4024 SendInputEventACK(WebInputEvent::kMouseWheel, 4167 SendInputEventACK(WebInputEvent::kMouseWheel,
4025 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4168 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4169 ExpectGestureScrollEndForWheelScrolling(true);
4170 } else {
4171 ExpectGestureScrollEndForWheelScrolling(true);
4026 } 4172 }
4027 ExpectGestureScrollEndForWheelScrolling(true);
4028 4173
4029 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4174 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4030 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4175 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4031 EXPECT_EQ(-75.f, overscroll_delta_x()); 4176 EXPECT_EQ(-75.f, overscroll_delta_x());
4032 EXPECT_EQ(-25.f, overscroll_delegate()->delta_x()); 4177 EXPECT_EQ(-25.f, overscroll_delegate()->delta_x());
4033 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4178 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
4034 } 4179 }
4035 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) { 4180 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) {
4036 WheelScrollOverscrollToggle(); 4181 WheelScrollOverscrollToggle();
4037 } 4182 }
4038 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4183 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4039 WheelScrollOverscrollToggle) { 4184 WheelScrollOverscrollToggle) {
4040 WheelScrollOverscrollToggle(); 4185 WheelScrollOverscrollToggle();
4041 } 4186 }
4187 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
4188 WheelScrollOverscrollToggle) {
4189 WheelScrollOverscrollToggle();
4190 }
4042 4191
4043 void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() { 4192 void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() {
4044 SetUpOverscrollEnvironment(); 4193 SetUpOverscrollEnvironment();
4045 4194
4046 // Send a wheel event. ACK the event as not processed. This should not 4195 // Send a wheel event. ACK the event as not processed. This should not
4047 // initiate an overscroll gesture since it doesn't cross the threshold yet. 4196 // initiate an overscroll gesture since it doesn't cross the threshold yet.
4048 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10, 4197 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10,
4049 0, 0, true, 4198 0, 0, true,
4050 WebMouseWheelEvent::kPhaseBegan); 4199 WebMouseWheelEvent::kPhaseBegan);
4051 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4200 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4052 SendInputEventACK(WebInputEvent::kMouseWheel, 4201 SendInputEventACK(WebInputEvent::kMouseWheel,
4053 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4202 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4054 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4203 ExpectGestureScrollEventsAfterMouseWheelACK(true, 0);
4055 4204
4056 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4205 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4057 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4206 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4058 ExpectGestureScrollEndForWheelScrolling(false); 4207 ExpectGestureScrollEndForWheelScrolling(false);
4059 4208
4060 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4209 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4061 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4210 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4062 4211
4063 // Scroll some more so as to not overscroll. 4212 // Scroll some more so as to not overscroll.
4064 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 20, 4213 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 20,
4065 0, 0, true, 4214 0, 0, true,
4066 WebMouseWheelEvent::kPhaseChanged); 4215 WebMouseWheelEvent::kPhaseChanged);
4067 EXPECT_EQ(1U, sink_->message_count()); 4216 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4068 SendInputEventACK(WebInputEvent::kMouseWheel, 4217 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
4069 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4218 } else {
4219 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4220 SendInputEventACK(WebInputEvent::kMouseWheel,
4221 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4222 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4223 }
4070 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4224 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4071 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4225 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4072 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4226 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4073 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4227 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4074 sink_->ClearMessages(); 4228 sink_->ClearMessages();
4075 4229
4076 // Scroll some more to initiate an overscroll. 4230 // Scroll some more to initiate an overscroll.
4077 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 30, 4231 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 30,
4078 0, 0, true, 4232 0, 0, true,
4079 WebMouseWheelEvent::kPhaseChanged); 4233 WebMouseWheelEvent::kPhaseChanged);
4080 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4234 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4081 SendInputEventACK(WebInputEvent::kMouseWheel, 4235 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
4082 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4236 } else {
4083 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4237 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4084 4238 SendInputEventACK(WebInputEvent::kMouseWheel,
4239 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4240 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4241 }
4085 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4242 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4086 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4243 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4087 ExpectGestureScrollEndForWheelScrolling(false); 4244 ExpectGestureScrollEndForWheelScrolling(false);
4088 4245
4089 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4246 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
4090 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4247 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
4091 4248
4092 EXPECT_EQ(60.f, overscroll_delta_x()); 4249 EXPECT_EQ(60.f, overscroll_delta_x());
4093 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 4250 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
4094 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4251 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
(...skipping 11 matching lines...) Expand all
4106 EXPECT_EQ(2U, sink_->message_count()); 4263 EXPECT_EQ(2U, sink_->message_count());
4107 } 4264 }
4108 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4265 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
4109 ScrollEventsOverscrollWithFling) { 4266 ScrollEventsOverscrollWithFling) {
4110 ScrollEventsOverscrollWithFling(); 4267 ScrollEventsOverscrollWithFling();
4111 } 4268 }
4112 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4269 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4113 ScrollEventsOverscrollWithFling) { 4270 ScrollEventsOverscrollWithFling) {
4114 ScrollEventsOverscrollWithFling(); 4271 ScrollEventsOverscrollWithFling();
4115 } 4272 }
4273 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
4274 ScrollEventsOverscrollWithFling) {
4275 ScrollEventsOverscrollWithFling();
4276 }
4116 4277
4117 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that 4278 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that
4118 // the zero-velocity fling does not reach the renderer. 4279 // the zero-velocity fling does not reach the renderer.
4119 void RenderWidgetHostViewAuraOverscrollTest:: 4280 void RenderWidgetHostViewAuraOverscrollTest::
4120 ScrollEventsOverscrollWithZeroFling() { 4281 ScrollEventsOverscrollWithZeroFling() {
4121 SetUpOverscrollEnvironment(); 4282 SetUpOverscrollEnvironment();
4122 4283
4123 // Send a wheel event. ACK the event as not processed. This should not 4284 // Send a wheel event. ACK the event as not processed. This should not
4124 // initiate an overscroll gesture since it doesn't cross the threshold yet. 4285 // initiate an overscroll gesture since it doesn't cross the threshold yet.
4125 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10, 4286 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10,
4126 0, 0, true, 4287 0, 0, true,
4127 WebMouseWheelEvent::kPhaseBegan); 4288 WebMouseWheelEvent::kPhaseBegan);
4128 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4289 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4129 SendInputEventACK(WebInputEvent::kMouseWheel, 4290 SendInputEventACK(WebInputEvent::kMouseWheel,
4130 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4291 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4131 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4292 ExpectGestureScrollEventsAfterMouseWheelACK(true, 0);
4132 4293
4133 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4294 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4134 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4295 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4135 ExpectGestureScrollEndForWheelScrolling(false); 4296 ExpectGestureScrollEndForWheelScrolling(false);
4136 4297
4137 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4298 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4138 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4299 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4139 4300
4140 // Scroll some more so as to not overscroll. 4301 // Scroll some more so as to not overscroll.
4141 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 20, 4302 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 20,
4142 0, 0, true, 4303 0, 0, true,
4143 WebMouseWheelEvent::kPhaseChanged); 4304 WebMouseWheelEvent::kPhaseChanged);
4144 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4305 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4145 SendInputEventACK(WebInputEvent::kMouseWheel, 4306 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
4146 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4307 } else {
4147 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4308 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4309 SendInputEventACK(WebInputEvent::kMouseWheel,
4310 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4311 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4312 }
4148 4313
4149 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4314 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4150 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4315 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4151 ExpectGestureScrollEndForWheelScrolling(false); 4316 ExpectGestureScrollEndForWheelScrolling(false);
4152 4317
4153 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4318 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4154 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4319 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4155 4320
4156 // Scroll some more to initiate an overscroll. 4321 // Scroll some more to initiate an overscroll.
4157 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 30, 4322 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 30,
4158 0, 0, true, 4323 0, 0, true,
4159 WebMouseWheelEvent::kPhaseChanged); 4324 WebMouseWheelEvent::kPhaseChanged);
4160 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4325 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4161 SendInputEventACK(WebInputEvent::kMouseWheel, 4326 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
4162 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4327 } else {
4163 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4328 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4329 SendInputEventACK(WebInputEvent::kMouseWheel,
4330 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4331 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4332 }
4164 4333
4165 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4334 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4166 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4335 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4167 ExpectGestureScrollEndForWheelScrolling(false); 4336 ExpectGestureScrollEndForWheelScrolling(false);
4168 4337
4169 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4338 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
4170 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4339 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
4171 4340
4172 EXPECT_EQ(60.f, overscroll_delta_x()); 4341 EXPECT_EQ(60.f, overscroll_delta_x());
4173 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 4342 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
(...skipping 12 matching lines...) Expand all
4186 EXPECT_EQ(2U, sink_->message_count()); 4355 EXPECT_EQ(2U, sink_->message_count());
4187 } 4356 }
4188 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4357 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
4189 ScrollEventsOverscrollWithZeroFling) { 4358 ScrollEventsOverscrollWithZeroFling) {
4190 ScrollEventsOverscrollWithZeroFling(); 4359 ScrollEventsOverscrollWithZeroFling();
4191 } 4360 }
4192 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4361 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4193 ScrollEventsOverscrollWithZeroFling) { 4362 ScrollEventsOverscrollWithZeroFling) {
4194 ScrollEventsOverscrollWithZeroFling(); 4363 ScrollEventsOverscrollWithZeroFling();
4195 } 4364 }
4365 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
4366 ScrollEventsOverscrollWithZeroFling) {
4367 ScrollEventsOverscrollWithZeroFling();
4368 }
4196 4369
4197 // Tests that a fling in the opposite direction of the overscroll cancels the 4370 // Tests that a fling in the opposite direction of the overscroll cancels the
4198 // overscroll nav instead of completing it. 4371 // overscroll nav instead of completing it.
4199 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ReverseFlingCancelsOverscroll) { 4372 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ReverseFlingCancelsOverscroll) {
4200 SetUpOverscrollEnvironment(); 4373 SetUpOverscrollEnvironment();
4201 4374
4202 { 4375 {
4203 // Start and end a gesture in the same direction without processing the 4376 // Start and end a gesture in the same direction without processing the
4204 // gesture events in the renderer. This should initiate and complete an 4377 // gesture events in the renderer. This should initiate and complete an
4205 // overscroll navigation. 4378 // overscroll navigation.
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
4643 OverscrollDirectionChangeMouseWheel() { 4816 OverscrollDirectionChangeMouseWheel() {
4644 SetUpOverscrollEnvironment(); 4817 SetUpOverscrollEnvironment();
4645 4818
4646 // Send wheel event and receive ack as not consumed. 4819 // Send wheel event and receive ack as not consumed.
4647 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 125, 4820 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 125,
4648 -5, 0, true, 4821 -5, 0, true,
4649 WebMouseWheelEvent::kPhaseBegan); 4822 WebMouseWheelEvent::kPhaseBegan);
4650 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4823 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4651 SendInputEventACK(WebInputEvent::kMouseWheel, 4824 SendInputEventACK(WebInputEvent::kMouseWheel,
4652 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4825 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4653 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4826 ExpectGestureScrollEventsAfterMouseWheelACK(true, 0);
4654 4827
4655 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4828 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4656 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4829 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4657 ExpectGestureScrollEndForWheelScrolling(false); 4830 ExpectGestureScrollEndForWheelScrolling(false);
4658 4831
4659 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4832 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
4660 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4833 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
4661 4834
4662 // Send another wheel event, but in the reverse direction. The overscroll 4835 // Send another wheel event, but in the reverse direction. The overscroll
4663 // controller will not consume the event, because it is not triggering 4836 // controller will not consume the event, because it is not triggering
4664 // gesture-nav. 4837 // gesture-nav.
4665 4838
4666 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 4839 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_,
4667 -260, 0, 0, true, 4840 -260, 0, 0, true,
4668 WebMouseWheelEvent::kPhaseChanged); 4841 WebMouseWheelEvent::kPhaseChanged);
4669 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4842 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4670 SendInputEventACK(WebInputEvent::kMouseWheel, 4843 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
4671 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4844 } else {
4672 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4845 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4846 SendInputEventACK(WebInputEvent::kMouseWheel,
4847 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4848 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4849 }
4850
4673 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4851 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4674 4852
4675 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4853 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4676 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4854 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4677 ExpectGestureScrollEndForWheelScrolling(false); 4855 ExpectGestureScrollEndForWheelScrolling(false);
4678 4856
4679 // Since it was unhandled; the overscroll should now be west 4857 // Since it was unhandled; the overscroll should now be west
4680 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4858 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4681 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4859 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4682 4860
4683 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, -20, 4861 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, -20,
4684 0, 0, true, 4862 0, 0, true,
4685 WebMouseWheelEvent::kPhaseChanged); 4863 WebMouseWheelEvent::kPhaseChanged);
4686 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4864 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4687 SendInputEventACK(WebInputEvent::kMouseWheel, 4865 if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
4688 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4866 SendInputEventACK(WebInputEvent::kMouseWheel,
4867 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4868 }
4689 4869
4690 // wheel event ack generates gesture scroll update; which gets consumed 4870 // wheel event ack generates gesture scroll update; which gets consumed
4691 // solely by the overflow controller. 4871 // solely by the overflow controller.
4692 if (!wheel_scroll_latching_enabled_) { 4872 if (!wheel_scroll_latching_enabled_) {
4693 // No ScrollUpdates, only ScrollBegin and ScrollEnd will be queued events. 4873 // No ScrollUpdates, only ScrollBegin and ScrollEnd will be queued events.
4694 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 4874 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
4695 } else { 4875 } else {
4696 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 4876 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
4697 } 4877 }
4698 4878
4699 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4879 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4700 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4880 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4701 } 4881 }
4702 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4882 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
4703 OverscrollDirectionChangeMouseWheel) { 4883 OverscrollDirectionChangeMouseWheel) {
4704 OverscrollDirectionChangeMouseWheel(); 4884 OverscrollDirectionChangeMouseWheel();
4705 } 4885 }
4706 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4886 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4707 OverscrollDirectionChangeMouseWheel) { 4887 OverscrollDirectionChangeMouseWheel) {
4708 OverscrollDirectionChangeMouseWheel(); 4888 OverscrollDirectionChangeMouseWheel();
4709 } 4889 }
4890 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
4891 OverscrollDirectionChangeMouseWheel) {
4892 OverscrollDirectionChangeMouseWheel();
4893 }
4710 4894
4711 void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() { 4895 void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() {
4712 SetUpOverscrollEnvironment(); 4896 SetUpOverscrollEnvironment();
4713 4897
4714 SimulateWheelEventPossiblyIncludingPhase( 4898 SimulateWheelEventPossiblyIncludingPhase(
4715 !wheel_scroll_latching_enabled_, 5, 0, 0, true, 4899 !wheel_scroll_latching_enabled_, 5, 0, 0, true,
4716 WebMouseWheelEvent::kPhaseBegan); // sent directly 4900 WebMouseWheelEvent::kPhaseBegan); // sent directly
4717 SimulateWheelEventPossiblyIncludingPhase( 4901 SimulateWheelEventPossiblyIncludingPhase(
4718 !wheel_scroll_latching_enabled_, -1, 0, 0, true, 4902 !wheel_scroll_latching_enabled_, -1, 0, 0, true,
4719 WebMouseWheelEvent::kPhaseChanged); // enqueued 4903 WebMouseWheelEvent::kPhaseChanged); // enqueued
4720 SimulateWheelEventPossiblyIncludingPhase( 4904 SimulateWheelEventPossiblyIncludingPhase(
4721 !wheel_scroll_latching_enabled_, -10, -3, 0, true, 4905 !wheel_scroll_latching_enabled_, -10, -3, 0, true,
4722 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 4906 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4723 SimulateWheelEventPossiblyIncludingPhase( 4907 SimulateWheelEventPossiblyIncludingPhase(
4724 !wheel_scroll_latching_enabled_, -15, -1, 0, true, 4908 !wheel_scroll_latching_enabled_, -15, -1, 0, true,
4725 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 4909 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4726 SimulateWheelEventPossiblyIncludingPhase( 4910 SimulateWheelEventPossiblyIncludingPhase(
4727 !wheel_scroll_latching_enabled_, -30, -3, 0, true, 4911 !wheel_scroll_latching_enabled_, -30, -3, 0, true,
4728 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 4912 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4729 4913
4730 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4914 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4731 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4915 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4732 4916
4733 // Receive ACK the first wheel event as not processed. 4917 // Receive ACK the first wheel event as not processed.
4734 SendInputEventACK(WebInputEvent::kMouseWheel, 4918 SendInputEventACK(WebInputEvent::kMouseWheel,
4735 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4919 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4736 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 4920 ExpectGestureScrollEventsAfterMouseWheelACK(true, 1);
4737 4921
4738 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4922 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4739 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4923 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4740 ExpectGestureScrollEndForWheelScrolling(false);
4741 4924
4742 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4925 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4743 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4926 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4744 4927
4745 // Receive ACK for the second (coalesced) event as not processed. This will 4928 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4746 // start an overcroll gesture. 4929 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(true);
4747 SendInputEventACK(WebInputEvent::kMouseWheel, 4930 } else {
4748 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4931 ExpectGestureScrollEndForWheelScrolling(false);
4749 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4932 // Receive ACK for the second (coalesced) event as not processed. This will
4933 // start an overcroll gesture.
4934 SendInputEventACK(WebInputEvent::kMouseWheel,
4935 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4936 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
4937 }
4750 4938
4751 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4939 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4752 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4940 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4753 ExpectGestureScrollEndForWheelScrolling(false); 4941 ExpectGestureScrollEndForWheelScrolling(false);
4754 4942
4755 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4943 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4756 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4944 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4757 4945
4758 // Send a mouse-move event. This should cancel the overscroll navigation 4946 // Send a mouse-move event. This should cancel the overscroll navigation
4759 // (since the amount overscrolled is not above the threshold), and so the 4947 // (since the amount overscrolled is not above the threshold), and so the
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
4806 SendInputEventACK(WebInputEvent::kMouseMove, 4994 SendInputEventACK(WebInputEvent::kMouseMove,
4807 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4995 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4808 } 4996 }
4809 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollMouseMoveCompletion) { 4997 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollMouseMoveCompletion) {
4810 OverscrollMouseMoveCompletion(); 4998 OverscrollMouseMoveCompletion();
4811 } 4999 }
4812 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 5000 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4813 OverscrollMouseMoveCompletion) { 5001 OverscrollMouseMoveCompletion) {
4814 OverscrollMouseMoveCompletion(); 5002 OverscrollMouseMoveCompletion();
4815 } 5003 }
5004 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
5005 OverscrollMouseMoveCompletion) {
5006 OverscrollMouseMoveCompletion();
5007 }
4816 5008
4817 // Tests that if a page scrolled, then the overscroll controller's states are 5009 // Tests that if a page scrolled, then the overscroll controller's states are
4818 // reset after the end of the scroll. 5010 // reset after the end of the scroll.
4819 void RenderWidgetHostViewAuraOverscrollTest:: 5011 void RenderWidgetHostViewAuraOverscrollTest::
4820 OverscrollStateResetsAfterScroll() { 5012 OverscrollStateResetsAfterScroll() {
4821 SetUpOverscrollEnvironment(); 5013 SetUpOverscrollEnvironment();
4822 5014
4823 SimulateWheelEventPossiblyIncludingPhase( 5015 SimulateWheelEventPossiblyIncludingPhase(
4824 !wheel_scroll_latching_enabled_, 0, 5, 0, true, 5016 !wheel_scroll_latching_enabled_, 0, 5, 0, true,
4825 WebMouseWheelEvent::kPhaseBegan); // sent directly 5017 WebMouseWheelEvent::kPhaseBegan); // sent directly
4826 SimulateWheelEventPossiblyIncludingPhase( 5018 SimulateWheelEventPossiblyIncludingPhase(
4827 !wheel_scroll_latching_enabled_, 0, 30, 0, true, 5019 !wheel_scroll_latching_enabled_, 0, 30, 0, true,
4828 WebMouseWheelEvent::kPhaseChanged); // enqueued 5020 WebMouseWheelEvent::kPhaseChanged); // enqueued
4829 SimulateWheelEventPossiblyIncludingPhase( 5021 SimulateWheelEventPossiblyIncludingPhase(
4830 !wheel_scroll_latching_enabled_, 0, 40, 0, true, 5022 !wheel_scroll_latching_enabled_, 0, 40, 0, true,
4831 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 5023 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4832 SimulateWheelEventPossiblyIncludingPhase( 5024 SimulateWheelEventPossiblyIncludingPhase(
4833 !wheel_scroll_latching_enabled_, 0, 10, 0, true, 5025 !wheel_scroll_latching_enabled_, 0, 10, 0, true,
4834 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 5026 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4835 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 5027 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4836 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 5028 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4837 5029
4838 // The first wheel event is consumed. Dispatches the queued wheel event. 5030 // The first wheel event is consumed. Dispatches the queued wheel event.
4839 SendInputEventACK(WebInputEvent::kMouseWheel, 5031 SendInputEventACK(WebInputEvent::kMouseWheel,
4840 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5032 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4841 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 5033 ExpectGestureScrollEventsAfterMouseWheelACK(true, 1);
4842 5034
4843 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5035 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4844 INPUT_EVENT_ACK_STATE_CONSUMED); 5036 INPUT_EVENT_ACK_STATE_CONSUMED);
4845 ExpectGestureScrollEndForWheelScrolling(false);
4846 EXPECT_TRUE(ScrollStateIsContentScrolling()); 5037 EXPECT_TRUE(ScrollStateIsContentScrolling());
4847 5038
4848 // The second wheel event is consumed. 5039 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
4849 SendInputEventACK(WebInputEvent::kMouseWheel, 5040 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(true);
4850 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5041 } else {
4851 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 5042 ExpectGestureScrollEndForWheelScrolling(false);
5043 // The second wheel event is consumed.
5044 SendInputEventACK(WebInputEvent::kMouseWheel,
5045 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5046 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
5047 }
4852 5048
4853 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5049 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4854 INPUT_EVENT_ACK_STATE_CONSUMED); 5050 INPUT_EVENT_ACK_STATE_CONSUMED);
4855 5051
4856 if (wheel_scroll_latching_enabled_) { 5052 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
5053 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
5054 ExpectGestureScrollEndAfterNonBlockingMouseWheelACK();
5055 } else if (wheel_scroll_latching_enabled_) {
4857 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded); 5056 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
4858 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 5057 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4859 SendInputEventACK(WebInputEvent::kMouseWheel, 5058 SendInputEventACK(WebInputEvent::kMouseWheel,
4860 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5059 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5060 ExpectGestureScrollEndForWheelScrolling(true);
5061 } else {
5062 ExpectGestureScrollEndForWheelScrolling(true);
4861 } 5063 }
4862 ExpectGestureScrollEndForWheelScrolling(true);
4863 EXPECT_TRUE(ScrollStateIsContentScrolling()); 5064 EXPECT_TRUE(ScrollStateIsContentScrolling());
4864 5065
4865 // Touchpad scroll can end with a zero-velocity fling. But it is not 5066 // Touchpad scroll can end with a zero-velocity fling which is not dispatched,
4866 // dispatched, but it should still reset the overscroll controller state. 5067 // but it should still reset the overscroll controller state.
4867 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 5068 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
4868 blink::kWebGestureDeviceTouchscreen); 5069 blink::kWebGestureDeviceTouchscreen);
4869 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad); 5070 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad);
4870 EXPECT_TRUE(ScrollStateIsUnknown()); 5071 EXPECT_TRUE(ScrollStateIsUnknown());
4871 // ScrollBegin will be queued events. 5072 // ScrollBegin will be queued events.
4872 EXPECT_EQ(1U, sink_->message_count()); 5073 EXPECT_EQ(1U, sink_->message_count());
4873 5074
4874 // Dropped flings should neither propagate *nor* indicate that they were 5075 // Dropped flings should neither propagate *nor* indicate that they were
4875 // consumed and have triggered a fling animation (as tracked by the router). 5076 // consumed and have triggered a fling animation (as tracked by the router).
4876 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents()); 5077 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents());
(...skipping 13 matching lines...) Expand all
4890 !wheel_scroll_latching_enabled_, -100, 0, 0, true, 5091 !wheel_scroll_latching_enabled_, -100, 0, 0, true,
4891 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event 5092 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4892 5093
4893 EXPECT_TRUE(ScrollStateIsUnknown()); 5094 EXPECT_TRUE(ScrollStateIsUnknown());
4894 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 5095 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4895 5096
4896 // The first wheel scroll did not scroll content. Overscroll should not start 5097 // The first wheel scroll did not scroll content. Overscroll should not start
4897 // yet, since enough hasn't been scrolled. 5098 // yet, since enough hasn't been scrolled.
4898 SendInputEventACK(WebInputEvent::kMouseWheel, 5099 SendInputEventACK(WebInputEvent::kMouseWheel,
4899 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5100 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4900 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 5101 ExpectGestureScrollEventsAfterMouseWheelACK(true, 1);
4901
4902 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4903 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4904 ExpectGestureScrollEndForWheelScrolling(false);
4905 EXPECT_TRUE(ScrollStateIsUnknown());
4906
4907 SendInputEventACK(WebInputEvent::kMouseWheel,
4908 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4909 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
4910 5102
4911 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5103 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4912 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5104 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4913 5105
4914 if (wheel_scroll_latching_enabled_) { 5106 EXPECT_TRUE(ScrollStateIsUnknown());
5107
5108 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
5109 ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(true);
5110 } else {
5111 ExpectGestureScrollEndForWheelScrolling(false);
5112 SendInputEventACK(WebInputEvent::kMouseWheel,
5113 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5114 ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
5115 }
5116
5117 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
5118 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5119
5120 if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
5121 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
5122 ExpectGestureScrollEndAfterNonBlockingMouseWheelACK();
5123 } else if (wheel_scroll_latching_enabled_) {
4915 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded); 5124 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
4916 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 5125 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4917 SendInputEventACK(WebInputEvent::kMouseWheel, 5126 SendInputEventACK(WebInputEvent::kMouseWheel,
4918 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5127 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5128 ExpectGestureScrollEndForWheelScrolling(true);
5129 } else {
5130 ExpectGestureScrollEndForWheelScrolling(true);
4919 } 5131 }
4920
4921 ExpectGestureScrollEndForWheelScrolling(true);
4922 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 5132 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4923 EXPECT_TRUE(ScrollStateIsOverscrolling()); 5133 EXPECT_TRUE(ScrollStateIsOverscrolling());
4924 5134
4925 // The GestureScrollBegin will reset the delegate's mode, so check it here. 5135 // The GestureScrollBegin will reset the delegate's mode, so check it here.
4926 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 5136 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4927 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 5137 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
4928 blink::kWebGestureDeviceTouchscreen); 5138 blink::kWebGestureDeviceTouchscreen);
4929 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad); 5139 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad);
4930 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 5140 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4931 EXPECT_TRUE(ScrollStateIsUnknown()); 5141 EXPECT_TRUE(ScrollStateIsUnknown());
4932 // ScrollBegin will be the queued event. 5142 // ScrollBegin will be the queued event.
4933 EXPECT_EQ(1U, sink_->message_count()); 5143 EXPECT_EQ(1U, sink_->message_count());
4934 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents()); 5144 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents());
4935 } 5145 }
4936 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 5146 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
4937 OverscrollStateResetsAfterScroll) { 5147 OverscrollStateResetsAfterScroll) {
4938 OverscrollStateResetsAfterScroll(); 5148 OverscrollStateResetsAfterScroll();
4939 } 5149 }
4940 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 5150 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4941 OverscrollStateResetsAfterScroll) { 5151 OverscrollStateResetsAfterScroll) {
4942 OverscrollStateResetsAfterScroll(); 5152 OverscrollStateResetsAfterScroll();
4943 } 5153 }
5154 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
5155 OverscrollStateResetsAfterScroll) {
5156 OverscrollStateResetsAfterScroll();
5157 }
4944 5158
4945 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) { 5159 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) {
4946 SetUpOverscrollEnvironment(); 5160 SetUpOverscrollEnvironment();
4947 5161
4948 // Start an overscroll with gesture scroll. In the middle of the scroll, blur 5162 // Start an overscroll with gesture scroll. In the middle of the scroll, blur
4949 // the host. 5163 // the host.
4950 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 5164 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
4951 blink::kWebGestureDeviceTouchscreen); 5165 blink::kWebGestureDeviceTouchscreen);
4952 SimulateGestureScrollUpdateEvent(300, -5, 0); 5166 SimulateGestureScrollUpdateEvent(300, -5, 0);
4953 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5167 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
5179 view_->OnTouchEvent(&press2); 5393 view_->OnTouchEvent(&press2);
5180 SendTouchEventACK(blink::WebInputEvent::kTouchStart, 5394 SendTouchEventACK(blink::WebInputEvent::kTouchStart,
5181 INPUT_EVENT_ACK_STATE_CONSUMED, press2.unique_event_id()); 5395 INPUT_EVENT_ACK_STATE_CONSUMED, press2.unique_event_id());
5182 5396
5183 EXPECT_EQ(2U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); 5397 EXPECT_EQ(2U, view_->dispatcher_->GetAndResetProcessedTouchEventCount());
5184 } 5398 }
5185 5399
5186 // Tests that the scroll deltas stored within the overscroll controller get 5400 // Tests that the scroll deltas stored within the overscroll controller get
5187 // reset at the end of the overscroll gesture even if the overscroll threshold 5401 // reset at the end of the overscroll gesture even if the overscroll threshold
5188 // isn't surpassed and the overscroll mode stays OVERSCROLL_NONE. 5402 // isn't surpassed and the overscroll mode stays OVERSCROLL_NONE.
5189 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ScrollDeltasResetOnEnd) { 5403 void RenderWidgetHostViewAuraOverscrollTest::ScrollDeltasResetOnEnd() {
5190 SetUpOverscrollEnvironment(); 5404 SetUpOverscrollEnvironment();
5191 // Wheel event scroll ending with mouse move. 5405 // Wheel event scroll ending with mouse move.
5192 SimulateWheelEvent(-30, -10, 0, true); // sent directly 5406 SimulateWheelEventPossiblyIncludingPhase(
5407 !wheel_scroll_latching_enabled_, -30, -10, 0, true,
5408 WebMouseWheelEvent::kPhaseBegan); // sent directly
5193 SendInputEventACK(WebInputEvent::kMouseWheel, 5409 SendInputEventACK(WebInputEvent::kMouseWheel,
5194 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5410 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5195 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5411 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
5196 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5412 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5197 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 5413 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
5198 EXPECT_EQ(-30.f, overscroll_delta_x()); 5414 EXPECT_EQ(-30.f, overscroll_delta_x());
5199 EXPECT_EQ(-10.f, overscroll_delta_y()); 5415 EXPECT_EQ(-10.f, overscroll_delta_y());
5200 SimulateMouseMove(5, 10, 0); 5416 SimulateMouseMove(5, 10, 0);
5201 EXPECT_EQ(0.f, overscroll_delta_x()); 5417 EXPECT_EQ(0.f, overscroll_delta_x());
5202 EXPECT_EQ(0.f, overscroll_delta_y()); 5418 EXPECT_EQ(0.f, overscroll_delta_y());
5203 5419
5204 // Scroll gesture. 5420 // Scroll gesture.
5205 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 5421 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
5206 blink::kWebGestureDeviceTouchscreen); 5422 blink::kWebGestureDeviceTouchscreen);
5207 SimulateGestureScrollUpdateEvent(-30, -5, 0); 5423 SimulateGestureScrollUpdateEvent(-30, -5, 0);
5208 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5424 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
5209 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5425 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5210 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 5426 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
5211 EXPECT_EQ(-30.f, overscroll_delta_x()); 5427 EXPECT_EQ(-30.f, overscroll_delta_x());
5212 EXPECT_EQ(-5.f, overscroll_delta_y()); 5428 EXPECT_EQ(-5.f, overscroll_delta_y());
5213 SimulateGestureEvent(WebInputEvent::kGestureScrollEnd, 5429 SimulateGestureEvent(WebInputEvent::kGestureScrollEnd,
5214 blink::kWebGestureDeviceTouchscreen); 5430 blink::kWebGestureDeviceTouchscreen);
5215 EXPECT_EQ(0.f, overscroll_delta_x()); 5431 EXPECT_EQ(0.f, overscroll_delta_x());
5216 EXPECT_EQ(0.f, overscroll_delta_y()); 5432 EXPECT_EQ(0.f, overscroll_delta_y());
5217 5433
5218 // Wheel event scroll ending with a fling. 5434 // Wheel event scroll ending with a fling.
5219 SimulateWheelEvent(5, 0, 0, true); 5435 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 5,
5220 SendInputEventACK(WebInputEvent::kMouseWheel, 5436 0, 0, true,
5221 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5437 WebMouseWheelEvent::kPhaseChanged);
5438 if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
5439 SendInputEventACK(WebInputEvent::kMouseWheel,
5440 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5441 }
5222 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5442 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
5223 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5443 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5224 SimulateWheelEvent(10, -5, 0, true); 5444 SimulateWheelEventPossiblyIncludingPhase(!wheel_scroll_latching_enabled_, 10,
5225 SendInputEventACK(WebInputEvent::kMouseWheel, 5445 -5, 0, true,
5226 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5446 WebMouseWheelEvent::kPhaseChanged);
5447 if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
5448 SendInputEventACK(WebInputEvent::kMouseWheel,
5449 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5450 }
5227 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5451 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
5228 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5452 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5229 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 5453 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
5230 EXPECT_EQ(15.f, overscroll_delta_x()); 5454 EXPECT_EQ(15.f, overscroll_delta_x());
5231 EXPECT_EQ(-5.f, overscroll_delta_y()); 5455 EXPECT_EQ(-5.f, overscroll_delta_y());
5232 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 5456 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
5233 blink::kWebGestureDeviceTouchscreen); 5457 blink::kWebGestureDeviceTouchscreen);
5234 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::kWebGestureDeviceTouchpad); 5458 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::kWebGestureDeviceTouchpad);
5235 EXPECT_EQ(0.f, overscroll_delta_x()); 5459 EXPECT_EQ(0.f, overscroll_delta_x());
5236 EXPECT_EQ(0.f, overscroll_delta_y()); 5460 EXPECT_EQ(0.f, overscroll_delta_y());
5237 } 5461 }
5462 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ScrollDeltasResetOnEnd) {
5463 ScrollDeltasResetOnEnd();
5464 }
5465 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
5466 ScrollDeltasResetOnEnd) {
5467 ScrollDeltasResetOnEnd();
5468 }
5469 TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
5470 ScrollDeltasResetOnEnd) {
5471 ScrollDeltasResetOnEnd();
5472 }
5238 5473
5239 TEST_F(RenderWidgetHostViewAuraTest, ForwardMouseEvent) { 5474 TEST_F(RenderWidgetHostViewAuraTest, ForwardMouseEvent) {
5240 aura::Window* root = parent_view_->GetNativeView()->GetRootWindow(); 5475 aura::Window* root = parent_view_->GetNativeView()->GetRootWindow();
5241 5476
5242 // Set up test delegate and window hierarchy. 5477 // Set up test delegate and window hierarchy.
5243 aura::test::EventCountDelegate delegate; 5478 aura::test::EventCountDelegate delegate;
5244 std::unique_ptr<aura::Window> parent(new aura::Window(&delegate)); 5479 std::unique_ptr<aura::Window> parent(new aura::Window(&delegate));
5245 parent->Init(ui::LAYER_TEXTURED); 5480 parent->Init(ui::LAYER_TEXTURED);
5246 root->AddChild(parent.get()); 5481 root->AddChild(parent.get());
5247 view_->InitAsChild(parent.get()); 5482 view_->InitAsChild(parent.get());
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after
5836 // There is no composition in the beginning. 6071 // There is no composition in the beginning.
5837 EXPECT_FALSE(has_composition_text()); 6072 EXPECT_FALSE(has_composition_text());
5838 SetHasCompositionTextToTrue(); 6073 SetHasCompositionTextToTrue();
5839 view->ImeCancelComposition(); 6074 view->ImeCancelComposition();
5840 // The composition must have been canceled. 6075 // The composition must have been canceled.
5841 EXPECT_FALSE(has_composition_text()); 6076 EXPECT_FALSE(has_composition_text());
5842 } 6077 }
5843 } 6078 }
5844 6079
5845 } // namespace content 6080 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_unittest.cc ('k') | content/public/common/content_features.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698