| 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 a7f8e65fea310bcb907693b82ea68472ce516063..676f6d6ac30b0f28c2dd8a3d4d7caf43757960a9 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"
|
| @@ -10345,6 +10346,89 @@ TEST_F(WebFrameTest, HidingScrollbarsOnScrollableAreaDisablesScrollbars) {
|
| EXPECT_TRUE(scrollerArea->verticalScrollbar()->enabled());
|
| }
|
|
|
| +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) {
|
| registerMockedHttpURLLoad("frameset-repeated-name.html");
|
| registerMockedHttpURLLoad("frameset-dest.html");
|
|
|