[WPE] Rendering on a HiDPI display looks scaled up instead of rendered at 2x
https://bugs.webkit.org/show_bug.cgi?id=185764

Patch by Ryan Walklin <ryan@testtoast.com> on 2019-05-16
Reviewed by Carlos Garcia Campos.

Add a function to the wpe_view_backend_client struct which accepts a device scale factor
configured through wpe_view_backend_dispatch_set_device_scale_factor() and calls
setIntrinsicDeviceScaleFactor for the the current View.Page object. The
function definition has been added in libwpe 1.3.

* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::m_backend): Add set_device_scale_factor implementation declared by libwpe.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@245394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index f9ab477..cecd952 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,18 @@
+2019-05-16  Ryan Walklin  <ryan@testtoast.com>
+
+        [WPE] Rendering on a HiDPI display looks scaled up instead of rendered at 2x
+        https://bugs.webkit.org/show_bug.cgi?id=185764
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add a function to the wpe_view_backend_client struct which accepts a device scale factor
+        configured through wpe_view_backend_dispatch_set_device_scale_factor() and calls
+        setIntrinsicDeviceScaleFactor for the the current View.Page object. The
+        function definition has been added in libwpe 1.3.
+
+        * UIProcess/API/wpe/WPEView.cpp:
+        (WKWPE::m_backend): Add set_device_scale_factor implementation declared by libwpe.
+
 2019-05-15  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: user gesture toggle should also force user interaction flag
diff --git a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp
index 0bc7cb8..3060d85 100644
--- a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp
+++ b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp
@@ -100,9 +100,19 @@
                 flags.add(WebCore::ActivityState::IsInWindow);
             view.setViewState(flags);
         },
-        // padding
+        // get_accessible
         nullptr,
+#if WPE_CHECK_VERSION(1, 3, 0)
+        // set_device_scale_factor
+        [](void* data, float scale)
+        {
+            auto& view = *reinterpret_cast<View*>(data);
+            view.page().setIntrinsicDeviceScaleFactor(scale);
+        },
+#else
         nullptr,
+#endif // WPE_CHECK_VERSION(1, 3, 0)
+        // padding,
         nullptr
     };
     wpe_view_backend_set_backend_client(m_backend, &s_backendClient, this);