Changeset 253634 in webkit


Ignore:
Timestamp:
Dec 17, 2019 11:25:54 AM (4 years ago)
Author:
Simon Fraser
Message:

Change 'delegatesPageScaling' from a Setting to a flag on ScrollView
https://bugs.webkit.org/show_bug.cgi?id=205319

Reviewed by Tim Horton.

delegatesPageScaling() is never toggled at runtime (even by tests), and it should
be a flag on FrameView just like delegatesScrolling (maybe in future the flags can merge).

So remove the Setting, and have DrawingArea control whether page scaling is delegated.

In WebKit1, WebFrameLoaderClient::transitionToCommittedForNewPage() turns on delegated
page scaling for iOS.

Source/WebCore:

  • page/Frame.cpp:

(WebCore::Frame::frameScaleFactor const):

  • page/FrameSnapshotting.cpp:

(WebCore::snapshotFrameRectWithClip):

  • page/FrameView.cpp:

(WebCore::FrameView::visibleContentScaleFactor const):

  • page/Page.cpp:

(WebCore::Page::setPageScaleFactor):

  • page/Settings.yaml:
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setDelegatesPageScaling):

  • platform/ScrollView.h:

(WebCore::ScrollView::delegatesPageScaling const):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::addToOverlapMap const):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::usesDelegatedPageScaling const):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):

  • WebProcess/WebPage/ios/FindControllerIOS.mm:

(WebKit::FindIndicatorOverlayClientIOS::drawRect):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::transitionToCommittedForNewPage):

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Location:
trunk/Source
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r253633 r253634  
    220220        * platform/graphics/Image.h:
    221221        (WebCore::Image::orientation const):
     222
     2232019-12-16  Simon Fraser  <simon.fraser@apple.com>
     224
     225        Change 'delegatesPageScaling' from a Setting to a flag on ScrollView
     226        https://bugs.webkit.org/show_bug.cgi?id=205319
     227
     228        Reviewed by Tim Horton.
     229
     230        delegatesPageScaling() is never toggled at runtime (even by tests), and it should
     231        be a flag on FrameView just like delegatesScrolling (maybe in future the flags can merge).
     232
     233        So remove the Setting, and have DrawingArea control whether page scaling is delegated.
     234       
     235        In WebKit1, WebFrameLoaderClient::transitionToCommittedForNewPage() turns on delegated
     236        page scaling for iOS.
     237
     238        * page/Frame.cpp:
     239        (WebCore::Frame::frameScaleFactor const):
     240        * page/FrameSnapshotting.cpp:
     241        (WebCore::snapshotFrameRectWithClip):
     242        * page/FrameView.cpp:
     243        (WebCore::FrameView::visibleContentScaleFactor const):
     244        * page/Page.cpp:
     245        (WebCore::Page::setPageScaleFactor):
     246        * page/Settings.yaml:
     247        * platform/ScrollView.cpp:
     248        (WebCore::ScrollView::setDelegatesPageScaling):
     249        * platform/ScrollView.h:
     250        (WebCore::ScrollView::delegatesPageScaling const):
     251        * rendering/RenderLayerCompositor.cpp:
     252        (WebCore::RenderLayerCompositor::addToOverlapMap const):
    222253
    2232542019-12-16  Ryosuke Niwa  <rniwa@webkit.org>
  • trunk/Source/WebCore/page/Frame.cpp

    r253519 r253634  
    920920
    921921    // Main frame is scaled with respect to he container but inner frames are not scaled with respect to the main frame.
    922     if (!page || &page->mainFrame() != this || settings().delegatesPageScaling())
     922    if (!page || !isMainFrame())
    923923        return 1;
     924
     925    if (FrameView* view = this->view()) {
     926        if (view->delegatesPageScaling())
     927            return 1;
     928    }
    924929
    925930    return page->pageScaleFactor();
  • trunk/Source/WebCore/page/FrameSnapshotting.cpp

    r247846 r253634  
    106106    float scaleFactor = frame.page()->deviceScaleFactor();
    107107
    108     if (frame.settings().delegatesPageScaling())
     108    if (frame.view()->delegatesPageScaling())
    109109        scaleFactor *= frame.page()->pageScaleFactor();
    110110
  • trunk/Source/WebCore/page/FrameView.cpp

    r253308 r253634  
    37103710float FrameView::visibleContentScaleFactor() const
    37113711{
    3712     if (!frame().isMainFrame() || !frame().settings().delegatesPageScaling())
     3712    // FIXME: This !delegatesPageScaling() is confusing. This function should probably be renamed to delegatedPageScaleFactor().
     3713    if (!frame().isMainFrame() || !delegatesPageScaling())
    37133714        return 1;
    37143715
  • trunk/Source/WebCore/page/Page.cpp

    r253308 r253634  
    10321032
    10331033    Document* document = mainFrame().document();
    1034     FrameView* view = document->view();
     1034    RefPtr<FrameView> view = document->view();
    10351035
    10361036    if (scale == m_pageScaleFactor) {
    10371037        if (view && view->scrollPosition() != origin) {
    1038             if (!m_settings->delegatesPageScaling())
     1038            if (!view->delegatesPageScaling())
    10391039                document->updateLayoutIgnorePendingStylesheets();
    10401040
     
    10601060    m_pageScaleFactor = scale;
    10611061
    1062     if (!m_settings->delegatesPageScaling()) {
     1062    if (!view->delegatesPageScaling()) {
    10631063        view->setNeedsLayoutAfterViewConfigurationChange();
    10641064        view->setNeedsCompositingGeometryUpdate();
     
    10761076
    10771077    if (view && view->scrollPosition() != origin) {
    1078         if (!m_settings->delegatesPageScaling() && document->renderView() && document->renderView()->needsLayout() && view->didFirstLayout())
     1078        if (!view->delegatesPageScaling() && document->renderView() && document->renderView()->needsLayout() && view->didFirstLayout())
    10791079            view->layoutContext().layout();
    10801080
  • trunk/Source/WebCore/page/Settings.yaml

    r253316 r253634  
    380380  initial: false
    381381
    382 delegatesPageScaling:
    383   initial: false
    384 
    385382plugInSnapshottingEnabled:
    386383  initial: false
  • trunk/Source/WebCore/platform/ScrollView.cpp

    r246488 r253634  
    198198}
    199199
     200void ScrollView::setDelegatesPageScaling(bool delegatesPageScaling)
     201{
     202    m_delegatesPageScaling = delegatesPageScaling;
     203}
     204
    200205IntPoint ScrollView::contentsScrollPosition() const
    201206{
  • trunk/Source/WebCore/platform/ScrollView.h

    r252935 r253634  
    138138    WEBCORE_EXPORT void setDelegatesScrolling(bool);
    139139
     140    bool delegatesPageScaling() const { return m_delegatesPageScaling; }
     141    WEBCORE_EXPORT void setDelegatesPageScaling(bool);
     142
    140143    // Overridden by FrameView to create custom CSS scrollbars if applicable.
    141144    virtual Ref<Scrollbar> createScrollbar(ScrollbarOrientation);
     
    530533    bool m_paintsEntireContents { false };
    531534    bool m_delegatesScrolling { false };
     535    bool m_delegatesPageScaling { false };
     536
    532537}; // class ScrollView
    533538
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r252724 r253634  
    19081908    auto clippedBounds = extent.bounds;
    19091909    if (!clipRect.isInfinite()) {
    1910         // On iOS, pageScaleFactor() is not applied by RenderView, so we should not scale here.
    1911         if (!m_renderView.settings().delegatesPageScaling())
     1910        // With delegated page scaling, pageScaleFactor() is not applied by RenderView, so we should not scale here.
     1911        auto& frameView = m_renderView.frameView();
     1912        if (!frameView.delegatesPageScaling())
    19121913            clipRect.scale(pageScaleFactor());
    19131914
  • trunk/Source/WebKit/ChangeLog

    r253626 r253634  
    101101        (WebKit::NetworkResourceLoader::startWithServiceWorker):
    102102        (WebKit::NetworkResourceLoader::serviceWorkerDidNotHandle):
     103
     1042019-12-16  Simon Fraser  <simon.fraser@apple.com>
     105
     106        Change 'delegatesPageScaling' from a Setting to a flag on ScrollView
     107        https://bugs.webkit.org/show_bug.cgi?id=205319
     108
     109        Reviewed by Tim Horton.
     110
     111        delegatesPageScaling() is never toggled at runtime (even by tests), and it should
     112        be a flag on FrameView just like delegatesScrolling (maybe in future the flags can merge).
     113
     114        So remove the Setting, and have DrawingArea control whether page scaling is delegated.
     115       
     116        In WebKit1, WebFrameLoaderClient::transitionToCommittedForNewPage() turns on delegated
     117        page scaling for iOS.
     118
     119        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     120        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
     121        * WebProcess/WebPage/DrawingArea.h:
     122        (WebKit::DrawingArea::usesDelegatedPageScaling const):
     123        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
     124        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
     125        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
     126        * WebProcess/WebPage/ios/FindControllerIOS.mm:
     127        (WebKit::FindIndicatorOverlayClientIOS::drawRect):
    103128
    1041292019-12-16  Wenson Hsieh  <wenson_hsieh@apple.com>
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r253559 r253634  
    15181518    auto* drawingArea = webPage->drawingArea();
    15191519    view->setViewExposedRect(drawingArea->viewExposedRect());
    1520     if (isMainFrame)
     1520    if (isMainFrame) {
    15211521        view->setDelegatesScrolling(drawingArea->usesDelegatedScrolling());
     1522        view->setDelegatesPageScaling(drawingArea->usesDelegatedPageScaling());
     1523    }
    15221524#endif
    15231525
  • trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h

    r253559 r253634  
    108108    virtual bool supportsAsyncScrolling() const { return false; }
    109109    virtual bool usesDelegatedScrolling() const { return false; }
     110    virtual bool usesDelegatedPageScaling() const { return false; }
    110111
    111112    virtual bool shouldUseTiledBackingForFrameView(const WebCore::FrameView&) const { return false; }
  • trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h

    r253559 r253634  
    8181    bool supportsAsyncScrolling() const override { return true; }
    8282    bool usesDelegatedScrolling() const override { return true; }
     83    bool usesDelegatedPageScaling() const override { return true; }
    8384
    8485    void setLayerTreeStateIsFrozen(bool) override;
  • trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

    r253559 r253634  
    6464{
    6565    webPage.corePage()->settings().setForceCompositingMode(true);
    66 #if PLATFORM(IOS_FAMILY)
    67     webPage.corePage()->settings().setDelegatesPageScaling(true);
    68 #endif
    6966    m_rootLayer->setName("drawing area root");
    7067
  • trunk/Source/WebKit/WebProcess/WebPage/ios/FindControllerIOS.mm

    r250779 r253634  
    6363    float scaleFactor = m_frame.page()->deviceScaleFactor();
    6464
    65     if (m_frame.settings().delegatesPageScaling())
     65    if (m_frame.view() && m_frame.view()->delegatesPageScaling())
    6666        scaleFactor *= m_frame.page()->pageScaleFactor();
    6767
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r253571 r253634  
     12019-12-16  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Change 'delegatesPageScaling' from a Setting to a flag on ScrollView
     4        https://bugs.webkit.org/show_bug.cgi?id=205319
     5
     6        Reviewed by Tim Horton.
     7
     8        delegatesPageScaling() is never toggled at runtime (even by tests), and it should
     9        be a flag on FrameView just like delegatesScrolling (maybe in future the flags can merge).
     10
     11        So remove the Setting, and have DrawingArea control whether page scaling is delegated.
     12       
     13        In WebKit1, WebFrameLoaderClient::transitionToCommittedForNewPage() turns on delegated
     14        page scaling for iOS.
     15
     16        * WebCoreSupport/WebFrameLoaderClient.mm:
     17        (WebFrameLoaderClient::transitionToCommittedForNewPage):
     18        * WebView/WebView.mm:
     19        (-[WebView _preferencesChanged:]):
     20
    1212019-12-16  Antti Koivisto  <antti@apple.com>
    222
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r252435 r253634  
    14741474#if PLATFORM(IOS_FAMILY)
    14751475        coreView->setDelegatesScrolling(true);
     1476        coreView->setDelegatesPageScaling(true);
    14761477#endif
    14771478        coreView->setParentVisible(true);
  • trunk/Source/WebKitLegacy/mac/WebView/WebView.mm

    r253571 r253634  
    30453045
    30463046    ASSERT_WITH_MESSAGE(settings.backForwardCacheSupportsPlugins(), "BackForwardCacheSupportsPlugins should be enabled on iOS.");
    3047     settings.setDelegatesPageScaling(true);
    30483047
    30493048#if ENABLE(TEXT_AUTOSIZING)
Note: See TracChangeset for help on using the changeset viewer.