mirror of
https://github.com/RGBCube/serenity
synced 2025-07-19 06:27:34 +00:00
LibWeb: Make DOM::Window into an EventTarget
This will allow us to dispatch window events.
This commit is contained in:
parent
77c1957961
commit
b92bc9c6e5
2 changed files with 26 additions and 2 deletions
|
@ -28,6 +28,8 @@
|
||||||
#include <LibGUI/MessageBox.h>
|
#include <LibGUI/MessageBox.h>
|
||||||
#include <LibJS/Runtime/Function.h>
|
#include <LibJS/Runtime/Function.h>
|
||||||
#include <LibWeb/DOM/Document.h>
|
#include <LibWeb/DOM/Document.h>
|
||||||
|
#include <LibWeb/DOM/Event.h>
|
||||||
|
#include <LibWeb/DOM/EventDispatcher.h>
|
||||||
#include <LibWeb/DOM/Timer.h>
|
#include <LibWeb/DOM/Timer.h>
|
||||||
#include <LibWeb/DOM/Window.h>
|
#include <LibWeb/DOM/Window.h>
|
||||||
#include <LibWeb/HighResolutionTime/Performance.h>
|
#include <LibWeb/HighResolutionTime/Performance.h>
|
||||||
|
@ -42,7 +44,8 @@ NonnullRefPtr<Window> Window::create_with_document(Document& document)
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::Window(Document& document)
|
Window::Window(Document& document)
|
||||||
: m_document(document)
|
: EventTarget(static_cast<Bindings::ScriptExecutionContext&>(document))
|
||||||
|
, m_document(document)
|
||||||
, m_performance(make<HighResolutionTime::Performance>(*this))
|
, m_performance(make<HighResolutionTime::Performance>(*this))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -157,4 +160,14 @@ void Window::did_call_location_reload(Badge<Bindings::LocationObject>)
|
||||||
frame->loader().load(document().url(), FrameLoader::Type::Reload);
|
frame->loader().load(document().url(), FrameLoader::Type::Reload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::dispatch_event(NonnullRefPtr<Event> event)
|
||||||
|
{
|
||||||
|
EventDispatcher::dispatch(*this, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
Bindings::EventTargetWrapper* Window::create_wrapper(JS::GlobalObject&)
|
||||||
|
{
|
||||||
|
ASSERT_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,14 +32,25 @@
|
||||||
#include <AK/RefPtr.h>
|
#include <AK/RefPtr.h>
|
||||||
#include <LibWeb/Bindings/WindowObject.h>
|
#include <LibWeb/Bindings/WindowObject.h>
|
||||||
#include <LibWeb/Bindings/Wrappable.h>
|
#include <LibWeb/Bindings/Wrappable.h>
|
||||||
|
#include <LibWeb/DOM/EventTarget.h>
|
||||||
|
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
class Window : public RefCounted<Window> {
|
class Window final
|
||||||
|
: public RefCounted<Window>
|
||||||
|
, public EventTarget {
|
||||||
public:
|
public:
|
||||||
static NonnullRefPtr<Window> create_with_document(Document&);
|
static NonnullRefPtr<Window> create_with_document(Document&);
|
||||||
~Window();
|
~Window();
|
||||||
|
|
||||||
|
using RefCounted::ref;
|
||||||
|
using RefCounted::unref;
|
||||||
|
|
||||||
|
virtual void ref_event_target() override { RefCounted::ref(); }
|
||||||
|
virtual void unref_event_target() override { RefCounted::unref(); }
|
||||||
|
virtual void dispatch_event(NonnullRefPtr<Event>) override;
|
||||||
|
virtual Bindings::EventTargetWrapper* create_wrapper(JS::GlobalObject&) override;
|
||||||
|
|
||||||
const Document& document() const { return m_document; }
|
const Document& document() const { return m_document; }
|
||||||
Document& document() { return m_document; }
|
Document& document() { return m_document; }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue