Changeset 119256 in webkit


Ignore:
Timestamp:
Jun 1, 2012 11:24:02 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

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

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

Source/WebCore:

We now support MobileOptimized and HandheldFriendly as well.

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

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

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

Original patch by Kenneth Rohde Christiansen.

Tests: fast/viewport/viewport-legacy-handheldfriendly.html

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

  • dom/Document.cpp:

(WebCore::Document::setDocType):
(WebCore::Document::processViewport): Add an origin parameter to
tell what is changing the viewport.

  • dom/Document.h:

(Document):

  • dom/ViewportArguments.h:
  • html/HTMLMetaElement.cpp:

(WebCore::HTMLMetaElement::process):

LayoutTests:

Add tests and expected results.

  • fast/viewport/viewport-legacy-handheldfriendly-expected.txt: Added.
  • fast/viewport/viewport-legacy-handheldfriendly.html: Added.
  • fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt: Added.
  • fast/viewport/viewport-legacy-mobileoptimized-2.html: Added.
  • fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt: Added.
  • fast/viewport/viewport-legacy-mobileoptimized-3.html: Added.
  • fast/viewport/viewport-legacy-mobileoptimized-expected.txt: Added.
  • fast/viewport/viewport-legacy-mobileoptimized.html: Added.
  • fast/viewport/viewport-legacy-ordering-1-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-1.html: Added.
  • fast/viewport/viewport-legacy-ordering-2-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-2.html: Added.
  • fast/viewport/viewport-legacy-ordering-3-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-3.html: Added.
  • fast/viewport/viewport-legacy-ordering-4-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-4.html: Added.
  • fast/viewport/viewport-legacy-ordering-5-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-5.html: Added.
  • fast/viewport/viewport-legacy-ordering-6-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-6.html: Added.
  • fast/viewport/viewport-legacy-ordering-7-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-7.html: Added.
  • fast/viewport/viewport-legacy-ordering-8-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-8.html: Added.
  • fast/viewport/viewport-legacy-ordering-9-expected.txt: Added.
  • fast/viewport/viewport-legacy-ordering-9.html: Added.
Location:
trunk
Files:
26 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r119255 r119256  
     12012-06-01  Hugo Parente Lima  <hugo.lima@openbossa.org>
     2
     3        Improve handling of legacy viewport meta tags
     4        https://bugs.webkit.org/show_bug.cgi?id=55874
     5
     6        Reviewed by Adam Barth.
     7
     8        Add tests and expected results.
     9
     10        * fast/viewport/viewport-legacy-handheldfriendly-expected.txt: Added.
     11        * fast/viewport/viewport-legacy-handheldfriendly.html: Added.
     12        * fast/viewport/viewport-legacy-mobileoptimized-2-expected.txt: Added.
     13        * fast/viewport/viewport-legacy-mobileoptimized-2.html: Added.
     14        * fast/viewport/viewport-legacy-mobileoptimized-3-expected.txt: Added.
     15        * fast/viewport/viewport-legacy-mobileoptimized-3.html: Added.
     16        * fast/viewport/viewport-legacy-mobileoptimized-expected.txt: Added.
     17        * fast/viewport/viewport-legacy-mobileoptimized.html: Added.
     18        * fast/viewport/viewport-legacy-ordering-1-expected.txt: Added.
     19        * fast/viewport/viewport-legacy-ordering-1.html: Added.
     20        * fast/viewport/viewport-legacy-ordering-2-expected.txt: Added.
     21        * fast/viewport/viewport-legacy-ordering-2.html: Added.
     22        * fast/viewport/viewport-legacy-ordering-3-expected.txt: Added.
     23        * fast/viewport/viewport-legacy-ordering-3.html: Added.
     24        * fast/viewport/viewport-legacy-ordering-4-expected.txt: Added.
     25        * fast/viewport/viewport-legacy-ordering-4.html: Added.
     26        * fast/viewport/viewport-legacy-ordering-5-expected.txt: Added.
     27        * fast/viewport/viewport-legacy-ordering-5.html: Added.
     28        * fast/viewport/viewport-legacy-ordering-6-expected.txt: Added.
     29        * fast/viewport/viewport-legacy-ordering-6.html: Added.
     30        * fast/viewport/viewport-legacy-ordering-7-expected.txt: Added.
     31        * fast/viewport/viewport-legacy-ordering-7.html: Added.
     32        * fast/viewport/viewport-legacy-ordering-8-expected.txt: Added.
     33        * fast/viewport/viewport-legacy-ordering-8.html: Added.
     34        * fast/viewport/viewport-legacy-ordering-9-expected.txt: Added.
     35        * fast/viewport/viewport-legacy-ordering-9.html: Added.
     36
    1372012-06-01  Tony Chang  <tony@chromium.org>
    238
  • trunk/Source/WebCore/ChangeLog

    r119255 r119256  
     12012-06-01  Hugo Parente Lima  <hugo.lima@openbossa.org>
     2
     3        Improve handling of legacy viewport meta tags
     4        https://bugs.webkit.org/show_bug.cgi?id=55874
     5
     6        Reviewed by Adam Barth.
     7
     8        We now support MobileOptimized and HandheldFriendly as well.
     9
     10        We set width equal to device-width for HandheldFriendly and
     11        for MobileOptimized, the content value of MobileOptimized is
     12        ignored and the initial-scale set to 1 to fit Android behavior.
     13
     14        The prioritizing is done the same way as on Windows Phone 7:
     15
     16        XHTML Mobile Profile found
     17        HandheldFriendly
     18        MobileOptimized (overrides HandheldFriendly)
     19        Viewport (overrides all above)
     20
     21        Original patch by Kenneth Rohde Christiansen.
     22
     23        Tests: fast/viewport/viewport-legacy-handheldfriendly.html
     24               fast/viewport/viewport-legacy-mobileoptimized-2.html
     25               fast/viewport/viewport-legacy-mobileoptimized-3.html
     26               fast/viewport/viewport-legacy-mobileoptimized.html
     27               fast/viewport/viewport-legacy-ordering-1.html
     28               fast/viewport/viewport-legacy-ordering-2.html
     29               fast/viewport/viewport-legacy-ordering-3.html
     30               fast/viewport/viewport-legacy-ordering-4.html
     31               fast/viewport/viewport-legacy-ordering-5.html
     32               fast/viewport/viewport-legacy-ordering-6.html
     33               fast/viewport/viewport-legacy-ordering-7.html
     34               fast/viewport/viewport-legacy-ordering-8.html
     35               fast/viewport/viewport-legacy-ordering-9.html
     36
     37        * dom/Document.cpp:
     38        (WebCore::Document::setDocType):
     39        (WebCore::Document::processViewport): Add an origin parameter to
     40        tell what is changing the viewport.
     41        * dom/Document.h:
     42        (Document):
     43        * dom/ViewportArguments.h:
     44        * html/HTMLMetaElement.cpp:
     45        (WebCore::HTMLMetaElement::process):
     46
    1472012-06-01  Tony Chang  <tony@chromium.org>
    248
  • trunk/Source/WebCore/dom/Document.cpp

    r119204 r119256  
    783783        ASSERT(m_viewportArguments.type == ViewportArguments::Implicit);
    784784        if (m_docType->publicId().startsWith("-//wapforum//dtd xhtml mobile 1.", /* caseSensitive */ false))
    785             processViewport("width=device-width, height=device-height, initial-scale=1");
     785            processViewport("width=device-width, height=device-height", ViewportArguments::XHTMLMobileProfile);
    786786#endif
    787787    }
     
    30373037}
    30383038
    3039 void Document::processViewport(const String& features)
     3039void Document::processViewport(const String& features, ViewportArguments::Type origin)
    30403040{
    30413041    ASSERT(!features.isNull());
    30423042
    3043     m_viewportArguments = ViewportArguments(ViewportArguments::ViewportMeta);
     3043    if (origin < m_viewportArguments.type)
     3044        return;
     3045
     3046    m_viewportArguments = ViewportArguments(origin);
    30443047    processArguments(features, (void*)&m_viewportArguments, &setViewportFeature);
    30453048
  • trunk/Source/WebCore/dom/Document.h

    r119204 r119256  
    835835     */
    836836    void processHttpEquiv(const String& equiv, const String& content);
    837     void processViewport(const String& features);
     837    void processViewport(const String& features, ViewportArguments::Type origin);
    838838    void updateViewportArguments();
    839839    void processReferrerPolicy(const String& policy);
  • trunk/Source/WebCore/dom/ViewportArguments.h

    r116632 r119256  
    5858
    5959    enum Type {
     60        // These are ordered in increasing importance.
    6061        Implicit,
     62#if USE(LEGACY_VIEWPORT_ADAPTION)
     63        XHTMLMobileProfile,
     64        HandheldFriendlyMeta,
     65        MobileOptimizedMeta,
     66#endif
    6167        ViewportMeta
    6268    } type;
  • trunk/Source/WebCore/html/HTMLMetaElement.cpp

    r118192 r119256  
    7373
    7474    if (equalIgnoringCase(name(), "viewport"))
    75         document()->processViewport(contentValue);
    76 
    77     if (equalIgnoringCase(name(), "referrer"))
     75        document()->processViewport(contentValue, ViewportArguments::ViewportMeta);
     76    else if (equalIgnoringCase(name(), "referrer"))
    7877        document()->processReferrerPolicy(contentValue);
     78#if USE(LEGACY_VIEWPORT_ADAPTION)
     79    else if (equalIgnoringCase(name(), "handheldfriendly") && equalIgnoringCase(contentValue, "true"))
     80        document()->processViewport("width=device-width", ViewportArguments::HandheldFriendlyMeta);
     81    else if (equalIgnoringCase(name(), "mobileoptimized"))
     82        document()->processViewport("width=device-width, initial-scale=1", ViewportArguments::MobileOptimizedMeta);
     83#endif
    7984
    8085    // Get the document to process the tag, but only if we're actually part of DOM tree (changing a meta tag while
Note: See TracChangeset for help on using the changeset viewer.