Text Autosizing: don't autosize horizontal menu items implemented via floating list items
https://bugs.webkit.org/show_bug.cgi?id=103840
Patch by Anton Vayvod <avayvod@chromium.org> on 2012-12-03
Reviewed by Kenneth Rohde Christiansen.
Floating list items are often used to implement horizontal menus. Currently, text autosizing
disregards such elements as autosizing containers. List items are often then autosized as part
of a bigger cluster (usually the whole page) and look too big.
This change turns floating list items into autosizing clusters so they are autosized separately
resulting in no font size multiplication for menu items implemented in this manner.
Source/WebCore:
Test: fast/text-autosizing/cluster-list-item.html
* rendering/TextAutosizer.cpp:
(WebCore::TextAutosizer::isAutosizingContainer): Returns true for floating list items; split the
condition logically.
LayoutTests:
* fast/text-autosizing/cluster-list-item-expected.html: Renamed from LayoutTests/fast/text-autosizing/list-item-out-of-flow-expected.html.
* fast/text-autosizing/cluster-list-item.html: Renamed from LayoutTests/fast/text-autosizing/list-item-out-of-flow.html; added case for a floating list item.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@136411 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/fast/text-autosizing/cluster-list-item-expected.html b/LayoutTests/fast/text-autosizing/cluster-list-item-expected.html
new file mode 100644
index 0000000..dcd6252
--- /dev/null
+++ b/LayoutTests/fast/text-autosizing/cluster-list-item-expected.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+
+<meta name="viewport" content="width=800">
+<style>
+html { font-size: 16px; }
+body { width: 800px; margin: 0; overflow-y: hidden; }
+</style>
+
+</head>
+<body>
+
+<ul style="width: 400px">
+ <li style="width: 600px; font-size: 1.25rem">
+ This element is only autosized to 20px computed font size (16 * 400/320), since we don't want list items to be autosized differently from each other, and the width of UL tag is used for autosizing.<br>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ </li>
+ <li style="font-size: 1.25rem">
+ This element is autosized to computed font size of 20px similarly to the first list item.<br>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ </li>
+ <li style="float: left; width: 800px; font-size: 2.5rem">
+ This list element becomes a separate autosizing cluster since it's floating. Hence its computed font size is 40px (16 * 400 / 320).<br>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ </li>
+ <li style="position: absolute; margin-top: 280px; width: 800px; font-size: 2.5rem">
+ This list element becomes a separate autosizing cluster since it's positioned out of the list flow. Hence its computed font size is 40px (16 * 400 / 320).<br>
+ Margin is added so it doesn't overlap with the previous element.<br>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ </li>
+</ul>
+</body>
+</head>
\ No newline at end of file