Index: third_party/WebKit/Source/core/layout/TextAutosizerTest.cpp |
diff --git a/third_party/WebKit/Source/core/layout/TextAutosizerTest.cpp b/third_party/WebKit/Source/core/layout/TextAutosizerTest.cpp |
index f60be84782e83130a34f20bae85a1a030b712912..9fa9b1a039e23d3e39cb4b3fdd6268187b522f94 100644 |
--- a/third_party/WebKit/Source/core/layout/TextAutosizerTest.cpp |
+++ b/third_party/WebKit/Source/core/layout/TextAutosizerTest.cpp |
@@ -7,7 +7,6 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
namespace blink { |
- |
class TextAutosizerTest : public RenderingTest { |
private: |
void SetUp() override { |
@@ -487,15 +486,15 @@ TEST_F(TextAutosizerTest, ChangingSuperClusterFirstText) { |
setBodyInnerHTML( |
"<meta name='viewport' content='width=800'>" |
"<style>" |
- " html { font-size: 16px; }" |
- " body { width: 800px; margin: 0; overflow-y: hidden; }" |
- " .supercluster { width:560px; }" |
+ " html { font-size: 16px; }" |
+ " body { width: 800px; margin: 0; overflow-y: hidden; }" |
+ " .supercluster { width:560px; }" |
"</style>" |
"<div class='supercluster'>" |
- " <div id='longText'>short blah blah</div>" |
+ " <div id='longText'>short blah blah</div>" |
"</div>" |
"<div class='supercluster'>" |
- " <div id='shortText'>short blah blah</div>" |
+ " <div id='shortText'>short blah blah</div>" |
"</div>"); |
document().view()->updateAllLifecyclePhases(); |
@@ -531,15 +530,15 @@ TEST_F(TextAutosizerTest, ChangingSuperClusterSecondText) { |
setBodyInnerHTML( |
"<meta name='viewport' content='width=800'>" |
"<style>" |
- " html { font-size: 16px; }" |
- " body { width: 800px; margin: 0; overflow-y: hidden; }" |
- " .supercluster { width:560px; }" |
+ " html { font-size: 16px; }" |
+ " body { width: 800px; margin: 0; overflow-y: hidden; }" |
+ " .supercluster { width:560px; }" |
"</style>" |
"<div class='supercluster'>" |
- " <div id='shortText'>short blah blah</div>" |
+ " <div id='shortText'>short blah blah</div>" |
"</div>" |
"<div class='supercluster'>" |
- " <div id='longText'>short blah blah</div>" |
+ " <div id='longText'>short blah blah</div>" |
"</div>"); |
document().view()->updateAllLifecyclePhases(); |
@@ -575,14 +574,14 @@ TEST_F(TextAutosizerTest, AddingSuperCluster) { |
setBodyInnerHTML( |
"<meta name='viewport' content='width=800'>" |
"<style>" |
- " html { font-size: 16px; }" |
- " body { width: 800px; margin: 0; overflow-y: hidden; }" |
- " .supercluster { width:560px; }" |
+ " html { font-size: 16px; }" |
+ " body { width: 800px; margin: 0; overflow-y: hidden; }" |
+ " .supercluster { width:560px; }" |
"</style>" |
"<div>" |
- " <div class='supercluster' id='shortText'>" |
- " short blah blah" |
- " </div>" |
+ " <div class='supercluster' id='shortText'>" |
+ " short blah blah" |
+ " </div>" |
"</div>" |
"<div id='container'></div>"); |
document().view()->updateAllLifecyclePhases(); |
@@ -621,16 +620,16 @@ TEST_F(TextAutosizerTest, ChangingInheritedClusterTextInsideSuperCluster) { |
setBodyInnerHTML( |
"<meta name='viewport' content='width=800'>" |
"<style>" |
- " html { font-size: 16px; }" |
- " body { width: 800px; margin: 0; overflow-y: hidden; }" |
- " .supercluster { width:560px; }" |
- " .cluster{width:560px;}" |
+ " html { font-size: 16px; }" |
+ " body { width: 800px; margin: 0; overflow-y: hidden; }" |
+ " .supercluster { width:560px; }" |
+ " .cluster{width:560px;}" |
"</style>" |
"<div class='supercluster'>" |
- " <div class='cluster' id='longText'>short blah blah</div>" |
+ " <div class='cluster' id='longText'>short blah blah</div>" |
"</div>" |
"<div class='supercluster'>" |
- " <div class='cluster' id='shortText'>short blah blah</div>" |
+ " <div class='cluster' id='shortText'>short blah blah</div>" |
"</div>"); |
document().view()->updateAllLifecyclePhases(); |
@@ -661,4 +660,96 @@ TEST_F(TextAutosizerTest, ChangingInheritedClusterTextInsideSuperCluster) { |
EXPECT_FLOAT_EQ(16.f, shortText->style()->specifiedFontSize()); |
EXPECT_FLOAT_EQ(28.f, shortText->style()->computedFontSize()); |
} |
+ |
+TEST_F(TextAutosizerTest, AutosizeInnerContentOfRuby) { |
+ setBodyInnerHTML( |
+ "<meta name='viewport' content='width=800'>" |
+ "<style>" |
+ " html { font-size: 16px; }" |
+ " body { width: 800px; margin: 0; overflow-y: hidden; }" |
+ "</style>" |
+ "<div id='autosized'>" |
+ " 東京特許許可局許可局長 今日" |
+ " <ruby>" |
+ " <rb id='rubyInline'>急遽</rb>" |
+ " <rp>(</rp>" |
+ " <rt>きゅうきょ</rt>" |
+ " <rp>)</rp>" |
+ " </ruby>" |
+ " 許可却下、<br><br>" |
+ " <span>" |
+ " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec " |
+ " sed diam facilisis, elementum elit at, elementum sem. Aliquam " |
+ " consectetur leo at nisi fermentum, vitae maximus libero " |
+ "sodales. Sed " |
+ " laoreet congue ipsum, at tincidunt ante tempor sed. Cras eget " |
+ "erat " |
+ " mattis urna vestibulum porta. Sed tempus vitae dui et suscipit. " |
+ " Curabitur laoreet accumsan pharetra. Nunc facilisis, elit sit " |
+ "amet " |
+ " sollicitudin condimentum, ipsum velit ultricies mi, eget " |
+ "dapibus nunc " |
+ " nulla nec sapien. Fusce dictum imperdiet aliquet." |
+ " </span>" |
+ " <ruby style='display:block'>" |
+ " <rb id='rubyBlock'>拼音</rb>" |
+ " <rt>pin yin</rt>" |
+ " </ruby>" |
+ "</div>"); |
+ document().view()->updateAllLifecyclePhases(); |
+ |
+ Element* rubyInline = document().getElementById("rubyInline"); |
+ EXPECT_FLOAT_EQ(16.f, |
+ rubyInline->layoutObject()->style()->specifiedFontSize()); |
+ // (specified font-size = 16px) * (viewport width = 800px) / |
+ // (window width = 320px) = 40px. |
+ EXPECT_FLOAT_EQ(40.f, |
+ rubyInline->layoutObject()->style()->computedFontSize()); |
+ |
+ Element* rubyBlock = document().getElementById("rubyBlock"); |
+ EXPECT_FLOAT_EQ(16.f, |
+ rubyBlock->layoutObject()->style()->specifiedFontSize()); |
+ // (specified font-size = 16px) * (viewport width = 800px) / |
+ // (window width = 320px) = 40px. |
+ EXPECT_FLOAT_EQ(40.f, rubyBlock->layoutObject()->style()->computedFontSize()); |
+} |
+ |
+TEST_F(TextAutosizerTest, ResizeAndGlyphOverflowChanged) { |
+ document().settings()->setTextAutosizingWindowSizeOverride(IntSize(360, 640)); |
+ Element* html = document().body()->parentElement(); |
+ html->setInnerHTML( |
+ "<head>" |
+ " <meta name='viewport' content='800'>" |
+ " <style>" |
+ " html { font-size:16px; font-family:'Times New Roman';}" |
+ " </style>" |
+ "</head>" |
+ "<body>" |
+ " <span id='autosized' style='font-size:10px'>" |
+ " Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do" |
+ " eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim" |
+ " ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut" |
+ " aliquip ex ea commodo consequat. Duis aute irure dolor in" |
+ " reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla" |
+ " pariatur. Excepteur sint occaecat cupidatat non proident, sunt in" |
+ " culpa qui officia deserunt mollit anim id est laborum." |
+ " </span>" |
+ " <span style='font-size:8px'>n</span>" |
+ " <span style='font-size:9px'>n</span>" |
+ " <span style='font-size:10px'>n</span>" |
+ " <span style='font-size:11px'>n</span>" |
+ " <span style='font-size:12px'>n</span>" |
+ " <span style='font-size:13px'>n</span>" |
+ " <span style='font-size:14px'>n</span>" |
+ " <span style='font-size:15px'>n</span>" |
+ "</body>", |
+ ASSERT_NO_EXCEPTION); |
+ document().view()->updateAllLifecyclePhases(); |
+ |
+ document().settings()->setTextAutosizingWindowSizeOverride(IntSize(640, 360)); |
+ document().view()->updateAllLifecyclePhases(); |
+ |
+ document().settings()->setTextAutosizingWindowSizeOverride(IntSize(360, 640)); |
+ document().view()->updateAllLifecyclePhases(); |
+} |
} // namespace blink |