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

Unified Diff: Source/web/tests/WebFrameTest.cpp

Issue 197313003: Fix TextAutosizer recalculate multipliers on rotate. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: fixed some layout Created 6 years, 9 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 | « Source/core/frame/FrameView.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/web/tests/WebFrameTest.cpp
diff --git a/Source/web/tests/WebFrameTest.cpp b/Source/web/tests/WebFrameTest.cpp
index d39bc920fd639a006c07ef4aee8d6e911ac4ea86..e8a303a840d836fc1771be43035bdaff0aa0ce4c 100644
--- a/Source/web/tests/WebFrameTest.cpp
+++ b/Source/web/tests/WebFrameTest.cpp
@@ -687,7 +687,33 @@ TEST_F(WebFrameTest, FrameViewNeedsLayoutOnFixedLayoutResize)
webViewHelper.webViewImpl()->layout();
}
-TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate)
+// Helper function to check or set text autosizing multipliers on a document.
+static bool checkOrSetTextAutosizingMultiplier(Document* document, float multiplier, bool setMultiplier)
+{
+ bool multiplierCheckedOrSetAtLeastOnce = false;
+ for (WebCore::RenderObject* renderer = document->renderer(); renderer; renderer = renderer->nextInPreOrder()) {
+ if (renderer->style()) {
+ if (setMultiplier)
+ renderer->style()->setTextAutosizingMultiplier(multiplier);
+ EXPECT_EQ(multiplier, renderer->style()->textAutosizingMultiplier());
+ multiplierCheckedOrSetAtLeastOnce = true;
+ }
+ }
+ return multiplierCheckedOrSetAtLeastOnce;
+
+}
+
+static bool setTextAutosizingMultiplier(Document* document, float multiplier)
+{
+ return checkOrSetTextAutosizingMultiplier(document, multiplier, true);
+}
+
+static bool checkTextAutosizingMultiplier(Document* document, float multiplier)
+{
+ return checkOrSetTextAutosizingMultiplier(document, multiplier, false);
+}
+
+TEST_F(WebFrameTest, ChangeInFixedLayoutResetsTextAutosizingMultipliers)
{
UseMockScrollbarSettings mockScrollbarSettings;
registerMockedHttpURLLoad("fixed_layout.html");
@@ -696,8 +722,6 @@ TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate)
int viewportWidth = 640;
int viewportHeight = 480;
- // Make sure we initialize to minimum scale, even if the window size
- // only becomes available after the load begins.
FrameTestHelpers::WebViewHelper webViewHelper;
webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client, enableViewportSettings);
@@ -707,17 +731,7 @@ TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate)
webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
webViewHelper.webViewImpl()->layout();
- WebCore::RenderObject* renderer = document->renderer();
- bool multiplierSetAtLeastOnce = false;
- while (renderer) {
- if (renderer->style()) {
- renderer->style()->setTextAutosizingMultiplier(2);
- EXPECT_EQ(2, renderer->style()->textAutosizingMultiplier());
- multiplierSetAtLeastOnce = true;
- }
- renderer = renderer->nextInPreOrder();
- }
- EXPECT_TRUE(multiplierSetAtLeastOnce);
+ EXPECT_TRUE(setTextAutosizingMultiplier(document, 2));
WebCore::ViewportDescription description = document->viewportDescription();
// Choose a width that's not going match the viewport width of the loaded document.
@@ -725,16 +739,37 @@ TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate)
description.maxWidth = WebCore::Length(100, WebCore::Fixed);
webViewHelper.webViewImpl()->updatePageDefinedViewportConstraints(description);
- bool multiplierCheckedAtLeastOnce = false;
- renderer = document->renderer();
- while (renderer) {
- if (renderer->style()) {
- EXPECT_EQ(1, renderer->style()->textAutosizingMultiplier());
- multiplierCheckedAtLeastOnce = true;
- }
- renderer = renderer->nextInPreOrder();
- }
- EXPECT_TRUE(multiplierCheckedAtLeastOnce);
+ EXPECT_TRUE(checkTextAutosizingMultiplier(document, 1));
+}
+
+TEST_F(WebFrameTest, SetFrameRectResetsTextAutosizingMultipliers)
+{
+ UseMockScrollbarSettings mockScrollbarSettings;
+ registerMockedHttpURLLoad("iframe_reload.html");
+ registerMockedHttpURLLoad("visible_iframe.html");
+
+ FixedLayoutTestWebViewClient client;
+ int viewportWidth = 640;
+ int viewportHeight = 480;
+
+ FrameTestHelpers::WebViewHelper webViewHelper;
+ webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, 0, &client, enableViewportSettings);
+
+ WebCore::LocalFrame* mainFrame = webViewHelper.webViewImpl()->page()->mainFrame();
+ WebCore::Document* document = mainFrame->document();
+ WebCore::FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameView();
+ document->settings()->setTextAutosizingEnabled(true);
+ EXPECT_TRUE(document->settings()->textAutosizingEnabled());
+ webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
+ webViewHelper.webViewImpl()->layout();
+
+ for (WebCore::LocalFrame* frame = mainFrame; frame; frame = frame->tree().traverseNext())
+ EXPECT_TRUE(setTextAutosizingMultiplier(frame->document(), 2));
+
+ frameView->setFrameRect(WebCore::IntRect(0, 0, 200, 200));
+
+ for (WebCore::LocalFrame* frame = mainFrame; frame; frame = frame->tree().traverseNext())
+ EXPECT_TRUE(checkTextAutosizingMultiplier(frame->document(), 1));
}
TEST_F(WebFrameTest, FixedLayoutSizeStopsResizeFromChangingLayoutSize)
« no previous file with comments | « Source/core/frame/FrameView.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698