WebCore: Update support for the viewport meta tag algorithm, to
match the following draft spec:

Patch by Kenneth Rohde Christiansen <kenneth@webkit.org> on 2010-08-27
Reviewed by Antti Koivisto.

http://people.opera.com/rune/TR/ED-css-viewport-20100806/

Add common handling of viewport meta tag based on new Opera spec
https://bugs.webkit.org/show_bug.cgi?id=44201

Tests: fast/viewport/viewport-1.html
       fast/viewport/viewport-10.html
       fast/viewport/viewport-100.html
       fast/viewport/viewport-101.html
       fast/viewport/viewport-102.html
       fast/viewport/viewport-103.html
       fast/viewport/viewport-104.html
       fast/viewport/viewport-105.html
       fast/viewport/viewport-106.html
       fast/viewport/viewport-107.html
       fast/viewport/viewport-108.html
       fast/viewport/viewport-109.html
       fast/viewport/viewport-11.html
       fast/viewport/viewport-110.html
       fast/viewport/viewport-111.html
       fast/viewport/viewport-112.html
       fast/viewport/viewport-113.html
       fast/viewport/viewport-114.html
       fast/viewport/viewport-115.html
       fast/viewport/viewport-116.html
       fast/viewport/viewport-117.html
       fast/viewport/viewport-118.html
       fast/viewport/viewport-119.html
       fast/viewport/viewport-12.html
       fast/viewport/viewport-120.html
       fast/viewport/viewport-121.html
       fast/viewport/viewport-122.html
       fast/viewport/viewport-123.html
       fast/viewport/viewport-124.html
       fast/viewport/viewport-125.html
       fast/viewport/viewport-126.html
       fast/viewport/viewport-127.html
       fast/viewport/viewport-13.html
       fast/viewport/viewport-14.html
       fast/viewport/viewport-15.html
       fast/viewport/viewport-16.html
       fast/viewport/viewport-17.html
       fast/viewport/viewport-18.html
       fast/viewport/viewport-19.html
       fast/viewport/viewport-2.html
       fast/viewport/viewport-20.html
       fast/viewport/viewport-21.html
       fast/viewport/viewport-22.html
       fast/viewport/viewport-23.html
       fast/viewport/viewport-24.html
       fast/viewport/viewport-25.html
       fast/viewport/viewport-26.html
       fast/viewport/viewport-27.html
       fast/viewport/viewport-28.html
       fast/viewport/viewport-29.html
       fast/viewport/viewport-3.html
       fast/viewport/viewport-30.html
       fast/viewport/viewport-31.html
       fast/viewport/viewport-32.html
       fast/viewport/viewport-33.html
       fast/viewport/viewport-34.html
       fast/viewport/viewport-35.html
       fast/viewport/viewport-36.html
       fast/viewport/viewport-37.html
       fast/viewport/viewport-38.html
       fast/viewport/viewport-39.html
       fast/viewport/viewport-4.html
       fast/viewport/viewport-40.html
       fast/viewport/viewport-41.html
       fast/viewport/viewport-42.html
       fast/viewport/viewport-43.html
       fast/viewport/viewport-44.html
       fast/viewport/viewport-45.html
       fast/viewport/viewport-46.html
       fast/viewport/viewport-47.html
       fast/viewport/viewport-48.html
       fast/viewport/viewport-49.html
       fast/viewport/viewport-5.html
       fast/viewport/viewport-50.html
       fast/viewport/viewport-51.html
       fast/viewport/viewport-52.html
       fast/viewport/viewport-53.html
       fast/viewport/viewport-54.html
       fast/viewport/viewport-55.html
       fast/viewport/viewport-56.html
       fast/viewport/viewport-57.html
       fast/viewport/viewport-58.html
       fast/viewport/viewport-59.html
       fast/viewport/viewport-6.html
       fast/viewport/viewport-60.html
       fast/viewport/viewport-61.html
       fast/viewport/viewport-62.html
       fast/viewport/viewport-63.html
       fast/viewport/viewport-64.html
       fast/viewport/viewport-65.html
       fast/viewport/viewport-66.html
       fast/viewport/viewport-67.html
       fast/viewport/viewport-68.html
       fast/viewport/viewport-69.html
       fast/viewport/viewport-7.html
       fast/viewport/viewport-70.html
       fast/viewport/viewport-71.html
       fast/viewport/viewport-72.html
       fast/viewport/viewport-73.html
       fast/viewport/viewport-74.html
       fast/viewport/viewport-75.html
       fast/viewport/viewport-76.html
       fast/viewport/viewport-77.html
       fast/viewport/viewport-78.html
       fast/viewport/viewport-79.html
       fast/viewport/viewport-8.html
       fast/viewport/viewport-80.html
       fast/viewport/viewport-81.html
       fast/viewport/viewport-82.html
       fast/viewport/viewport-83.html
       fast/viewport/viewport-84.html
       fast/viewport/viewport-85.html
       fast/viewport/viewport-86.html
       fast/viewport/viewport-87.html
       fast/viewport/viewport-88.html
       fast/viewport/viewport-9.html
       fast/viewport/viewport-90.html

* dom/ViewportArguments.cpp:
(WebCore::findConfigurationForViewportData):
(WebCore::findSizeValue):
(WebCore::findScaleValue):
(WebCore::findUserScalableValue):
(WebCore::findTargetDensityDPIValue):
(WebCore::setViewportFeature):
* dom/ViewportArguments.h:
(WebCore::ViewportArguments::):
(WebCore::ViewportArguments::ViewportArguments):
(WebCore::ViewportArguments::hasCustomArgument):

WebKit/qt: Add a Qt API for the viewport meta tag support based on the
following draft spec:

Reviewed by Antti Koivisto.

http://people.opera.com/rune/TR/ED-css-viewport-20100806/

Add common handling of viewport meta tag based on new Opera spec
https://bugs.webkit.org/show_bug.cgi?id=44201

* Api/qwebframe_p.h:
(QWebFramePrivate::QWebFramePrivate):
* Api/qwebpage.cpp:
(QWebPage::ViewportConfiguration::ViewportConfiguration):
(QWebPage::ViewportConfiguration::~ViewportConfiguration):
(QWebPage::ViewportConfiguration::operator=):
(QWebPage::viewportConfigurationForSize):
(QWebPage::setPreferredContentsSize):
* Api/qwebpage.h:
* Api/qwebpage_p.h:
(QtViewportConfigurationPrivate::QtViewportConfigurationPrivate):
* WebCoreSupport/ChromeClientQt.cpp:
(WebCore::ChromeClientQt::didReceiveViewportArguments):
* WebCoreSupport/DumpRenderTreeSupportQt.cpp:
(DumpRenderTreeSupportQt::viewportAsText):
* WebCoreSupport/DumpRenderTreeSupportQt.h:
* WebCoreSupport/FrameLoaderClientQt.cpp:
(WebCore::FrameLoaderClientQt::dispatchDidCommitLoad):
(WebCore::FrameLoaderClientQt::dispatchDidFirstLayout):

WebKitTools: Add support for testing the viewport meta tag algorithm,
based on the following draft spec:

Reviewed by Antti Koivisto.

http://people.opera.com/rune/TR/ED-css-viewport-20100806/

Add common handling of viewport meta tag based on new Opera spec
https://bugs.webkit.org/show_bug.cgi?id=44201

* DumpRenderTree/qt/LayoutTestControllerQt.cpp:
(LayoutTestController::dumpConfigurationForViewport):
* DumpRenderTree/qt/LayoutTestControllerQt.h:

LayoutTests: Add tests for the viewport meta tag algorithm and parsing,
based on a test suite developed by Opera employees
Rune Lillesveen and Øyvind Stenhaug.

Patch by Kenneth Rohde Christiansen <kenneth@webkit.org> on 2010-08-27
Reviewed by Antti Koivisto.

* fast/viewport/viewport-1-expected.txt: Added.
* fast/viewport/viewport-1.html: Added.
* fast/viewport/viewport-10-expected.txt: Added.
* fast/viewport/viewport-10.html: Added.
* fast/viewport/viewport-100-expected.txt: Added.
* fast/viewport/viewport-100.html: Added.
* fast/viewport/viewport-101-expected.txt: Added.
* fast/viewport/viewport-101.html: Added.
* fast/viewport/viewport-102-expected.txt: Added.
* fast/viewport/viewport-102.html: Added.
* fast/viewport/viewport-103-expected.txt: Added.
* fast/viewport/viewport-103.html: Added.
* fast/viewport/viewport-104-expected.txt: Added.
* fast/viewport/viewport-104.html: Added.
* fast/viewport/viewport-105-expected.txt: Added.
* fast/viewport/viewport-105.html: Added.
* fast/viewport/viewport-106-expected.txt: Added.
* fast/viewport/viewport-106.html: Added.
* fast/viewport/viewport-107-expected.txt: Added.
* fast/viewport/viewport-107.html: Added.
* fast/viewport/viewport-108-expected.txt: Added.
* fast/viewport/viewport-108.html: Added.
* fast/viewport/viewport-109-expected.txt: Added.
* fast/viewport/viewport-109.html: Added.
* fast/viewport/viewport-11-expected.txt: Added.
* fast/viewport/viewport-11.html: Added.
* fast/viewport/viewport-110-expected.txt: Added.
* fast/viewport/viewport-110.html: Added.
* fast/viewport/viewport-111-expected.txt: Added.
* fast/viewport/viewport-111.html: Added.
* fast/viewport/viewport-112-expected.txt: Added.
* fast/viewport/viewport-112.html: Added.
* fast/viewport/viewport-113-expected.txt: Added.
* fast/viewport/viewport-113.html: Added.
* fast/viewport/viewport-114-expected.txt: Added.
* fast/viewport/viewport-114.html: Added.
* fast/viewport/viewport-115-expected.txt: Added.
* fast/viewport/viewport-115.html: Added.
* fast/viewport/viewport-116-expected.txt: Added.
* fast/viewport/viewport-116.html: Added.
* fast/viewport/viewport-117-expected.txt: Added.
* fast/viewport/viewport-117.html: Added.
* fast/viewport/viewport-118-expected.txt: Added.
* fast/viewport/viewport-118.html: Added.
* fast/viewport/viewport-119-expected.txt: Added.
* fast/viewport/viewport-119.html: Added.
* fast/viewport/viewport-12-expected.txt: Added.
* fast/viewport/viewport-12.html: Added.
* fast/viewport/viewport-120-expected.txt: Added.
* fast/viewport/viewport-120.html: Added.
* fast/viewport/viewport-121-expected.txt: Added.
* fast/viewport/viewport-121.html: Added.
* fast/viewport/viewport-122-expected.txt: Added.
* fast/viewport/viewport-122.html: Added.
* fast/viewport/viewport-123-expected.txt: Added.
* fast/viewport/viewport-123.html: Added.
* fast/viewport/viewport-124-expected.txt: Added.
* fast/viewport/viewport-124.html: Added.
* fast/viewport/viewport-125-expected.txt: Added.
* fast/viewport/viewport-125.html: Added.
* fast/viewport/viewport-126.html: Added.
* fast/viewport/viewport-127.html: Added.
* fast/viewport/viewport-13-expected.txt: Added.
* fast/viewport/viewport-13.html: Added.
* fast/viewport/viewport-14-expected.txt: Added.
* fast/viewport/viewport-14.html: Added.
* fast/viewport/viewport-15-expected.txt: Added.
* fast/viewport/viewport-15.html: Added.
* fast/viewport/viewport-16-expected.txt: Added.
* fast/viewport/viewport-16.html: Added.
* fast/viewport/viewport-17-expected.txt: Added.
* fast/viewport/viewport-17.html: Added.
* fast/viewport/viewport-18-expected.txt: Added.
* fast/viewport/viewport-18.html: Added.
* fast/viewport/viewport-19-expected.txt: Added.
* fast/viewport/viewport-19.html: Added.
* fast/viewport/viewport-2-expected.txt: Added.
* fast/viewport/viewport-2.html: Added.
* fast/viewport/viewport-20-expected.txt: Added.
* fast/viewport/viewport-20.html: Added.
* fast/viewport/viewport-21-expected.txt: Added.
* fast/viewport/viewport-21.html: Added.
* fast/viewport/viewport-22-expected.txt: Added.
* fast/viewport/viewport-22.html: Added.
* fast/viewport/viewport-23-expected.txt: Added.
* fast/viewport/viewport-23.html: Added.
* fast/viewport/viewport-24-expected.txt: Added.
* fast/viewport/viewport-24.html: Added.
* fast/viewport/viewport-25-expected.txt: Added.
* fast/viewport/viewport-25.html: Added.
* fast/viewport/viewport-26-expected.txt: Added.
* fast/viewport/viewport-26.html: Added.
* fast/viewport/viewport-27-expected.txt: Added.
* fast/viewport/viewport-27.html: Added.
* fast/viewport/viewport-28-expected.txt: Added.
* fast/viewport/viewport-28.html: Added.
* fast/viewport/viewport-29-expected.txt: Added.
* fast/viewport/viewport-29.html: Added.
* fast/viewport/viewport-3-expected.txt: Added.
* fast/viewport/viewport-3.html: Added.
* fast/viewport/viewport-30-expected.txt: Added.
* fast/viewport/viewport-30.html: Added.
* fast/viewport/viewport-31-expected.txt: Added.
* fast/viewport/viewport-31.html: Added.
* fast/viewport/viewport-32-expected.txt: Added.
* fast/viewport/viewport-32.html: Added.
* fast/viewport/viewport-33-expected.txt: Added.
* fast/viewport/viewport-33.html: Added.
* fast/viewport/viewport-34-expected.txt: Added.
* fast/viewport/viewport-34.html: Added.
* fast/viewport/viewport-35-expected.txt: Added.
* fast/viewport/viewport-35.html: Added.
* fast/viewport/viewport-36-expected.txt: Added.
* fast/viewport/viewport-36.html: Added.
* fast/viewport/viewport-37-expected.txt: Added.
* fast/viewport/viewport-37.html: Added.
* fast/viewport/viewport-38-expected.txt: Added.
* fast/viewport/viewport-38.html: Added.
* fast/viewport/viewport-39-expected.txt: Added.
* fast/viewport/viewport-39.html: Added.
* fast/viewport/viewport-4-expected.txt: Added.
* fast/viewport/viewport-4.html: Added.
* fast/viewport/viewport-40-expected.txt: Added.
* fast/viewport/viewport-40.html: Added.
* fast/viewport/viewport-41-expected.txt: Added.
* fast/viewport/viewport-41.html: Added.
* fast/viewport/viewport-42-expected.txt: Added.
* fast/viewport/viewport-42.html: Added.
* fast/viewport/viewport-43-expected.txt: Added.
* fast/viewport/viewport-43.html: Added.
* fast/viewport/viewport-44-expected.txt: Added.
* fast/viewport/viewport-44.html: Added.
* fast/viewport/viewport-45-expected.txt: Added.
* fast/viewport/viewport-45.html: Added.
* fast/viewport/viewport-46-expected.txt: Added.
* fast/viewport/viewport-46.html: Added.
* fast/viewport/viewport-47-expected.txt: Added.
* fast/viewport/viewport-47.html: Added.
* fast/viewport/viewport-48-expected.txt: Added.
* fast/viewport/viewport-48.html: Added.
* fast/viewport/viewport-49-expected.txt: Added.
* fast/viewport/viewport-49.html: Added.
* fast/viewport/viewport-5-expected.txt: Added.
* fast/viewport/viewport-5.html: Added.
* fast/viewport/viewport-50-expected.txt: Added.
* fast/viewport/viewport-50.html: Added.
* fast/viewport/viewport-51-expected.txt: Added.
* fast/viewport/viewport-51.html: Added.
* fast/viewport/viewport-52-expected.txt: Added.
* fast/viewport/viewport-52.html: Added.
* fast/viewport/viewport-53-expected.txt: Added.
* fast/viewport/viewport-53.html: Added.
* fast/viewport/viewport-54-expected.txt: Added.
* fast/viewport/viewport-54.html: Added.
* fast/viewport/viewport-55-expected.txt: Added.
* fast/viewport/viewport-55.html: Added.
* fast/viewport/viewport-56-expected.txt: Added.
* fast/viewport/viewport-56.html: Added.
* fast/viewport/viewport-57-expected.txt: Added.
* fast/viewport/viewport-57.html: Added.
* fast/viewport/viewport-58-expected.txt: Added.
* fast/viewport/viewport-58.html: Added.
* fast/viewport/viewport-59-expected.txt: Added.
* fast/viewport/viewport-59.html: Added.
* fast/viewport/viewport-6-expected.txt: Added.
* fast/viewport/viewport-6.html: Added.
* fast/viewport/viewport-60-expected.txt: Added.
* fast/viewport/viewport-60.html: Added.
* fast/viewport/viewport-61-expected.txt: Added.
* fast/viewport/viewport-61.html: Added.
* fast/viewport/viewport-62-expected.txt: Added.
* fast/viewport/viewport-62.html: Added.
* fast/viewport/viewport-63-expected.txt: Added.
* fast/viewport/viewport-63.html: Added.
* fast/viewport/viewport-64-expected.txt: Added.
* fast/viewport/viewport-64.html: Added.
* fast/viewport/viewport-65.html: Added.
* fast/viewport/viewport-66-expected.txt: Added.
* fast/viewport/viewport-66.html: Added.
* fast/viewport/viewport-67-expected.txt: Added.
* fast/viewport/viewport-67.html: Added.
* fast/viewport/viewport-68-expected.txt: Added.
* fast/viewport/viewport-68.html: Added.
* fast/viewport/viewport-69-expected.txt: Added.
* fast/viewport/viewport-69.html: Added.
* fast/viewport/viewport-7-expected.txt: Added.
* fast/viewport/viewport-7.html: Added.
* fast/viewport/viewport-70-expected.txt: Added.
* fast/viewport/viewport-70.html: Added.
* fast/viewport/viewport-71-expected.txt: Added.
* fast/viewport/viewport-71.html: Added.
* fast/viewport/viewport-72-expected.txt: Added.
* fast/viewport/viewport-72.html: Added.
* fast/viewport/viewport-73-expected.txt: Added.
* fast/viewport/viewport-73.html: Added.
* fast/viewport/viewport-74-expected.txt: Added.
* fast/viewport/viewport-74.html: Added.
* fast/viewport/viewport-75-expected.txt: Added.
* fast/viewport/viewport-75.html: Added.
* fast/viewport/viewport-76-expected.txt: Added.
* fast/viewport/viewport-76.html: Added.
* fast/viewport/viewport-77-expected.txt: Added.
* fast/viewport/viewport-77.html: Added.
* fast/viewport/viewport-78-expected.txt: Added.
* fast/viewport/viewport-78.html: Added.
* fast/viewport/viewport-79-expected.txt: Added.
* fast/viewport/viewport-79.html: Added.
* fast/viewport/viewport-8-expected.txt: Added.
* fast/viewport/viewport-8.html: Added.
* fast/viewport/viewport-80-expected.txt: Added.
* fast/viewport/viewport-80.html: Added.
* fast/viewport/viewport-81-expected.txt: Added.
* fast/viewport/viewport-81.html: Added.
* fast/viewport/viewport-82.html: Added.
* fast/viewport/viewport-83-expected.txt: Added.
* fast/viewport/viewport-83.html: Added.
* fast/viewport/viewport-84.html: Added.
* fast/viewport/viewport-85-expected.txt: Added.
* fast/viewport/viewport-85.html: Added.
* fast/viewport/viewport-86-expected.txt: Added.
* fast/viewport/viewport-86.html: Added.
* fast/viewport/viewport-87.html: Added.
* fast/viewport/viewport-88-expected.txt: Added.
* fast/viewport/viewport-88.html: Added.
* fast/viewport/viewport-9-expected.txt: Added.
* fast/viewport/viewport-9.html: Added.
* fast/viewport/viewport-90-expected.txt: Added.
* fast/viewport/viewport-90.html: Added.
* platform/gtk/Skipped: Skip tests due to missing DRT support.
* platform/mac/Skipped: Skip tests due to missing DRT support.
* platform/win/Skipped: Skip tests due to missing DRT support.
* platform/qt/Skipped: Skip failing tests.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67376 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 65753a7..a5f22b6 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,244 @@
+2010-08-27  Kenneth Rohde Christiansen  <kenneth@webkit.org>
+
+        Reviewed by Antti Koivisto.
+
+        Add tests for the viewport meta tag algorithm and parsing,
+        based on a test suite developed by Opera employees
+        Rune Lillesveen and Øyvind Stenhaug.
+
+        * fast/viewport/viewport-1-expected.txt: Added.
+        * fast/viewport/viewport-1.html: Added.
+        * fast/viewport/viewport-10-expected.txt: Added.
+        * fast/viewport/viewport-10.html: Added.
+        * fast/viewport/viewport-100-expected.txt: Added.
+        * fast/viewport/viewport-100.html: Added.
+        * fast/viewport/viewport-101-expected.txt: Added.
+        * fast/viewport/viewport-101.html: Added.
+        * fast/viewport/viewport-102-expected.txt: Added.
+        * fast/viewport/viewport-102.html: Added.
+        * fast/viewport/viewport-103-expected.txt: Added.
+        * fast/viewport/viewport-103.html: Added.
+        * fast/viewport/viewport-104-expected.txt: Added.
+        * fast/viewport/viewport-104.html: Added.
+        * fast/viewport/viewport-105-expected.txt: Added.
+        * fast/viewport/viewport-105.html: Added.
+        * fast/viewport/viewport-106-expected.txt: Added.
+        * fast/viewport/viewport-106.html: Added.
+        * fast/viewport/viewport-107-expected.txt: Added.
+        * fast/viewport/viewport-107.html: Added.
+        * fast/viewport/viewport-108-expected.txt: Added.
+        * fast/viewport/viewport-108.html: Added.
+        * fast/viewport/viewport-109-expected.txt: Added.
+        * fast/viewport/viewport-109.html: Added.
+        * fast/viewport/viewport-11-expected.txt: Added.
+        * fast/viewport/viewport-11.html: Added.
+        * fast/viewport/viewport-110-expected.txt: Added.
+        * fast/viewport/viewport-110.html: Added.
+        * fast/viewport/viewport-111-expected.txt: Added.
+        * fast/viewport/viewport-111.html: Added.
+        * fast/viewport/viewport-112-expected.txt: Added.
+        * fast/viewport/viewport-112.html: Added.
+        * fast/viewport/viewport-113-expected.txt: Added.
+        * fast/viewport/viewport-113.html: Added.
+        * fast/viewport/viewport-114-expected.txt: Added.
+        * fast/viewport/viewport-114.html: Added.
+        * fast/viewport/viewport-115-expected.txt: Added.
+        * fast/viewport/viewport-115.html: Added.
+        * fast/viewport/viewport-116-expected.txt: Added.
+        * fast/viewport/viewport-116.html: Added.
+        * fast/viewport/viewport-117-expected.txt: Added.
+        * fast/viewport/viewport-117.html: Added.
+        * fast/viewport/viewport-118-expected.txt: Added.
+        * fast/viewport/viewport-118.html: Added.
+        * fast/viewport/viewport-119-expected.txt: Added.
+        * fast/viewport/viewport-119.html: Added.
+        * fast/viewport/viewport-12-expected.txt: Added.
+        * fast/viewport/viewport-12.html: Added.
+        * fast/viewport/viewport-120-expected.txt: Added.
+        * fast/viewport/viewport-120.html: Added.
+        * fast/viewport/viewport-121-expected.txt: Added.
+        * fast/viewport/viewport-121.html: Added.
+        * fast/viewport/viewport-122-expected.txt: Added.
+        * fast/viewport/viewport-122.html: Added.
+        * fast/viewport/viewport-123-expected.txt: Added.
+        * fast/viewport/viewport-123.html: Added.
+        * fast/viewport/viewport-124-expected.txt: Added.
+        * fast/viewport/viewport-124.html: Added.
+        * fast/viewport/viewport-125-expected.txt: Added.
+        * fast/viewport/viewport-125.html: Added.
+        * fast/viewport/viewport-126.html: Added.
+        * fast/viewport/viewport-127.html: Added.
+        * fast/viewport/viewport-13-expected.txt: Added.
+        * fast/viewport/viewport-13.html: Added.
+        * fast/viewport/viewport-14-expected.txt: Added.
+        * fast/viewport/viewport-14.html: Added.
+        * fast/viewport/viewport-15-expected.txt: Added.
+        * fast/viewport/viewport-15.html: Added.
+        * fast/viewport/viewport-16-expected.txt: Added.
+        * fast/viewport/viewport-16.html: Added.
+        * fast/viewport/viewport-17-expected.txt: Added.
+        * fast/viewport/viewport-17.html: Added.
+        * fast/viewport/viewport-18-expected.txt: Added.
+        * fast/viewport/viewport-18.html: Added.
+        * fast/viewport/viewport-19-expected.txt: Added.
+        * fast/viewport/viewport-19.html: Added.
+        * fast/viewport/viewport-2-expected.txt: Added.
+        * fast/viewport/viewport-2.html: Added.
+        * fast/viewport/viewport-20-expected.txt: Added.
+        * fast/viewport/viewport-20.html: Added.
+        * fast/viewport/viewport-21-expected.txt: Added.
+        * fast/viewport/viewport-21.html: Added.
+        * fast/viewport/viewport-22-expected.txt: Added.
+        * fast/viewport/viewport-22.html: Added.
+        * fast/viewport/viewport-23-expected.txt: Added.
+        * fast/viewport/viewport-23.html: Added.
+        * fast/viewport/viewport-24-expected.txt: Added.
+        * fast/viewport/viewport-24.html: Added.
+        * fast/viewport/viewport-25-expected.txt: Added.
+        * fast/viewport/viewport-25.html: Added.
+        * fast/viewport/viewport-26-expected.txt: Added.
+        * fast/viewport/viewport-26.html: Added.
+        * fast/viewport/viewport-27-expected.txt: Added.
+        * fast/viewport/viewport-27.html: Added.
+        * fast/viewport/viewport-28-expected.txt: Added.
+        * fast/viewport/viewport-28.html: Added.
+        * fast/viewport/viewport-29-expected.txt: Added.
+        * fast/viewport/viewport-29.html: Added.
+        * fast/viewport/viewport-3-expected.txt: Added.
+        * fast/viewport/viewport-3.html: Added.
+        * fast/viewport/viewport-30-expected.txt: Added.
+        * fast/viewport/viewport-30.html: Added.
+        * fast/viewport/viewport-31-expected.txt: Added.
+        * fast/viewport/viewport-31.html: Added.
+        * fast/viewport/viewport-32-expected.txt: Added.
+        * fast/viewport/viewport-32.html: Added.
+        * fast/viewport/viewport-33-expected.txt: Added.
+        * fast/viewport/viewport-33.html: Added.
+        * fast/viewport/viewport-34-expected.txt: Added.
+        * fast/viewport/viewport-34.html: Added.
+        * fast/viewport/viewport-35-expected.txt: Added.
+        * fast/viewport/viewport-35.html: Added.
+        * fast/viewport/viewport-36-expected.txt: Added.
+        * fast/viewport/viewport-36.html: Added.
+        * fast/viewport/viewport-37-expected.txt: Added.
+        * fast/viewport/viewport-37.html: Added.
+        * fast/viewport/viewport-38-expected.txt: Added.
+        * fast/viewport/viewport-38.html: Added.
+        * fast/viewport/viewport-39-expected.txt: Added.
+        * fast/viewport/viewport-39.html: Added.
+        * fast/viewport/viewport-4-expected.txt: Added.
+        * fast/viewport/viewport-4.html: Added.
+        * fast/viewport/viewport-40-expected.txt: Added.
+        * fast/viewport/viewport-40.html: Added.
+        * fast/viewport/viewport-41-expected.txt: Added.
+        * fast/viewport/viewport-41.html: Added.
+        * fast/viewport/viewport-42-expected.txt: Added.
+        * fast/viewport/viewport-42.html: Added.
+        * fast/viewport/viewport-43-expected.txt: Added.
+        * fast/viewport/viewport-43.html: Added.
+        * fast/viewport/viewport-44-expected.txt: Added.
+        * fast/viewport/viewport-44.html: Added.
+        * fast/viewport/viewport-45-expected.txt: Added.
+        * fast/viewport/viewport-45.html: Added.
+        * fast/viewport/viewport-46-expected.txt: Added.
+        * fast/viewport/viewport-46.html: Added.
+        * fast/viewport/viewport-47-expected.txt: Added.
+        * fast/viewport/viewport-47.html: Added.
+        * fast/viewport/viewport-48-expected.txt: Added.
+        * fast/viewport/viewport-48.html: Added.
+        * fast/viewport/viewport-49-expected.txt: Added.
+        * fast/viewport/viewport-49.html: Added.
+        * fast/viewport/viewport-5-expected.txt: Added.
+        * fast/viewport/viewport-5.html: Added.
+        * fast/viewport/viewport-50-expected.txt: Added.
+        * fast/viewport/viewport-50.html: Added.
+        * fast/viewport/viewport-51-expected.txt: Added.
+        * fast/viewport/viewport-51.html: Added.
+        * fast/viewport/viewport-52-expected.txt: Added.
+        * fast/viewport/viewport-52.html: Added.
+        * fast/viewport/viewport-53-expected.txt: Added.
+        * fast/viewport/viewport-53.html: Added.
+        * fast/viewport/viewport-54-expected.txt: Added.
+        * fast/viewport/viewport-54.html: Added.
+        * fast/viewport/viewport-55-expected.txt: Added.
+        * fast/viewport/viewport-55.html: Added.
+        * fast/viewport/viewport-56-expected.txt: Added.
+        * fast/viewport/viewport-56.html: Added.
+        * fast/viewport/viewport-57-expected.txt: Added.
+        * fast/viewport/viewport-57.html: Added.
+        * fast/viewport/viewport-58-expected.txt: Added.
+        * fast/viewport/viewport-58.html: Added.
+        * fast/viewport/viewport-59-expected.txt: Added.
+        * fast/viewport/viewport-59.html: Added.
+        * fast/viewport/viewport-6-expected.txt: Added.
+        * fast/viewport/viewport-6.html: Added.
+        * fast/viewport/viewport-60-expected.txt: Added.
+        * fast/viewport/viewport-60.html: Added.
+        * fast/viewport/viewport-61-expected.txt: Added.
+        * fast/viewport/viewport-61.html: Added.
+        * fast/viewport/viewport-62-expected.txt: Added.
+        * fast/viewport/viewport-62.html: Added.
+        * fast/viewport/viewport-63-expected.txt: Added.
+        * fast/viewport/viewport-63.html: Added.
+        * fast/viewport/viewport-64-expected.txt: Added.
+        * fast/viewport/viewport-64.html: Added.
+        * fast/viewport/viewport-65.html: Added.
+        * fast/viewport/viewport-66-expected.txt: Added.
+        * fast/viewport/viewport-66.html: Added.
+        * fast/viewport/viewport-67-expected.txt: Added.
+        * fast/viewport/viewport-67.html: Added.
+        * fast/viewport/viewport-68-expected.txt: Added.
+        * fast/viewport/viewport-68.html: Added.
+        * fast/viewport/viewport-69-expected.txt: Added.
+        * fast/viewport/viewport-69.html: Added.
+        * fast/viewport/viewport-7-expected.txt: Added.
+        * fast/viewport/viewport-7.html: Added.
+        * fast/viewport/viewport-70-expected.txt: Added.
+        * fast/viewport/viewport-70.html: Added.
+        * fast/viewport/viewport-71-expected.txt: Added.
+        * fast/viewport/viewport-71.html: Added.
+        * fast/viewport/viewport-72-expected.txt: Added.
+        * fast/viewport/viewport-72.html: Added.
+        * fast/viewport/viewport-73-expected.txt: Added.
+        * fast/viewport/viewport-73.html: Added.
+        * fast/viewport/viewport-74-expected.txt: Added.
+        * fast/viewport/viewport-74.html: Added.
+        * fast/viewport/viewport-75-expected.txt: Added.
+        * fast/viewport/viewport-75.html: Added.
+        * fast/viewport/viewport-76-expected.txt: Added.
+        * fast/viewport/viewport-76.html: Added.
+        * fast/viewport/viewport-77-expected.txt: Added.
+        * fast/viewport/viewport-77.html: Added.
+        * fast/viewport/viewport-78-expected.txt: Added.
+        * fast/viewport/viewport-78.html: Added.
+        * fast/viewport/viewport-79-expected.txt: Added.
+        * fast/viewport/viewport-79.html: Added.
+        * fast/viewport/viewport-8-expected.txt: Added.
+        * fast/viewport/viewport-8.html: Added.
+        * fast/viewport/viewport-80-expected.txt: Added.
+        * fast/viewport/viewport-80.html: Added.
+        * fast/viewport/viewport-81-expected.txt: Added.
+        * fast/viewport/viewport-81.html: Added.
+        * fast/viewport/viewport-82.html: Added.
+        * fast/viewport/viewport-83-expected.txt: Added.
+        * fast/viewport/viewport-83.html: Added.
+        * fast/viewport/viewport-84.html: Added.
+        * fast/viewport/viewport-85-expected.txt: Added.
+        * fast/viewport/viewport-85.html: Added.
+        * fast/viewport/viewport-86-expected.txt: Added.
+        * fast/viewport/viewport-86.html: Added.
+        * fast/viewport/viewport-87.html: Added.
+        * fast/viewport/viewport-88-expected.txt: Added.
+        * fast/viewport/viewport-88.html: Added.
+        * fast/viewport/viewport-9-expected.txt: Added.
+        * fast/viewport/viewport-9.html: Added.
+        * fast/viewport/viewport-90-expected.txt: Added.
+        * fast/viewport/viewport-90.html: Added.
+        * platform/gtk/Skipped: Skip tests due to missing DRT support.
+        * platform/mac/Skipped: Skip tests due to missing DRT support.
+        * platform/win/Skipped: Skip tests due to missing DRT support.
+        * platform/qt/Skipped: Skip failing tests.
+
 2010-09-12  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/LayoutTests/fast/viewport/viewport-1-expected.txt b/LayoutTests/fast/viewport/viewport-1-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-1-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-1.html b/LayoutTests/fast/viewport/viewport-1.html
new file mode 100644
index 0000000..39068ed
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-1.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport Meta with "width=device-width".</title>
+    <meta name="viewport" content="width=device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-10-expected.txt b/LayoutTests/fast/viewport/viewport-10-expected.txt
new file mode 100644
index 0000000..29a2ba8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-10-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 0.250000]
+
diff --git a/LayoutTests/fast/viewport/viewport-10.html b/LayoutTests/fast/viewport/viewport-10.html
new file mode 100644
index 0000000..28eddb1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-10.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0, initial-scale=10".</title>
+    <meta name="viewport" content="maximum-scale=0, initial-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-100-expected.txt b/LayoutTests/fast/viewport/viewport-100-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-100-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-100.html b/LayoutTests/fast/viewport/viewport-100.html
new file mode 100644
index 0000000..5467f12
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-100.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed ("= width=400")</title>
+    <meta name="viewport" content="= width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-101-expected.txt b/LayoutTests/fast/viewport/viewport-101-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-101-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-101.html b/LayoutTests/fast/viewport/viewport-101.html
new file mode 100644
index 0000000..d5e4c5e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-101.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed ("== width=400")</title>
+    <meta name="viewport" content="== width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-102-expected.txt b/LayoutTests/fast/viewport/viewport-102-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-102-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-102.html b/LayoutTests/fast/viewport/viewport-102.html
new file mode 100644
index 0000000..a790222
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-102.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed (" = width=400")</title>
+    <meta name="viewport" content=" = width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-103-expected.txt b/LayoutTests/fast/viewport/viewport-103-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-103-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-103.html b/LayoutTests/fast/viewport/viewport-103.html
new file mode 100644
index 0000000..51dcb5f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-103.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed (" == width=400")</title>
+    <meta name="viewport" content=" == width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-104-expected.txt b/LayoutTests/fast/viewport/viewport-104-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-104-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-104.html b/LayoutTests/fast/viewport/viewport-104.html
new file mode 100644
index 0000000..f03c833
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-104.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width is value in "x= width=400"</title>
+    <meta name="viewport" content="x= width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-105-expected.txt b/LayoutTests/fast/viewport/viewport-105-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-105-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-105.html b/LayoutTests/fast/viewport/viewport-105.html
new file mode 100644
index 0000000..7fb798f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-105.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width is value in "x== width=400"</title>
+    <meta name="viewport" content="x== width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-106-expected.txt b/LayoutTests/fast/viewport/viewport-106-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-106-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-106.html b/LayoutTests/fast/viewport/viewport-106.html
new file mode 100644
index 0000000..334c265
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-106.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width is value in "x = width=400"</title>
+    <meta name="viewport" content="x = width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-107-expected.txt b/LayoutTests/fast/viewport/viewport-107-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-107-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-107.html b/LayoutTests/fast/viewport/viewport-107.html
new file mode 100644
index 0000000..6529997
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-107.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width is value in "x == width=400"</title>
+    <meta name="viewport" content="x == width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-108-expected.txt b/LayoutTests/fast/viewport/viewport-108-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-108-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-108.html b/LayoutTests/fast/viewport/viewport-108.html
new file mode 100644
index 0000000..dded0e6
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-108.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed ("=x width=400")</title>
+    <meta name="viewport" content="=x width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-109-expected.txt b/LayoutTests/fast/viewport/viewport-109-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-109-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-109.html b/LayoutTests/fast/viewport/viewport-109.html
new file mode 100644
index 0000000..ce51206
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-109.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed ("==x width=400")</title>
+    <meta name="viewport" content="==x width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-11-expected.txt b/LayoutTests/fast/viewport/viewport-11-expected.txt
new file mode 100644
index 0000000..8fff83a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-11-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 0.500000]
+
diff --git a/LayoutTests/fast/viewport/viewport-11.html b/LayoutTests/fast/viewport/viewport-11.html
new file mode 100644
index 0000000..dc4b5f2
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-11.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0.5".</title>
+    <meta name="viewport" content="maximum-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-110-expected.txt b/LayoutTests/fast/viewport/viewport-110-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-110-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-110.html b/LayoutTests/fast/viewport/viewport-110.html
new file mode 100644
index 0000000..a08f0c2
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-110.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed (" =x width=400")</title>
+    <meta name="viewport" content=" =x width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-111-expected.txt b/LayoutTests/fast/viewport/viewport-111-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-111-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-111.html b/LayoutTests/fast/viewport/viewport-111.html
new file mode 100644
index 0000000..9f4d413
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-111.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property name not allowed (" ==x width=400")</title>
+    <meta name="viewport" content=" ==x width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-112-expected.txt b/LayoutTests/fast/viewport/viewport-112-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-112-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-112.html b/LayoutTests/fast/viewport/viewport-112.html
new file mode 100644
index 0000000..2dd646e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-112.html
@@ -0,0 +1,13 @@
+<head>
+    <title>'.' and ':' are not separators</title>
+    <meta name="viewport" content=".=: width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-113-expected.txt b/LayoutTests/fast/viewport/viewport-113-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-113-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-113.html b/LayoutTests/fast/viewport/viewport-113.html
new file mode 100644
index 0000000..9d7f57a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-113.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width not recognized in "=x hei og hopp width=400"</title>
+    <meta name="viewport" content="=x hei og hopp width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-114-expected.txt b/LayoutTests/fast/viewport/viewport-114-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-114-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-114.html b/LayoutTests/fast/viewport/viewport-114.html
new file mode 100644
index 0000000..9af15cb
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-114.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width not recognized in "x hei og hopp width=400"</title>
+    <meta name="viewport" content="x hei og hopp width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-115-expected.txt b/LayoutTests/fast/viewport/viewport-115-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-115-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-115.html b/LayoutTests/fast/viewport/viewport-115.html
new file mode 100644
index 0000000..7bc7566
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-115.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width recognized in "width width=400"</title>
+    <meta name="viewport" content="width width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-116-expected.txt b/LayoutTests/fast/viewport/viewport-116-expected.txt
new file mode 100644
index 0000000..ef583bc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-116-expected.txt
@@ -0,0 +1,2 @@
+viewport size 400x440 scale 0.800000 with limits [0.800000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-116.html b/LayoutTests/fast/viewport/viewport-116.html
new file mode 100644
index 0000000..c4b64ac
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-116.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width recognized in "width height=400"</title>
+    <meta name="viewport" content="width height=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-117-expected.txt b/LayoutTests/fast/viewport/viewport-117-expected.txt
new file mode 100644
index 0000000..aefe896
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-117-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x400 scale 0.880000 with limits [0.880000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-117.html b/LayoutTests/fast/viewport/viewport-117.html
new file mode 100644
index 0000000..ca3b3ad
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-117.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Height recognized in "height width=400"</title>
+    <meta name="viewport" content="height width=400">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-118-expected.txt b/LayoutTests/fast/viewport/viewport-118-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-118-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-118.html b/LayoutTests/fast/viewport/viewport-118.html
new file mode 100644
index 0000000..52a7ce5
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-118.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Width recognized in "width=device-width=" because '=' is a separator</title>
+    <meta name="viewport" content="width=device-width=">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-119-expected.txt b/LayoutTests/fast/viewport/viewport-119-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-119-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-119.html b/LayoutTests/fast/viewport/viewport-119.html
new file mode 100644
index 0000000..715d0cc
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-119.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that horizontal tab is a separator space</title>
+    <meta name="viewport" content="width=&#x09;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-12-expected.txt b/LayoutTests/fast/viewport/viewport-12-expected.txt
new file mode 100644
index 0000000..d18cac5
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-12-expected.txt
@@ -0,0 +1,2 @@
+viewport size 640x704 scale 0.500000 with limits [0.500000, 0.500000]
+
diff --git a/LayoutTests/fast/viewport/viewport-12.html b/LayoutTests/fast/viewport/viewport-12.html
new file mode 100644
index 0000000..3288a4e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-12.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0.5, initial-scale=4".</title>
+    <meta name="viewport" content="maximum-scale=0.5, initial-scale=4">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-120-expected.txt b/LayoutTests/fast/viewport/viewport-120-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-120-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-120.html b/LayoutTests/fast/viewport/viewport-120.html
new file mode 100644
index 0000000..6245abf
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-120.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that line feed is a separator space</title>
+    <meta name="viewport" content="width=&#x0a;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-121-expected.txt b/LayoutTests/fast/viewport/viewport-121-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-121-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-121.html b/LayoutTests/fast/viewport/viewport-121.html
new file mode 100644
index 0000000..d02b97b
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-121.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that vertical tab is not a separator space</title>
+    <meta name="viewport" content="width=&#x0b;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-122-expected.txt b/LayoutTests/fast/viewport/viewport-122-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-122-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-122.html b/LayoutTests/fast/viewport/viewport-122.html
new file mode 100644
index 0000000..ec15222
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-122.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that form feed is not a separator space</title>
+    <meta name="viewport" content="width=&#x0c;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-123-expected.txt b/LayoutTests/fast/viewport/viewport-123-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-123-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-123.html b/LayoutTests/fast/viewport/viewport-123.html
new file mode 100644
index 0000000..d678a30
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-123.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that carriage return is a separator space</title>
+    <meta name="viewport" content="width=&#x0d;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-124-expected.txt b/LayoutTests/fast/viewport/viewport-124-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-124-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-124.html b/LayoutTests/fast/viewport/viewport-124.html
new file mode 100644
index 0000000..7258389
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-124.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that the space entity is a separator</title>
+    <meta name="viewport" content="width=&#x20;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-125-expected.txt b/LayoutTests/fast/viewport/viewport-125-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-125-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-125.html b/LayoutTests/fast/viewport/viewport-125.html
new file mode 100644
index 0000000..af4e460
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-125.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that EM SPACE is not a separator space</title>
+    <meta name="viewport" content="width=&#x2003;device-width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-126.html b/LayoutTests/fast/viewport/viewport-126.html
new file mode 100644
index 0000000..8649bff
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-126.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Just a property name is dropped</title>
+    <meta name="viewport" content="width">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-127.html b/LayoutTests/fast/viewport/viewport-127.html
new file mode 100644
index 0000000..42f7b82
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-127.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Empty property value is dropped</title>
+    <meta name="viewport" content="width=">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-13-expected.txt b/LayoutTests/fast/viewport/viewport-13-expected.txt
new file mode 100644
index 0000000..be5ed3d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-13-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 0.500000]
+
diff --git a/LayoutTests/fast/viewport/viewport-13.html b/LayoutTests/fast/viewport/viewport-13.html
new file mode 100644
index 0000000..ee14717
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-13.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0.5, initial-scale=0.2".</title>
+    <meta name="viewport" content="maximum-scale=0.5, initial-scale=0.2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-14-expected.txt b/LayoutTests/fast/viewport/viewport-14-expected.txt
new file mode 100644
index 0000000..97a9b9a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-14-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 1.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-14.html b/LayoutTests/fast/viewport/viewport-14.html
new file mode 100644
index 0000000..b6a86082
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-14.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=1, initial-scale=2".</title>
+    <meta name="viewport" content="maximum-scale=1, initial-scale=2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-15-expected.txt b/LayoutTests/fast/viewport/viewport-15-expected.txt
new file mode 100644
index 0000000..aed900d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-15-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-15.html b/LayoutTests/fast/viewport/viewport-15.html
new file mode 100644
index 0000000..a27b060
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-15.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=1".</title>
+    <meta name="viewport" content="minimum-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-16-expected.txt b/LayoutTests/fast/viewport/viewport-16-expected.txt
new file mode 100644
index 0000000..bff009a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-16-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-16.html b/LayoutTests/fast/viewport/viewport-16.html
new file mode 100644
index 0000000..c8261b5
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-16.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=8".</title>
+    <meta name="viewport" content="minimum-scale=8">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-17-expected.txt b/LayoutTests/fast/viewport/viewport-17-expected.txt
new file mode 100644
index 0000000..bff009a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-17-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-17.html b/LayoutTests/fast/viewport/viewport-17.html
new file mode 100644
index 0000000..c781ca1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-17.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=10".</title>
+    <meta name="viewport" content="minimum-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-18-expected.txt b/LayoutTests/fast/viewport/viewport-18-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-18-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-18.html b/LayoutTests/fast/viewport/viewport-18.html
new file mode 100644
index 0000000..0037c99
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-18.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=8, initial-scale=6".</title>
+    <meta name="viewport" content="minimum-scale=8, initial-scale=6">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-19-expected.txt b/LayoutTests/fast/viewport/viewport-19-expected.txt
new file mode 100644
index 0000000..ef09503
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-19-expected.txt
@@ -0,0 +1,2 @@
+viewport size 160x176 scale 2.000000 with limits [2.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-19.html b/LayoutTests/fast/viewport/viewport-19.html
new file mode 100644
index 0000000..129ffc7
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-19.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "initial-scale=1, minimum-scale=2".</title>
+    <meta name="viewport" content="initial-scale=1, minimum-scale=2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-2-expected.txt b/LayoutTests/fast/viewport/viewport-2-expected.txt
new file mode 100644
index 0000000..5800874
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-2-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x480 scale 0.733333 with limits [0.733333, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-2.html b/LayoutTests/fast/viewport/viewport-2.html
new file mode 100644
index 0000000..c591a7f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-2.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport Meta with "height=device-height".</title>
+    <meta name="viewport" content="height=device-height">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-20-expected.txt b/LayoutTests/fast/viewport/viewport-20-expected.txt
new file mode 100644
index 0000000..677ed69
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-20-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-20.html b/LayoutTests/fast/viewport/viewport-20.html
new file mode 100644
index 0000000..68d84bf
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-20.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=10, maximum-scale=0.1".</title>
+    <meta name="viewport" content="minimum-scale=10, maximum-scale=0.1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-21-expected.txt b/LayoutTests/fast/viewport/viewport-21-expected.txt
new file mode 100644
index 0000000..677ed69
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-21-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-21.html b/LayoutTests/fast/viewport/viewport-21.html
new file mode 100644
index 0000000..a5495f6
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-21.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0.1, minimum-scale=10".</title>
+    <meta name="viewport" content="maximum-scale=0.1, minimum-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-22-expected.txt b/LayoutTests/fast/viewport/viewport-22-expected.txt
new file mode 100644
index 0000000..677ed69
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-22-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-22.html b/LayoutTests/fast/viewport/viewport-22.html
new file mode 100644
index 0000000..5e11d4e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-22.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=10, maximum-scale=1".</title>
+    <meta name="viewport" content="minimum-scale=10, maximum-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-23-expected.txt b/LayoutTests/fast/viewport/viewport-23-expected.txt
new file mode 100644
index 0000000..74a5284
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-23-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 3.000000 with limits [3.000000, 3.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-23.html b/LayoutTests/fast/viewport/viewport-23.html
new file mode 100644
index 0000000..799b710
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-23.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=3, maximum-scale=2".</title>
+    <meta name="viewport" content="minimum-scale=3, maximum-scale=2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-24-expected.txt b/LayoutTests/fast/viewport/viewport-24-expected.txt
new file mode 100644
index 0000000..f28cba1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-24-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 4.000000 with limits [4.000000, 4.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-24.html b/LayoutTests/fast/viewport/viewport-24.html
new file mode 100644
index 0000000..f5cad72
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-24.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=3, minimum-scale=4".</title>
+    <meta name="viewport" content="maximum-scale=3, minimum-scale=4">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-25-expected.txt b/LayoutTests/fast/viewport/viewport-25-expected.txt
new file mode 100644
index 0000000..677ed69
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-25-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-25.html b/LayoutTests/fast/viewport/viewport-25.html
new file mode 100644
index 0000000..500e9e8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-25.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=10, minimum-scale=10".</title>
+    <meta name="viewport" content="maximum-scale=10, minimum-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-26-expected.txt b/LayoutTests/fast/viewport/viewport-26-expected.txt
new file mode 100644
index 0000000..29c0f5a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-26-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 8.000000 with limits [8.000000, 9.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-26.html b/LayoutTests/fast/viewport/viewport-26.html
new file mode 100644
index 0000000..b06be13
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-26.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=8, maximum-scale=9".</title>
+    <meta name="viewport" content="minimum-scale=8, maximum-scale=9">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-27-expected.txt b/LayoutTests/fast/viewport/viewport-27-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-27-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-27.html b/LayoutTests/fast/viewport/viewport-27.html
new file mode 100644
index 0000000..b66a5f1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-27.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with empty content ("").</title>
+    <meta name="viewport" content="">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-28-expected.txt b/LayoutTests/fast/viewport/viewport-28-expected.txt
new file mode 100644
index 0000000..c9c6079
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-28-expected.txt
@@ -0,0 +1,2 @@
+viewport size 480x528 scale 0.666667 with limits [0.666667, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-28.html b/LayoutTests/fast/viewport/viewport-28.html
new file mode 100644
index 0000000..dfe1a1d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-28.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=device-height".</title>
+    <meta name="viewport" content="width=device-height">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-29-expected.txt b/LayoutTests/fast/viewport/viewport-29-expected.txt
new file mode 100644
index 0000000..9ed9e8d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-29-expected.txt
@@ -0,0 +1,2 @@
+viewport size 700x770 scale 0.457143 with limits [0.457143, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-29.html b/LayoutTests/fast/viewport/viewport-29.html
new file mode 100644
index 0000000..77760d8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-29.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=700".</title>
+    <meta name="viewport" content="width=700">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-3-expected.txt b/LayoutTests/fast/viewport/viewport-3-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-3-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-3.html b/LayoutTests/fast/viewport/viewport-3.html
new file mode 100644
index 0000000..4d7b0fa
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-3.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "initial-scale=1.0".</title>
+    <meta name="viewport" content="initial-scale=1.0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-30-expected.txt b/LayoutTests/fast/viewport/viewport-30-expected.txt
new file mode 100644
index 0000000..577dd7c
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-30-expected.txt
@@ -0,0 +1,2 @@
+viewport size 200x220 scale 1.600000 with limits [1.600000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-30.html b/LayoutTests/fast/viewport/viewport-30.html
new file mode 100644
index 0000000..5398810
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-30.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=200".</title>
+    <meta name="viewport" content="width=200">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-31-expected.txt b/LayoutTests/fast/viewport/viewport-31-expected.txt
new file mode 100644
index 0000000..055c335
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-31-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x700 scale 0.502857 with limits [0.502857, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-31.html b/LayoutTests/fast/viewport/viewport-31.html
new file mode 100644
index 0000000..4aa3fda
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-31.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "height=700".</title>
+    <meta name="viewport" content="height=700">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-32-expected.txt b/LayoutTests/fast/viewport/viewport-32-expected.txt
new file mode 100644
index 0000000..6afaa00
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-32-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x200 scale 1.760000 with limits [1.760000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-32.html b/LayoutTests/fast/viewport/viewport-32.html
new file mode 100644
index 0000000..8c1cc22
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-32.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "height=200".</title>
+    <meta name="viewport" content="height=200">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-33-expected.txt b/LayoutTests/fast/viewport/viewport-33-expected.txt
new file mode 100644
index 0000000..dbc4620
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-33-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 2.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-33.html b/LayoutTests/fast/viewport/viewport-33.html
new file mode 100644
index 0000000..3a27f1c
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-33.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=device-width, initial-scale=2".</title>
+    <meta name="viewport" content="width=device-width, initial-scale=2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-34-expected.txt b/LayoutTests/fast/viewport/viewport-34-expected.txt
new file mode 100644
index 0000000..b04e104
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-34-expected.txt
@@ -0,0 +1,2 @@
+viewport size 640x704 scale 0.500000 with limits [0.500000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-34.html b/LayoutTests/fast/viewport/viewport-34.html
new file mode 100644
index 0000000..7525480
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-34.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=device-width, initial-scale=0.5".</title>
+    <meta name="viewport" content="width=device-width, initial-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-35-expected.txt b/LayoutTests/fast/viewport/viewport-35-expected.txt
new file mode 100644
index 0000000..c4020c1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-35-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-35.html b/LayoutTests/fast/viewport/viewport-35.html
new file mode 100644
index 0000000..b09b713
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-35.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=480, initial-scale=0.1".</title>
+    <meta name="viewport" content="width=480, initial-scale=0.1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-36-expected.txt b/LayoutTests/fast/viewport/viewport-36-expected.txt
new file mode 100644
index 0000000..4284f99
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-36-expected.txt
@@ -0,0 +1,2 @@
+viewport size 636x700 scale 1.600000 with limits [0.502857, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-36.html b/LayoutTests/fast/viewport/viewport-36.html
new file mode 100644
index 0000000..263d93e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-36.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "height=700, initial-scale=1.6".</title>
+    <meta name="viewport" content="height=700, initial-scale=1.6">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-37-expected.txt b/LayoutTests/fast/viewport/viewport-37-expected.txt
new file mode 100644
index 0000000..ddf3cce
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-37-expected.txt
@@ -0,0 +1,2 @@
+viewport size 436x480 scale 1.000000 with limits [0.733333, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-37.html b/LayoutTests/fast/viewport/viewport-37.html
new file mode 100644
index 0000000..d500821
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-37.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "height=device-height, initial-scale=1".</title>
+    <meta name="viewport" content="height=device-height, initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-38-expected.txt b/LayoutTests/fast/viewport/viewport-38-expected.txt
new file mode 100644
index 0000000..b04e104
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-38-expected.txt
@@ -0,0 +1,2 @@
+viewport size 640x704 scale 0.500000 with limits [0.500000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-38.html b/LayoutTests/fast/viewport/viewport-38.html
new file mode 100644
index 0000000..36ca681
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-38.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "height=200, initial-scale=0.5".</title>
+    <meta name="viewport" content="height=200, initial-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-39-expected.txt b/LayoutTests/fast/viewport/viewport-39-expected.txt
new file mode 100644
index 0000000..6884733
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-39-expected.txt
@@ -0,0 +1,2 @@
+viewport size 200x700 scale 1.600000 with limits [1.600000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-39.html b/LayoutTests/fast/viewport/viewport-39.html
new file mode 100644
index 0000000..6a9a7ad
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-39.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=200, height=700".</title>
+    <meta name="viewport" content="width=200, height=700">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-4-expected.txt b/LayoutTests/fast/viewport/viewport-4-expected.txt
new file mode 100644
index 0000000..ef09503
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-4-expected.txt
@@ -0,0 +1,2 @@
+viewport size 160x176 scale 2.000000 with limits [2.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-4.html b/LayoutTests/fast/viewport/viewport-4.html
new file mode 100644
index 0000000..6344677c
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-4.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "initial-scale=2.0".</title>
+    <meta name="viewport" content="initial-scale=2.0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-40-expected.txt b/LayoutTests/fast/viewport/viewport-40-expected.txt
new file mode 100644
index 0000000..fdf5937
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-40-expected.txt
@@ -0,0 +1,2 @@
+viewport size 700x480 scale 0.733333 with limits [0.733333, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-40.html b/LayoutTests/fast/viewport/viewport-40.html
new file mode 100644
index 0000000..0d006e6
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-40.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=700, height=device-height".</title>
+    <meta name="viewport" content="width=700, height=device-height">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-41-expected.txt b/LayoutTests/fast/viewport/viewport-41-expected.txt
new file mode 100644
index 0000000..67b377a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-41-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1000x704 scale 0.500000 with limits [0.500000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-41.html b/LayoutTests/fast/viewport/viewport-41.html
new file mode 100644
index 0000000..7f27b7d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-41.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=1000, height=device-height, initial-scale=0.5".</title>
+    <meta name="viewport" content="width=1000, height=device-height, initial-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-42-expected.txt b/LayoutTests/fast/viewport/viewport-42-expected.txt
new file mode 100644
index 0000000..6f188c6
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-42-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x1000 scale 2.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-42.html b/LayoutTests/fast/viewport/viewport-42.html
new file mode 100644
index 0000000..1a4ecad
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-42.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=device-width, height=1000, initial-scale=2".</title>
+    <meta name="viewport" content="width=device-width, height=1000, initial-scale=2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-43-expected.txt b/LayoutTests/fast/viewport/viewport-43-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-43-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-43.html b/LayoutTests/fast/viewport/viewport-43.html
new file mode 100644
index 0000000..96ce135
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-43.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=0".</title>
+    <meta name="viewport" content="width=0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-44-expected.txt b/LayoutTests/fast/viewport/viewport-44-expected.txt
new file mode 100644
index 0000000..983bfd5
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-44-expected.txt
@@ -0,0 +1,2 @@
+viewport size 10000x10000 scale 0.250000 with limits [0.250000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-44.html b/LayoutTests/fast/viewport/viewport-44.html
new file mode 100644
index 0000000..c93810b
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-44.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "width=15000, height=20000".</title>
+    <meta name="viewport" content="width=15000, height=20000">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-45-expected.txt b/LayoutTests/fast/viewport/viewport-45-expected.txt
new file mode 100644
index 0000000..241cf09
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-45-expected.txt
@@ -0,0 +1,2 @@
+viewport size 3200x3520 scale 0.100000 with limits [0.100000, 0.100000]
+
diff --git a/LayoutTests/fast/viewport/viewport-45.html b/LayoutTests/fast/viewport/viewport-45.html
new file mode 100644
index 0000000..fa80e02
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-45.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=0, maximum-scale=0".</title>
+    <meta name="viewport" content="minimum-scale=0, maximum-scale=0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-46-expected.txt b/LayoutTests/fast/viewport/viewport-46-expected.txt
new file mode 100644
index 0000000..ef2358a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-46-expected.txt
@@ -0,0 +1,2 @@
+viewport size 32x35 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-46.html b/LayoutTests/fast/viewport/viewport-46.html
new file mode 100644
index 0000000..8a0f267
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-46.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "minimum-scale=11, maximum-scale=13, initial-scale=12".</title>
+    <meta name="viewport" content="minimum-scale=11, maximum-scale=13, initial-scale=12">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-47-expected.txt b/LayoutTests/fast/viewport/viewport-47-expected.txt
new file mode 100644
index 0000000..d1bd037
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-47-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x3000 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-47.html b/LayoutTests/fast/viewport/viewport-47.html
new file mode 100644
index 0000000..a0794d8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-47.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that width is increased to fill the visual viewport.</title>
+    <meta name="viewport" content="width=10, height=3000, initial-scale=1.0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-48-expected.txt b/LayoutTests/fast/viewport/viewport-48-expected.txt
new file mode 100644
index 0000000..34b0f6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-48-expected.txt
@@ -0,0 +1,2 @@
+viewport size 3000x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-48.html b/LayoutTests/fast/viewport/viewport-48.html
new file mode 100644
index 0000000..b2e5a13
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-48.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that height is increased to fill the visual viewport.</title>
+    <meta name="viewport" content="width=3000, height=10, initial-scale=1.0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-49-expected.txt b/LayoutTests/fast/viewport/viewport-49-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-49-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-49.html b/LayoutTests/fast/viewport/viewport-49.html
new file mode 100644
index 0000000..0754f61
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-49.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that both width and height are increased to fill the visual viewport.</title>
+    <meta name="viewport" content="width=10, height=10, initial-scale=1.0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-5-expected.txt b/LayoutTests/fast/viewport/viewport-5-expected.txt
new file mode 100644
index 0000000..b04e104
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-5-expected.txt
@@ -0,0 +1,2 @@
+viewport size 640x704 scale 0.500000 with limits [0.500000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-5.html b/LayoutTests/fast/viewport/viewport-5.html
new file mode 100644
index 0000000..c3c808e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-5.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "initial-scale=0.5".</title>
+    <meta name="viewport" content="initial-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-50-expected.txt b/LayoutTests/fast/viewport/viewport-50-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-50-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-50.html b/LayoutTests/fast/viewport/viewport-50.html
new file mode 100644
index 0000000..66e8c39
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-50.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that negative width is translated to auto.</title>
+    <meta name="viewport" content="width=-100">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-51-expected.txt b/LayoutTests/fast/viewport/viewport-51-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-51-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-51.html b/LayoutTests/fast/viewport/viewport-51.html
new file mode 100644
index 0000000..f05987d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-51.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that negative height is translated to auto.</title>
+    <meta name="viewport" content="height=-1.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-52-expected.txt b/LayoutTests/fast/viewport/viewport-52-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-52-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-52.html b/LayoutTests/fast/viewport/viewport-52.html
new file mode 100644
index 0000000..fb942bb
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-52.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that unrecognized keyword translate to 0 for width.</title>
+    <meta name="viewport" content="width=garbage">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-53-expected.txt b/LayoutTests/fast/viewport/viewport-53-expected.txt
new file mode 100644
index 0000000..99cef45
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-53-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-53.html b/LayoutTests/fast/viewport/viewport-53.html
new file mode 100644
index 0000000..4e83067
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-53.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that unrecognized keyword translate to 0 for height.</title>
+    <meta name="viewport" content="height=y20">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-54-expected.txt b/LayoutTests/fast/viewport/viewport-54-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-54-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-54.html b/LayoutTests/fast/viewport/viewport-54.html
new file mode 100644
index 0000000..24f909a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-54.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that ';' is included in keyword</title>
+    <meta name="viewport" content="width=device-width;">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-55-expected.txt b/LayoutTests/fast/viewport/viewport-55-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-55-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-55.html b/LayoutTests/fast/viewport/viewport-55.html
new file mode 100644
index 0000000..9d46bd8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-55.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that 'yes' and 'no' translate to 0 for width/height.</title>
+    <meta name="viewport" content="width=yes, height=no">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-56-expected.txt b/LayoutTests/fast/viewport/viewport-56-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-56-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-56.html b/LayoutTests/fast/viewport/viewport-56.html
new file mode 100644
index 0000000..019a575
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-56.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that negative initial-scale is auto.</title>
+    <meta name="viewport" content="initial-scale=-1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-57-expected.txt b/LayoutTests/fast/viewport/viewport-57-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-57-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-57.html b/LayoutTests/fast/viewport/viewport-57.html
new file mode 100644
index 0000000..032e832
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-57.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that initial-scale=yes is 1.0.</title>
+    <meta name="viewport" content="initial-scale=yes">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-58-expected.txt b/LayoutTests/fast/viewport/viewport-58-expected.txt
new file mode 100644
index 0000000..27b39b4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-58-expected.txt
@@ -0,0 +1,2 @@
+viewport size 3200x3520 scale 0.100000 with limits [0.100000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-58.html b/LayoutTests/fast/viewport/viewport-58.html
new file mode 100644
index 0000000..e57009a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-58.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that minimum-scale=no is 0.</title>
+    <meta name="viewport" content="minimum-scale=no, initial-scale=0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-59-expected.txt b/LayoutTests/fast/viewport/viewport-59-expected.txt
new file mode 100644
index 0000000..97a9b9a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-59-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 1.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-59.html b/LayoutTests/fast/viewport/viewport-59.html
new file mode 100644
index 0000000..02fce83
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-59.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that maximum-scale=yes is 1.</title>
+    <meta name="viewport" content="maximum-scale=yes, initial-scale=2">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-6-expected.txt b/LayoutTests/fast/viewport/viewport-6-expected.txt
new file mode 100644
index 0000000..577dd7c
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-6-expected.txt
@@ -0,0 +1,2 @@
+viewport size 200x220 scale 1.600000 with limits [1.600000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-6.html b/LayoutTests/fast/viewport/viewport-6.html
new file mode 100644
index 0000000..100fb16
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-6.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "initial-scale=1.6".</title>
+    <meta name="viewport" content="initial-scale=1.6">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-60-expected.txt b/LayoutTests/fast/viewport/viewport-60-expected.txt
new file mode 100644
index 0000000..ef2358a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-60-expected.txt
@@ -0,0 +1,2 @@
+viewport size 32x35 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-60.html b/LayoutTests/fast/viewport/viewport-60.html
new file mode 100644
index 0000000..430a2f8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-60.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that maximum-scale=device-height is 10.</title>
+    <meta name="viewport" content="maximum-scale=device-height, initial-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-61-expected.txt b/LayoutTests/fast/viewport/viewport-61-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-61-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-61.html b/LayoutTests/fast/viewport/viewport-61.html
new file mode 100644
index 0000000..8aae52a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-61.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that space is a valid separator.</title>
+    <meta name="viewport" content="width=100 initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-62-expected.txt b/LayoutTests/fast/viewport/viewport-62-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-62-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-62.html b/LayoutTests/fast/viewport/viewport-62.html
new file mode 100644
index 0000000..baead5a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-62.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that comma is a valid separator.</title>
+    <meta name="viewport" content="width=100,initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-63-expected.txt b/LayoutTests/fast/viewport/viewport-63-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-63-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-63.html b/LayoutTests/fast/viewport/viewport-63.html
new file mode 100644
index 0000000..6e312b1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-63.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that comma is a valid separator (space before).</title>
+    <meta name="viewport" content="width=100 ,initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-64-expected.txt b/LayoutTests/fast/viewport/viewport-64-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-64-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-64.html b/LayoutTests/fast/viewport/viewport-64.html
new file mode 100644
index 0000000..5694713
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-64.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that comma is a valid separator (space after).</title>
+    <meta name="viewport" content="width=100, initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-65.html b/LayoutTests/fast/viewport/viewport-65.html
new file mode 100644
index 0000000..fcd4b42
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-65.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that semi-colon is not a valid separator (no spaces).</title>
+    <meta name="viewport" content="width=100;initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-66-expected.txt b/LayoutTests/fast/viewport/viewport-66-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-66-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-66.html b/LayoutTests/fast/viewport/viewport-66.html
new file mode 100644
index 0000000..ddaa016
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-66.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that semi-colon is not a valid separator (space before).</title>
+    <meta name="viewport" content="width=100 ;initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-67-expected.txt b/LayoutTests/fast/viewport/viewport-67-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-67-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-67.html b/LayoutTests/fast/viewport/viewport-67.html
new file mode 100644
index 0000000..94e33e2
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-67.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that semi-colon after number is ignored and space acts as a valid separator.</title>
+    <meta name="viewport" content="width=100; initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-68-expected.txt b/LayoutTests/fast/viewport/viewport-68-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-68-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-68.html b/LayoutTests/fast/viewport/viewport-68.html
new file mode 100644
index 0000000..6a8ae87
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-68.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that alpha character after number is ignored and space acts as a valid separator.</title>
+    <meta name="viewport" content="width=100x initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-69-expected.txt b/LayoutTests/fast/viewport/viewport-69-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-69-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-69.html b/LayoutTests/fast/viewport/viewport-69.html
new file mode 100644
index 0000000..b500f5a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-69.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that xinitial-scale property is dropped after space.</title>
+    <meta name="viewport" content="width=100 xinitial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-7-expected.txt b/LayoutTests/fast/viewport/viewport-7-expected.txt
new file mode 100644
index 0000000..29a2ba8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-7-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 0.250000]
+
diff --git a/LayoutTests/fast/viewport/viewport-7.html b/LayoutTests/fast/viewport/viewport-7.html
new file mode 100644
index 0000000..7a786b5
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-7.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0.0".</title>
+    <meta name="viewport" content="maximum-scale=0.0">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-70-expected.txt b/LayoutTests/fast/viewport/viewport-70-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-70-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-70.html b/LayoutTests/fast/viewport/viewport-70.html
new file mode 100644
index 0000000..3c6f06c
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-70.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that property name without a value does not cause synchronization on following space.</title>
+    <meta name="viewport" content="width=100 x initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-71-expected.txt b/LayoutTests/fast/viewport/viewport-71-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-71-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-71.html b/LayoutTests/fast/viewport/viewport-71.html
new file mode 100644
index 0000000..54b1ef4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-71.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that a comma forces synchronization after property name with no value.</title>
+    <meta name="viewport" content="width=100 x,initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-72-expected.txt b/LayoutTests/fast/viewport/viewport-72-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-72-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-72.html b/LayoutTests/fast/viewport/viewport-72.html
new file mode 100644
index 0000000..d2a1d7e
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-72.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Check that property name without a value does not cause synchronization on following semi-colon.</title>
+    <meta name="viewport" content="width=100 x;initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-73-expected.txt b/LayoutTests/fast/viewport/viewport-73-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-73-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-73.html b/LayoutTests/fast/viewport/viewport-73.html
new file mode 100644
index 0000000..db65f92
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-73.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Semi-colon is part of the property name, space is not enough for synchronization.</title>
+    <meta name="viewport" content="width=100 x; initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-74-expected.txt b/LayoutTests/fast/viewport/viewport-74-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-74-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-74.html b/LayoutTests/fast/viewport/viewport-74.html
new file mode 100644
index 0000000..c042a17
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-74.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Semi-colon is part of the property name, multiple spaces are not enough for synchronization.</title>
+    <meta name="viewport" content="width=100 x;  initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-75-expected.txt b/LayoutTests/fast/viewport/viewport-75-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-75-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-75.html b/LayoutTests/fast/viewport/viewport-75.html
new file mode 100644
index 0000000..b9e92e7
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-75.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Equals sign for the property starting with "x;". initial-scale is recognized, maximum-scale is not.</title>
+    <meta name="viewport" content="width=10 x; maximum-scale=10 initial-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-76-expected.txt b/LayoutTests/fast/viewport/viewport-76-expected.txt
new file mode 100644
index 0000000..ef2358a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-76-expected.txt
@@ -0,0 +1,2 @@
+viewport size 32x35 scale 10.000000 with limits [10.000000, 10.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-76.html b/LayoutTests/fast/viewport/viewport-76.html
new file mode 100644
index 0000000..0a245c9
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-76.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Three properties with values separated by spaces.</title>
+    <meta name="viewport" content="width=10 maximum-scale=10 initial-scale=10">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-77-expected.txt b/LayoutTests/fast/viewport/viewport-77-expected.txt
new file mode 100644
index 0000000..c4020c1
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-77-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-77.html b/LayoutTests/fast/viewport/viewport-77.html
new file mode 100644
index 0000000..f6194d5c
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-77.html
@@ -0,0 +1,13 @@
+<head>
+    <title>"yes;" means "no".</title>
+    <meta name="viewport" content="width=10 ;,initial-scale=yes;">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-78-expected.txt b/LayoutTests/fast/viewport/viewport-78-expected.txt
new file mode 100644
index 0000000..055f843
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-78-expected.txt
@@ -0,0 +1,2 @@
+viewport size 100x110 scale 3.200000 with limits [3.200000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-78.html b/LayoutTests/fast/viewport/viewport-78.html
new file mode 100644
index 0000000..97e9e1f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-78.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Space is consumed before property value.</title>
+    <meta name="viewport" content="width=100 a= initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-79-expected.txt b/LayoutTests/fast/viewport/viewport-79-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-79-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-79.html b/LayoutTests/fast/viewport/viewport-79.html
new file mode 100644
index 0000000..59a7576
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-79.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Semi-colon is recognized as a property value.</title>
+    <meta name="viewport" content="width=100 a=; initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-8-expected.txt b/LayoutTests/fast/viewport/viewport-8-expected.txt
new file mode 100644
index 0000000..29a2ba8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-8-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 0.250000]
+
diff --git a/LayoutTests/fast/viewport/viewport-8.html b/LayoutTests/fast/viewport/viewport-8.html
new file mode 100644
index 0000000..861f6f0
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-8.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0, initial-scale=0.5".</title>
+    <meta name="viewport" content="maximum-scale=0, initial-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-80-expected.txt b/LayoutTests/fast/viewport/viewport-80-expected.txt
new file mode 100644
index 0000000..50da948
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-80-expected.txt
@@ -0,0 +1,2 @@
+viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-80.html b/LayoutTests/fast/viewport/viewport-80.html
new file mode 100644
index 0000000..6098241
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-80.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Multiple commas allowed.</title>
+    <meta name="viewport" content="width=100,,,initial-scale=1">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-81-expected.txt b/LayoutTests/fast/viewport/viewport-81-expected.txt
new file mode 100644
index 0000000..90bb438
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-81-expected.txt
@@ -0,0 +1,2 @@
+viewport size 3000x3300 scale 0.250000 with limits [0.250000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-81.html b/LayoutTests/fast/viewport/viewport-81.html
new file mode 100644
index 0000000..c7743a6
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-81.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Multiple equals-signs are accepted.</title>
+    <meta name="viewport" content="width====3000">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-82.html b/LayoutTests/fast/viewport/viewport-82.html
new file mode 100644
index 0000000..1e8256d
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-82.html
@@ -0,0 +1,13 @@
+<head>
+    <title>width=400% gives 400 pixels.</title>
+    <meta name="viewport" content="width=400%">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-83-expected.txt b/LayoutTests/fast/viewport/viewport-83-expected.txt
new file mode 100644
index 0000000..7ced1d4
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-83-expected.txt
@@ -0,0 +1,2 @@
+viewport size 64x70 scale 5.000000 with limits [5.000000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-83.html b/LayoutTests/fast/viewport/viewport-83.html
new file mode 100644
index 0000000..8107d81
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-83.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Value can contain equals sign.</title>
+    <meta name="viewport" content="width=height=830">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-84.html b/LayoutTests/fast/viewport/viewport-84.html
new file mode 100644
index 0000000..cda8c48
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-84.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Comma separator terminates empty value.</title>
+    <meta name="viewport" content="width=,height=480">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-85-expected.txt b/LayoutTests/fast/viewport/viewport-85-expected.txt
new file mode 100644
index 0000000..cdf93bb
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-85-expected.txt
@@ -0,0 +1,2 @@
+viewport size 540x594 scale 0.592593 with limits [0.592593, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-85.html b/LayoutTests/fast/viewport/viewport-85.html
new file mode 100644
index 0000000..04e9a7a
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-85.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Space can occur before and after assignment operator</title>
+    <meta name="viewport" content="width = 540">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-86-expected.txt b/LayoutTests/fast/viewport/viewport-86-expected.txt
new file mode 100644
index 0000000..1f009f6
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-86-expected.txt
@@ -0,0 +1,2 @@
+viewport size 457x502 scale 0.700000 with limits [0.700000, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-86.html b/LayoutTests/fast/viewport/viewport-86.html
new file mode 100644
index 0000000..7842ec0
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-86.html
@@ -0,0 +1,13 @@
+<head>
+    <title>.7 is a valid initial-scale</title>
+    <meta name="viewport" content="initial-scale=.7">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-87.html b/LayoutTests/fast/viewport/viewport-87.html
new file mode 100644
index 0000000..363d102
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-87.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Space is not an assignment operator</title>
+    <meta name="viewport" content="width 500">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-88-expected.txt b/LayoutTests/fast/viewport/viewport-88-expected.txt
new file mode 100644
index 0000000..fc4bb6f
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-88-expected.txt
@@ -0,0 +1,2 @@
+viewport size 980x1078 scale 0.326531 with limits [0.326531, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-88.html b/LayoutTests/fast/viewport/viewport-88.html
new file mode 100644
index 0000000..67419fa8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-88.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Colon is not an assignment operator</title>
+    <meta name="viewport" content="width:680">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-9-expected.txt b/LayoutTests/fast/viewport/viewport-9-expected.txt
new file mode 100644
index 0000000..29a2ba8
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-9-expected.txt
@@ -0,0 +1,2 @@
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 0.250000]
+
diff --git a/LayoutTests/fast/viewport/viewport-9.html b/LayoutTests/fast/viewport/viewport-9.html
new file mode 100644
index 0000000..905f95b
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-9.html
@@ -0,0 +1,13 @@
+<head>
+    <title>Viewport META with "maximum-scale=0, initial-scale=3".</title>
+    <meta name="viewport" content="maximum-scale=0, initial-scale=3">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
diff --git a/LayoutTests/fast/viewport/viewport-90-expected.txt b/LayoutTests/fast/viewport/viewport-90-expected.txt
new file mode 100644
index 0000000..d6a4519
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-90-expected.txt
@@ -0,0 +1,2 @@
+viewport size 700x770 scale 0.500000 with limits [0.457143, 5.000000]
+
diff --git a/LayoutTests/fast/viewport/viewport-90.html b/LayoutTests/fast/viewport/viewport-90.html
new file mode 100644
index 0000000..5f39572
--- /dev/null
+++ b/LayoutTests/fast/viewport/viewport-90.html
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
+  "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+    <title>XHTML Mobile Profile 1.0 document with viewport meta</title>
+    <meta name="viewport" content="width=700, initial-scale=0.5">
+    <script>
+        function test() {
+            if (window.layoutTestController) {
+                layoutTestController.dumpAsText();
+                layoutTestController.dumpConfigurationForViewport(320, 352);
+            }
+        }
+    </script>
+</head>
+<body onload="test();">
+</body>
+</html>
diff --git a/LayoutTests/platform/gtk/Skipped b/LayoutTests/platform/gtk/Skipped
index 98ec4f3..b3ad420 100644
--- a/LayoutTests/platform/gtk/Skipped
+++ b/LayoutTests/platform/gtk/Skipped
@@ -5957,3 +5957,6 @@
 # The version of GLib on the Debug bots appears to be
 # broken ATM causing most websocket tests to fail.
 websocket/tests
+
+# viewport meta tag support
+fast/viewport
diff --git a/LayoutTests/platform/mac/Skipped b/LayoutTests/platform/mac/Skipped
index ee63083..b8ca528 100644
--- a/LayoutTests/platform/mac/Skipped
+++ b/LayoutTests/platform/mac/Skipped
@@ -307,3 +307,6 @@
 # Crash due to r66850.
 # https://bugs.webkit.org/show_bug.cgi?id=45575
 fast/files/workers
+
+# viewport meta tag support
+fast/viewport
diff --git a/LayoutTests/platform/qt/Skipped b/LayoutTests/platform/qt/Skipped
index fe30484..3fc518a 100644
--- a/LayoutTests/platform/qt/Skipped
+++ b/LayoutTests/platform/qt/Skipped
@@ -5439,3 +5439,11 @@
 
 # Fixed in Qt 4.7.1 - Unskip when buildbot is upgraded.
 fast/canvas/canvas-closePath-single-point.html
+
+# viewport meta tag tests that differ from the Opera results
+fast/viewport/viewport-65.html
+fast/viewport/viewport-82.html
+fast/viewport/viewport-84.html
+fast/viewport/viewport-87.html
+fast/viewport/viewport-126.html
+fast/viewport/viewport-127.html
diff --git a/LayoutTests/platform/win/Skipped b/LayoutTests/platform/win/Skipped
index a1c38ee..a461667 100644
--- a/LayoutTests/platform/win/Skipped
+++ b/LayoutTests/platform/win/Skipped
@@ -977,3 +977,6 @@
 
 # Full Screen support is not yet enabled.
 fullscreen/
+
+# viewport meta tag support
+fast/viewport