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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « Source/core/frame/FrameView.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 webViewHelper.webViewImpl()->setFixedLayoutSize(WebCore::IntSize(100, 100)); 680 webViewHelper.webViewImpl()->setFixedLayoutSize(WebCore::IntSize(100, 100));
681 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout()); 681 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout());
682 682
683 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount(); 683 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount();
684 webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->setFrameRect(WebC ore::IntRect(0, 0, 641, 481)); 684 webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->setFrameRect(WebC ore::IntRect(0, 0, 641, 481));
685 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount()); 685 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount());
686 686
687 webViewHelper.webViewImpl()->layout(); 687 webViewHelper.webViewImpl()->layout();
688 } 688 }
689 689
690 TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate) 690 // Helper function to check or set text autosizing multipliers on a document.
691 static bool checkOrSetTextAutosizingMultiplier(Document* document, float multipl ier, bool setMultiplier)
692 {
693 bool multiplierCheckedOrSetAtLeastOnce = false;
694 for (WebCore::RenderObject* renderer = document->renderer(); renderer; rende rer = renderer->nextInPreOrder()) {
695 if (renderer->style()) {
696 if (setMultiplier)
697 renderer->style()->setTextAutosizingMultiplier(multiplier);
698 EXPECT_EQ(multiplier, renderer->style()->textAutosizingMultiplier()) ;
699 multiplierCheckedOrSetAtLeastOnce = true;
700 }
701 }
702 return multiplierCheckedOrSetAtLeastOnce;
703
704 }
705
706 static bool setTextAutosizingMultiplier(Document* document, float multiplier)
707 {
708 return checkOrSetTextAutosizingMultiplier(document, multiplier, true);
709 }
710
711 static bool checkTextAutosizingMultiplier(Document* document, float multiplier)
712 {
713 return checkOrSetTextAutosizingMultiplier(document, multiplier, false);
714 }
715
716 TEST_F(WebFrameTest, ChangeInFixedLayoutResetsTextAutosizingMultipliers)
691 { 717 {
692 UseMockScrollbarSettings mockScrollbarSettings; 718 UseMockScrollbarSettings mockScrollbarSettings;
693 registerMockedHttpURLLoad("fixed_layout.html"); 719 registerMockedHttpURLLoad("fixed_layout.html");
694 720
695 FixedLayoutTestWebViewClient client; 721 FixedLayoutTestWebViewClient client;
696 int viewportWidth = 640; 722 int viewportWidth = 640;
697 int viewportHeight = 480; 723 int viewportHeight = 480;
698 724
699 // Make sure we initialize to minimum scale, even if the window size
700 // only becomes available after the load begins.
701 FrameTestHelpers::WebViewHelper webViewHelper; 725 FrameTestHelpers::WebViewHelper webViewHelper;
702 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 726 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
703 727
704 WebCore::Document* document = webViewHelper.webViewImpl()->page()->mainFrame ()->document(); 728 WebCore::Document* document = webViewHelper.webViewImpl()->page()->mainFrame ()->document();
705 document->settings()->setTextAutosizingEnabled(true); 729 document->settings()->setTextAutosizingEnabled(true);
706 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 730 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
707 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight)); 731 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
708 webViewHelper.webViewImpl()->layout(); 732 webViewHelper.webViewImpl()->layout();
709 733
710 WebCore::RenderObject* renderer = document->renderer(); 734 EXPECT_TRUE(setTextAutosizingMultiplier(document, 2));
711 bool multiplierSetAtLeastOnce = false;
712 while (renderer) {
713 if (renderer->style()) {
714 renderer->style()->setTextAutosizingMultiplier(2);
715 EXPECT_EQ(2, renderer->style()->textAutosizingMultiplier());
716 multiplierSetAtLeastOnce = true;
717 }
718 renderer = renderer->nextInPreOrder();
719 }
720 EXPECT_TRUE(multiplierSetAtLeastOnce);
721 735
722 WebCore::ViewportDescription description = document->viewportDescription(); 736 WebCore::ViewportDescription description = document->viewportDescription();
723 // Choose a width that's not going match the viewport width of the loaded do cument. 737 // Choose a width that's not going match the viewport width of the loaded do cument.
724 description.minWidth = WebCore::Length(100, WebCore::Fixed); 738 description.minWidth = WebCore::Length(100, WebCore::Fixed);
725 description.maxWidth = WebCore::Length(100, WebCore::Fixed); 739 description.maxWidth = WebCore::Length(100, WebCore::Fixed);
726 webViewHelper.webViewImpl()->updatePageDefinedViewportConstraints(descriptio n); 740 webViewHelper.webViewImpl()->updatePageDefinedViewportConstraints(descriptio n);
727 741
728 bool multiplierCheckedAtLeastOnce = false; 742 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 1));
729 renderer = document->renderer(); 743 }
730 while (renderer) { 744
731 if (renderer->style()) { 745 TEST_F(WebFrameTest, SetFrameRectResetsTextAutosizingMultipliers)
732 EXPECT_EQ(1, renderer->style()->textAutosizingMultiplier()); 746 {
733 multiplierCheckedAtLeastOnce = true; 747 UseMockScrollbarSettings mockScrollbarSettings;
734 } 748 registerMockedHttpURLLoad("iframe_reload.html");
735 renderer = renderer->nextInPreOrder(); 749 registerMockedHttpURLLoad("visible_iframe.html");
736 } 750
737 EXPECT_TRUE(multiplierCheckedAtLeastOnce); 751 FixedLayoutTestWebViewClient client;
752 int viewportWidth = 640;
753 int viewportHeight = 480;
754
755 FrameTestHelpers::WebViewHelper webViewHelper;
756 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, 0, & client, enableViewportSettings);
757
758 WebCore::LocalFrame* mainFrame = webViewHelper.webViewImpl()->page()->mainFr ame();
759 WebCore::Document* document = mainFrame->document();
760 WebCore::FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl() ->frameView();
761 document->settings()->setTextAutosizingEnabled(true);
762 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
763 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
764 webViewHelper.webViewImpl()->layout();
765
766 for (WebCore::LocalFrame* frame = mainFrame; frame; frame = frame->tree().tr averseNext())
767 EXPECT_TRUE(setTextAutosizingMultiplier(frame->document(), 2));
768
769 frameView->setFrameRect(WebCore::IntRect(0, 0, 200, 200));
770
771 for (WebCore::LocalFrame* frame = mainFrame; frame; frame = frame->tree().tr averseNext())
772 EXPECT_TRUE(checkTextAutosizingMultiplier(frame->document(), 1));
738 } 773 }
739 774
740 TEST_F(WebFrameTest, FixedLayoutSizeStopsResizeFromChangingLayoutSize) 775 TEST_F(WebFrameTest, FixedLayoutSizeStopsResizeFromChangingLayoutSize)
741 { 776 {
742 UseMockScrollbarSettings mockScrollbarSettings; 777 UseMockScrollbarSettings mockScrollbarSettings;
743 registerMockedHttpURLLoad("fixed_layout.html"); 778 registerMockedHttpURLLoad("fixed_layout.html");
744 779
745 int viewportWidth = 640; 780 int viewportWidth = 640;
746 int viewportHeight = 480; 781 int viewportHeight = 480;
747 782
(...skipping 4489 matching lines...) Expand 10 before | Expand all | Expand 10 after
5237 webViewHelper.initializeAndLoad("about:blank"); 5272 webViewHelper.initializeAndLoad("about:blank");
5238 5273
5239 WebCore::FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl() ->frameView(); 5274 WebCore::FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl() ->frameView();
5240 frameView->setFrameRect(WebCore::IntRect(0, 0, 200, 200)); 5275 frameView->setFrameRect(WebCore::IntRect(0, 0, 200, 200));
5241 EXPECT_EQ_RECT(WebCore::IntRect(0, 0, 200, 200), frameView->frameRect()); 5276 EXPECT_EQ_RECT(WebCore::IntRect(0, 0, 200, 200), frameView->frameRect());
5242 frameView->setFrameRect(WebCore::IntRect(100, 100, 200, 200)); 5277 frameView->setFrameRect(WebCore::IntRect(100, 100, 200, 200));
5243 EXPECT_EQ_RECT(WebCore::IntRect(100, 100, 200, 200), frameView->frameRect()) ; 5278 EXPECT_EQ_RECT(WebCore::IntRect(100, 100, 200, 200), frameView->frameRect()) ;
5244 } 5279 }
5245 5280
5246 } // namespace 5281 } // namespace
OLDNEW
« 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