mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:07:35 +00:00
LibWeb: Implement basic version of CSSOM View's VisualViewport
We got some errors while loading https://twinings.co.uk/ about this interface missing, and it looked fairly simple so I sketched it out. Note that I did leave some FIXMEs where it's not clear exactly which metrics we should be returning.
This commit is contained in:
parent
2a914a7a59
commit
9f6ceff7cf
13 changed files with 257 additions and 2 deletions
49
Userland/Libraries/LibWeb/CSS/VisualViewport.h
Normal file
49
Userland/Libraries/LibWeb/CSS/VisualViewport.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/DOM/EventTarget.h>
|
||||
|
||||
namespace Web::CSS {
|
||||
|
||||
// https://drafts.csswg.org/cssom-view/#visualviewport
|
||||
class VisualViewport final : public DOM::EventTarget {
|
||||
WEB_PLATFORM_OBJECT(VisualViewport, DOM::EventTarget);
|
||||
|
||||
public:
|
||||
static WebIDL::ExceptionOr<JS::NonnullGCPtr<VisualViewport>> create(DOM::Document&);
|
||||
|
||||
virtual ~VisualViewport() override = default;
|
||||
|
||||
[[nodiscard]] double offset_left() const;
|
||||
[[nodiscard]] double offset_top() const;
|
||||
|
||||
[[nodiscard]] double page_left() const;
|
||||
[[nodiscard]] double page_top() const;
|
||||
|
||||
[[nodiscard]] double width() const;
|
||||
[[nodiscard]] double height() const;
|
||||
|
||||
[[nodiscard]] double scale() const;
|
||||
|
||||
void set_onresize(WebIDL::CallbackType*);
|
||||
WebIDL::CallbackType* onresize();
|
||||
void set_onscroll(WebIDL::CallbackType*);
|
||||
WebIDL::CallbackType* onscroll();
|
||||
void set_onscrollend(WebIDL::CallbackType*);
|
||||
WebIDL::CallbackType* onscrollend();
|
||||
|
||||
private:
|
||||
explicit VisualViewport(DOM::Document&);
|
||||
|
||||
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
|
||||
virtual void visit_edges(Cell::Visitor&) override;
|
||||
|
||||
JS::NonnullGCPtr<DOM::Document> m_document;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue