Diff
Modified: trunk/Source/WebCore/ChangeLog (253633 => 253634)
--- trunk/Source/WebCore/ChangeLog 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/ChangeLog 2019-12-17 19:25:54 UTC (rev 253634)
@@ -220,6 +220,37 @@
* platform/graphics/Image.h:
(WebCore::Image::orientation const):
+2019-12-16 Simon Fraser <simon.fra...@apple.com>
+
+ 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.
+
+ * 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):
+
2019-12-16 Ryosuke Niwa <rn...@webkit.org>
TextManipulationController should observe newly inserted or displayed contents
Modified: trunk/Source/WebCore/page/Frame.cpp (253633 => 253634)
--- trunk/Source/WebCore/page/Frame.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/page/Frame.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -919,9 +919,14 @@
Page* page = this->page();
// Main frame is scaled with respect to he container but inner frames are not scaled with respect to the main frame.
- if (!page || &page->mainFrame() != this || settings().delegatesPageScaling())
+ if (!page || !isMainFrame())
return 1;
+ if (FrameView* view = this->view()) {
+ if (view->delegatesPageScaling())
+ return 1;
+ }
+
return page->pageScaleFactor();
}
Modified: trunk/Source/WebCore/page/FrameSnapshotting.cpp (253633 => 253634)
--- trunk/Source/WebCore/page/FrameSnapshotting.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/page/FrameSnapshotting.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -105,7 +105,7 @@
float scaleFactor = frame.page()->deviceScaleFactor();
- if (frame.settings().delegatesPageScaling())
+ if (frame.view()->delegatesPageScaling())
scaleFactor *= frame.page()->pageScaleFactor();
if (options & SnapshotOptionsPaintWithIntegralScaleFactor)
Modified: trunk/Source/WebCore/page/FrameView.cpp (253633 => 253634)
--- trunk/Source/WebCore/page/FrameView.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/page/FrameView.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -3709,7 +3709,8 @@
float FrameView::visibleContentScaleFactor() const
{
- if (!frame().isMainFrame() || !frame().settings().delegatesPageScaling())
+ // FIXME: This !delegatesPageScaling() is confusing. This function should probably be renamed to delegatedPageScaleFactor().
+ if (!frame().isMainFrame() || !delegatesPageScaling())
return 1;
Page* page = frame().page();
Modified: trunk/Source/WebCore/page/Page.cpp (253633 => 253634)
--- trunk/Source/WebCore/page/Page.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/page/Page.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -1031,11 +1031,11 @@
LOG(Viewports, "Page::setPageScaleFactor %.2f - inStableState %d", scale, inStableState);
Document* document = mainFrame().document();
- FrameView* view = document->view();
+ RefPtr<FrameView> view = document->view();
if (scale == m_pageScaleFactor) {
if (view && view->scrollPosition() != origin) {
- if (!m_settings->delegatesPageScaling())
+ if (!view->delegatesPageScaling())
document->updateLayoutIgnorePendingStylesheets();
if (!view->delegatesScrolling())
@@ -1059,7 +1059,7 @@
m_pageScaleFactor = scale;
- if (!m_settings->delegatesPageScaling()) {
+ if (!view->delegatesPageScaling()) {
view->setNeedsLayoutAfterViewConfigurationChange();
view->setNeedsCompositingGeometryUpdate();
@@ -1075,7 +1075,7 @@
view->setViewportConstrainedObjectsNeedLayout();
if (view && view->scrollPosition() != origin) {
- if (!m_settings->delegatesPageScaling() && document->renderView() && document->renderView()->needsLayout() && view->didFirstLayout())
+ if (!view->delegatesPageScaling() && document->renderView() && document->renderView()->needsLayout() && view->didFirstLayout())
view->layoutContext().layout();
if (!view->delegatesScrolling())
Modified: trunk/Source/WebCore/page/Settings.yaml (253633 => 253634)
--- trunk/Source/WebCore/page/Settings.yaml 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/page/Settings.yaml 2019-12-17 19:25:54 UTC (rev 253634)
@@ -379,9 +379,6 @@
diagnosticLoggingEnabled:
initial: false
-delegatesPageScaling:
- initial: false
-
plugInSnapshottingEnabled:
initial: false
Modified: trunk/Source/WebCore/platform/ScrollView.cpp (253633 => 253634)
--- trunk/Source/WebCore/platform/ScrollView.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/platform/ScrollView.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -197,6 +197,11 @@
delegatesScrollingDidChange();
}
+void ScrollView::setDelegatesPageScaling(bool delegatesPageScaling)
+{
+ m_delegatesPageScaling = delegatesPageScaling;
+}
+
IntPoint ScrollView::contentsScrollPosition() const
{
#if PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebCore/platform/ScrollView.h (253633 => 253634)
--- trunk/Source/WebCore/platform/ScrollView.h 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/platform/ScrollView.h 2019-12-17 19:25:54 UTC (rev 253634)
@@ -137,6 +137,9 @@
bool delegatesScrolling() const { return m_delegatesScrolling; }
WEBCORE_EXPORT void setDelegatesScrolling(bool);
+ bool delegatesPageScaling() const { return m_delegatesPageScaling; }
+ WEBCORE_EXPORT void setDelegatesPageScaling(bool);
+
// Overridden by FrameView to create custom CSS scrollbars if applicable.
virtual Ref<Scrollbar> createScrollbar(ScrollbarOrientation);
@@ -529,6 +532,8 @@
bool m_paintsEntireContents { false };
bool m_delegatesScrolling { false };
+ bool m_delegatesPageScaling { false };
+
}; // class ScrollView
} // namespace WebCore
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (253633 => 253634)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -1907,8 +1907,9 @@
auto clippedBounds = extent.bounds;
if (!clipRect.isInfinite()) {
- // On iOS, pageScaleFactor() is not applied by RenderView, so we should not scale here.
- if (!m_renderView.settings().delegatesPageScaling())
+ // With delegated page scaling, pageScaleFactor() is not applied by RenderView, so we should not scale here.
+ auto& frameView = m_renderView.frameView();
+ if (!frameView.delegatesPageScaling())
clipRect.scale(pageScaleFactor());
clippedBounds.intersect(clipRect);
Modified: trunk/Source/WebKit/ChangeLog (253633 => 253634)
--- trunk/Source/WebKit/ChangeLog 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKit/ChangeLog 2019-12-17 19:25:54 UTC (rev 253634)
@@ -101,6 +101,31 @@
(WebKit::NetworkResourceLoader::startWithServiceWorker):
(WebKit::NetworkResourceLoader::serviceWorkerDidNotHandle):
+2019-12-16 Simon Fraser <simon.fra...@apple.com>
+
+ 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.
+
+ * 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):
+
2019-12-16 Wenson Hsieh <wenson_hs...@apple.com>
-[UIWKDocumentContext markedTextRange] is wrong when the caret is not at the start of marked text
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (253633 => 253634)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2019-12-17 19:25:54 UTC (rev 253634)
@@ -1517,8 +1517,10 @@
#if PLATFORM(COCOA)
auto* drawingArea = webPage->drawingArea();
view->setViewExposedRect(drawingArea->viewExposedRect());
- if (isMainFrame)
+ if (isMainFrame) {
view->setDelegatesScrolling(drawingArea->usesDelegatedScrolling());
+ view->setDelegatesPageScaling(drawingArea->usesDelegatedPageScaling());
+ }
#endif
if (webPage->scrollPinningBehavior() != DoNotPin)
Modified: trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h (253633 => 253634)
--- trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h 2019-12-17 19:25:54 UTC (rev 253634)
@@ -107,6 +107,7 @@
virtual bool supportsAsyncScrolling() const { return false; }
virtual bool usesDelegatedScrolling() const { return false; }
+ virtual bool usesDelegatedPageScaling() const { return false; }
virtual bool shouldUseTiledBackingForFrameView(const WebCore::FrameView&) const { return false; }
Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h (253633 => 253634)
--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h 2019-12-17 19:25:54 UTC (rev 253634)
@@ -80,6 +80,7 @@
bool supportsAsyncScrolling() const override { return true; }
bool usesDelegatedScrolling() const override { return true; }
+ bool usesDelegatedPageScaling() const override { return true; }
void setLayerTreeStateIsFrozen(bool) override;
bool layerTreeStateIsFrozen() const override { return m_isFlushingSuspended; }
Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm (253633 => 253634)
--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm 2019-12-17 19:25:54 UTC (rev 253634)
@@ -63,9 +63,6 @@
, m_layerFlushTimer(*this, &RemoteLayerTreeDrawingArea::flushLayers)
{
webPage.corePage()->settings().setForceCompositingMode(true);
-#if PLATFORM(IOS_FAMILY)
- webPage.corePage()->settings().setDelegatesPageScaling(true);
-#endif
m_rootLayer->setName("drawing area root");
m_commitQueue = dispatch_queue_create("com.apple.WebKit.WebContent.RemoteLayerTreeDrawingArea.CommitQueue", nullptr);
Modified: trunk/Source/WebKit/WebProcess/WebPage/ios/FindControllerIOS.mm (253633 => 253634)
--- trunk/Source/WebKit/WebProcess/WebPage/ios/FindControllerIOS.mm 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKit/WebProcess/WebPage/ios/FindControllerIOS.mm 2019-12-17 19:25:54 UTC (rev 253634)
@@ -62,7 +62,7 @@
{
float scaleFactor = m_frame.page()->deviceScaleFactor();
- if (m_frame.settings().delegatesPageScaling())
+ if (m_frame.view() && m_frame.view()->delegatesPageScaling())
scaleFactor *= m_frame.page()->pageScaleFactor();
// If the page scale changed, we need to paint a new TextIndicator.
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (253633 => 253634)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2019-12-17 19:25:54 UTC (rev 253634)
@@ -1,3 +1,23 @@
+2019-12-16 Simon Fraser <simon.fra...@apple.com>
+
+ 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.
+
+ * WebCoreSupport/WebFrameLoaderClient.mm:
+ (WebFrameLoaderClient::transitionToCommittedForNewPage):
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2019-12-16 Antti Koivisto <an...@apple.com>
Remove display:contents feature flag
Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm (253633 => 253634)
--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm 2019-12-17 19:25:54 UTC (rev 253634)
@@ -1473,6 +1473,7 @@
if (isMainFrame) {
#if PLATFORM(IOS_FAMILY)
coreView->setDelegatesScrolling(true);
+ coreView->setDelegatesPageScaling(true);
#endif
coreView->setParentVisible(true);
}
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (253633 => 253634)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2019-12-17 19:19:48 UTC (rev 253633)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2019-12-17 19:25:54 UTC (rev 253634)
@@ -3044,7 +3044,6 @@
settings.setPasswordEchoDurationInSeconds([preferences _passwordEchoDuration]);
ASSERT_WITH_MESSAGE(settings.backForwardCacheSupportsPlugins(), "BackForwardCacheSupportsPlugins should be enabled on iOS.");
- settings.setDelegatesPageScaling(true);
#if ENABLE(TEXT_AUTOSIZING)
settings.setMinimumZoomFontSize([preferences _minimumZoomFontSize]);