| Index: third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| index 2c1b85b20f51d313b5aa95ee4414c0f06d68cbc3..637306d061388c1c9d8a29824d64487e89cfa9e6 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| @@ -86,6 +86,7 @@
|
| #include "platform/geometry/FloatRect.h"
|
| #include "platform/network/ResourceError.h"
|
| #include "platform/scroll/ScrollbarTheme.h"
|
| +#include "platform/scroll/ScrollbarThemeOverlayMock.h"
|
| #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h"
|
| #include "platform/testing/URLTestHelpers.h"
|
| #include "platform/testing/UnitTestHelpers.h"
|
| @@ -10429,26 +10430,118 @@ TEST_F(WebFrameTest, HidingScrollbarsOnScrollableAreaDisablesScrollbars) {
|
| ASSERT_TRUE(frameView->verticalScrollbar());
|
|
|
| EXPECT_FALSE(frameView->scrollbarsHidden());
|
| - EXPECT_TRUE(frameView->horizontalScrollbar()->enabled());
|
| - EXPECT_TRUE(frameView->verticalScrollbar()->enabled());
|
| + EXPECT_TRUE(
|
| + frameView->horizontalScrollbar()->shouldParticipateInHitTesting());
|
| + EXPECT_TRUE(frameView->verticalScrollbar()->shouldParticipateInHitTesting());
|
|
|
| EXPECT_FALSE(scrollerArea->scrollbarsHidden());
|
| - EXPECT_TRUE(scrollerArea->horizontalScrollbar()->enabled());
|
| - EXPECT_TRUE(scrollerArea->verticalScrollbar()->enabled());
|
| + EXPECT_TRUE(
|
| + scrollerArea->horizontalScrollbar()->shouldParticipateInHitTesting());
|
| + EXPECT_TRUE(
|
| + scrollerArea->verticalScrollbar()->shouldParticipateInHitTesting());
|
|
|
| frameView->setScrollbarsHidden(true);
|
| - EXPECT_FALSE(frameView->horizontalScrollbar()->enabled());
|
| - EXPECT_FALSE(frameView->verticalScrollbar()->enabled());
|
| + EXPECT_FALSE(
|
| + frameView->horizontalScrollbar()->shouldParticipateInHitTesting());
|
| + EXPECT_FALSE(frameView->verticalScrollbar()->shouldParticipateInHitTesting());
|
| frameView->setScrollbarsHidden(false);
|
| - EXPECT_TRUE(frameView->horizontalScrollbar()->enabled());
|
| - EXPECT_TRUE(frameView->verticalScrollbar()->enabled());
|
| + EXPECT_TRUE(
|
| + frameView->horizontalScrollbar()->shouldParticipateInHitTesting());
|
| + EXPECT_TRUE(frameView->verticalScrollbar()->shouldParticipateInHitTesting());
|
|
|
| scrollerArea->setScrollbarsHidden(true);
|
| - EXPECT_FALSE(scrollerArea->horizontalScrollbar()->enabled());
|
| - EXPECT_FALSE(scrollerArea->verticalScrollbar()->enabled());
|
| + EXPECT_FALSE(
|
| + scrollerArea->horizontalScrollbar()->shouldParticipateInHitTesting());
|
| + EXPECT_FALSE(
|
| + scrollerArea->verticalScrollbar()->shouldParticipateInHitTesting());
|
| scrollerArea->setScrollbarsHidden(false);
|
| - EXPECT_TRUE(scrollerArea->horizontalScrollbar()->enabled());
|
| - EXPECT_TRUE(scrollerArea->verticalScrollbar()->enabled());
|
| + EXPECT_TRUE(
|
| + scrollerArea->horizontalScrollbar()->shouldParticipateInHitTesting());
|
| + EXPECT_TRUE(
|
| + scrollerArea->verticalScrollbar()->shouldParticipateInHitTesting());
|
| +}
|
| +
|
| +static void disableCompositing(WebSettings* settings) {
|
| + settings->setAcceleratedCompositingEnabled(false);
|
| + settings->setPreferCompositingToLCDTextEnabled(false);
|
| +}
|
| +
|
| +// Make sure overlay scrollbars on non-composited scrollers fade out and set
|
| +// the hidden bit as needed.
|
| +TEST_F(WebFrameTest, TestNonCompositedOverlayScrollbarsFade) {
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + WebViewImpl* webViewImpl = webViewHelper.initialize(
|
| + true, nullptr, nullptr, nullptr, &disableCompositing);
|
| +
|
| + constexpr double kMockOverlayFadeOutDelayMs = 5.0;
|
| +
|
| + ScrollbarTheme& theme = ScrollbarTheme::theme();
|
| + // This test relies on mock overlay scrollbars.
|
| + ASSERT_TRUE(theme.isMockTheme());
|
| + ASSERT_TRUE(theme.usesOverlayScrollbars());
|
| + ScrollbarThemeOverlayMock& mockOverlayTheme =
|
| + (ScrollbarThemeOverlayMock&)theme;
|
| + mockOverlayTheme.setOverlayScrollbarFadeOutDelay(kMockOverlayFadeOutDelayMs /
|
| + 1000.0);
|
| +
|
| + webViewImpl->resizeWithBrowserControls(WebSize(640, 480), 0, false);
|
| +
|
| + WebURL baseURL = URLTestHelpers::toKURL("http://example.com/");
|
| + FrameTestHelpers::loadHTMLString(webViewImpl->mainFrame(),
|
| + "<!DOCTYPE html>"
|
| + "<style>"
|
| + " #space {"
|
| + " width: 1000px;"
|
| + " height: 1000px;"
|
| + " }"
|
| + " #container {"
|
| + " width: 200px;"
|
| + " height: 200px;"
|
| + " overflow: scroll;"
|
| + " }"
|
| + " div { height:1000px; width: 200px; }"
|
| + "</style>"
|
| + "<div id='container'>"
|
| + " <div id='space'></div>"
|
| + "</div>",
|
| + baseURL);
|
| + webViewImpl->updateAllLifecyclePhases();
|
| +
|
| + WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
|
| + Document* document =
|
| + toLocalFrame(webViewImpl->page()->mainFrame())->document();
|
| + Element* container = document->getElementById("container");
|
| + ScrollableArea* scrollableArea =
|
| + toLayoutBox(container->layoutObject())->getScrollableArea();
|
| +
|
| + EXPECT_FALSE(scrollableArea->scrollbarsHidden());
|
| + testing::runDelayedTasks(kMockOverlayFadeOutDelayMs);
|
| + EXPECT_TRUE(scrollableArea->scrollbarsHidden());
|
| +
|
| + scrollableArea->setScrollOffset(ScrollOffset(10, 10), ProgrammaticScroll,
|
| + ScrollBehaviorInstant);
|
| +
|
| + EXPECT_FALSE(scrollableArea->scrollbarsHidden());
|
| + testing::runDelayedTasks(kMockOverlayFadeOutDelayMs);
|
| + EXPECT_TRUE(scrollableArea->scrollbarsHidden());
|
| +
|
| + frame->executeScript(WebScriptSource(
|
| + "document.getElementById('space').style.height = '500px';"));
|
| + frame->view()->updateAllLifecyclePhases();
|
| +
|
| + EXPECT_FALSE(scrollableArea->scrollbarsHidden());
|
| + testing::runDelayedTasks(kMockOverlayFadeOutDelayMs);
|
| + EXPECT_TRUE(scrollableArea->scrollbarsHidden());
|
| +
|
| + frame->executeScript(WebScriptSource(
|
| + "document.getElementById('container').style.height = '300px';"));
|
| + frame->view()->updateAllLifecyclePhases();
|
| +
|
| + EXPECT_FALSE(scrollableArea->scrollbarsHidden());
|
| + testing::runDelayedTasks(kMockOverlayFadeOutDelayMs);
|
| + EXPECT_TRUE(scrollableArea->scrollbarsHidden());
|
| +
|
| + mockOverlayTheme.setOverlayScrollbarFadeOutDelay(0.0);
|
| }
|
|
|
| TEST_F(WebFrameTest, UniqueNames) {
|
|
|