Changeset 244998 in webkit


Ignore:
Timestamp:
May 6, 2019 6:03:01 PM (5 years ago)
Author:
timothy_horton@apple.com
Message:

_overrideViewportWithArguments does not work when called before loading
https://bugs.webkit.org/show_bug.cgi?id=197638
<rdar://problem/50505111>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::viewportArguments const):
(WebCore::Document::updateViewportArguments):
(WebCore::Document::setOverrideViewportArguments): Deleted.

  • dom/Document.h:

(WebCore::Document::viewportArguments const): Deleted.

  • page/Page.cpp:

(WebCore::Page::setOverrideViewportArguments):

  • page/Page.h:

(WebCore::Page::overrideViewportArguments const):

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::setViewportArguments):
Move overrideViewportArguments to Page, since it is view-global in the API.

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::setOverrideViewportArguments):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/OverrideViewportArguments.mm:

(TEST):

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r244995 r244998  
     12019-05-06  Tim Horton  <timothy_horton@apple.com>
     2
     3        _overrideViewportWithArguments does not work when called before loading
     4        https://bugs.webkit.org/show_bug.cgi?id=197638
     5        <rdar://problem/50505111>
     6
     7        Reviewed by Wenson Hsieh.
     8
     9        * dom/Document.cpp:
     10        (WebCore::Document::viewportArguments const):
     11        (WebCore::Document::updateViewportArguments):
     12        (WebCore::Document::setOverrideViewportArguments): Deleted.
     13        * dom/Document.h:
     14        (WebCore::Document::viewportArguments const): Deleted.
     15        * page/Page.cpp:
     16        (WebCore::Page::setOverrideViewportArguments):
     17        * page/Page.h:
     18        (WebCore::Page::overrideViewportArguments const):
     19        * page/ViewportConfiguration.cpp:
     20        (WebCore::ViewportConfiguration::setViewportArguments):
     21        Move overrideViewportArguments to Page, since it is view-global in the API.
     22
    1232019-05-06  Chris Dumez  <cdumez@apple.com>
    224
  • trunk/Source/WebCore/dom/Document.cpp

    r244971 r244998  
    35553555}
    35563556
    3557 void Document::setOverrideViewportArguments(const Optional<ViewportArguments>& viewportArguments)
    3558 {
    3559     if (viewportArguments == m_overrideViewportArguments)
    3560         return;
    3561 
    3562     m_overrideViewportArguments = viewportArguments;
    3563     updateViewportArguments();
    3564 }
    3565 
    35663557void Document::processViewport(const String& features, ViewportArguments::Type origin)
    35673558{
     
    35823573
    35833574    updateViewportArguments();
     3575}
     3576
     3577ViewportArguments Document::viewportArguments() const
     3578{
     3579    auto* page = this->page();
     3580    if (!page)
     3581        return m_viewportArguments;
     3582    return page->overrideViewportArguments().valueOr(m_viewportArguments);
    35843583}
    35853584
  • trunk/Source/WebCore/dom/Document.h

    r244971 r244998  
    412412
    413413    void setViewportArguments(const ViewportArguments& viewportArguments) { m_viewportArguments = viewportArguments; }
    414     ViewportArguments viewportArguments() const { return m_overrideViewportArguments.valueOr(m_viewportArguments); }
    415 
    416     WEBCORE_EXPORT void setOverrideViewportArguments(const Optional<ViewportArguments>&);
     414    WEBCORE_EXPORT ViewportArguments viewportArguments() const;
    417415
    418416    OptionSet<DisabledAdaptations> disabledAdaptations() const { return m_disabledAdaptations; }
     
    18311829
    18321830    ViewportArguments m_viewportArguments;
    1833     Optional<ViewportArguments> m_overrideViewportArguments;
    18341831    OptionSet<DisabledAdaptations> m_disabledAdaptations;
    18351832
  • trunk/Source/WebCore/page/Page.cpp

    r244682 r244998  
    401401}
    402402
     403void Page::setOverrideViewportArguments(const Optional<ViewportArguments>& viewportArguments)
     404{
     405    if (viewportArguments == m_overrideViewportArguments)
     406        return;
     407
     408    m_overrideViewportArguments = viewportArguments;
     409    if (auto* document = mainFrame().document())
     410        document->updateViewportArguments();
     411}
     412
    403413ScrollingCoordinator* Page::scrollingCoordinator()
    404414{
  • trunk/Source/WebCore/page/Page.h

    r244682 r244998  
    194194    WEBCORE_EXPORT ViewportArguments viewportArguments() const;
    195195
     196    const Optional<ViewportArguments>& overrideViewportArguments() const { return m_overrideViewportArguments; }
     197    WEBCORE_EXPORT void setOverrideViewportArguments(const Optional<ViewportArguments>&);
     198
    196199    static void refreshPlugins(bool reload);
    197200    WEBCORE_EXPORT PluginData& pluginData();
     
    979982#endif
    980983
     984    Optional<ViewportArguments> m_overrideViewportArguments;
     985
    981986    bool m_shouldEnableICECandidateFilteringByDefault { true };
    982987    bool m_mediaPlaybackIsSuspended { false };
  • trunk/Source/WebKit/ChangeLog

    r244997 r244998  
     12019-05-06  Tim Horton  <timothy_horton@apple.com>
     2
     3        _overrideViewportWithArguments does not work when called before loading
     4        https://bugs.webkit.org/show_bug.cgi?id=197638
     5        <rdar://problem/50505111>
     6
     7        Reviewed by Wenson Hsieh.
     8
     9        * WebProcess/WebPage/ios/WebPageIOS.mm:
     10        (WebKit::WebPage::setOverrideViewportArguments):
     11
    1122019-05-06  Chris Dumez  <cdumez@apple.com>
    213
  • trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

    r244955 r244998  
    28302830void WebPage::setOverrideViewportArguments(const Optional<WebCore::ViewportArguments>& arguments)
    28312831{
    2832     if (auto* document = m_page->mainFrame().document())
    2833         document->setOverrideViewportArguments(arguments);
     2832    m_page->setOverrideViewportArguments(arguments);
    28342833}
    28352834
  • trunk/Tools/ChangeLog

    r244988 r244998  
     12019-05-06  Tim Horton  <timothy_horton@apple.com>
     2
     3        _overrideViewportWithArguments does not work when called before loading
     4        https://bugs.webkit.org/show_bug.cgi?id=197638
     5        <rdar://problem/50505111>
     6
     7        Reviewed by Wenson Hsieh.
     8
     9        * TestWebKitAPI/Tests/WebKitCocoa/OverrideViewportArguments.mm:
     10        (TEST):
     11
    1122019-05-04  Per Arne Vollan  <pvollan@apple.com>
    213
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/OverrideViewportArguments.mm

    r244415 r244998  
    7676    setViewport(@{ @"width" : @"500", @"initial-scale": @"1", @"garbage": @"nonsense" });
    7777    EXPECT_WK_STREQ("500", bodyWidth());
     78
     79    // Call overrideViewportWithArguments before loading anything in the
     80    // view and ensure it is respected.
     81    webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 20, 20)]);
     82    setViewport(@{ @"width" : @"1000", @"initial-scale": @"1" });
     83    [webView synchronouslyLoadHTMLString:@"<meta name='viewport' content='initial-scale=1'><div id='divWithViewportUnits' style='width: 100vw;'></div>"];
     84    EXPECT_WK_STREQ("1000", bodyWidth());
     85    EXPECT_EQ(1., [webView scrollView].zoomScale);
    7886}
    7987
Note: See TracChangeset for help on using the changeset viewer.