| 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)
|
|
|