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

Unified Diff: third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp

Issue 2663823002: Reland of Use full viewport height for layout if URL bar is locked shown or hidden. (Closed)
Patch Set: Created 3 years, 11 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 | « third_party/WebKit/Source/web/WebViewImpl.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp
diff --git a/third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp b/third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp
index d8099ba4cb9bb0046772912a21a8d6a4c27b6514..342a7dc9e6119baf0b1ba9cacf1de02b6f2635f9 100644
--- a/third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp
+++ b/third_party/WebKit/Source/web/tests/BrowserControlsTest.cpp
@@ -726,6 +726,86 @@
EXPECT_EQ(300, frame()->view()->layoutSize(IncludeScrollbars).height());
}
+// Ensure that browser controls do not affect the layout by showing and hiding
+// except for position: fixed elements.
+TEST_F(BrowserControlsTest, MAYBE(AffectLayoutHeightWhenConstrained)) {
+ // Initialize with the browser controls showing.
+ WebViewImpl* webView = initialize("percent-height.html");
+ webView->resizeWithBrowserControls(WebSize(400, 300), 100.f, true);
+ webView->updateBrowserControlsState(WebBrowserControlsBoth,
+ WebBrowserControlsShown, false);
+ webView->browserControls().setShownRatio(1);
+ webView->updateAllLifecyclePhases();
+
+ Element* absPos = getElementById(WebString::fromUTF8("abs"));
+ Element* fixedPos = getElementById(WebString::fromUTF8("fixed"));
+
+ ASSERT_EQ(100.f, webView->browserControls().contentOffset());
+
+ // Hide the browser controls.
+ verticalScroll(-100.f);
+ webView->resizeWithBrowserControls(WebSize(400, 400), 100.f, false);
+ webView->updateAllLifecyclePhases();
+ ASSERT_EQ(300, frame()->view()->layoutSize(IncludeScrollbars).height());
+
+ // Now lock the controls in a hidden state. The layout and elements should
+ // resize without a WebView::resize.
+ webView->updateBrowserControlsState(WebBrowserControlsHidden,
+ WebBrowserControlsBoth, false);
+
+ EXPECT_FLOAT_EQ(200.f, absPos->getBoundingClientRect()->height());
+ EXPECT_FLOAT_EQ(200.f, fixedPos->getBoundingClientRect()->height());
+
+ EXPECT_EQ(400, frame()->view()->layoutSize(IncludeScrollbars).height());
+
+ // Unlock the controls, the sizes should change even though the controls are
+ // still hidden.
+ webView->updateBrowserControlsState(WebBrowserControlsBoth,
+ WebBrowserControlsBoth, false);
+
+ EXPECT_FLOAT_EQ(150.f, absPos->getBoundingClientRect()->height());
+ EXPECT_FLOAT_EQ(200.f, fixedPos->getBoundingClientRect()->height());
+
+ EXPECT_EQ(300, frame()->view()->layoutSize(IncludeScrollbars).height());
+
+ // Now lock the controls in a shown state.
+ webView->updateBrowserControlsState(WebBrowserControlsShown,
+ WebBrowserControlsBoth, false);
+ webView->resizeWithBrowserControls(WebSize(400, 300), 100.f, true);
+
+ EXPECT_FLOAT_EQ(150.f, absPos->getBoundingClientRect()->height());
+ EXPECT_FLOAT_EQ(150.f, fixedPos->getBoundingClientRect()->height());
+
+ EXPECT_EQ(300, frame()->view()->layoutSize(IncludeScrollbars).height());
+
+ // Shown -> Hidden
+ webView->resizeWithBrowserControls(WebSize(400, 400), 100.f, false);
+ webView->updateBrowserControlsState(WebBrowserControlsHidden,
+ WebBrowserControlsBoth, false);
+
+ EXPECT_FLOAT_EQ(200.f, absPos->getBoundingClientRect()->height());
+ EXPECT_FLOAT_EQ(200.f, fixedPos->getBoundingClientRect()->height());
+
+ EXPECT_EQ(400, frame()->view()->layoutSize(IncludeScrollbars).height());
+
+ // Go from Unlocked and showing, to locked and hidden but issue the resize
+ // before the constraint update to check for race issues.
+ webView->updateBrowserControlsState(WebBrowserControlsBoth,
+ WebBrowserControlsShown, false);
+ webView->resizeWithBrowserControls(WebSize(400, 300), 100.f, true);
+ ASSERT_EQ(300, frame()->view()->layoutSize(IncludeScrollbars).height());
+ webView->updateAllLifecyclePhases();
+
+ webView->resizeWithBrowserControls(WebSize(400, 400), 100.f, false);
+ webView->updateBrowserControlsState(WebBrowserControlsHidden,
+ WebBrowserControlsHidden, false);
+
+ EXPECT_FLOAT_EQ(200.f, absPos->getBoundingClientRect()->height());
+ EXPECT_FLOAT_EQ(200.f, fixedPos->getBoundingClientRect()->height());
+
+ EXPECT_EQ(400, frame()->view()->layoutSize(IncludeScrollbars).height());
+}
+
// Ensure that browser controls do not affect vh units.
TEST_F(BrowserControlsTest, MAYBE(DontAffectVHUnits)) {
// Initialize with the browser controls showing.
« no previous file with comments | « third_party/WebKit/Source/web/WebViewImpl.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698