Serenity Operating System
1/*
2 * Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <LibWeb/Bindings/PlatformObject.h>
10
11namespace Web::ResizeObserver {
12
13struct ResizeObserverOptions {
14 Bindings::ResizeObserverBoxOptions box;
15};
16
17// https://drafts.csswg.org/resize-observer/#resize-observer-interface
18class ResizeObserver : public Bindings::PlatformObject {
19 WEB_PLATFORM_OBJECT(ResizeObserver, Bindings::PlatformObject);
20
21public:
22 static WebIDL::ExceptionOr<JS::NonnullGCPtr<ResizeObserver>> construct_impl(JS::Realm&, WebIDL::CallbackType* callback);
23
24 virtual ~ResizeObserver() override;
25
26 void observe(DOM::Element& target, ResizeObserverOptions);
27 void unobserve(DOM::Element& target);
28 void disconnect();
29
30private:
31 explicit ResizeObserver(JS::Realm&);
32
33 virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
34};
35
36}