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

Unified Diff: content/browser/renderer_host/input/wheel_scroll_latching_browsertest.cc

Issue 2943183002: Revert of Re-target wheel events only when a new scroll sequence has started. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_input_event_router.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/input/wheel_scroll_latching_browsertest.cc
diff --git a/content/browser/renderer_host/input/wheel_scroll_latching_browsertest.cc b/content/browser/renderer_host/input/wheel_scroll_latching_browsertest.cc
deleted file mode 100644
index 78dd9fc983b2f65140b0f74ea58cee37f9906be5..0000000000000000000000000000000000000000
--- a/content/browser/renderer_host/input/wheel_scroll_latching_browsertest.cc
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/test/scoped_feature_list.h"
-#include "content/browser/renderer_host/render_widget_host_impl.h"
-#include "content/browser/renderer_host/render_widget_host_input_event_router.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/common/input/synthetic_web_input_event_builders.h"
-#include "content/public/common/content_features.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "ui/events/gesture_detection/gesture_configuration.h"
-
-#if defined(OS_ANDROID)
-#include "content/browser/renderer_host/render_widget_host_view_android.h"
-#endif
-
-using blink::WebMouseWheelEvent;
-
-namespace {
-void GiveItSomeTime() {
- base::RunLoop run_loop;
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromMilliseconds(10));
- run_loop.Run();
-}
-
-const char kWheelEventLatchingDataURL[] =
- "data:text/html;charset=utf-8,"
- "<!DOCTYPE html>"
- "<style>"
- "body {"
- " height: 10000px;"
- "}"
- "#scrollableDiv {"
- " position: absolute;"
- " left: 100px;"
- " top: 200px;"
- " width: 400px;"
- " height: 800px;"
- " overflow: scroll;"
- " background: red;"
- "}"
- "#nestedDiv {"
- " width: 400px;"
- " height: 8000px;"
- " opacity: 0;"
- "}"
- "</style>"
- "<div id='scrollableDiv'>"
- " <div id='nestedDiv'></div>"
- "</div>"
- "<script>"
- " var scrollableDiv = document.getElementById('scrollableDiv');"
- " var scrollableDivWheelEventCounter = 0;"
- " var documentWheelEventCounter = 0;"
- " scrollableDiv.addEventListener('wheel',"
- " function(e) { scrollableDivWheelEventCounter++;"
- " e.stopPropagation(); });"
- " document.scrollingElement.addEventListener('wheel',"
- " function(e) { documentWheelEventCounter++; });"
- "</script>";
-} // namespace
-
-namespace content {
-class WheelScrollLatchingBrowserTest : public ContentBrowserTest {
- public:
- WheelScrollLatchingBrowserTest(bool wheel_scroll_latching_enabled = true)
- : wheel_scroll_latching_enabled_(wheel_scroll_latching_enabled) {
- ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
- 0);
-
- if (wheel_scroll_latching_enabled_)
- EnableWheelScrollLatching();
- else
- DisableWheelScrollLatching();
- }
- ~WheelScrollLatchingBrowserTest() override {}
-
- protected:
- RenderWidgetHostImpl* GetWidgetHost() {
- return RenderWidgetHostImpl::From(
- web_contents()->GetRenderViewHost()->GetWidget());
- }
-
- WebContentsImpl* web_contents() const {
- return static_cast<WebContentsImpl*>(shell()->web_contents());
- }
-
- RenderWidgetHostInputEventRouter* GetRouter() {
- return web_contents()->GetInputEventRouter();
- }
-
- RenderWidgetHostViewBase* GetRootView() {
- return static_cast<RenderWidgetHostViewBase*>(web_contents()
- ->GetFrameTree()
- ->root()
- ->current_frame_host()
- ->GetView());
- }
-
- float GetPageScaleFactor() {
- return GetWidgetHost()->last_frame_metadata().page_scale_factor;
- }
-
- void LoadURL() {
- const GURL data_url(kWheelEventLatchingDataURL);
- NavigateToURL(shell(), data_url);
-
- RenderWidgetHostImpl* host = GetWidgetHost();
- host->GetView()->SetSize(gfx::Size(600, 600));
-
- // The page is loaded in the renderer, wait for a new frame to arrive.
- while (!host->ScheduleComposite())
- GiveItSomeTime();
- }
- int ExecuteScriptAndExtractInt(const std::string& script) {
- int value = 0;
- EXPECT_TRUE(content::ExecuteScriptAndExtractInt(
- shell(), "domAutomationController.send(" + script + ")", &value));
- return value;
- }
- void EnableWheelScrollLatching() {
- feature_list_.InitFromCommandLine(
- features::kTouchpadAndWheelScrollLatching.name, "");
- }
- void DisableWheelScrollLatching() {
- feature_list_.InitFromCommandLine(
- "", features::kTouchpadAndWheelScrollLatching.name);
- }
-
- void WheelEventTargetTest() {
- LoadURL();
- EXPECT_EQ(0, ExecuteScriptAndExtractInt("documentWheelEventCounter"));
- EXPECT_EQ(0, ExecuteScriptAndExtractInt("scrollableDivWheelEventCounter"));
-
- FrameWatcher frame_watcher(shell()->web_contents());
- scoped_refptr<InputMsgWatcher> input_msg_watcher(new InputMsgWatcher(
- GetWidgetHost(), blink::WebInputEvent::kMouseWheel));
- float scale_factor = GetPageScaleFactor();
-
- float scrollable_div_top =
- ExecuteScriptAndExtractInt("scrollableDiv.getBoundingClientRect().top");
- float x = scale_factor *
- (ExecuteScriptAndExtractInt(
- "scrollableDiv.getBoundingClientRect().left") +
- ExecuteScriptAndExtractInt(
- "scrollableDiv.getBoundingClientRect().right")) /
- 2;
- float y = scale_factor * 0.5 * scrollable_div_top;
- float delta_x = 0;
- float delta_y = -0.5 * scrollable_div_top;
- blink::WebMouseWheelEvent wheel_event =
- SyntheticWebMouseWheelEventBuilder::Build(x, y, x, y, delta_x, delta_y,
- 0, true);
-
- wheel_event.phase = blink::WebMouseWheelEvent::kPhaseBegan;
- GetRouter()->RouteMouseWheelEvent(GetRootView(), &wheel_event,
- ui::LatencyInfo());
-
- // Runs until we get the InputMsgAck callback.
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED,
- input_msg_watcher->WaitForAck());
-
- while (ExecuteScriptAndExtractInt("document.scrollingElement.scrollTop") <
- -delta_y) {
- frame_watcher.WaitFrames(1);
- }
-
- EXPECT_EQ(0, ExecuteScriptAndExtractInt("scrollableDiv.scrollTop"));
- EXPECT_EQ(1, ExecuteScriptAndExtractInt("documentWheelEventCounter"));
- EXPECT_EQ(0, ExecuteScriptAndExtractInt("scrollableDivWheelEventCounter"));
-
- wheel_event.phase = blink::WebMouseWheelEvent::kPhaseChanged;
- GetRouter()->RouteMouseWheelEvent(GetRootView(), &wheel_event,
- ui::LatencyInfo());
-
- // Runs until we get the InputMsgAck callback.
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED,
- input_msg_watcher->WaitForAck());
-
- if (wheel_scroll_latching_enabled_) {
- while (ExecuteScriptAndExtractInt("document.scrollingElement.scrollTop") <
- -2 * delta_y) {
- frame_watcher.WaitFrames(1);
- }
-
- EXPECT_EQ(0, ExecuteScriptAndExtractInt("scrollableDiv.scrollTop"));
- EXPECT_EQ(2, ExecuteScriptAndExtractInt("documentWheelEventCounter"));
- EXPECT_EQ(0,
- ExecuteScriptAndExtractInt("scrollableDivWheelEventCounter"));
- } else { // !wheel_scroll_latching_enabled_
- while (ExecuteScriptAndExtractInt("scrollableDiv.scrollTop") < -delta_y)
- frame_watcher.WaitFrames(1);
-
- EXPECT_EQ(1, ExecuteScriptAndExtractInt("documentWheelEventCounter"));
- EXPECT_EQ(1,
- ExecuteScriptAndExtractInt("scrollableDivWheelEventCounter"));
- }
- }
-
- private:
- base::test::ScopedFeatureList feature_list_;
- bool wheel_scroll_latching_enabled_;
-};
-
-class WheelScrollLatchingDisabledBrowserTest
- : public WheelScrollLatchingBrowserTest {
- public:
- WheelScrollLatchingDisabledBrowserTest()
- : WheelScrollLatchingBrowserTest(false) {}
- ~WheelScrollLatchingDisabledBrowserTest() override {}
-};
-
-// Start scrolling by mouse wheel on the document: the wheel event will be sent
-// to the document's scrolling element, the scrollable div will be under the
-// cursor after applying the scrolling. Continue scrolling by mouse wheel, since
-// wheel scroll latching is enabled the wheel event will be still sent to the
-// document's scrolling element and the document's scrolling element will
-// continue scrolling.
-IN_PROC_BROWSER_TEST_F(WheelScrollLatchingBrowserTest, WheelEventTarget) {
- WheelEventTargetTest();
-}
-
-// Start scrolling by mouse wheel on the document: the wheel event will be sent
-// to the document's scrolling element, the scrollable div will be under the
-// cursor after applying the scrolloffsets. Continue scrolling by mouse wheel,
-// since wheel scroll latching is disabled the wheel event will be still sent to
-// the scrollable div which is currently under the cursor. The div will start
-// scrolling.
-IN_PROC_BROWSER_TEST_F(WheelScrollLatchingDisabledBrowserTest,
- WheelEventTarget) {
- WheelEventTargetTest();
-}
-
-} // namespace content
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_input_event_router.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698