Changeset 163654 in webkit


Ignore:
Timestamp:
Feb 7, 2014 3:03:03 PM (10 years ago)
Author:
benjamin@webkit.org
Message:

[WK2] Add support for text document viewport configuration
https://bugs.webkit.org/show_bug.cgi?id=128359

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-02-07
Reviewed by Simon Fraser.

Source/WebCore:

Define a set of ViewportParameters suitable for displaying text documents.
Add a documents class for text document to differentiate them from other type of documents.

  • WebCore.exp.in:
  • dom/Document.h:

(WebCore::Document::isTextDocument):

  • html/TextDocument.cpp:

(WebCore::TextDocument::TextDocument):

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::ViewportConfiguration):
(WebCore::ViewportConfiguration::webpageParameters):
(WebCore::ViewportConfiguration::plainTextParameters):

  • page/ViewportConfiguration.h:

Source/WebKit2:

When a text document is being loaded, use the plainText viewport parameters.

  • UIProcess/API/ios/WKContentView.h:
  • UIProcess/API/ios/WKContentView.mm:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

Location:
trunk/Source
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r163651 r163654  
     12014-02-07  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        [WK2] Add support for text document viewport configuration
     4        https://bugs.webkit.org/show_bug.cgi?id=128359
     5
     6        Reviewed by Simon Fraser.
     7
     8        Define a set of ViewportParameters suitable for displaying text documents.
     9        Add a documents class for text document to differentiate them from other type of documents.
     10
     11        * WebCore.exp.in:
     12        * dom/Document.h:
     13        (WebCore::Document::isTextDocument):
     14        * html/TextDocument.cpp:
     15        (WebCore::TextDocument::TextDocument):
     16        * page/ViewportConfiguration.cpp:
     17        (WebCore::ViewportConfiguration::ViewportConfiguration):
     18        (WebCore::ViewportConfiguration::webpageParameters):
     19        (WebCore::ViewportConfiguration::plainTextParameters):
     20        * page/ViewportConfiguration.h:
     21
    1222014-02-07  Bem Jones-Bey  <bjonesbe@adobe.com>
    223
  • trunk/Source/WebCore/WebCore.exp.in

    r163641 r163654  
    850850__ZN7WebCore21UserContentURLPattern5parseERKN3WTF6StringE
    851851__ZN7WebCore21ViewportConfiguration15setContentsSizeERKNS_7IntSizeE
     852__ZN7WebCore21ViewportConfiguration17webpageParametersEv
     853__ZN7WebCore21ViewportConfiguration19plainTextParametersEv
    852854__ZN7WebCore21ViewportConfiguration20setMinimumLayoutSizeERKNS_7IntSizeE
    853855__ZN7WebCore21ViewportConfiguration20setViewportArgumentsERKNS_17ViewportArgumentsE
  • trunk/Source/WebCore/dom/Document.h

    r163568 r163654  
    241241    MediaDocumentClass = 1 << 4,
    242242    SVGDocumentClass = 1 << 5,
     243    TextDocumentClass = 1 << 6
    243244};
    244245
     
    482483    bool isPluginDocument() const { return m_documentClasses & PluginDocumentClass; }
    483484    bool isMediaDocument() const { return m_documentClasses & MediaDocumentClass; }
     485    bool isTextDocument() const { return m_documentClasses & TextDocumentClass; }
    484486    bool hasSVGRootNode() const;
    485487    virtual bool isFrameSet() const { return false; }
  • trunk/Source/WebCore/html/TextDocument.cpp

    r156980 r163654  
    3131
    3232TextDocument::TextDocument(Frame* frame, const URL& url)
    33     : HTMLDocument(frame, url)
     33    : HTMLDocument(frame, url, TextDocumentClass)
    3434{
    3535    setCompatibilityMode(QuirksMode);
  • trunk/Source/WebCore/page/ViewportConfiguration.cpp

    r163515 r163654  
    3030#include <wtf/MathExtras.h>
    3131
     32#if PLATFORM(IOS)
     33#include "WebCoreSystemInterface.h"
     34#endif
     35
    3236namespace WebCore {
    3337
     
    4549    // Setup a reasonable default configuration to avoid computing infinite scale/sizes.
    4650    // Those are the original iPhone configuration.
    47     m_defaultConfiguration.width = 980;
    48     m_defaultConfiguration.widthIsSet = true;
    49     m_defaultConfiguration.allowsUserScaling = true;
    50     m_defaultConfiguration.minimumScale = 0.25;
    51     m_defaultConfiguration.maximumScale = 5;
     51    m_defaultConfiguration = ViewportConfiguration::webpageParameters();
    5252    updateConfiguration();
    5353}
     
    139139
    140140    return minimumScale;
     141}
     142
     143ViewportConfiguration::Parameters ViewportConfiguration::webpageParameters()
     144{
     145    Parameters parameters;
     146    parameters.width = 980;
     147    parameters.widthIsSet = true;
     148    parameters.allowsUserScaling = true;
     149    parameters.minimumScale = 0.25;
     150    parameters.maximumScale = 5;
     151    return parameters;
     152}
     153
     154ViewportConfiguration::Parameters ViewportConfiguration::plainTextParameters()
     155{
     156    Parameters parameters;
     157
     158#if PLATFORM(IOS)
     159    parameters.width = static_cast<int>(wkGetViewportScreenSize().width);
     160#else
     161    // FIXME: this needs to be unified with ViewportArguments on all ports.
     162    parameters.width = 320;
     163#endif
     164
     165    parameters.widthIsSet = true;
     166    parameters.allowsUserScaling = true;
     167    parameters.minimumScale = 0.25;
     168    parameters.maximumScale = 5;
     169    return parameters;
    141170}
    142171
  • trunk/Source/WebCore/page/ViewportConfiguration.h

    r163515 r163654  
    8383    bool allowsUserScaling() const { return m_configuration.allowsUserScaling; }
    8484
     85    static Parameters webpageParameters();
     86    static Parameters plainTextParameters();
     87
    8588private:
    8689    void updateConfiguration();
  • trunk/Source/WebKit2/ChangeLog

    r163647 r163654  
     12014-02-07  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        [WK2] Add support for text document viewport configuration
     4        https://bugs.webkit.org/show_bug.cgi?id=128359
     5
     6        Reviewed by Simon Fraser.
     7
     8        When a text document is being loaded, use the plainText viewport parameters.
     9
     10        * UIProcess/API/ios/WKContentView.h:
     11        * UIProcess/API/ios/WKContentView.mm:
     12        * WebProcess/WebPage/WebPage.cpp:
     13        (WebKit::WebPage::didCommitLoad):
     14
    1152014-02-07  Gavin Barraclough  <barraclough@apple.com>
    216
  • trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.h

    r163515 r163654  
    3333@class WKWebViewConfiguration;
    3434
    35 typedef NS_ENUM(unsigned, WKContentType)
    36 {
    37     Standard = 0,
    38     PlainText,
    39     Image
    40 };
    41 
    4235namespace WebKit {
    4336class RemoteLayerTreeTransaction;
     
    5649
    5750@property (nonatomic, assign) id <WKContentViewDelegate> delegate;
    58 @property (nonatomic, readonly) WKContentType contentType;
    5951
    6052@property (readonly) WKPageRef _pageRef;
  • trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm

    r163572 r163654  
    158158}
    159159
    160 - (WKContentType)contentType
    161 {
    162     if (_page->mainFrame()->mimeType() == "text/plain")
    163         return WKContentType::PlainText;
    164     else if (_page->mainFrame()->isDisplayingStandaloneImageDocument())
    165         return WKContentType::Image;
    166     return WKContentType::Standard;
    167 }
    168 
    169160- (WKPageRef)_pageRef
    170161{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r163647 r163654  
    39603960    m_userHasChangedPageScaleFactor = false;
    39613961
    3962     // FIXME: Setup a real configuration.
    3963     ViewportConfiguration::Parameters defaultConfiguration;
    3964     defaultConfiguration.width = 980;
    3965     defaultConfiguration.widthIsSet = true;
    3966     defaultConfiguration.allowsUserScaling = true;
    3967     defaultConfiguration.minimumScale = 0.25;
    3968     defaultConfiguration.maximumScale = 5;
    3969 
    3970     m_viewportConfiguration.setDefaultConfiguration(defaultConfiguration);
     3962    if (frame->coreFrame()->document()->isTextDocument())
     3963        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::plainTextParameters());
     3964    else
     3965        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters());
     3966
    39713967    m_viewportConfiguration.setViewportArguments(ViewportArguments());
    39723968    m_viewportConfiguration.setContentsSize(m_viewportConfiguration.minimumLayoutSize());
Note: See TracChangeset for help on using the changeset viewer.