Changeset 169869 in webkit


Ignore:
Timestamp:
Jun 11, 2014, 7:03:34 PM (11 years ago)
Author:
Simon Fraser
Message:

[iOS WK2] Give WebKitTestRunner a viewport configuration with initial scale=1 for testing
https://bugs.webkit.org/show_bug.cgi?id=133779

Reviewed by Benjamin Poulain.

Source/WebCore:

Add a "testing" viewport configuration with initial scale of 1.

  • WebCore.exp.in:
  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::testingParameters):

  • page/ViewportConfiguration.h:

Source/WebKit2:

Support a custom viewport configuration for testing, on iOS.

  • UIProcess/API/ios/WKViewIOS.mm:

(-[WKView _frameOrBoundsChanged]): Call setViewportConfigurationMinimumLayoutSize()
just as WKWebView does.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetUseTestingViewportConfiguration): New SPI to set a viewport config for testing.

  • WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: Ditto.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::setUseTestingViewportConfiguration):
(WebKit::WebPage::isUsingTestingViewportConfiguration):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::resetViewportDefaultConfiguration):

Tools:

Tell the WebPage to use the testing viewport configuration from the injected bundle.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessage): Code cleanup.

  • WebKitTestRunner/InjectedBundle/cocoa/InjectedBundlePageCocoa.mm:

(WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame): Call WKBundlePageSetUseTestingViewportConfiguration()
on iOS.

Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r169868 r169869  
     12014-06-11  Simon Fraser  <simon.fraser@apple.com>
     2
     3        [iOS WK2] Give WebKitTestRunner a viewport configuration with initial scale=1 for testing
     4        https://bugs.webkit.org/show_bug.cgi?id=133779
     5
     6        Reviewed by Benjamin Poulain.
     7
     8        Add a "testing" viewport configuration with initial scale of 1.
     9
     10        * WebCore.exp.in:
     11        * page/ViewportConfiguration.cpp:
     12        (WebCore::ViewportConfiguration::testingParameters):
     13        * page/ViewportConfiguration.h:
     14
    1152014-06-11  Pratik Solanki  <psolanki@apple.com>
    216
  • trunk/Source/WebCore/WebCore.exp.in

    r169855 r169869  
    925925__ZN7WebCore21ViewportConfiguration14resetMinimalUIEv
    926926__ZN7WebCore21ViewportConfiguration15setContentsSizeERKNS_7IntSizeE
     927__ZN7WebCore21ViewportConfiguration17testingParametersEv
    927928__ZN7WebCore21ViewportConfiguration17webpageParametersEv
    928929__ZN7WebCore21ViewportConfiguration20setMinimumLayoutSizeERKNS_9FloatSizeE
  • trunk/Source/WebCore/page/ViewportConfiguration.cpp

    r169245 r169869  
    219219}
    220220
     221ViewportConfiguration::Parameters ViewportConfiguration::testingParameters()
     222{
     223    Parameters parameters;
     224    parameters.initialScale = 1;
     225    parameters.initialScaleIsSet = true;
     226    parameters.minimumScale = 1;
     227    parameters.maximumScale = 5;
     228    return parameters;
     229}
     230
    221231static inline bool viewportArgumentValueIsValid(float value)
    222232{
  • trunk/Source/WebCore/page/ViewportConfiguration.h

    r169245 r169869  
    9797    static Parameters imageDocumentParameters();
    9898    static Parameters xhtmlMobileParameters();
     99    static Parameters testingParameters();
    99100   
    100101#ifndef NDEBUG
  • trunk/Source/WebKit2/ChangeLog

    r169863 r169869  
     12014-06-11  Simon Fraser  <simon.fraser@apple.com>
     2
     3        [iOS WK2] Give WebKitTestRunner a viewport configuration with initial scale=1 for testing
     4        https://bugs.webkit.org/show_bug.cgi?id=133779
     5
     6        Reviewed by Benjamin Poulain.
     7       
     8        Support a custom viewport configuration for testing, on iOS.
     9
     10        * UIProcess/API/ios/WKViewIOS.mm:
     11        (-[WKView _frameOrBoundsChanged]): Call setViewportConfigurationMinimumLayoutSize()
     12        just as WKWebView does.
     13        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
     14        (WKBundlePageSetUseTestingViewportConfiguration): New SPI to set a viewport config for testing.
     15        * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: Ditto.
     16        * WebProcess/WebPage/WebPage.cpp:
     17        (WebKit::WebPage::WebPage):
     18        * WebProcess/WebPage/WebPage.h:
     19        (WebKit::WebPage::setUseTestingViewportConfiguration):
     20        (WebKit::WebPage::isUsingTestingViewportConfiguration):
     21        * WebProcess/WebPage/ios/WebPageIOS.mm:
     22        (WebKit::WebPage::resetViewportDefaultConfiguration):
     23
    1242014-06-11  Timothy Horton  <timothy_horton@apple.com>
    225
  • trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm

    r169300 r169869  
    132132    _allowsBackForwardNavigationGestures = allowsBackForwardNavigationGestures;
    133133   
    134     WebPageProxy *webPageProxy = [_contentView page];
     134    WebPageProxy* webPageProxy = [_contentView page];
    135135   
    136136    if (allowsBackForwardNavigationGestures) {
     
    244244{
    245245    CGRect bounds = [self bounds];
     246
     247    WebPageProxy* webPageProxy = [_contentView page];
     248    WebCore::FloatSize size(bounds.size);
     249    webPageProxy->setViewportConfigurationMinimumLayoutSize(size);
     250    webPageProxy->setViewportConfigurationMinimumLayoutSizeForMinimalUI(size);
     251    webPageProxy->setMaximumUnobscuredSize(size);
     252
    246253    [_scrollView setFrame:bounds];
    247254    [_contentView setMinimumSize:bounds.size];
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp

    r166975 r169869  
    566566    return toImpl(pageRef)->usesEphemeralSession();
    567567}
     568
     569#if TARGET_OS_IPHONE
     570void WKBundlePageSetUseTestingViewportConfiguration(WKBundlePageRef pageRef, bool useTestingViewportConfiguration)
     571{
     572    toImpl(pageRef)->setUseTestingViewportConfiguration(useTestingViewportConfiguration);
     573}
     574#endif
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h

    r168541 r169869  
    9494WK_EXPORT void WKBundlePageStopExtendingIncrementalRenderingSuppression(WKBundlePageRef, WKRenderingSuppressionToken);
    9595
     96#if TARGET_OS_IPHONE
     97WK_EXPORT void WKBundlePageSetUseTestingViewportConfiguration(WKBundlePageRef, bool);
     98#endif
     99
    96100#ifdef __cplusplus
    97101}
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r169863 r169869  
    299299    , m_userIsInteracting(false)
    300300    , m_hasPendingBlurNotification(false)
     301    , m_useTestingViewportConfiguration(false)
    301302    , m_screenSize(parameters.screenSize)
    302303    , m_availableScreenSize(parameters.availableScreenSize)
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r169863 r169869  
    460460    void restorePageState(double scale, bool userHasChangedPageScaleFactor, const WebCore::IntPoint& exposedOrigin);
    461461
     462    void setUseTestingViewportConfiguration(bool useTestingViewport) { m_useTestingViewportConfiguration = useTestingViewport; }
     463    bool isUsingTestingViewportConfiguration() const { return m_useTestingViewportConfiguration; }
     464
    462465    double minimumPageScaleFactor() const;
    463466    double maximumPageScaleFactor() const;
     
    12211224    bool m_userIsInteracting;
    12221225    bool m_hasPendingBlurNotification;
     1226    bool m_useTestingViewportConfiguration;
    12231227    WebCore::FloatSize m_screenSize;
    12241228    WebCore::FloatSize m_availableScreenSize;
  • trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm

    r169863 r169869  
    21902190void WebPage::resetViewportDefaultConfiguration(WebFrame* frame)
    21912191{
     2192    if (m_useTestingViewportConfiguration) {
     2193        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::testingParameters());
     2194        return;
     2195    }
     2196
    21922197    if (!frame) {
    21932198        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters());
  • trunk/Tools/ChangeLog

    r169845 r169869  
     12014-06-11  Simon Fraser  <simon.fraser@apple.com>
     2
     3        [iOS WK2] Give WebKitTestRunner a viewport configuration with initial scale=1 for testing
     4        https://bugs.webkit.org/show_bug.cgi?id=133779
     5
     6        Reviewed by Benjamin Poulain.
     7       
     8        Tell the WebPage to use the testing viewport configuration from the injected bundle.
     9
     10        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
     11        (WTR::InjectedBundle::didReceiveMessage): Code cleanup.
     12        * WebKitTestRunner/InjectedBundle/cocoa/InjectedBundlePageCocoa.mm:
     13        (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame): Call WKBundlePageSetUseTestingViewportConfiguration()
     14        on iOS.
     15
    1162014-06-11  Simon Fraser  <simon.fraser@apple.com>
    217
  • trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp

    r169453 r169869  
    158158        beginTesting(messageBodyDictionary);
    159159        return;
    160     } else if (WKStringIsEqualToUTF8CString(messageName, "Reset")) {
     160    }
     161   
     162    if (WKStringIsEqualToUTF8CString(messageName, "Reset")) {
    161163        ASSERT(messageBody);
    162164        ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
     
    179181        return;
    180182    }
     183
    181184    if (WKStringIsEqualToUTF8CString(messageName, "CallAddChromeInputFieldCallback")) {
    182185        m_testRunner->callAddChromeInputFieldCallback();
    183186        return;
    184187    }
     188
    185189    if (WKStringIsEqualToUTF8CString(messageName, "CallRemoveChromeInputFieldCallback")) {
    186190        m_testRunner->callRemoveChromeInputFieldCallback();
    187191        return;
    188192    }
     193
    189194    if (WKStringIsEqualToUTF8CString(messageName, "CallFocusWebViewCallback")) {
    190195        m_testRunner->callFocusWebViewCallback();
    191196        return;
    192197    }
     198
    193199    if (WKStringIsEqualToUTF8CString(messageName, "CallSetBackingScaleFactorCallback")) {
    194200        m_testRunner->callSetBackingScaleFactorCallback();
    195201        return;
    196202    }   
     203
    197204    if (WKStringIsEqualToUTF8CString(messageName, "WorkQueueProcessedCallback")) {
    198205        if (!topLoadingFrame() && !m_testRunner->waitToDump())
  • trunk/Tools/WebKitTestRunner/InjectedBundle/cocoa/InjectedBundlePageCocoa.mm

    r168961 r169869  
    2929#import "CrashReporterInfo.h"
    3030#import <WebKit/WKBundleFrame.h>
     31#import <WebKit/WKBundlePagePrivate.h>
    3132#import <WebKit/WKURLCF.h>
    3233
     
    4243    WKRetainPtr<WKURLRef> mainFrameURL = adoptWK(WKBundleFrameCopyProvisionalURL(frame));
    4344    setCrashReportApplicationSpecificInformationToURL(mainFrameURL.get());
     45
     46#if PLATFORM(IOS)
     47    WKBundlePageSetUseTestingViewportConfiguration(page(), true);
     48#endif
    4449}
    4550
Note: See TracChangeset for help on using the changeset viewer.