summaryrefslogtreecommitdiff
path: root/chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc')
-rw-r--r--chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc1239
1 files changed, 449 insertions, 790 deletions
diff --git a/chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index b84c96372ca..9aac9b4c740 100644
--- a/chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/chromium/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -213,8 +213,7 @@ class TestWindowObserver : public aura::WindowObserver {
class FakeWindowEventDispatcher : public aura::WindowEventDispatcher {
public:
FakeWindowEventDispatcher(aura::WindowTreeHost* host)
- : WindowEventDispatcher(host),
- processed_touch_event_count_(0) {}
+ : WindowEventDispatcher(host, true), processed_touch_event_count_(0) {}
void ProcessedTouchEvent(
uint32_t unique_event_id,
@@ -385,6 +384,20 @@ class MockRenderWidgetHostImpl : public RenderWidgetHostImpl {
lastWheelOrTouchEventLatencyInfo = ui::LatencyInfo(ui_latency);
}
+ void ForwardGestureEventWithLatencyInfo(
+ const blink::WebGestureEvent& gesture_event,
+ const ui::LatencyInfo& ui_latency) override {
+ RenderWidgetHostImpl::ForwardGestureEventWithLatencyInfo(gesture_event,
+ ui_latency);
+ last_forwarded_gesture_event_ = gesture_event;
+ }
+
+ base::Optional<WebGestureEvent> GetAndResetLastForwardedGestureEvent() {
+ base::Optional<WebGestureEvent> ret;
+ last_forwarded_gesture_event_.swap(ret);
+ return ret;
+ }
+
static MockRenderWidgetHostImpl* Create(RenderWidgetHostDelegate* delegate,
RenderProcessHost* process,
int32_t routing_id) {
@@ -429,8 +442,9 @@ class MockRenderWidgetHostImpl : public RenderWidgetHostImpl {
new_content_rendering_timeout_fired_ = true;
}
- bool new_content_rendering_timeout_fired_;
+ bool new_content_rendering_timeout_fired_ = false;
std::unique_ptr<MockWidgetImpl> widget_impl_;
+ base::Optional<WebGestureEvent> last_forwarded_gesture_event_;
};
class TestScopedKeyboardHook : public aura::ScopedKeyboardHook {
@@ -472,19 +486,14 @@ void TestScopedKeyboardHook::LockSpecificKey(ui::DomCode dom_code) {
locked_key_ = dom_code;
}
-enum WheelScrollingMode {
- kWheelScrollingModeNone,
- kWheelScrollLatching,
- kAsyncWheelEvents,
-};
-
class RenderWidgetHostViewAuraTest : public testing::Test {
public:
- RenderWidgetHostViewAuraTest(
- WheelScrollingMode wheel_scrolling_mode = kWheelScrollingModeNone)
- : wheel_scrolling_mode_(wheel_scrolling_mode),
- widget_host_uses_shutdown_to_destroy_(false),
- is_guest_view_hack_(false) {}
+ RenderWidgetHostViewAuraTest()
+ : widget_host_uses_shutdown_to_destroy_(false),
+ is_guest_view_hack_(false) {
+ ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
+ 0);
+ }
static void InstallDelegatedFrameHostClient(
RenderWidgetHostViewAura* view,
@@ -610,34 +619,10 @@ class RenderWidgetHostViewAuraTest : public testing::Test {
const ui::MotionEventAura& pointer_state() { return view_->pointer_state(); }
void SetFeatureList() {
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- feature_list_.InitWithFeatures({features::kTouchpadAndWheelScrollLatching,
- features::kAsyncWheelEvents},
- {});
- } else if (wheel_scrolling_mode_ == kWheelScrollLatching) {
- feature_list_.InitWithFeatures(
- {features::kTouchpadAndWheelScrollLatching},
- {features::kAsyncWheelEvents});
- } else if (wheel_scrolling_mode_ == kWheelScrollingModeNone) {
- feature_list_.InitWithFeatures({},
- {features::kTouchpadAndWheelScrollLatching,
- features::kAsyncWheelEvents});
- }
-
vsync_feature_list_.InitAndEnableFeature(
features::kVsyncAlignedInputEvents);
}
- void TimerBasedWheelEventPhaseInfo();
- void TimerBasedLatchingBreaksWithMouseMove();
- void TimerBasedLatchingBreaksWithModifiersChange();
- void TimerBasedLatchingBreaksWithDirectionChange();
- void TimerBasedLatchingBreaksWithAutoscrollStart();
- void TouchpadFlingStartResetsWheelPhaseState();
- void GSBWithTouchSourceStopsWheelScrollSequence();
-
- WheelScrollingMode wheel_scrolling_mode_;
-
protected:
BrowserContext* browser_context() { return browser_context_.get(); }
@@ -722,32 +707,6 @@ class RenderWidgetHostViewAuraSurfaceSynchronizationTest
base::test::ScopedFeatureList surface_synchronization_feature_list_;
};
-class RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest
- : public RenderWidgetHostViewAuraTest {
- public:
- RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest()
- : RenderWidgetHostViewAuraTest(kWheelScrollLatching) {}
- void SetUp() override {
- SetFeatureList();
- ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
- 0);
- RenderWidgetHostViewAuraTest::SetUpEnvironment();
- }
-};
-
-class RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest
- : public RenderWidgetHostViewAuraTest {
- public:
- RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest()
- : RenderWidgetHostViewAuraTest(kAsyncWheelEvents) {}
- void SetUp() override {
- SetFeatureList();
- ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
- 0);
- RenderWidgetHostViewAuraTest::SetUpEnvironment();
- }
-};
-
void InstallDelegatedFrameHostClient(
RenderWidgetHostViewAura* render_widget_host_view,
std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client) {
@@ -795,11 +754,7 @@ class RenderWidgetHostViewGuestAuraTest : public RenderWidgetHostViewAuraTest {
class RenderWidgetHostViewAuraOverscrollTest
: public RenderWidgetHostViewAuraTest {
public:
- RenderWidgetHostViewAuraOverscrollTest(
- WheelScrollingMode wheel_scrolling_mode = kWheelScrollLatching)
- : RenderWidgetHostViewAuraTest(wheel_scrolling_mode),
- wheel_scroll_latching_enabled_(wheel_scrolling_mode !=
- kWheelScrollingModeNone) {}
+ RenderWidgetHostViewAuraOverscrollTest() : RenderWidgetHostViewAuraTest() {}
// We explicitly invoke SetUp to allow gesture debounce customization.
void SetUp() override {}
@@ -823,16 +778,14 @@ class RenderWidgetHostViewAuraOverscrollTest
void SendScrollBeginAckIfNeeded(
MockWidgetInputHandler::MessageVector& messages,
InputEventAckState ack_result) {
- if (wheel_scroll_latching_enabled_) {
- for (size_t i = 0; i < messages.size(); ++i) {
- MockWidgetInputHandler::DispatchedEventMessage* event =
- messages[i]->ToEvent();
- // GSB events are blocking, send the ack.
- if (event && event->Event()->web_event->GetType() ==
- WebInputEvent::kGestureScrollBegin) {
- event->CallCallback(ack_result);
- return;
- }
+ for (size_t i = 0; i < messages.size(); ++i) {
+ MockWidgetInputHandler::DispatchedEventMessage* event =
+ messages[i]->ToEvent();
+ // GSB events are blocking, send the ack.
+ if (event && event->Event()->web_event->GetType() ==
+ WebInputEvent::kGestureScrollBegin) {
+ event->CallCallback(ack_result);
+ return;
}
}
}
@@ -887,17 +840,11 @@ class RenderWidgetHostViewAuraOverscrollTest
base::RunLoop().RunUntilIdle();
}
- void SimulateWheelEvent(float dX, float dY, int modifiers, bool precise) {
- widget_host_->ForwardWheelEvent(SyntheticWebMouseWheelEventBuilder::Build(
- 0, 0, dX, dY, modifiers, precise));
- base::RunLoop().RunUntilIdle();
- }
-
- void SimulateWheelEventWithPhase(float dX,
- float dY,
- int modifiers,
- bool precise,
- WebMouseWheelEvent::Phase phase) {
+ void SimulateWheelEvent(float dX,
+ float dY,
+ int modifiers,
+ bool precise,
+ WebMouseWheelEvent::Phase phase) {
WebMouseWheelEvent wheel_event = SyntheticWebMouseWheelEventBuilder::Build(
0, 0, dX, dY, modifiers, precise);
wheel_event.phase = phase;
@@ -905,30 +852,6 @@ class RenderWidgetHostViewAuraOverscrollTest
base::RunLoop().RunUntilIdle();
}
- void SimulateWheelEventPossiblyIncludingPhase(
- float dX,
- float dY,
- int modifiers,
- bool precise,
- WebMouseWheelEvent::Phase phase) {
- if (wheel_scroll_latching_enabled_)
- SimulateWheelEventWithPhase(dX, dY, modifiers, precise, phase);
- else
- SimulateWheelEvent(dX, dY, modifiers, precise);
- }
-
- void SimulateWheelEventWithLatencyInfo(float dX,
- float dY,
- int modifiers,
- bool precise,
- const ui::LatencyInfo& ui_latency) {
- widget_host_->ForwardWheelEventWithLatencyInfo(
- SyntheticWebMouseWheelEventBuilder::Build(0, 0, dX, dY, modifiers,
- precise),
- ui_latency);
- base::RunLoop().RunUntilIdle();
- }
-
void SimulateMouseMove(int x, int y, int modifiers) {
SimulateMouseEvent(WebInputEvent::kMouseMove, x, y, modifiers, false);
}
@@ -946,12 +869,6 @@ class RenderWidgetHostViewAuraOverscrollTest
base::RunLoop().RunUntilIdle();
}
- void SimulateWheelEventWithPhase(WebMouseWheelEvent::Phase phase) {
- widget_host_->ForwardWheelEvent(
- SyntheticWebMouseWheelEventBuilder::Build(phase));
- base::RunLoop().RunUntilIdle();
- }
-
// Inject provided synthetic WebGestureEvent instance.
void SimulateGestureEventCore(const WebGestureEvent& gesture_event) {
widget_host_->ForwardGestureEvent(gesture_event);
@@ -1059,15 +976,26 @@ class RenderWidgetHostViewAuraOverscrollTest
touch_event_.ReleasePoint(index);
}
+ void PressAndSetTouchActionAuto() {
+ PressTouchPoint(0, 1);
+ SendTouchEvent();
+ widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+ MockWidgetInputHandler::MessageVector events =
+ GetAndResetDispatchedMessages();
+ EXPECT_EQ("TouchStart", GetMessageNames(events));
+ }
+
+ void ReleaseAndResetDispatchedMessages() {
+ ReleaseTouchPoint(0);
+ SendTouchEvent();
+ MockWidgetInputHandler::MessageVector events =
+ GetAndResetDispatchedMessages();
+ }
+
MockWidgetInputHandler::MessageVector ExpectGestureScrollEndForWheelScrolling(
bool is_last) {
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
- if (!wheel_scroll_latching_enabled_) {
- // Already handled in |ExpectGestureScrollEventsAfterMouseWheelACK()|.
- EXPECT_EQ(0U, events.size());
- return events;
- }
if (is_last) {
// Scroll latching will have one GestureScrollEnd at the end.
EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
@@ -1085,8 +1013,6 @@ class RenderWidgetHostViewAuraOverscrollTest
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
std::string expected_events;
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- EXPECT_TRUE(wheel_scroll_latching_enabled_);
// If the ack for the first sent event is not consumed,
// MouseWheelEventQueue(MWEQ) sends the rest of the wheel events in the
// current scrolling sequence as non-blocking events. Since MWEQ
@@ -1100,30 +1026,6 @@ class RenderWidgetHostViewAuraOverscrollTest
expected_events += "GestureScrollBegin GestureScrollUpdate ";
for (size_t i = 0; i < enqueued_wheel_event_count; ++i)
expected_events += "MouseWheel GestureScrollUpdate ";
- } else if (wheel_scrolling_mode_ == kWheelScrollLatching) {
- EXPECT_TRUE(wheel_scroll_latching_enabled_);
- // Since the MWEQ must wait for ack of the sent event before sending the
- // next queued event, when wheel events are blocking only one queued
- // event will be sent regardless of the number of the queued wheel
- // events.
- // Expecting a GSU or GSB+GSU for ACKing the previous MouseWheel, plus an
- // additional MouseWheel if the queue is not empty. GSE will be delayed by
- // scroll latching.
- if (is_first_ack)
- expected_events += "GestureScrollBegin ";
- expected_events += "GestureScrollUpdate ";
- if (enqueued_wheel_event_count != 0)
- expected_events += "MouseWheel";
- } else {
- // The MWEQ must wait for ack of the sent event before sending the
- // next queued event.
- // Expecting a GSB+GSU+GSE for ACKing the previous MouseWheel, plus an
- // additional MouseWheel if the queue is not empty.
- expected_events +=
- "GestureScrollBegin GestureScrollUpdate GestureScrollEnd ";
- if (enqueued_wheel_event_count != 0)
- expected_events += "MouseWheel";
- }
EXPECT_EQ(base::TrimWhitespaceASCII(expected_events, base::TRIM_TRAILING),
GetMessageNames(events));
@@ -1157,60 +1059,16 @@ class RenderWidgetHostViewAuraOverscrollTest
return events;
}
- void ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling() {
- MockWidgetInputHandler::MessageVector events =
- GetAndResetDispatchedMessages();
- // Wheel event ack either:
- // - does not generate a gesture scroll update (async wheel event); or
- // - generates a gesture scroll update that is consumed by the overscroll
- // controller to prevent content scroll (non-async wheel event).
- if (wheel_scroll_latching_enabled_) {
- EXPECT_EQ(0U, events.size());
- } else {
- // Wheel event ack generates a gesture scroll begin, a gesture scroll
- // update, and a gesture scroll end; of which the gesture scroll update is
- // consumed by the overscroll controller to prevent content scroll.
- EXPECT_EQ("GestureScrollBegin GestureScrollEnd", GetMessageNames(events));
- }
- }
-
- void WheelNotPreciseScrollEvent();
- void WheelScrollOverscrollToggle();
- void OverscrollMouseMoveCompletion();
- void WheelScrollEventOverscrolls();
- void WheelScrollConsumedDoNotOverscroll();
- void ScrollEventsOverscrollWithFling();
- void OverscrollDirectionChangeMouseWheel();
- void OverscrollStateResetsAfterScroll();
- void ScrollDeltasResetOnEnd();
- void ScrollEventsOverscrollWithZeroFling();
-
SyntheticWebTouchEvent touch_event_;
std::unique_ptr<TestOverscrollDelegate> overscroll_delegate_;
- bool wheel_scroll_latching_enabled_;
-
private:
base::test::ScopedFeatureList scoped_feature_list_;
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAuraOverscrollTest);
};
-class RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest
- : public RenderWidgetHostViewAuraOverscrollTest {
- public:
- RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest()
- : RenderWidgetHostViewAuraOverscrollTest(kWheelScrollingModeNone) {}
-};
-
-class RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest
- : public RenderWidgetHostViewAuraOverscrollTest {
- public:
- RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest()
- : RenderWidgetHostViewAuraOverscrollTest(kAsyncWheelEvents) {}
-};
-
class RenderWidgetHostViewAuraShutdownTest
: public RenderWidgetHostViewAuraTest {
public:
@@ -2001,11 +1859,7 @@ TEST_F(RenderWidgetHostViewAuraTest,
}
}
-void RenderWidgetHostViewAuraTest::TimerBasedWheelEventPhaseInfo() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
+TEST_F(RenderWidgetHostViewAuraTest, TimerBasedWheelEventPhaseInfo) {
view_->InitAsChild(nullptr);
view_->Show();
sink_->ClearMessages();
@@ -2049,16 +1903,9 @@ void RenderWidgetHostViewAuraTest::TimerBasedWheelEventPhaseInfo() {
events[0]->ToEvent()->Event()->web_event.get());
base::TimeTicks wheel_event_timestamp = wheel_event->TimeStamp();
EXPECT_EQ(WebMouseWheelEvent::kPhaseChanged, wheel_event->phase);
- if (wheel_scrolling_mode_ == kWheelScrollLatching) {
- events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- events = GetAndResetDispatchedMessages();
- gesture_event = static_cast<const WebGestureEvent*>(
- events[0]->ToEvent()->Event()->web_event.get());
- } else { // wheel_scrolling_mode_ == kAsyncWheelEvents.
+
gesture_event = static_cast<const WebGestureEvent*>(
events[1]->ToEvent()->Event()->web_event.get());
- }
-
EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, gesture_event->GetType());
EXPECT_EQ(0U, gesture_event->data.scroll_update.delta_x);
EXPECT_EQ(2U, gesture_event->data.scroll_update.delta_y);
@@ -2085,23 +1932,11 @@ void RenderWidgetHostViewAuraTest::TimerBasedWheelEventPhaseInfo() {
EXPECT_EQ(WebInputEvent::kGestureScrollEnd, gesture_event->GetType());
EXPECT_TRUE(gesture_event->data.scroll_end.synthetic);
}
-TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
- TimerBasedWheelEventPhaseInfo) {
- TimerBasedWheelEventPhaseInfo();
-}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- TimerBasedWheelEventPhaseInfo) {
- TimerBasedWheelEventPhaseInfo();
-}
// Tests that latching breaks when the difference between location of the first
// wheel event in the sequence and the location of the current wheel event is
// larger than some maximum threshold.
-void RenderWidgetHostViewAuraTest::TimerBasedLatchingBreaksWithMouseMove() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
+TEST_F(RenderWidgetHostViewAuraTest, TimerBasedLatchingBreaksWithMouseMove) {
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when the wheel event with different
// location is sent.
@@ -2137,16 +1972,11 @@ void RenderWidgetHostViewAuraTest::TimerBasedLatchingBreaksWithMouseMove() {
view_->OnMouseEvent(&event2);
base::RunLoop().RunUntilIdle();
events = GetAndResetDispatchedMessages();
- if (wheel_scrolling_mode_ == kWheelScrollLatching)
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- else
- EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
+ EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
wheel_event = static_cast<const WebMouseWheelEvent*>(
events[0]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseChanged, wheel_event->phase);
- if (wheel_scrolling_mode_ == kWheelScrollLatching)
- events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
events = GetAndResetDispatchedMessages();
// Send the third wheel event with a location outside of the slop region. The
@@ -2167,23 +1997,11 @@ void RenderWidgetHostViewAuraTest::TimerBasedLatchingBreaksWithMouseMove() {
events[2]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
}
-TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
- TimerBasedLatchingBreaksWithMouseMove) {
- TimerBasedLatchingBreaksWithMouseMove();
-}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- TimerBasedLatchingBreaksWithMouseMove) {
- TimerBasedLatchingBreaksWithMouseMove();
-}
// Tests that latching breaks when the current wheel event has different
// modifiers.
-void RenderWidgetHostViewAuraTest::
- TimerBasedLatchingBreaksWithModifiersChange() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
+TEST_F(RenderWidgetHostViewAuraTest,
+ TimerBasedLatchingBreaksWithModifiersChange) {
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when the wheel event with different
// modifiers is sent.
@@ -2216,16 +2034,11 @@ void RenderWidgetHostViewAuraTest::
view_->OnMouseEvent(&event2);
base::RunLoop().RunUntilIdle();
events = GetAndResetDispatchedMessages();
- if (wheel_scrolling_mode_ == kWheelScrollLatching)
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- else
- EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
+ EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
wheel_event = static_cast<const WebMouseWheelEvent*>(
events[0]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseChanged, wheel_event->phase);
- if (wheel_scrolling_mode_ == kWheelScrollLatching)
- events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
events = GetAndResetDispatchedMessages();
// Send the third wheel event with a ctrl key down. The third wheel event will
@@ -2245,24 +2058,12 @@ void RenderWidgetHostViewAuraTest::
events[2]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
}
-TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
- TimerBasedLatchingBreaksWithModifiersChange) {
- TimerBasedLatchingBreaksWithModifiersChange();
-}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- TimerBasedLatchingBreaksWithModifiersChange) {
- TimerBasedLatchingBreaksWithModifiersChange();
-}
// Tests that latching breaks when the new wheel event goes a different
// direction from previous wheel events and the previous GSU events are not
// consumed.
-void RenderWidgetHostViewAuraTest::
- TimerBasedLatchingBreaksWithDirectionChange() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
+TEST_F(RenderWidgetHostViewAuraTest,
+ TimerBasedLatchingBreaksWithDirectionChange) {
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when the wheel event with different
// modifiers is sent.
@@ -2312,21 +2113,9 @@ void RenderWidgetHostViewAuraTest::
events[2]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
}
-TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
- TimerBasedLatchingBreaksWithDirectionChange) {
- TimerBasedLatchingBreaksWithDirectionChange();
-}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- TimerBasedLatchingBreaksWithDirectionChange) {
- TimerBasedLatchingBreaksWithDirectionChange();
-}
-
-void RenderWidgetHostViewAuraTest::
- TimerBasedLatchingBreaksWithAutoscrollStart() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
+TEST_F(RenderWidgetHostViewAuraTest,
+ TimerBasedLatchingBreaksWithAutoscrollStart) {
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when the Autoscroll starts.
view_->event_handler()->set_mouse_wheel_wheel_phase_handler_timeout(
@@ -2349,7 +2138,7 @@ void RenderWidgetHostViewAuraTest::
events[0]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- EXPECT_TRUE(view_->GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
+ EXPECT_TRUE(GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
events = GetAndResetDispatchedMessages();
// Autoscroll start breaks wheel scroll latching sequence by sending the
@@ -2357,7 +2146,7 @@ void RenderWidgetHostViewAuraTest::
// immediately and a GSE will be sent. The next wheel event will start a new
// scrolling sequence.
view_->OnAutoscrollStart();
- EXPECT_FALSE(view_->GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
+ EXPECT_FALSE(GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
ui::MouseWheelEvent event2(gfx::Vector2d(0, 5), gfx::Point(2, 2),
gfx::Point(2, 2), ui::EventTimeForNow(), 0, 0);
view_->OnMouseEvent(&event2);
@@ -2373,18 +2162,10 @@ void RenderWidgetHostViewAuraTest::
events[2]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- TimerBasedLatchingBreaksWithAutoscrollStart) {
- TimerBasedLatchingBreaksWithAutoscrollStart();
-}
// Tests that a gesture fling start with touchpad source resets wheel phase
// state.
-void RenderWidgetHostViewAuraTest::TouchpadFlingStartResetsWheelPhaseState() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
+TEST_F(RenderWidgetHostViewAuraTest, TouchpadFlingStartResetsWheelPhaseState) {
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when the touchpad fling start is sent.
view_->event_handler()->set_mouse_wheel_wheel_phase_handler_timeout(
@@ -2436,26 +2217,14 @@ void RenderWidgetHostViewAuraTest::TouchpadFlingStartResetsWheelPhaseState() {
view_->OnScrollEvent(&scroll1);
base::RunLoop().RunUntilIdle();
events = GetAndResetDispatchedMessages();
- if (wheel_scrolling_mode_ == kWheelScrollLatching)
- EXPECT_EQ(1U, events.size());
- else
- EXPECT_EQ(2U, events.size());
+ EXPECT_EQ(2U, events.size());
wheel_event = static_cast<const WebMouseWheelEvent*>(
events[0]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseChanged, wheel_event->phase);
- if (wheel_scrolling_mode_ == kWheelScrollLatching) {
- events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("GestureScrollUpdate", GetMessageNames(events));
- gesture_event = static_cast<const WebGestureEvent*>(
- events[0]->ToEvent()->Event()->web_event.get());
- events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
- } else { // wheel_scrolling_mode_ == kAsyncWheelEvents
- EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
- gesture_event = static_cast<const WebGestureEvent*>(
- events[1]->ToEvent()->Event()->web_event.get());
- events[1]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
- }
+ EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
+ gesture_event = static_cast<const WebGestureEvent*>(
+ events[1]->ToEvent()->Event()->web_event.get());
+ events[1]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, gesture_event->GetType());
EXPECT_EQ(0U, gesture_event->data.scroll_update.delta_x);
EXPECT_EQ(15U, gesture_event->data.scroll_update.delta_y);
@@ -2488,21 +2257,64 @@ void RenderWidgetHostViewAuraTest::TouchpadFlingStartResetsWheelPhaseState() {
events[2]->ToEvent()->Event()->web_event.get());
EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
}
-TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
- TouchpadFlingStartResetsWheelPhaseState) {
- TouchpadFlingStartResetsWheelPhaseState();
-}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- TouchpadFlingStartResetsWheelPhaseState) {
- TouchpadFlingStartResetsWheelPhaseState();
+
+// Tests that the touchpad scroll state in mouse wheel phase handler gets reset
+// when a mouse wheel event from an external mouse arrives.
+TEST_F(RenderWidgetHostViewAuraTest, MouseWheelScrollingAfterGFCWithoutGFS) {
+ // Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
+ // sure that the timer is still running when we are checking for the pending
+ // wheel end event after sending ui::MouseWheelEvent.
+ view_->event_handler()->set_mouse_wheel_wheel_phase_handler_timeout(
+ TestTimeouts::action_max_timeout());
+
+ view_->InitAsChild(nullptr);
+ view_->Show();
+ sink_->ClearMessages();
+
+ // When the user puts their fingers down a GFC is received. This will change
+ // the touchpad scroll state in mouse wheel phase handler to may_begin.
+ EXPECT_EQ(
+ content::TOUCHPAD_SCROLL_STATE_UNKNOWN,
+ GetMouseWheelPhaseHandler()->touchpad_scroll_phase_state_for_test());
+ ui::ScrollEvent fling_cancel(ui::ET_SCROLL_FLING_CANCEL, gfx::Point(2, 2),
+ ui::EventTimeForNow(), 0, 0, 0, 0, 0, 2);
+ view_->OnScrollEvent(&fling_cancel);
+ GetAndResetDispatchedMessages();
+ EXPECT_EQ(
+ content::TOUCHPAD_SCROLL_MAY_BEGIN,
+ GetMouseWheelPhaseHandler()->touchpad_scroll_phase_state_for_test());
+ EXPECT_FALSE(GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
+
+ // The user lifts their fingers without doing any touchpad scroll
+ // (ui::ScrollEevent), the touchpad scroll state must still be may_begin since
+ // without touchpad scrolling no GFS is recieved to reset the state.
+ EXPECT_EQ(
+ content::TOUCHPAD_SCROLL_MAY_BEGIN,
+ GetMouseWheelPhaseHandler()->touchpad_scroll_phase_state_for_test());
+
+ // The user starts scrolling by external mouse device.
+ ui::MouseWheelEvent wheel(gfx::Vector2d(0, 5), gfx::Point(2, 2),
+ gfx::Point(2, 2), ui::EventTimeForNow(), 0, 0);
+ view_->OnMouseEvent(&wheel);
+ base::RunLoop().RunUntilIdle();
+ MockWidgetInputHandler::MessageVector events =
+ GetAndResetDispatchedMessages();
+ const WebMouseWheelEvent* wheel_event =
+ static_cast<const WebMouseWheelEvent*>(
+ events[0]->ToEvent()->Event()->web_event.get());
+ EXPECT_EQ("MouseWheel", GetMessageNames(events));
+ EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
+
+ // After arrival of the mouse wheel event, the touchpad scroll state must get
+ // reset and the timer based wheel scroll latching must be active.
+ EXPECT_EQ(
+ content::TOUCHPAD_SCROLL_STATE_UNKNOWN,
+ GetMouseWheelPhaseHandler()->touchpad_scroll_phase_state_for_test());
+ EXPECT_TRUE(GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
}
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
+TEST_F(RenderWidgetHostViewAuraTest,
ScrollingWithExternalMouseBreaksTouchpadScrollLatching) {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when we are checking for the pending
// wheel end event after sending ui::MouseWheelEvent.
@@ -2572,12 +2384,8 @@ TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
EXPECT_TRUE(GetMouseWheelPhaseHandler()->HasPendingWheelEndEvent());
}
-void RenderWidgetHostViewAuraTest::
- GSBWithTouchSourceStopsWheelScrollSequence() {
- // The test is valid only when wheel scroll latching is enabled.
- if (wheel_scrolling_mode_ == kWheelScrollingModeNone)
- return;
-
+TEST_F(RenderWidgetHostViewAuraTest,
+ GSBWithTouchSourceStopsWheelScrollSequence) {
// Set the mouse_wheel_phase_handler_ timer timeout to a large value to make
// sure that the timer is still running when the GSB event with touch source
// is sent.
@@ -2609,6 +2417,16 @@ void RenderWidgetHostViewAuraTest::
EXPECT_EQ(5U, gesture_event->data.scroll_update.delta_y);
events[1]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
+ ui::GestureEventDetails gesture_tap_down_details(ui::ET_GESTURE_TAP_DOWN);
+ gesture_tap_down_details.set_is_source_touch_event_set_non_blocking(true);
+ gesture_tap_down_details.set_device_type(
+ ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
+ ui::GestureEvent gesture_tap_down(2, 2, 0, ui::EventTimeForNow(),
+ gesture_tap_down_details);
+ view_->OnGestureEvent(&gesture_tap_down);
+ base::RunLoop().RunUntilIdle();
+ events = GetAndResetDispatchedMessages();
+
ui::GestureEventDetails event_details(ui::ET_GESTURE_SCROLL_BEGIN);
event_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
ui::GestureEvent scroll_begin(2, 2, 0, ui::EventTimeForNow(), event_details);
@@ -2637,14 +2455,41 @@ void RenderWidgetHostViewAuraTest::
EXPECT_EQ(blink::kWebGestureDeviceTouchscreen, gesture_event->SourceDevice());
}
-TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
- GSBWithTouchSourceStopsWheelScrollSequence) {
- GSBWithTouchSourceStopsWheelScrollSequence();
-}
+TEST_F(RenderWidgetHostViewAuraTest,
+ SyntheticFlingCancelAtTouchpadScrollBegin) {
+ ui::ScrollEvent scroll_event(ui::ET_SCROLL, gfx::Point(2, 2),
+ ui::EventTimeForNow(), 0, 0, 5, 0, 5, 2);
-TEST_F(RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest,
- GSBWithTouchSourceStopsWheelScrollSequence) {
- GSBWithTouchSourceStopsWheelScrollSequence();
+ // Send the beginning scroll event. This should generate a synthetic fling
+ // cancel to cancel any ongoing flings before the start of this scroll.
+ view_->OnScrollEvent(&scroll_event);
+ base::RunLoop().RunUntilIdle();
+ base::Optional<WebGestureEvent> last_gesture =
+ widget_host_->GetAndResetLastForwardedGestureEvent();
+ ASSERT_TRUE(last_gesture);
+ EXPECT_EQ(WebInputEvent::kGestureFlingCancel, last_gesture->GetType());
+
+ // Consume the wheel to prevent gesture scrolls from interfering with the
+ // rest of the test.
+ MockWidgetInputHandler::MessageVector dispatched_events =
+ GetAndResetDispatchedMessages();
+ EXPECT_EQ("MouseWheel", GetMessageNames(dispatched_events));
+ dispatched_events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
+ dispatched_events = GetAndResetDispatchedMessages();
+ EXPECT_EQ(0U, dispatched_events.size());
+
+ // Send a scroll update. A synthetic fling cancel has already been sent for
+ // this sequence, so we should not generate another.
+ view_->OnScrollEvent(&scroll_event);
+ base::RunLoop().RunUntilIdle();
+ last_gesture = widget_host_->GetAndResetLastForwardedGestureEvent();
+ EXPECT_FALSE(last_gesture);
+
+ dispatched_events = GetAndResetDispatchedMessages();
+ EXPECT_EQ("MouseWheel", GetMessageNames(dispatched_events));
+ dispatched_events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
+ dispatched_events = GetAndResetDispatchedMessages();
+ EXPECT_EQ(0U, dispatched_events.size());
}
// Checks that touch-event state is maintained correctly for multiple touch
@@ -2659,6 +2504,8 @@ TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) {
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, 0));
view_->OnTouchEvent(&press0);
+ view_->GetFocusedWidget()->input_router()->OnSetTouchAction(
+ cc::kTouchActionAuto);
base::RunLoop().RunUntilIdle();
MockWidgetInputHandler::MessageVector events =
@@ -3188,7 +3035,7 @@ viz::CompositorFrame MakeDelegatedFrame(float scale_factor,
// This test verifies that returned resources do not require a pending ack.
TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) {
// TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ if (!features::IsAshInBrowserProcess())
return;
gfx::Size view_size(100, 100);
@@ -3219,9 +3066,12 @@ TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) {
// This test verifies that when the CompositorFrameSink changes, the old
// resources are not returned.
TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ // TODO(jonross): Delete this test once Viz launches as it will be obsolete.
+ // https://crbug.com/844469
+ if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
+ !features::IsAshInBrowserProcess()) {
return;
+ }
viz::FakeSurfaceObserver manager_observer;
ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
@@ -3361,7 +3211,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ZeroSizeStillGetsLocalSurfaceId) {
TEST_F(RenderWidgetHostViewAuraTest, BackgroundColorMatchesCompositorFrame) {
// TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ if (!features::IsAshInBrowserProcess())
return;
gfx::Size frame_size(100, 100);
@@ -3377,7 +3227,7 @@ TEST_F(RenderWidgetHostViewAuraTest, BackgroundColorMatchesCompositorFrame) {
cc::RenderFrameMetadata metadata;
metadata.root_background_color = SK_ColorRED;
view_->SetRenderFrameMetadata(metadata);
- view_->OnRenderFrameMetadataChanged();
+ view_->OnRenderFrameMetadataChangedAfterActivation();
ui::Layer* parent_layer = view_->GetNativeView()->layer();
EXPECT_EQ(gfx::Rect(0, 0, 100, 100), parent_layer->bounds());
@@ -3398,7 +3248,7 @@ TEST_F(RenderWidgetHostViewAuraTest, BackgroundColorOrder) {
cc::RenderFrameMetadata metadata;
metadata.root_background_color = SK_ColorWHITE;
view_->SetRenderFrameMetadata(metadata);
- view_->OnRenderFrameMetadataChanged();
+ view_->OnRenderFrameMetadataChangedAfterActivation();
ASSERT_TRUE(view_->GetBackgroundColor());
EXPECT_EQ(static_cast<unsigned>(SK_ColorWHITE), *view_->GetBackgroundColor());
@@ -3523,9 +3373,12 @@ TEST_F(RenderWidgetHostViewAuraTest, DISABLED_Resize) {
}
TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ // TODO(jonross): Delete this test once Viz launches as it will be obsolete.
+ // https://crbug.com/844469
+ if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
+ !features::IsAshInBrowserProcess()) {
return;
+ }
gfx::Rect view_rect(100, 100);
gfx::Size frame_size = view_rect.size();
@@ -3583,10 +3436,6 @@ TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
// then the fallback is dropped.
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
DropFallbackWhenHidden) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
- return;
-
view_->InitAsChild(nullptr);
aura::client::ParentWindowWithContext(
view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
@@ -3601,21 +3450,16 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
EXPECT_FALSE(view_->HasPrimarySurface());
// Submitting a CompositorFrame should not update the fallback SurfaceId
- view_->SubmitCompositorFrame(
- kArbitraryLocalSurfaceId,
- MakeDelegatedFrame(1.f, gfx::Size(400, 400), gfx::Rect(400, 400)),
- base::nullopt);
+ viz::SurfaceId surface_id(view_->GetFrameSinkId(), kArbitraryLocalSurfaceId);
+ view_->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, gfx::Size(400, 400)));
EXPECT_FALSE(view_->HasPrimarySurface());
EXPECT_FALSE(view_->HasFallbackSurface());
}
// This test verifies that the primary SurfaceId is populated on resize and
-// the fallback SurfaceId is populated on SubmitCompositorFrame.
+// the fallback SurfaceId is populated in OnFirstSurfaceActivation.
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest, SurfaceChanges) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
- return;
-
view_->InitAsChild(nullptr);
aura::client::ParentWindowWithContext(
view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
@@ -3637,12 +3481,14 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest, SurfaceChanges) {
EXPECT_EQ(gfx::Size(400, 400),
view_->delegated_frame_host_->CurrentFrameSizeInDipForTesting());
+ // Fallback SurfaceId should be updated in OnFirstSurfaceActivation.
// Submitting a CompositorFrame should update the fallback SurfaceId
- view_->SubmitCompositorFrame(
- kArbitraryLocalSurfaceId,
- MakeDelegatedFrame(1.f, gfx::Size(400, 400), gfx::Rect(400, 400)),
- base::nullopt);
+ viz::SurfaceId surface_id(view_->GetFrameSinkId(),
+ view_->GetLocalSurfaceId());
+ view_->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, gfx::Size(400, 400)));
EXPECT_EQ(gfx::Size(400, 400), view_->window_->layer()->size());
+ EXPECT_EQ(surface_id, *view_->window_->layer()->GetFallbackSurfaceId());
}
// This test verifies that the primary SurfaceId is updated on device scale
@@ -3650,7 +3496,7 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest, SurfaceChanges) {
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
DeviceScaleFactorChanges) {
// TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ if (!features::IsAshInBrowserProcess())
return;
view_->InitAsChild(nullptr);
@@ -3677,9 +3523,12 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
// the current surface) does not crash,
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
CompositorFrameSinkChange) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ // TODO(jonross): Delete this test once Viz launches as it will be obsolete.
+ // https://crbug.com/844469
+ if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
+ !features::IsAshInBrowserProcess()) {
return;
+ }
gfx::Rect view_rect(100, 100);
gfx::Size frame_size = view_rect.size();
@@ -3711,10 +3560,6 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
// RenderWidgetHostViewAuraTest.DiscardDelegatedFrame.
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
DiscardDelegatedFrames) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
- return;
-
view_->InitAsChild(nullptr);
size_t max_renderer_frames =
@@ -3755,9 +3600,10 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
views[i]->Show();
ASSERT_TRUE(views[i]->HasPrimarySurface());
ASSERT_FALSE(views[i]->HasFallbackSurface());
- views[i]->SubmitCompositorFrame(
- views[i]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ viz::SurfaceId surface_id(views[i]->GetFrameSinkId(),
+ views[i]->GetLocalSurfaceId());
+ views[i]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, frame_size));
ASSERT_TRUE(views[i]->HasPrimarySurface());
EXPECT_TRUE(views[i]->HasFallbackSurface());
views[i]->Hide();
@@ -3775,9 +3621,10 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
EXPECT_TRUE(views[1]->HasFallbackSurface());
// Swap a frame on it, it should evict the next LRU [1].
- views[0]->SubmitCompositorFrame(
- views[0]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ viz::SurfaceId surface_id0(views[0]->GetFrameSinkId(),
+ views[0]->GetLocalSurfaceId());
+ views[0]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id0, 1.f, frame_size));
EXPECT_TRUE(views[0]->HasFallbackSurface());
EXPECT_FALSE(views[1]->HasFallbackSurface());
views[0]->Hide();
@@ -3785,9 +3632,10 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
// LRU renderer is [1], which is still hidden. Showing it and submitting a
// CompositorFrame to it should evict the next LRU [2].
views[1]->Show();
- views[1]->SubmitCompositorFrame(
- views[1]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ viz::SurfaceId surface_id1(views[1]->GetFrameSinkId(),
+ views[1]->GetLocalSurfaceId());
+ views[1]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id1, 1.f, frame_size));
EXPECT_TRUE(views[0]->HasFallbackSurface());
EXPECT_TRUE(views[1]->HasFallbackSurface());
EXPECT_FALSE(views[2]->HasFallbackSurface());
@@ -3800,25 +3648,24 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
views[i]->Show();
// The renderers who don't have a frame should be waiting. The ones that
// have a frame should not.
- views[i]->SubmitCompositorFrame(
- views[i]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ viz::SurfaceId surface_id(views[i]->GetFrameSinkId(),
+ views[i]->GetLocalSurfaceId());
+ views[i]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, frame_size));
EXPECT_TRUE(views[i]->HasFallbackSurface());
}
EXPECT_FALSE(views[0]->HasFallbackSurface());
// Swap a frame on [0], it should be evicted immediately.
- views[0]->SubmitCompositorFrame(
- views[0]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ views[0]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id0, 1.f, frame_size));
EXPECT_FALSE(views[0]->HasFallbackSurface());
// Make [0] visible, and swap a frame on it. Nothing should be evicted
// although we're above the limit.
views[0]->Show();
- views[0]->SubmitCompositorFrame(
- views[0]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ views[0]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id0, 1.f, frame_size));
for (size_t i = 0; i < renderer_count; ++i)
EXPECT_TRUE(views[i]->HasFallbackSurface()) << i;
@@ -3839,9 +3686,8 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
EXPECT_FALSE(views[1]->HasFallbackSurface());
// Show it, it should block until we give it a frame.
views[1]->Show();
- views[1]->SubmitCompositorFrame(
- views[1]->GetLocalSurfaceId(),
- MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)), base::nullopt);
+ views[1]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id1, 1.f, frame_size));
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Destroy();
@@ -3850,10 +3696,6 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
}
TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
- return;
-
view_->InitAsChild(nullptr);
size_t max_renderer_frames =
@@ -3889,10 +3731,10 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
// occur because all frames are visible.
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Show();
- views[i]->SubmitCompositorFrame(
- i ? parent_local_surface_id_allocator_.GenerateId()
- : kArbitraryLocalSurfaceId,
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ viz::SurfaceId surface_id(views[i]->GetFrameSinkId(),
+ views[i]->GetLocalSurfaceId());
+ views[i]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, frame_size));
EXPECT_TRUE(views[i]->HasFallbackSurface());
}
@@ -3902,9 +3744,10 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
// If we lock [0] before hiding it, then [0] should not be evicted.
views[0]->Show();
- views[0]->SubmitCompositorFrame(
- kArbitraryLocalSurfaceId, MakeDelegatedFrame(1.f, frame_size, view_rect),
- base::nullopt);
+ viz::SurfaceId surface_id(views[0]->GetFrameSinkId(),
+ views[0]->GetLocalSurfaceId());
+ views[0]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, frame_size));
EXPECT_TRUE(views[0]->HasFallbackSurface());
views[0]->GetDelegatedFrameHost()->LockResources();
views[0]->Hide();
@@ -3923,10 +3766,6 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
// Test that changing the memory pressure should delete saved frames. This test
// only applies to ChromeOS.
TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
- return;
-
view_->InitAsChild(nullptr);
// The test logic below relies on having max_renderer_frames > 2. By default,
@@ -3967,9 +3806,10 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) {
// occur because all frames are visible.
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Show();
- views[i]->SubmitCompositorFrame(
- kArbitraryLocalSurfaceId,
- MakeDelegatedFrame(1.f, frame_size, view_rect), base::nullopt);
+ viz::SurfaceId surface_id(views[i]->GetFrameSinkId(),
+ kArbitraryLocalSurfaceId);
+ views[i]->delegated_frame_host_->OnFirstSurfaceActivation(
+ viz::SurfaceInfo(surface_id, 1.f, frame_size));
EXPECT_TRUE(views[i]->HasFallbackSurface());
}
@@ -4027,9 +3867,12 @@ TEST_F(RenderWidgetHostViewAuraTest, SourceEventTypeExistsInLatencyInfo) {
// SwapCompositorFrame and OnDidNotProduceFrame IPCs through DelegatedFrameHost
// and its CompositorFrameSinkSupport.
TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ // TODO(jonross): Delete this test once Viz launches as it will be obsolete.
+ // https://crbug.com/844469
+ if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
+ !features::IsAshInBrowserProcess()) {
return;
+ }
gfx::Rect view_rect(100, 100);
gfx::Size frame_size = view_rect.size();
@@ -4124,15 +3967,15 @@ TEST_F(RenderWidgetHostViewAuraTest, TouchEventPositionsArentRounded) {
}
// Tests that non-precise mouse-wheel events do not initiate overscroll.
-void RenderWidgetHostViewAuraOverscrollTest::WheelNotPreciseScrollEvent() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelNotPreciseScrollEvent) {
SetUpOverscrollEnvironment();
// Simulate wheel event. Does not cross start threshold.
- SimulateWheelEventPossiblyIncludingPhase(
- -5, 0, 0, false, WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(-5, 0, 0, false,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
// Simulate wheel event. Crosses start threshold.
- SimulateWheelEventPossiblyIncludingPhase(
- -70, 1, 0, false, WebMouseWheelEvent::kPhaseChanged); // enqueued
+ SimulateWheelEvent(-70, 1, 0, false,
+ WebMouseWheelEvent::kPhaseChanged); // enqueued
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
MockWidgetInputHandler::MessageVector events =
@@ -4148,64 +3991,36 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelNotPreciseScrollEvent() {
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- ExpectGestureScrollEndForWheelScrolling(false);
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
-
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel GestureScrollEnd", GetMessageNames(events));
- } else if (wheel_scroll_latching_enabled_) {
- SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- ExpectGestureScrollEndForWheelScrolling(true);
- } else {
- ExpectGestureScrollEndForWheelScrolling(true);
- }
+ SimulateWheelEvent(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
+ events = GetAndResetDispatchedMessages();
+ EXPECT_EQ("MouseWheel GestureScrollEnd", GetMessageNames(events));
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelNotPreciseScrollEvent) {
- WheelNotPreciseScrollEvent();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- WheelNotPreciseScrollEvent) {
- WheelNotPreciseScrollEvent();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- WheelNotPreciseScrollEvent) {
- WheelNotPreciseScrollEvent();
-}
-
// Tests that precise mouse-wheel events initiate overscroll and a mouse move
// will cancel it.
-void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) {
SetUpOverscrollEnvironment();
// Simulate wheel events. Do not cross start threshold.
- SimulateWheelEventPossiblyIncludingPhase(
- -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
- SimulateWheelEventPossiblyIncludingPhase(
- -10, 1, 0, true, WebMouseWheelEvent::kPhaseChanged); // enqueued
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(-5, 0, 0, true,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(-10, 1, 0, true,
+ WebMouseWheelEvent::kPhaseChanged); // enqueued
+ SimulateWheelEvent(
-10, -3, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-15, -1, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
// Simulate wheel events. Cross start threshold.
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-30, -3, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-20, 6, 1, true,
WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
@@ -4222,22 +4037,9 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- ExpectGestureScrollEndForWheelScrolling(false);
- // Receive ACK for the second (coalesced) event as not processed. This will
- // start a back navigation. However, this will also cause the queued next
- // event to be sent to the renderer. But since overscroll navigation has
- // started, that event will also be included in the overscroll computation
- // instead of being sent to the renderer. So the result will be an
- // overscroll back navigation, and no ScrollUpdate event will be sent to the
- // renderer.
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 1);
- }
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ExpectGestureScrollEndForWheelScrolling(false);
SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling();
EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
EXPECT_EQ(OverscrollSource::TOUCHPAD, overscroll_source());
@@ -4256,40 +4058,29 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() {
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseMove", GetMessageNames(events));
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) {
- WheelScrollEventOverscrolls();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- WheelScrollEventOverscrolls) {
- WheelScrollEventOverscrolls();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- WheelScrollEventOverscrolls) {
- WheelScrollEventOverscrolls();
-}
// Tests that if some scroll events are consumed towards the start, then
// subsequent scrolls do not overscroll.
-void RenderWidgetHostViewAuraOverscrollTest::
- WheelScrollConsumedDoNotOverscroll() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest,
+ WheelScrollConsumedDoNotOverscroll) {
SetUpOverscrollEnvironment();
// Simulate wheel events. Do not cross start threshold.
- SimulateWheelEventPossiblyIncludingPhase(
- -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
- SimulateWheelEventPossiblyIncludingPhase(
- -10, -1, 0, true, WebMouseWheelEvent::kPhaseChanged); // enqueued
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(-5, 0, 0, true,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(-10, -1, 0, true,
+ WebMouseWheelEvent::kPhaseChanged); // enqueued
+ SimulateWheelEvent(
-10, -3, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-15, -1, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
// Simulate wheel events. Cross start threshold.
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-30, -3, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-20, 6, 1, true,
WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers
@@ -4308,68 +4099,24 @@ void RenderWidgetHostViewAuraOverscrollTest::
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_CONSUMED);
- ExpectGestureScrollEndForWheelScrolling(false);
- // Receive ACK for the second (coalesced) event as not processed. This
- // should not initiate overscroll, since the beginning of the scroll has
- // been consumed. The queued event with different modifiers should be sent
- // to the renderer.
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 1);
- }
- EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
- EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
-
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
// The GSU events are coalesced. This is the ack for the coalesced event.
// Since it is the first GSU, the ack should be consumed.
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_CONSUMED);
- } else {
- SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- events = ExpectGestureScrollEndForWheelScrolling(false);
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- SendNotConsumedAcks(events);
- }
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
+ SimulateWheelEvent(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel GestureScrollEnd", GetMessageNames(events));
- } else if (wheel_scroll_latching_enabled_) {
- SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEndForWheelScrolling(true);
- } else {
- events = ExpectGestureScrollEndForWheelScrolling(true);
- }
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest,
- WheelScrollConsumedDoNotOverscroll) {
- WheelScrollConsumedDoNotOverscroll();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- WheelScrollConsumedDoNotOverscroll) {
- WheelScrollConsumedDoNotOverscroll();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- WheelScrollConsumedDoNotOverscroll) {
- WheelScrollConsumedDoNotOverscroll();
-}
// Tests that wheel-scrolling correctly turns overscroll on and off.
-void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) {
SetUpOverscrollEnvironment();
// Send a wheel event. ACK the event as not processed. This should not
// initiate an overscroll gesture since it doesn't cross the threshold yet.
- SimulateWheelEventPossiblyIncludingPhase(10, 0, 0, true,
- WebMouseWheelEvent::kPhaseBegan);
+ SimulateWheelEvent(10, 0, 0, true, WebMouseWheelEvent::kPhaseBegan);
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
@@ -4387,16 +4134,8 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Scroll some more so as to not overscroll.
- SimulateWheelEventPossiblyIncludingPhase(10, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- events = ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
+ SimulateWheelEvent(10, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
+ events = ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ExpectGestureScrollEndForWheelScrolling(false);
@@ -4405,16 +4144,9 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Scroll some more to initiate an overscroll.
- SimulateWheelEventPossiblyIncludingPhase(50, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- events = ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
+ SimulateWheelEvent(50, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
+
+ events = ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ExpectGestureScrollEndForWheelScrolling(false);
@@ -4427,29 +4159,18 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
// Scroll in the reverse direction enough to abort the overscroll.
- SimulateWheelEventPossiblyIncludingPhase(-20, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
+ SimulateWheelEvent(-20, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling();
- }
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Continue to scroll in the reverse direction.
- SimulateWheelEventPossiblyIncludingPhase(-20, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
+ SimulateWheelEvent(-20, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling();
- }
-
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
@@ -4457,27 +4178,13 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
// Continue to scroll in the reverse direction enough to initiate overscroll
// in that direction. However, overscroll should not be initiated as the
// overscroll mode is locked to east mode.
- SimulateWheelEventPossiblyIncludingPhase(-65, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
+ SimulateWheelEvent(-65, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling();
- }
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel GestureScrollEnd", GetMessageNames(events));
- } else if (wheel_scroll_latching_enabled_) {
- SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
- }
+ SimulateWheelEvent(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
+ events = GetAndResetDispatchedMessages();
+ EXPECT_EQ("MouseWheel GestureScrollEnd", GetMessageNames(events));
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
@@ -4486,26 +4193,15 @@ void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
EXPECT_EQ(0.f, overscroll_delegate()->delta_x());
EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) {
- WheelScrollOverscrollToggle();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- WheelScrollOverscrollToggle) {
- WheelScrollOverscrollToggle();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- WheelScrollOverscrollToggle) {
- WheelScrollOverscrollToggle();
-}
// Tests that a small fling after overscroll is initiated aborts the overscroll.
-void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest,
+ ScrollEventsOverscrollWithFling) {
SetUpOverscrollEnvironment();
// Send a wheel event. ACK the event as not processed. This should not
// initiate an overscroll gesture since it doesn't cross the threshold yet.
- SimulateWheelEventPossiblyIncludingPhase(10, 0, 0, true,
- WebMouseWheelEvent::kPhaseBegan);
+ SimulateWheelEvent(10, 0, 0, true, WebMouseWheelEvent::kPhaseBegan);
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
@@ -4521,32 +4217,18 @@ void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Scroll some more so as to not overscroll.
- SimulateWheelEventPossiblyIncludingPhase(20, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
+ SimulateWheelEvent(20, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
+ ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
+
SendNotConsumedAcks(events);
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Scroll some more to initiate an overscroll.
- SimulateWheelEventPossiblyIncludingPhase(40, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
+ SimulateWheelEvent(40, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
+ ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
+
SendNotConsumedAcks(events);
ExpectGestureScrollEndForWheelScrolling(false);
@@ -4579,29 +4261,16 @@ void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() {
}
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest,
- ScrollEventsOverscrollWithFling) {
- ScrollEventsOverscrollWithFling();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- ScrollEventsOverscrollWithFling) {
- ScrollEventsOverscrollWithFling();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- ScrollEventsOverscrollWithFling) {
- ScrollEventsOverscrollWithFling();
-}
// Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that
// the zero-velocity fling does not reach the renderer.
-void RenderWidgetHostViewAuraOverscrollTest::
- ScrollEventsOverscrollWithZeroFling() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest,
+ ScrollEventsOverscrollWithZeroFling) {
SetUpOverscrollEnvironment();
// Send a wheel event. ACK the event as not processed. This should not
// initiate an overscroll gesture since it doesn't cross the threshold yet.
- SimulateWheelEventPossiblyIncludingPhase(10, 0, 0, true,
- WebMouseWheelEvent::kPhaseBegan);
+ SimulateWheelEvent(10, 0, 0, true, WebMouseWheelEvent::kPhaseBegan);
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
@@ -4617,16 +4286,8 @@ void RenderWidgetHostViewAuraOverscrollTest::
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Scroll some more so as to not overscroll.
- SimulateWheelEventPossiblyIncludingPhase(20, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
+ SimulateWheelEvent(20, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
+ ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
ExpectGestureScrollEndForWheelScrolling(false);
@@ -4635,16 +4296,8 @@ void RenderWidgetHostViewAuraOverscrollTest::
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
// Scroll some more to initiate an overscroll.
- SimulateWheelEventPossiblyIncludingPhase(40, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
+ SimulateWheelEvent(40, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
+ ExpectGestureScrollUpdateAfterNonBlockingMouseWheelACK(false);
SendNotConsumedAcks(events);
ExpectGestureScrollEndForWheelScrolling(false);
@@ -4678,18 +4331,6 @@ void RenderWidgetHostViewAuraOverscrollTest::
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest,
- ScrollEventsOverscrollWithZeroFling) {
- ScrollEventsOverscrollWithZeroFling();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- ScrollEventsOverscrollWithZeroFling) {
- ScrollEventsOverscrollWithZeroFling();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- ScrollEventsOverscrollWithZeroFling) {
- ScrollEventsOverscrollWithZeroFling();
-}
// Tests that a fling in the opposite direction of the overscroll cancels the
// overscroll instead of completing it.
@@ -4705,6 +4346,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
SetUpOverscrollEnvironment();
{
+ PressAndSetTouchActionAuto();
// Start and end a gesture in the same direction without processing the
// gesture events in the renderer. This should initiate and complete an
// overscroll.
@@ -4727,9 +4369,11 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
+ ReleaseAndResetDispatchedMessages();
}
{
+ PressAndSetTouchActionAuto();
// Start over, except instead of ending the gesture with ScrollEnd, end it
// with a FlingStart, with velocity in the reverse direction. This should
// initiate an overscroll, the overscroll mode should get reset after the
@@ -4762,6 +4406,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
base::TimeTicks::Now() + base::TimeDelta::FromMilliseconds(17);
widget_host_->ProgressFlingIfNeeded(progress_time);
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
+ ReleaseAndResetDispatchedMessages();
}
}
@@ -4771,6 +4416,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollOverscrolls) {
SetUpOverscrollEnvironment();
+ PressAndSetTouchActionAuto();
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
MockWidgetInputHandler::MessageVector events =
@@ -4819,6 +4465,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollOverscrolls) {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
+ ReleaseAndResetDispatchedMessages();
}
// Tests that when a cap is set for overscroll delta, extra overscroll delta is
@@ -4826,6 +4473,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollOverscrolls) {
TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDeltaCap) {
SetUpOverscrollEnvironment();
+ PressAndSetTouchActionAuto();
// Set overscroll cap and start scrolling.
overscroll_delegate()->set_delta_cap(50);
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
@@ -4884,6 +4532,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDeltaCap) {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
+ ReleaseAndResetDispatchedMessages();
}
// Tests that if the page is scrolled because of a scroll-gesture, then that
@@ -4891,6 +4540,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDeltaCap) {
TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollConsumed) {
SetUpOverscrollEnvironment();
+ PressAndSetTouchActionAuto();
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
SimulateGestureScrollUpdateEvent(10, 0, 0);
@@ -4916,6 +4566,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollConsumed) {
SendNotConsumedAcks(events);
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
+ ReleaseAndResetDispatchedMessages();
}
// Tests that the overscroll controller plays nice with touch-scrolls and the
@@ -4924,6 +4575,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
GestureScrollDebounceOverscrolls) {
SetUpOverscrollEnvironmentWithDebounce(100);
+ PressAndSetTouchActionAuto();
// Start scrolling. Receive ACK as it being processed.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
@@ -4944,7 +4596,9 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
MockWidgetInputHandler::MessageVector second_scroll_update_events =
GetAndResetDispatchedMessages();
EXPECT_EQ(0U, second_scroll_update_events.size());
+ ReleaseAndResetDispatchedMessages();
+ PressAndSetTouchActionAuto();
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
second_scroll_update_events = GetAndResetDispatchedMessages();
@@ -4993,6 +4647,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
EXPECT_EQ(65.f, overscroll_delta_x());
EXPECT_EQ(15.f, overscroll_delegate()->delta_x());
EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
+ ReleaseAndResetDispatchedMessages();
}
// Tests that the gesture debounce timer plays nice with the overscroll
@@ -5001,6 +4656,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
GestureScrollDebounceTimerOverscroll) {
SetUpOverscrollEnvironmentWithDebounce(10);
+ PressAndSetTouchActionAuto();
// Start scrolling. Receive ACK as it being processed.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
@@ -5018,6 +4674,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
SimulateGestureEvent(WebInputEvent::kGestureScrollEnd,
blink::kWebGestureDeviceTouchscreen);
EXPECT_EQ(0U, GetAndResetDispatchedMessages().size());
+ ReleaseAndResetDispatchedMessages();
// Receive ACK for the scroll-update event.
SendNotConsumedAcks(events);
@@ -5052,6 +4709,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) {
// The test sends an intermingled sequence of touch and gesture events.
PressTouchPoint(0, 1);
SendTouchEvent();
+ widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
EXPECT_EQ("TouchStart", GetMessageNames(events));
@@ -5172,6 +4830,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
SetUpOverscrollEnvironmentWithDebounce(10);
widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true));
+ PressAndSetTouchActionAuto();
// Start scrolling. Receive ACK as it being processed.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
@@ -5215,7 +4874,9 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
events = GetAndResetDispatchedMessages();
EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
+ ReleaseAndResetDispatchedMessages();
+ PressAndSetTouchActionAuto();
// Start scrolling. Receive ACK as it being processed.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
@@ -5256,6 +4917,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
events = GetAndResetDispatchedMessages();
EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
+ ReleaseAndResetDispatchedMessages();
}
// Tests that after touchscreen overscroll is initiated, scrolling in the
@@ -5265,6 +4927,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDirectionChange) {
SetUpOverscrollEnvironmentWithDebounce(100);
+ PressAndSetTouchActionAuto();
// Start scrolling. Receive ACK as it being processed.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
@@ -5300,12 +4963,14 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDirectionChange) {
EXPECT_EQ(0U, events.size());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
+ ReleaseAndResetDispatchedMessages();
}
TEST_F(RenderWidgetHostViewAuraOverscrollTest,
CompleteOverscrollOnGestureScrollEndAck) {
SetUpOverscrollEnvironment();
+ PressAndSetTouchActionAuto();
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
MockWidgetInputHandler::MessageVector events =
@@ -5332,12 +4997,14 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
+ ReleaseAndResetDispatchedMessages();
}
TEST_F(RenderWidgetHostViewAuraOverscrollTest,
InterleavedScrollUpdateAckAndScrollEnd) {
SetUpOverscrollEnvironment();
+ PressAndSetTouchActionAuto();
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
SimulateGestureScrollUpdateEvent(30, -5, 0);
@@ -5368,19 +5035,19 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
EXPECT_EQ(2U, overscroll_delegate()->historical_modes().size());
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->historical_modes().at(0));
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->historical_modes().at(1));
+ ReleaseAndResetDispatchedMessages();
}
// Tests that after touchpad overscroll is initiated, scrolling in the opposite
// direction ends the overscroll in the original direction without initiating
// overscroll in the opposite direction. The scroll-update events should still
// be consumed to prevent content scroll.
-void RenderWidgetHostViewAuraOverscrollTest::
- OverscrollDirectionChangeMouseWheel() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest,
+ OverscrollDirectionChangeMouseWheel) {
SetUpOverscrollEnvironment();
// Send wheel event and receive ack as not consumed.
- SimulateWheelEventPossiblyIncludingPhase(125, -5, 0, true,
- WebMouseWheelEvent::kPhaseBegan);
+ SimulateWheelEvent(125, -5, 0, true, WebMouseWheelEvent::kPhaseBegan);
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
@@ -5400,15 +5067,10 @@ void RenderWidgetHostViewAuraOverscrollTest::
// Send another wheel event, but in the reverse direction. Although the
// overscroll controller is not triggering overscroll, it will consume the
// ScrollUpdate event to prevent content scroll.
- SimulateWheelEventPossiblyIncludingPhase(-260, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
+ SimulateWheelEvent(-260, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling();
- }
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
@@ -5419,48 +5081,31 @@ void RenderWidgetHostViewAuraOverscrollTest::
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
- SimulateWheelEventPossiblyIncludingPhase(-20, 0, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
+ SimulateWheelEvent(-20, 0, 0, true, WebMouseWheelEvent::kPhaseChanged);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- SendNotConsumedAcks(events);
- ExpectGestureScrollEventsAfterMouseWheelAckWhenOverscrolling();
- }
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest,
- OverscrollDirectionChangeMouseWheel) {
- OverscrollDirectionChangeMouseWheel();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- OverscrollDirectionChangeMouseWheel) {
- OverscrollDirectionChangeMouseWheel();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- OverscrollDirectionChangeMouseWheel) {
- OverscrollDirectionChangeMouseWheel();
-}
// Tests that mouse-move completes overscoll if it has passed activation
// threshold and aborts it otherwise.
-void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollMouseMoveCompletion) {
SetUpOverscrollEnvironment();
- SimulateWheelEventPossiblyIncludingPhase(
- -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
- SimulateWheelEventPossiblyIncludingPhase(
- -10, 0, 0, true, WebMouseWheelEvent::kPhaseChanged); // enqueued
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(-5, 0, 0, true,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(-10, 0, 0, true,
+ WebMouseWheelEvent::kPhaseChanged); // enqueued
+ SimulateWheelEvent(
-10, -3, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-15, -1, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
-30, -3, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
@@ -5479,14 +5124,6 @@ void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() {
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- ExpectGestureScrollEndForWheelScrolling(false);
- SendNotConsumedAcks(events);
- // Receive ACK for the second (coalesced) event as not processed. This will
- // start an overcroll gesture.
- ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
-
SendNotConsumedAcks(events);
ExpectGestureScrollEndForWheelScrolling(false);
@@ -5514,6 +5151,7 @@ void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() {
SendNotConsumedAcks(events);
// Now try with gestures.
+ PressAndSetTouchActionAuto();
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
blink::kWebGestureDeviceTouchscreen);
SendScrollBeginAckIfNeeded(INPUT_EVENT_ACK_STATE_CONSUMED);
@@ -5542,38 +5180,28 @@ void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() {
events = GetAndResetDispatchedMessages();
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
+ ReleaseAndResetDispatchedMessages();
// Move mouse some more. The mouse-move events should reach the renderer.
SimulateMouseMove(5, 10, 0);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("MouseMove", GetMessageNames(events));
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollMouseMoveCompletion) {
- OverscrollMouseMoveCompletion();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- OverscrollMouseMoveCompletion) {
- OverscrollMouseMoveCompletion();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- OverscrollMouseMoveCompletion) {
- OverscrollMouseMoveCompletion();
-}
// Tests that if a page scrolled, then the overscroll controller's states are
// reset after the end of the scroll.
-void RenderWidgetHostViewAuraOverscrollTest::
- OverscrollStateResetsAfterScroll() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest,
+ OverscrollStateResetsAfterScroll) {
SetUpOverscrollEnvironment();
- SimulateWheelEventPossiblyIncludingPhase(
- 0, 5, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
- SimulateWheelEventPossiblyIncludingPhase(
- 0, 30, 0, true, WebMouseWheelEvent::kPhaseChanged); // enqueued
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(0, 5, 0, true,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(0, 30, 0, true,
+ WebMouseWheelEvent::kPhaseChanged); // enqueued
+ SimulateWheelEvent(
0, 40, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(
0, 10, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
@@ -5589,13 +5217,6 @@ void RenderWidgetHostViewAuraOverscrollTest::
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_TRUE(ScrollStateIsContentConsuming());
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- ExpectGestureScrollEndForWheelScrolling(false);
- // The second wheel event is not consumed.
- SendNotConsumedAcks(events);
-
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_TRUE(ScrollStateIsContentConsuming());
@@ -5619,11 +5240,11 @@ void RenderWidgetHostViewAuraOverscrollTest::
// consumed and have triggered a fling animation (as tracked by the router).
EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents());
- SimulateWheelEventPossiblyIncludingPhase(
- -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
- SimulateWheelEventPossiblyIncludingPhase(
- -60, 0, 0, true, WebMouseWheelEvent::kPhaseChanged); // enqueued
- SimulateWheelEventPossiblyIncludingPhase(
+ SimulateWheelEvent(-5, 0, 0, true,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(-60, 0, 0, true,
+ WebMouseWheelEvent::kPhaseChanged); // enqueued
+ SimulateWheelEvent(
-100, 0, 0, true,
WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
@@ -5639,12 +5260,6 @@ void RenderWidgetHostViewAuraOverscrollTest::
EXPECT_TRUE(ScrollStateIsUnknown());
- if (wheel_scrolling_mode_ != kAsyncWheelEvents) {
- events = ExpectGestureScrollEndForWheelScrolling(false);
- SendNotConsumedAcks(events);
- events = ExpectGestureScrollEventsAfterMouseWheelACK(false, 0);
- }
-
SendNotConsumedAcks(events);
EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
@@ -5674,24 +5289,13 @@ void RenderWidgetHostViewAuraOverscrollTest::
events = GetAndResetDispatchedMessages();
EXPECT_EQ(0u, events.size());
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest,
- OverscrollStateResetsAfterScroll) {
- OverscrollStateResetsAfterScroll();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- OverscrollStateResetsAfterScroll) {
- OverscrollStateResetsAfterScroll();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- OverscrollStateResetsAfterScroll) {
- OverscrollStateResetsAfterScroll();
-}
// Tests that overscroll is reset when window loses focus. It should not affect
// subsequent overscrolls.
TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) {
SetUpOverscrollEnvironment();
+ PressAndSetTouchActionAuto();
// Start an overscroll with gesture scroll. In the middle of the scroll, blur
// the host.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
@@ -5719,7 +5323,9 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) {
blink::kWebGestureDeviceTouchscreen);
events = GetAndResetDispatchedMessages();
EXPECT_EQ("SetFocus GestureScrollEnd", GetMessageNames(events));
+ ReleaseAndResetDispatchedMessages();
+ PressAndSetTouchActionAuto();
// Start a scroll gesture again. This should correctly start the overscroll
// after the threshold.
SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
@@ -5742,6 +5348,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) {
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
EXPECT_EQ("GestureScrollEnd", GetMessageNames(events));
+ ReleaseAndResetDispatchedMessages();
}
#if defined(OS_CHROMEOS)
@@ -5900,13 +5507,20 @@ TEST_F(RenderWidgetHostViewAuraTest, SetCanScrollForWebMouseWheelEvent) {
base::RunLoop().RunUntilIdle();
events = GetAndResetDispatchedMessages();
+ // Since the modifiers has changed a wheel end event will be sent before
+ // dispatching the wheel event.
+ EXPECT_EQ(2u, events.size());
wheel_event = static_cast<const WebMouseWheelEvent*>(
events[0]->ToEvent()->Event()->web_event.get());
+ EXPECT_EQ(WebMouseWheelEvent::kPhaseEnded, wheel_event->phase);
+
// Check if scroll is caused when no modifier is applied to the
// mouse wheel event.
+ wheel_event = static_cast<const WebMouseWheelEvent*>(
+ events[1]->ToEvent()->Event()->web_event.get());
EXPECT_TRUE(WebInputEventTraits::CanCauseScroll(*wheel_event));
- events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
+ events[1]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
// Simulates the scroll event with ctrl modifier applied.
ui::ScrollEvent scroll(ui::ET_SCROLL, gfx::Point(2, 2), ui::EventTimeForNow(),
@@ -5915,10 +5529,16 @@ TEST_F(RenderWidgetHostViewAuraTest, SetCanScrollForWebMouseWheelEvent) {
base::RunLoop().RunUntilIdle();
events = GetAndResetDispatchedMessages();
+ // Since the modifiers has changed a wheel end event will be sent before
+ // dispatching the wheel event.
+ EXPECT_EQ(2u, events.size());
wheel_event = static_cast<const WebMouseWheelEvent*>(
events[0]->ToEvent()->Event()->web_event.get());
+ EXPECT_EQ(WebMouseWheelEvent::kPhaseEnded, wheel_event->phase);
// Check if scroll is caused when ctrl-touchpad-scroll is generated
// from scroll event.
+ wheel_event = static_cast<const WebMouseWheelEvent*>(
+ events[1]->ToEvent()->Event()->web_event.get());
EXPECT_TRUE(WebInputEventTraits::CanCauseScroll(*wheel_event));
}
@@ -5955,11 +5575,13 @@ TEST_F(RenderWidgetHostViewAuraTest, CorrectNumberOfAcksAreDispatched) {
// Tests that the scroll deltas stored within the overscroll controller get
// reset at the end of the overscroll gesture even if the overscroll threshold
// isn't surpassed and the overscroll mode stays OVERSCROLL_NONE.
-void RenderWidgetHostViewAuraOverscrollTest::ScrollDeltasResetOnEnd() {
+TEST_F(RenderWidgetHostViewAuraOverscrollTest, ScrollDeltasResetOnEnd) {
SetUpOverscrollEnvironment();
+
+ PressAndSetTouchActionAuto();
// Wheel event scroll ending with mouse move.
- SimulateWheelEventPossiblyIncludingPhase(
- -30, -10, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
+ SimulateWheelEvent(-30, -10, 0, true,
+ WebMouseWheelEvent::kPhaseBegan); // sent directly
MockWidgetInputHandler::MessageVector events =
GetAndResetDispatchedMessages();
EXPECT_EQ("MouseWheel", GetMessageNames(events));
@@ -5977,8 +5599,7 @@ void RenderWidgetHostViewAuraOverscrollTest::ScrollDeltasResetOnEnd() {
// A wheel event with phase ended is sent before a GSB with touchscreen
// device.
- SimulateWheelEventPossiblyIncludingPhase(0, 0, 0, true,
- WebMouseWheelEvent::kPhaseEnded);
+ SimulateWheelEvent(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
events = GetAndResetDispatchedMessages();
SendNotConsumedAcks(events);
@@ -5999,11 +5620,11 @@ void RenderWidgetHostViewAuraOverscrollTest::ScrollDeltasResetOnEnd() {
EXPECT_EQ(0.f, overscroll_delta_y());
events = GetAndResetDispatchedMessages();
SendNotConsumedAcks(events);
+ ReleaseAndResetDispatchedMessages();
// Wheel event scroll ending with a fling. This is the first wheel event after
// touchscreen scrolling ends so it will have phase = kPhaseBegan.
- SimulateWheelEventPossiblyIncludingPhase(5, 0, 0, true,
- WebMouseWheelEvent::kPhaseBegan);
+ SimulateWheelEvent(5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan);
// ACK the MouseWheel event
events = GetAndResetDispatchedMessages();
SendNotConsumedAcks(events);
@@ -6012,17 +5633,10 @@ void RenderWidgetHostViewAuraOverscrollTest::ScrollDeltasResetOnEnd() {
SendScrollBeginAckIfNeeded(events, INPUT_EVENT_ACK_STATE_CONSUMED);
SendScrollUpdateAck(events, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- SimulateWheelEventPossiblyIncludingPhase(10, -5, 0, true,
- WebMouseWheelEvent::kPhaseChanged);
- if (wheel_scrolling_mode_ == kAsyncWheelEvents) {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
- } else {
- events = GetAndResetDispatchedMessages();
- EXPECT_EQ("MouseWheel", GetMessageNames(events));
- SendNotConsumedAcks(events);
- events = GetAndResetDispatchedMessages();
- }
+ SimulateWheelEvent(10, -5, 0, true, WebMouseWheelEvent::kPhaseChanged);
+ events = GetAndResetDispatchedMessages();
+ EXPECT_EQ("MouseWheel GestureScrollUpdate", GetMessageNames(events));
+
SendNotConsumedAcks(events);
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OverscrollSource::NONE, overscroll_source());
@@ -6041,17 +5655,6 @@ void RenderWidgetHostViewAuraOverscrollTest::ScrollDeltasResetOnEnd() {
progress_time += base::TimeDelta::FromMilliseconds(17);
}
}
-TEST_F(RenderWidgetHostViewAuraOverscrollTest, ScrollDeltasResetOnEnd) {
- ScrollDeltasResetOnEnd();
-}
-TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
- ScrollDeltasResetOnEnd) {
- ScrollDeltasResetOnEnd();
-}
-TEST_F(RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest,
- ScrollDeltasResetOnEnd) {
- ScrollDeltasResetOnEnd();
-}
TEST_F(RenderWidgetHostViewAuraTest, ForwardMouseEvent) {
aura::Window* root = parent_view_->GetNativeView()->GetRootWindow();
@@ -6096,6 +5699,50 @@ TEST_F(RenderWidgetHostViewAuraTest, ForwardMouseEvent) {
view_ = nullptr;
}
+// Test that we elide touchpad pinch gesture steams consisting of only begin
+// and end events.
+TEST_F(RenderWidgetHostViewAuraTest, ElideEmptyTouchpadPinchSequence) {
+ ui::GestureEventDetails begin_details(ui::ET_GESTURE_PINCH_BEGIN);
+ begin_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHPAD);
+ ui::GestureEvent begin_event(0, 0, 0, ui::EventTimeForNow(), begin_details);
+
+ ui::GestureEventDetails update_details(ui::ET_GESTURE_PINCH_UPDATE);
+ update_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHPAD);
+ update_details.set_scale(1.23);
+ ui::GestureEvent update_event(0, 0, 0, ui::EventTimeForNow(), update_details);
+
+ ui::GestureEventDetails end_details(ui::ET_GESTURE_PINCH_END);
+ end_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHPAD);
+ ui::GestureEvent end_event(0, 0, 0, ui::EventTimeForNow(), end_details);
+
+ view_->OnGestureEvent(&begin_event);
+ base::RunLoop().RunUntilIdle();
+ MockWidgetInputHandler::MessageVector events =
+ GetAndResetDispatchedMessages();
+ // Since we don't know if we'll have GesturePinchUpdates at this point, the
+ // GesturePinchBegin should not be sent yet.
+ EXPECT_EQ(0U, events.size());
+
+ view_->OnGestureEvent(&update_event);
+ base::RunLoop().RunUntilIdle();
+ events = GetAndResetDispatchedMessages();
+ EXPECT_EQ("MouseWheel", GetMessageNames(events));
+
+ // If the page consumes the update, then no GesturePinchUpdate is sent and
+ // we continue to postpone sending the GesturePinchBegin.
+ events[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
+ events = GetAndResetDispatchedMessages();
+ EXPECT_EQ(0U, events.size());
+
+ view_->OnGestureEvent(&end_event);
+ base::RunLoop().RunUntilIdle();
+ events = GetAndResetDispatchedMessages();
+ // Since we have not sent any GesturePinchUpdates by the time we get to the
+ // end of the pinch, the GesturePinchBegin and GesturePinchEnd events should
+ // be elided.
+ EXPECT_EQ(0U, events.size());
+}
+
TEST_F(RenderWidgetHostViewAuraTest, GestureTapFromStylusHasPointerType) {
view_->InitAsFullscreen(parent_view_);
view_->Show();
@@ -6108,6 +5755,7 @@ TEST_F(RenderWidgetHostViewAuraTest, GestureTapFromStylusHasPointerType) {
// Simulate touch press and release to generate a GestureTap.
generator.EnterPenPointerMode();
generator.PressTouch();
+ widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
generator.ReleaseTouch();
base::RunLoop().RunUntilIdle();
MockWidgetInputHandler::MessageVector events =
@@ -6130,9 +5778,12 @@ TEST_F(RenderWidgetHostViewAuraTest, GestureTapFromStylusHasPointerType) {
// SubmitCompositorFrame becomes the active hit test region in the
// viz::HitTestManager.
TEST_F(RenderWidgetHostViewAuraTest, HitTestRegionListSubmitted) {
- // TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ // TODO(jonross): Delete this test once Viz launches as it will be obsolete.
+ // https://crbug.com/844469
+ if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
+ !features::IsAshInBrowserProcess()) {
return;
+ }
gfx::Rect view_rect(0, 0, 100, 100);
gfx::Size frame_size = view_rect.size();
@@ -6172,7 +5823,7 @@ TEST_F(RenderWidgetHostViewAuraTest, HitTestRegionListSubmitted) {
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
NewContentRenderingTimeout) {
// TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ if (!features::IsAshInBrowserProcess())
return;
constexpr base::TimeDelta kTimeout = base::TimeDelta::FromMicroseconds(10);
@@ -6187,8 +5838,8 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
viz::LocalSurfaceId id0 = view_->GetLocalSurfaceId();
EXPECT_TRUE(id0.is_valid());
- // No new LocalSurfaceId should be allocated for the first navigation but the
- // timer should fire.
+ // No new LocalSurfaceId should be allocated for the first navigation and the
+ // timer should not fire.
widget_host_->DidNavigate(1);
viz::LocalSurfaceId id1 = view_->GetLocalSurfaceId();
EXPECT_EQ(id0, id1);
@@ -6198,7 +5849,15 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
FROM_HERE, run_loop.QuitClosure(), 2 * kTimeout);
run_loop.Run();
}
- EXPECT_TRUE(widget_host_->new_content_rendering_timeout_fired());
+ if (base::FeatureList::IsEnabled(features::kEnableSurfaceSynchronization)) {
+ // When using surface sync, the timer should not fire, because the surface
+ // id did not change.
+ EXPECT_FALSE(widget_host_->new_content_rendering_timeout_fired());
+ } else {
+ // When not using surface sync, the timer will fire because the source id
+ // changed.
+ EXPECT_TRUE(widget_host_->new_content_rendering_timeout_fired());
+ }
widget_host_->reset_new_content_rendering_timeout_fired();
// Start the timer. Verify that a new LocalSurfaceId is allocated.
@@ -6242,7 +5901,7 @@ TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
TEST_F(RenderWidgetHostViewAuraSurfaceSynchronizationTest,
AllocateLocalSurfaceIdOnEviction) {
// TODO: fix for mash.
- if (base::FeatureList::IsEnabled(features::kMash))
+ if (!features::IsAshInBrowserProcess())
return;
view_->InitAsChild(nullptr);