Explorar o código

headless-browser: Implement on_scroll_to_point and on_scroll_by_delta

Without these callbacks "scroll" events are not emitted so we can't
write tests for scrolling.
Aliaksandr Kalenik hai 1 ano
pai
achega
a93ab25487
Modificáronse 1 ficheiros con 16 adicións e 1 borrados
  1. 16 1
      Userland/Utilities/headless-browser.cpp

+ 16 - 1
Userland/Utilities/headless-browser.cpp

@@ -109,7 +109,22 @@ public:
     }
     }
 
 
 private:
 private:
-    HeadlessWebContentView() = default;
+    HeadlessWebContentView()
+    {
+        on_scroll_to_point = [this](auto position) {
+            auto new_viewport_rect = m_viewport_rect;
+            new_viewport_rect.set_location(position);
+            client().async_set_viewport_rect(new_viewport_rect.to_type<Web::DevicePixels>());
+        };
+
+        on_scroll_by_delta = [this](auto x_delta, auto y_delta) {
+            auto position = m_viewport_rect.location();
+            position.set_x(position.x() + x_delta);
+            position.set_y(position.y() + y_delta);
+            if (on_scroll_to_point)
+                on_scroll_to_point(position);
+        };
+    }
 
 
     void update_zoom() override { }
     void update_zoom() override { }
     void create_client() override { }
     void create_client() override { }