Title: [119256] trunk
Revision
119256
Author
[email protected]
Date
2012-06-01 11:24:02 -0700 (Fri, 01 Jun 2012)

Log Message

Improve handling of legacy viewport meta tags
https://bugs.webkit.org/show_bug.cgi?id=55874

Patch by Hugo Parente Lima <[email protected]> on 2012-06-01
Reviewed by Adam Barth.

Source/WebCore:

We now support MobileOptimized and HandheldFriendly as well.

We set width equal to device-width for HandheldFriendly and
for MobileOptimized, the content value of MobileOptimized is
ignored and the initial-scale set to 1 to fit Android behavior.

The prioritizing is done the same way as on Windows Phone 7:

XHTML Mobile Profile found
HandheldFriendly
MobileOptimized (overrides HandheldFriendly)
Viewport (overrides all above)

Original patch by Kenneth Rohde Christiansen.

Tests: fast/viewport/viewport-legacy-handheldfriendly.html
       fast/viewport/viewport-legacy-mobileoptimized-2.html
       fast/viewport/viewport-legacy-mobileoptimized-3.html
       fast/viewport/viewport-legacy-mobileoptimized.html
       fast/viewport/viewport-legacy-ordering-1.html
       fast/viewport/viewport-legacy-ordering-2.html
       fast/viewport/viewport-legacy-ordering-3.html
       fast/viewport/viewport-legacy-ordering-4.html
       fast/viewport/viewport-legacy-ordering-5.html
       fast/viewport/viewport-legacy-ordering-6.html
       fast/viewport/viewport-legacy-ordering-7.html
       fast/viewport/viewport-legacy-ordering-8.html
       fast/viewport/viewport-legacy-ordering-9.html

* dom/Document.cpp:
(WebCore::Document::setDocType):
(WebCore::Document::processViewport): Add an origin parameter to
tell what is changing the viewport.
* dom/Document.h:
(Document):
* dom/ViewportArguments.h:
* html/HTMLMetaElement.cpp:
(WebCore::HTMLMetaElement::process):

LayoutTests:

Add tests and expected results.

* fast/viewport/viewport-legacy-handheldfriendly-expected.txt: Added.
* fast/viewport/viewport-legacy-handheldfriendly.html: Added.
* fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt: Added.
* fast/viewport/viewport-legacy-mobileoptimized-2.html: Added.
* fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt: Added.
* fast/viewport/viewport-legacy-mobileoptimized-3.html: Added.
* fast/viewport/viewport-legacy-mobileoptimized-expected.txt: Added.
* fast/viewport/viewport-legacy-mobileoptimized.html: Added.
* fast/viewport/viewport-legacy-ordering-1-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-1.html: Added.
* fast/viewport/viewport-legacy-ordering-2-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-2.html: Added.
* fast/viewport/viewport-legacy-ordering-3-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-3.html: Added.
* fast/viewport/viewport-legacy-ordering-4-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-4.html: Added.
* fast/viewport/viewport-legacy-ordering-5-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-5.html: Added.
* fast/viewport/viewport-legacy-ordering-6-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-6.html: Added.
* fast/viewport/viewport-legacy-ordering-7-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-7.html: Added.
* fast/viewport/viewport-legacy-ordering-8-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-8.html: Added.
* fast/viewport/viewport-legacy-ordering-9-expected.txt: Added.
* fast/viewport/viewport-legacy-ordering-9.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (119255 => 119256)


--- trunk/LayoutTests/ChangeLog	2012-06-01 18:10:56 UTC (rev 119255)
+++ trunk/LayoutTests/ChangeLog	2012-06-01 18:24:02 UTC (rev 119256)
@@ -1,3 +1,39 @@
+2012-06-01  Hugo Parente Lima  <[email protected]>
+
+        Improve handling of legacy viewport meta tags
+        https://bugs.webkit.org/show_bug.cgi?id=55874
+
+        Reviewed by Adam Barth.
+
+        Add tests and expected results.
+
+        * fast/viewport/viewport-legacy-handheldfriendly-expected.txt: Added.
+        * fast/viewport/viewport-legacy-handheldfriendly.html: Added.
+        * fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt: Added.
+        * fast/viewport/viewport-legacy-mobileoptimized-2.html: Added.
+        * fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt: Added.
+        * fast/viewport/viewport-legacy-mobileoptimized-3.html: Added.
+        * fast/viewport/viewport-legacy-mobileoptimized-expected.txt: Added.
+        * fast/viewport/viewport-legacy-mobileoptimized.html: Added.
+        * fast/viewport/viewport-legacy-ordering-1-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-1.html: Added.
+        * fast/viewport/viewport-legacy-ordering-2-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-2.html: Added.
+        * fast/viewport/viewport-legacy-ordering-3-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-3.html: Added.
+        * fast/viewport/viewport-legacy-ordering-4-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-4.html: Added.
+        * fast/viewport/viewport-legacy-ordering-5-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-5.html: Added.
+        * fast/viewport/viewport-legacy-ordering-6-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-6.html: Added.
+        * fast/viewport/viewport-legacy-ordering-7-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-7.html: Added.
+        * fast/viewport/viewport-legacy-ordering-8-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-8.html: Added.
+        * fast/viewport/viewport-legacy-ordering-9-expected.txt: Added.
+        * fast/viewport/viewport-legacy-ordering-9.html: Added.
+
 2012-06-01  Tony Chang  <[email protected]>
 
         rename -webkit-flex-order to -webkit-order

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-handheldfriendly-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-handheldfriendly-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-handheldfriendly-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-handheldfriendly.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-handheldfriendly.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-handheldfriendly.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,13 @@
+<head>
+    <title>HandheldFriendly Meta with "true".</title>
+    <meta name="HandheldFriendly" content="true">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-2.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-2.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-2.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,13 @@
+<head>
+    <title>MobileOptimized Meta with "0".</title>
+    <meta name="MobileOptimized" content="0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-3.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-3.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-3.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>MobileOptimized Meta with "480".</title>
+    <!-- The content value should be ignored to match current implementations -->
+    <meta name="MobileOptimized" content="480">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-mobileoptimized.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,13 @@
+<head>
+    <title>MobileOptimized Meta without content".</title>
+    <meta name="MobileOptimized" content="">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-1-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-1-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-1-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-1.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-1.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-1.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>Viewport, HandheldFriendly Meta.</title>
+    <meta name="viewport" content="width=300">
+    <meta name="HandheldFriendly" content="true">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-2-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-2-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-2-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-2.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-2.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-2.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>HandheldFriendly, Viewport Meta.</title>
+    <meta name="HandheldFriendly" content="true">
+    <meta name="viewport" content="width=300">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-3-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-3-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-3-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-3.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-3.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-3.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>Viewport, MobileOptimized Meta.</title>
+    <meta name="viewport" content="width=300">
+    <meta name="MobileOptimized" content="176">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-4-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-4-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-4-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-4.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-4.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-4.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>MobileOptimized, Viewport Meta.</title>
+    <meta name="MobileOptimized" content="176">
+    <meta name="viewport" content="width=300">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-5-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-5-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-5-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-5.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-5.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-5.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>HandheldFriendly, MobileOptimized Meta.</title>
+    <meta name="HandheldFriendly" content="true">
+    <meta name="MobileOptimized" content="480">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-6-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-6-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-6-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-6.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-6.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-6.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,14 @@
+<head>
+    <title>MobileOptimized, HandheldFriendly Meta.</title>
+    <meta name="MobileOptimized" content="480">
+    <meta name="HandheldFriendly" content="true">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-7-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-7-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-7-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-7.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-7.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-7.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,15 @@
+<head>
+    <title>Viewport, MobileOptimized, HandheldFriendly Meta.</title>
+    <meta name="viewport" content="width = 300">
+    <meta name="MobileOptimized" content="480">
+    <meta name="HandheldFriendly" content="true">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-8-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-8-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-8-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-8.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-8.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-8.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,15 @@
+<head>
+    <title>MobileOptimized, Viewport, HandheldFriendly Meta.</title>
+    <meta name="MobileOptimized" content="480">
+    <meta name="viewport" content="width = 300">
+    <meta name="HandheldFriendly" content="true">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-9-expected.txt (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-9-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-9-expected.txt	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,2 @@
+viewport size 300x330 scale 1.066667 with limits [1.066667, 5.000000] and userScalable -1.000000
+

Added: trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-9.html (0 => 119256)


--- trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-9.html	                        (rev 0)
+++ trunk/LayoutTests/fast/viewport/viewport-legacy-ordering-9.html	2012-06-01 18:24:02 UTC (rev 119256)
@@ -0,0 +1,15 @@
+<head>
+    <title>MobileOptimized, HandheldFriendly, Viewport Meta.</title>
+    <meta name="MobileOptimized" content="480">
+    <meta name="HandheldFriendly" content="true">
+    <meta name="viewport" content="width = 300">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(160, 320, 480, 320, 352);
+            }
+        }
+    </script>
+</head>
+<body _onload_="test();">

Modified: trunk/Source/WebCore/ChangeLog (119255 => 119256)


--- trunk/Source/WebCore/ChangeLog	2012-06-01 18:10:56 UTC (rev 119255)
+++ trunk/Source/WebCore/ChangeLog	2012-06-01 18:24:02 UTC (rev 119256)
@@ -1,3 +1,49 @@
+2012-06-01  Hugo Parente Lima  <[email protected]>
+
+        Improve handling of legacy viewport meta tags
+        https://bugs.webkit.org/show_bug.cgi?id=55874
+
+        Reviewed by Adam Barth.
+
+        We now support MobileOptimized and HandheldFriendly as well.
+
+        We set width equal to device-width for HandheldFriendly and
+        for MobileOptimized, the content value of MobileOptimized is
+        ignored and the initial-scale set to 1 to fit Android behavior.
+
+        The prioritizing is done the same way as on Windows Phone 7:
+
+        XHTML Mobile Profile found
+        HandheldFriendly
+        MobileOptimized (overrides HandheldFriendly)
+        Viewport (overrides all above)
+
+        Original patch by Kenneth Rohde Christiansen.
+
+        Tests: fast/viewport/viewport-legacy-handheldfriendly.html
+               fast/viewport/viewport-legacy-mobileoptimized-2.html
+               fast/viewport/viewport-legacy-mobileoptimized-3.html
+               fast/viewport/viewport-legacy-mobileoptimized.html
+               fast/viewport/viewport-legacy-ordering-1.html
+               fast/viewport/viewport-legacy-ordering-2.html
+               fast/viewport/viewport-legacy-ordering-3.html
+               fast/viewport/viewport-legacy-ordering-4.html
+               fast/viewport/viewport-legacy-ordering-5.html
+               fast/viewport/viewport-legacy-ordering-6.html
+               fast/viewport/viewport-legacy-ordering-7.html
+               fast/viewport/viewport-legacy-ordering-8.html
+               fast/viewport/viewport-legacy-ordering-9.html
+
+        * dom/Document.cpp:
+        (WebCore::Document::setDocType):
+        (WebCore::Document::processViewport): Add an origin parameter to
+        tell what is changing the viewport.
+        * dom/Document.h:
+        (Document):
+        * dom/ViewportArguments.h:
+        * html/HTMLMetaElement.cpp:
+        (WebCore::HTMLMetaElement::process):
+
 2012-06-01  Tony Chang  <[email protected]>
 
         rename -webkit-flex-order to -webkit-order

Modified: trunk/Source/WebCore/dom/Document.cpp (119255 => 119256)


--- trunk/Source/WebCore/dom/Document.cpp	2012-06-01 18:10:56 UTC (rev 119255)
+++ trunk/Source/WebCore/dom/Document.cpp	2012-06-01 18:24:02 UTC (rev 119256)
@@ -782,7 +782,7 @@
 #if USE(LEGACY_VIEWPORT_ADAPTION)
         ASSERT(m_viewportArguments.type == ViewportArguments::Implicit);
         if (m_docType->publicId().startsWith("-//wapforum//dtd xhtml mobile 1.", /* caseSensitive */ false))
-            processViewport("width=device-width, height=device-height, initial-scale=1");
+            processViewport("width=device-width, height=device-height", ViewportArguments::XHTMLMobileProfile);
 #endif
     }
     // Doctype affects the interpretation of the stylesheets.
@@ -3036,11 +3036,14 @@
     }
 }
 
-void Document::processViewport(const String& features)
+void Document::processViewport(const String& features, ViewportArguments::Type origin)
 {
     ASSERT(!features.isNull());
 
-    m_viewportArguments = ViewportArguments(ViewportArguments::ViewportMeta);
+    if (origin < m_viewportArguments.type)
+        return;
+
+    m_viewportArguments = ViewportArguments(origin);
     processArguments(features, (void*)&m_viewportArguments, &setViewportFeature);
 
     updateViewportArguments();

Modified: trunk/Source/WebCore/dom/Document.h (119255 => 119256)


--- trunk/Source/WebCore/dom/Document.h	2012-06-01 18:10:56 UTC (rev 119255)
+++ trunk/Source/WebCore/dom/Document.h	2012-06-01 18:24:02 UTC (rev 119256)
@@ -834,7 +834,7 @@
      * @param content The header value (value of the meta tag's "content" attribute)
      */
     void processHttpEquiv(const String& equiv, const String& content);
-    void processViewport(const String& features);
+    void processViewport(const String& features, ViewportArguments::Type origin);
     void updateViewportArguments();
     void processReferrerPolicy(const String& policy);
 

Modified: trunk/Source/WebCore/dom/ViewportArguments.h (119255 => 119256)


--- trunk/Source/WebCore/dom/ViewportArguments.h	2012-06-01 18:10:56 UTC (rev 119255)
+++ trunk/Source/WebCore/dom/ViewportArguments.h	2012-06-01 18:24:02 UTC (rev 119256)
@@ -57,7 +57,13 @@
 struct ViewportArguments {
 
     enum Type {
+        // These are ordered in increasing importance.
         Implicit,
+#if USE(LEGACY_VIEWPORT_ADAPTION)
+        XHTMLMobileProfile,
+        HandheldFriendlyMeta,
+        MobileOptimizedMeta,
+#endif
         ViewportMeta
     } type;
 

Modified: trunk/Source/WebCore/html/HTMLMetaElement.cpp (119255 => 119256)


--- trunk/Source/WebCore/html/HTMLMetaElement.cpp	2012-06-01 18:10:56 UTC (rev 119255)
+++ trunk/Source/WebCore/html/HTMLMetaElement.cpp	2012-06-01 18:24:02 UTC (rev 119256)
@@ -72,10 +72,15 @@
         return;
 
     if (equalIgnoringCase(name(), "viewport"))
-        document()->processViewport(contentValue);
-
-    if (equalIgnoringCase(name(), "referrer"))
+        document()->processViewport(contentValue, ViewportArguments::ViewportMeta);
+    else if (equalIgnoringCase(name(), "referrer"))
         document()->processReferrerPolicy(contentValue);
+#if USE(LEGACY_VIEWPORT_ADAPTION)
+    else if (equalIgnoringCase(name(), "handheldfriendly") && equalIgnoringCase(contentValue, "true"))
+        document()->processViewport("width=device-width", ViewportArguments::HandheldFriendlyMeta);
+    else if (equalIgnoringCase(name(), "mobileoptimized"))
+        document()->processViewport("width=device-width, initial-scale=1", ViewportArguments::MobileOptimizedMeta);
+#endif
 
     // Get the document to process the tag, but only if we're actually part of DOM tree (changing a meta tag while
     // it's not in the tree shouldn't have any effect on the document)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to