LibWeb: Make ResizeObserver GC-allocated
This commit is contained in:
parent
915a240944
commit
0dc2c27fa3
Notes:
sideshowbarker
2024-07-17 09:49:33 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/0dc2c27fa3 Pull-request: https://github.com/SerenityOS/serenity/pull/14816 Reviewed-by: https://github.com/ADKaster Reviewed-by: https://github.com/linusg ✅
4 changed files with 24 additions and 14 deletions
|
@ -453,7 +453,6 @@ class IntersectionObserverWrapper;
|
|||
class LocationObject;
|
||||
class OptionConstructor;
|
||||
class RangePrototype;
|
||||
class ResizeObserverWrapper;
|
||||
class URLSearchParamsIteratorWrapper;
|
||||
class URLSearchParamsWrapper;
|
||||
class URLWrapper;
|
||||
|
|
|
@ -5,18 +5,27 @@
|
|||
*/
|
||||
|
||||
#include <LibWeb/DOM/Element.h>
|
||||
#include <LibWeb/HTML/Window.h>
|
||||
#include <LibWeb/ResizeObserver/ResizeObserver.h>
|
||||
|
||||
namespace Web::ResizeObserver {
|
||||
|
||||
// https://drafts.csswg.org/resize-observer/#dom-resizeobserver-resizeobserver
|
||||
NonnullRefPtr<ResizeObserver> ResizeObserver::create_with_global_object(HTML::Window&, Bindings::CallbackType* callback)
|
||||
JS::NonnullGCPtr<ResizeObserver> ResizeObserver::create_with_global_object(HTML::Window& window, Bindings::CallbackType* callback)
|
||||
{
|
||||
// FIXME: Implement
|
||||
(void)callback;
|
||||
return adopt_ref(*new ResizeObserver);
|
||||
return *window.heap().allocate<ResizeObserver>(window.realm(), window);
|
||||
}
|
||||
|
||||
ResizeObserver::ResizeObserver(HTML::Window& window)
|
||||
: PlatformObject(window.realm())
|
||||
{
|
||||
set_prototype(&window.cached_web_prototype("ResizeObserver"));
|
||||
}
|
||||
|
||||
ResizeObserver::~ResizeObserver() = default;
|
||||
|
||||
// https://drafts.csswg.org/resize-observer/#dom-resizeobserver-observe
|
||||
void ResizeObserver::observe(DOM::Element& target, ResizeObserverOptions options)
|
||||
{
|
||||
|
|
|
@ -6,10 +6,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <AK/NonnullRefPtr.h>
|
||||
#include <AK/RefCounted.h>
|
||||
#include <LibWeb/Bindings/Wrappable.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
#include <LibWeb/Bindings/PlatformObject.h>
|
||||
|
||||
namespace Web::ResizeObserver {
|
||||
|
||||
|
@ -18,17 +15,22 @@ struct ResizeObserverOptions {
|
|||
};
|
||||
|
||||
// https://drafts.csswg.org/resize-observer/#resize-observer-interface
|
||||
class ResizeObserver
|
||||
: public RefCounted<ResizeObserver>
|
||||
, public Bindings::Wrappable {
|
||||
public:
|
||||
using WrapperType = Bindings::ResizeObserverWrapper;
|
||||
class ResizeObserver : public Bindings::PlatformObject {
|
||||
WEB_PLATFORM_OBJECT(ResizeObserver, Bindings::PlatformObject);
|
||||
|
||||
static NonnullRefPtr<ResizeObserver> create_with_global_object(HTML::Window&, Bindings::CallbackType* callback);
|
||||
public:
|
||||
static JS::NonnullGCPtr<ResizeObserver> create_with_global_object(HTML::Window&, Bindings::CallbackType* callback);
|
||||
|
||||
virtual ~ResizeObserver() override;
|
||||
|
||||
void observe(DOM::Element& target, ResizeObserverOptions);
|
||||
void unobserve(DOM::Element& target);
|
||||
void disconnect();
|
||||
|
||||
private:
|
||||
explicit ResizeObserver(HTML::Window&);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
WRAPPER_HACK(ResizeObserver, Web::ResizeObserver)
|
||||
|
|
|
@ -158,7 +158,7 @@ libweb_js_wrapper(HighResolutionTime/Performance NO_INSTANCE)
|
|||
libweb_js_wrapper(IntersectionObserver/IntersectionObserver)
|
||||
libweb_js_wrapper(NavigationTiming/PerformanceTiming NO_INSTANCE)
|
||||
libweb_js_wrapper(RequestIdleCallback/IdleDeadline NO_INSTANCE)
|
||||
libweb_js_wrapper(ResizeObserver/ResizeObserver)
|
||||
libweb_js_wrapper(ResizeObserver/ResizeObserver NO_INSTANCE)
|
||||
libweb_js_wrapper(SVG/SVGAnimatedLength NO_INSTANCE)
|
||||
libweb_js_wrapper(SVG/SVGClipPathElement NO_INSTANCE)
|
||||
libweb_js_wrapper(SVG/SVGDefsElement NO_INSTANCE)
|
||||
|
|
Loading…
Add table
Reference in a new issue