fix(webkit): scale the view in fixedLayout mode (#395)
This commit is contained in:
parent
37dd56ff37
commit
86f1f0c952
|
|
@ -7304,10 +7304,10 @@ index 78caedf0c0ce83675569502d150fcc44e5f9868c..02b057160948455c3c78efb18e902808
|
||||||
} // namespace WebKit
|
} // namespace WebKit
|
||||||
diff --git a/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp
|
diff --git a/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..22472e27a29b8791e4177edaebc19e842bf96892
|
index 0000000000000000000000000000000000000000..78815bc17978a23ca811ff99039b4fe86e6fb4a0
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp
|
+++ b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp
|
||||||
@@ -0,0 +1,85 @@
|
@@ -0,0 +1,95 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) 2019 Microsoft Corporation.
|
+ * Copyright (C) 2019 Microsoft Corporation.
|
||||||
+ *
|
+ *
|
||||||
|
|
@ -7367,6 +7367,16 @@ index 0000000000000000000000000000000000000000..22472e27a29b8791e4177edaebc19e84
|
||||||
+
|
+
|
||||||
+void WebPageInspectorEmulationAgent::setDeviceMetricsOverride(int width, int height, double deviceScaleFactor, bool fixedlayout, Ref<SetDeviceMetricsOverrideCallback>&& callback)
|
+void WebPageInspectorEmulationAgent::setDeviceMetricsOverride(int width, int height, double deviceScaleFactor, bool fixedlayout, Ref<SetDeviceMetricsOverrideCallback>&& callback)
|
||||||
+{
|
+{
|
||||||
|
+#if PLATFORM(GTK)
|
||||||
|
+ // On gtk, fixed layout doesn't work with compositing enabled
|
||||||
|
+ // FIXME: This turns off compositing forever, even if fixedLayout is disabled.
|
||||||
|
+ if (fixedlayout) {
|
||||||
|
+ auto copy = m_page.preferences().copy();
|
||||||
|
+ copy->setAcceleratedCompositingEnabled(false);
|
||||||
|
+ m_page.setPreferences(copy);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
+ m_page.setCustomDeviceScaleFactor(deviceScaleFactor);
|
+ m_page.setCustomDeviceScaleFactor(deviceScaleFactor);
|
||||||
+ m_page.setUseFixedLayout(fixedlayout);
|
+ m_page.setUseFixedLayout(fixedlayout);
|
||||||
+ platformSetSize(width, height, [callback = WTFMove(callback)](const String& error) {
|
+ platformSetSize(width, height, [callback = WTFMove(callback)](const String& error) {
|
||||||
|
|
@ -9422,6 +9432,89 @@ index 9a78a5fe24da78b34ebefa785a07b5049ba473ba..17f4f626641629cb6c97d36b7361305a
|
||||||
HashSet<WebResourceLoader*> m_loadersWithUploads;
|
HashSet<WebResourceLoader*> m_loadersWithUploads;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp
|
||||||
|
index a360fe5674b3065197ffe9eaa5853f559b35be63..41fcd6db05c844d935aff6589cb069e3d4b9eb4c 100644
|
||||||
|
--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp
|
||||||
|
+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp
|
||||||
|
@@ -1721,13 +1721,10 @@ void WebPage::setSize(const WebCore::IntSize& viewSize)
|
||||||
|
view->resize(viewSize);
|
||||||
|
m_drawingArea->setNeedsDisplay();
|
||||||
|
|
||||||
|
-#if USE(COORDINATED_GRAPHICS)
|
||||||
|
if (view->useFixedLayout())
|
||||||
|
sendViewportAttributesChanged(m_page->viewportArguments());
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if USE(COORDINATED_GRAPHICS)
|
||||||
|
void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArguments)
|
||||||
|
{
|
||||||
|
FrameView* view = m_page->mainFrame().view();
|
||||||
|
@@ -1748,6 +1745,7 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg
|
||||||
|
|
||||||
|
ViewportAttributes attr = computeViewportAttributes(viewportArguments, minimumLayoutFallbackWidth, deviceWidth, deviceHeight, 1, m_viewSize);
|
||||||
|
|
||||||
|
+#if USE(COORDINATED_GRAPHICS)
|
||||||
|
// If no layout was done yet set contentFixedOrigin to (0,0).
|
||||||
|
IntPoint contentFixedOrigin = view->didFirstLayout() ? view->fixedVisibleContentRect().location() : IntPoint();
|
||||||
|
|
||||||
|
@@ -1763,11 +1761,15 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg
|
||||||
|
|
||||||
|
contentFixedSize.scale(1 / attr.initialScale);
|
||||||
|
view->setFixedVisibleContentRect(IntRect(contentFixedOrigin, roundedIntSize(contentFixedSize)));
|
||||||
|
+#else
|
||||||
|
+ UNUSED_PARAM(view);
|
||||||
|
+#endif // USE(COORDINATED_GRAPHICS)
|
||||||
|
|
||||||
|
attr.initialScale = m_page->viewportArguments().zoom; // Resets auto (-1) if no value was set by user.
|
||||||
|
|
||||||
|
// This also takes care of the relayout.
|
||||||
|
setFixedLayoutSize(roundedIntSize(attr.layoutSize));
|
||||||
|
+ scaleView(deviceWidth / attr.layoutSize.width());
|
||||||
|
|
||||||
|
#if USE(COORDINATED_GRAPHICS)
|
||||||
|
m_drawingArea->didChangeViewportAttributes(WTFMove(attr));
|
||||||
|
@@ -1775,7 +1777,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg
|
||||||
|
send(Messages::WebPageProxy::DidChangeViewportProperties(attr));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
void WebPage::scrollMainFrameIfNotAtMaxScrollPosition(const IntSize& scrollOffset)
|
||||||
|
{
|
||||||
|
@@ -2157,17 +2158,13 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum
|
||||||
|
viewportConfigurationChanged();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#if USE(COORDINATED_GRAPHICS)
|
||||||
|
FrameView* view = m_page->mainFrame().view();
|
||||||
|
if (view && view->useFixedLayout())
|
||||||
|
sendViewportAttributesChanged(viewportArguments);
|
||||||
|
+#if USE(COORDINATED_GRAPHICS)
|
||||||
|
else
|
||||||
|
m_drawingArea->didChangeViewportAttributes(ViewportAttributes());
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
-#if !PLATFORM(IOS_FAMILY) && !USE(COORDINATED_GRAPHICS)
|
||||||
|
- UNUSED_PARAM(viewportArguments);
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebPage::listenForLayoutMilestones(OptionSet<WebCore::LayoutMilestone> milestones)
|
||||||
|
diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h
|
||||||
|
index b07cf17f1b22c7119f5cbddd1bae8c29cf9d9ad0..51fa89e597c2dc8fd9eaf07d6c40fa060ed16b1b 100644
|
||||||
|
--- a/Source/WebKit/WebProcess/WebPage/WebPage.h
|
||||||
|
+++ b/Source/WebKit/WebProcess/WebPage/WebPage.h
|
||||||
|
@@ -1491,9 +1491,7 @@ private:
|
||||||
|
void countStringMatches(const String&, uint32_t findOptions, uint32_t maxMatchCount);
|
||||||
|
void replaceMatches(const Vector<uint32_t>& matchIndices, const String& replacementText, bool selectionOnly, CallbackID);
|
||||||
|
|
||||||
|
-#if USE(COORDINATED_GRAPHICS)
|
||||||
|
void sendViewportAttributesChanged(const WebCore::ViewportArguments&);
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex);
|
||||||
|
void setTextForActivePopupMenu(int32_t index);
|
||||||
diff --git a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp b/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
diff --git a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp b/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
||||||
index a70f6fd52096a5dca901ea70a3755f14d6b4a0fd..f02e5c774a49d3e67860adb3b011531313eaf8d1 100644
|
index a70f6fd52096a5dca901ea70a3755f14d6b4a0fd..f02e5c774a49d3e67860adb3b011531313eaf8d1 100644
|
||||||
--- a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
--- a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue