소스 검색

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 1 년 전
부모
커밋
a93ab25487
1개의 변경된 파일16개의 추가작업 그리고 1개의 파일을 삭제
  1. 16 1
      Userland/Utilities/headless-browser.cpp

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

@@ -109,7 +109,22 @@ public:
     }
 
 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 create_client() override { }