Changeset 242069 in webkit


Ignore:
Timestamp:
Feb 25, 2019 8:37:59 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

scalableNativeWebpageParameters() is not preserved on new page navigation.
https://bugs.webkit.org/show_bug.cgi?id=194892
<rdar://problem/47538280>

Source/WebCore:

If a page's current default viewport configuration is scalableNativeWebpageParameters due to
the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
configuration until we derive the right values from viewport meta-tag.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

Test: fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::canOverrideConfigurationParameters const): Use fixedNativeWebpageParameters().
(WebCore::ViewportConfiguration::updateDefaultConfiguration): Use nativeWebpageParameters.
(WebCore::ViewportConfiguration::nativeWebpageParameters): Return the appropriate default configuration

based on m_canIgnoreScalingConstraints and shouldIgnoreMinimumEffectiveDeviceWidth().

(WebCore::ViewportConfiguration::fixedNativeWebpageParameters): Renamed from nativeWebpageParameters()
(WebCore::ViewportConfiguration::scalableNativeWebpageParameters): Use fixedNativeWebpageParameters.

  • page/ViewportConfiguration.h: Make nativeWebpageParameters() an instance method and change the old

static method to fixedNativeWebpageParameters which better reflects the actual behavior.

Source/WebKit:

If a page's current default viewport configuration is scalableNativeWebpageParameters due to
the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
configuration until we derive the right values from viewport meta-tag.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::resetViewportDefaultConfiguration): Use nativeWebpageParameters() instance method to

get the appropriate default configuration.

Tools:

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

Allow UIScriptController to set WKWebView's _allowsViewportShrinkToFit property with a new setAllowsViewportShrinkToFit method.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::setAllowsViewportShrinkToFit):

  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::UIScriptController::allowsViewportShrinkToFit):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::setAllowsViewportShrinkToFit):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/UIScriptControllerCocoa.mm:

(WTR::UIScriptController::setAllowsViewportShrinkToFit):

LayoutTests:

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

  • fast/viewport/ios/resources/go-back.html: Added.
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation-expected.txt: Added.
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html: Added.
  • fast/viewport/ios/minimum-scale-after-changing-view-scale.html: When shouldIgnoreMetaViewport

setting is on, for pages don't have viewport meta-tag, the default configuration is now
changed to scalableNativeWebpageParameters(). The original test was under the assumption
that the default configuration is always fixedNativeWebpageParameters(). To keep the test
still valid, add a viewport meta-tag to it.

  • resources/ui-helper.js:

(window.UIHelper.setAllowsViewportShrinkToFit):

Location:
trunk
Files:
3 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r242059 r242069  
     12019-02-25  Yongjun Zhang  <yongjun_zhang@apple.com>
     2
     3        scalableNativeWebpageParameters() is not preserved on new page navigation.
     4        https://bugs.webkit.org/show_bug.cgi?id=194892
     5        <rdar://problem/47538280>
     6
     7        Reviewed by Wenson Hsieh.
     8
     9        * fast/viewport/ios/resources/go-back.html: Added.
     10        * fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation-expected.txt: Added.
     11        * fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html: Added.
     12        * fast/viewport/ios/minimum-scale-after-changing-view-scale.html: When shouldIgnoreMetaViewport
     13            setting is on, for pages don't have viewport meta-tag, the default configuration is now
     14            changed to scalableNativeWebpageParameters(). The original test was under the assumption
     15            that the default configuration is always fixedNativeWebpageParameters(). To keep the test
     16            still valid, add a viewport meta-tag to it.
     17        * resources/ui-helper.js:
     18        (window.UIHelper.setAllowsViewportShrinkToFit):
     19
    1202019-02-25  Wenson Hsieh  <wenson_hsieh@apple.com>
    221
  • trunk/LayoutTests/fast/viewport/ios/minimum-scale-after-changing-view-scale.html

    r237818 r242069  
    22<html>
    33<head>
     4    <meta name="viewport" content="width=device-width, initial-scale=1">
    45    <style>
    56    body {
  • trunk/LayoutTests/resources/ui-helper.js

    r241971 r242069  
    637637    }
    638638
     639    static setAllowsViewportShrinkToFit(allows)
     640    {
     641        if (!this.isWebKit2())
     642            return Promise.resolve();
     643
     644        return new Promise(resolve => testRunner.runUIScript(`uiController.setAllowsViewportShrinkToFit(${allows})`, resolve));
     645    }
     646
    639647    static setKeyboardInputModeIdentifier(identifier)
    640648    {
  • trunk/Source/WebCore/ChangeLog

    r242060 r242069  
     12019-02-25  Yongjun Zhang  <yongjun_zhang@apple.com>
     2
     3        scalableNativeWebpageParameters() is not preserved on new page navigation.
     4        https://bugs.webkit.org/show_bug.cgi?id=194892
     5        <rdar://problem/47538280>
     6
     7        If a page's current default viewport configuration is scalableNativeWebpageParameters due to
     8        the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
     9        configuration until we derive the right values from viewport meta-tag.
     10
     11        Reviewed by Wenson Hsieh.
     12
     13        Test: fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html
     14
     15        * page/ViewportConfiguration.cpp:
     16        (WebCore::ViewportConfiguration::canOverrideConfigurationParameters const): Use fixedNativeWebpageParameters().
     17        (WebCore::ViewportConfiguration::updateDefaultConfiguration): Use nativeWebpageParameters.
     18        (WebCore::ViewportConfiguration::nativeWebpageParameters): Return the appropriate default configuration
     19            based on m_canIgnoreScalingConstraints and shouldIgnoreMinimumEffectiveDeviceWidth().
     20        (WebCore::ViewportConfiguration::fixedNativeWebpageParameters): Renamed from nativeWebpageParameters()
     21        (WebCore::ViewportConfiguration::scalableNativeWebpageParameters): Use fixedNativeWebpageParameters.
     22        * page/ViewportConfiguration.h: Make nativeWebpageParameters() an instance method and change the old
     23            static method to fixedNativeWebpageParameters which better reflects the actual behavior.
     24
    1252019-02-25  Zalan Bujtas  <zalan@apple.com>
    226
  • trunk/Source/WebCore/page/ViewportConfiguration.cpp

    r239461 r242069  
    146146bool ViewportConfiguration::canOverrideConfigurationParameters() const
    147147{
    148     return m_defaultConfiguration == ViewportConfiguration::nativeWebpageParameters() || m_defaultConfiguration == ViewportConfiguration::scalableNativeWebpageParameters();
     148    return m_defaultConfiguration == ViewportConfiguration::nativeWebpageParametersWithoutShrinkToFit() || m_defaultConfiguration == ViewportConfiguration::nativeWebpageParametersWithShrinkToFit();
    149149}
    150150
     
    154154        return;
    155155
    156     if (m_canIgnoreScalingConstraints) {
    157         m_defaultConfiguration = ViewportConfiguration::scalableNativeWebpageParameters();
    158         return;
    159     }
    160 
    161     if (shouldIgnoreMinimumEffectiveDeviceWidth())
    162         m_defaultConfiguration = ViewportConfiguration::nativeWebpageParameters();
    163     else
    164         m_defaultConfiguration = ViewportConfiguration::scalableNativeWebpageParameters();
     156    m_defaultConfiguration = nativeWebpageParameters();
    165157}
    166158
     
    335327
    336328ViewportConfiguration::Parameters ViewportConfiguration::nativeWebpageParameters()
     329{
     330    if (m_canIgnoreScalingConstraints || !shouldIgnoreMinimumEffectiveDeviceWidth())
     331        return ViewportConfiguration::nativeWebpageParametersWithShrinkToFit();
     332
     333    return ViewportConfiguration::nativeWebpageParametersWithoutShrinkToFit();
     334}
     335
     336ViewportConfiguration::Parameters ViewportConfiguration::nativeWebpageParametersWithoutShrinkToFit()
    337337{
    338338    Parameters parameters;
     
    349349}
    350350
    351 ViewportConfiguration::Parameters ViewportConfiguration::scalableNativeWebpageParameters()
    352 {
    353     Parameters parameters = ViewportConfiguration::nativeWebpageParameters();
     351ViewportConfiguration::Parameters ViewportConfiguration::nativeWebpageParametersWithShrinkToFit()
     352{
     353    Parameters parameters = ViewportConfiguration::nativeWebpageParametersWithoutShrinkToFit();
    354354    parameters.allowsShrinkToFit = true;
    355355    parameters.minimumScale = 0.25;
  • trunk/Source/WebCore/page/ViewportConfiguration.h

    r239427 r242069  
    103103
    104104    // Matches a width=device-width, initial-scale=1 viewport.
    105     WEBCORE_EXPORT static Parameters nativeWebpageParameters();
    106     static Parameters scalableNativeWebpageParameters();
     105    WEBCORE_EXPORT Parameters nativeWebpageParameters();
     106    static Parameters nativeWebpageParametersWithoutShrinkToFit();
     107    static Parameters nativeWebpageParametersWithShrinkToFit();
    107108    WEBCORE_EXPORT static Parameters webpageParameters();
    108109    WEBCORE_EXPORT static Parameters textDocumentParameters();
  • trunk/Source/WebKit/ChangeLog

    r242059 r242069  
     12019-02-25  Yongjun Zhang  <yongjun_zhang@apple.com>
     2
     3        scalableNativeWebpageParameters() is not preserved on new page navigation.
     4        https://bugs.webkit.org/show_bug.cgi?id=194892
     5        <rdar://problem/47538280>
     6
     7        If a page's current default viewport configuration is scalableNativeWebpageParameters due to
     8        the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
     9        configuration until we derive the right values from viewport meta-tag.
     10
     11        Reviewed by Wenson Hsieh.
     12
     13        * WebProcess/WebPage/ios/WebPageIOS.mm:
     14        (WebKit::WebPage::resetViewportDefaultConfiguration): Use nativeWebpageParameters() instance method to
     15            get the appropriate default configuration.
     16
    1172019-02-25  Wenson Hsieh  <wenson_hsieh@apple.com>
    218
  • trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

    r242059 r242069  
    29072907    auto parametersForStandardFrame = [&] {
    29082908        if (m_page->settings().shouldIgnoreMetaViewport())
    2909             return ViewportConfiguration::nativeWebpageParameters();
     2909            return m_viewportConfiguration.nativeWebpageParameters();
    29102910
    29112911        return ViewportConfiguration::webpageParameters();
  • trunk/Tools/ChangeLog

    r242066 r242069  
     12019-02-25  Yongjun Zhang  <yongjun_zhang@apple.com>
     2
     3        scalableNativeWebpageParameters() is not preserved on new page navigation.
     4        https://bugs.webkit.org/show_bug.cgi?id=194892
     5        <rdar://problem/47538280>
     6
     7        Reviewed by Wenson Hsieh.
     8       
     9        Allow UIScriptController to set WKWebView's _allowsViewportShrinkToFit property with a new `setAllowsViewportShrinkToFit` method.
     10
     11        * DumpRenderTree/ios/UIScriptControllerIOS.mm:
     12        (WTR::UIScriptController::setAllowsViewportShrinkToFit):
     13        * DumpRenderTree/mac/UIScriptControllerMac.mm:
     14        (WTR::UIScriptController::allowsViewportShrinkToFit):
     15        * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
     16        * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
     17        (WTR::UIScriptController::setAllowsViewportShrinkToFit):
     18        * TestRunnerShared/UIScriptContext/UIScriptController.h:
     19        * WebKitTestRunner/UIScriptControllerCocoa.mm:
     20        (WTR::UIScriptController::setAllowsViewportShrinkToFit):
     21
    1222019-02-25  Aakash Jain  <aakash_jain@apple.com>
    223
  • trunk/Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm

    r241971 r242069  
    9595}
    9696
     97void UIScriptController::setAllowsViewportShrinkToFit(bool)
     98{
     99}
     100
    97101void UIScriptController::simulateAccessibilitySettingsChangeNotification(JSValueRef)
    98102{
  • trunk/Tools/DumpRenderTree/mac/UIScriptControllerMac.mm

    r240476 r242069  
    102102}
    103103
     104void UIScriptController::setAllowsViewportShrinkToFit(bool)
     105{
     106}
     107
    104108void UIScriptController::simulateAccessibilitySettingsChangeNotification(JSValueRef)
    105109{
  • trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl

    r241971 r242069  
    237237    void setViewScale(double scale);
    238238    void setMinimumEffectiveWidth(double effectiveWidth);
     239    void setAllowsViewportShrinkToFit(boolean allows);
    239240
    240241    void resignFirstResponder();
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp

    r241971 r242069  
    242242}
    243243
     244void UIScriptController::setAllowsViewportShrinkToFit(bool)
     245{
     246}
     247
    244248void UIScriptController::resignFirstResponder()
    245249{
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h

    r241971 r242069  
    7373    void setViewScale(double);
    7474    void setMinimumEffectiveWidth(double);
     75    void setAllowsViewportShrinkToFit(bool);
    7576
    7677    void resignFirstResponder();
  • trunk/Tools/WebKitTestRunner/UIScriptControllerCocoa.mm

    r241322 r242069  
    5555}
    5656
     57void UIScriptController::setAllowsViewportShrinkToFit(bool allows)
     58{
     59#if WK_API_ENABLED && PLATFORM(IOS_FAMILY)
     60    TestController::singleton().mainWebView()->platformView()._allowsViewportShrinkToFit = allows;
     61#else
     62    UNUSED_PARAM(allows);
     63#endif
     64}
     65
    5766void UIScriptController::resignFirstResponder()
    5867{
Note: See TracChangeset for help on using the changeset viewer.