mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
LibWeb: Add IDBVersionChangeEvent
This commit is contained in:
@@ -199,6 +199,7 @@ IDBDatabase
|
||||
IDBFactory
|
||||
IDBOpenDBRequest
|
||||
IDBRequest
|
||||
IDBVersionChangeEvent
|
||||
IdleDeadline
|
||||
Image
|
||||
ImageBitmap
|
||||
|
||||
@@ -507,6 +507,7 @@ set(SOURCES
|
||||
IndexedDB/IDBOpenDBRequest.cpp
|
||||
IndexedDB/IDBDatabase.cpp
|
||||
IndexedDB/IDBRequest.cpp
|
||||
IndexedDB/IDBVersionChangeEvent.cpp
|
||||
Internals/Inspector.cpp
|
||||
Internals/InternalAnimationTimeline.cpp
|
||||
Internals/Internals.cpp
|
||||
|
||||
@@ -571,6 +571,7 @@ class IDBFactory;
|
||||
class IDBDatabase;
|
||||
class IDBOpenDBRequest;
|
||||
class IDBRequest;
|
||||
class IDBVersionChangeEvent;
|
||||
}
|
||||
|
||||
namespace Web::Internals {
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2024, stelar7 <dudedbz@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibJS/Runtime/Realm.h>
|
||||
#include <LibWeb/Bindings/IDBVersionChangeEventPrototype.h>
|
||||
#include <LibWeb/Bindings/Intrinsics.h>
|
||||
#include <LibWeb/IndexedDB/IDBVersionChangeEvent.h>
|
||||
|
||||
namespace Web::IndexedDB {
|
||||
|
||||
JS_DEFINE_ALLOCATOR(IDBVersionChangeEvent);
|
||||
|
||||
JS::NonnullGCPtr<IDBVersionChangeEvent> IDBVersionChangeEvent::create(JS::Realm& realm, FlyString const& event_name, IDBVersionChangeEventInit const& event_init)
|
||||
{
|
||||
return realm.heap().allocate<IDBVersionChangeEvent>(realm, realm, event_name, event_init);
|
||||
}
|
||||
|
||||
IDBVersionChangeEvent::IDBVersionChangeEvent(JS::Realm& realm, FlyString const& event_name, IDBVersionChangeEventInit const& event_init)
|
||||
: DOM::Event(realm, event_name, event_init)
|
||||
, m_old_version(event_init.old_version)
|
||||
, m_new_version(event_init.new_version)
|
||||
{
|
||||
}
|
||||
|
||||
IDBVersionChangeEvent::~IDBVersionChangeEvent() = default;
|
||||
|
||||
void IDBVersionChangeEvent::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(IDBVersionChangeEvent);
|
||||
}
|
||||
|
||||
}
|
||||
43
Userland/Libraries/LibWeb/IndexedDB/IDBVersionChangeEvent.h
Normal file
43
Userland/Libraries/LibWeb/IndexedDB/IDBVersionChangeEvent.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2024, stelar7 <dudedbz@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibJS/Heap/GCPtr.h>
|
||||
#include <LibWeb/DOM/Event.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
||||
namespace Web::IndexedDB {
|
||||
|
||||
struct IDBVersionChangeEventInit : public DOM::EventInit {
|
||||
u64 old_version { 0 };
|
||||
Optional<u64> new_version;
|
||||
};
|
||||
|
||||
// https://w3c.github.io/IndexedDB/#events
|
||||
class IDBVersionChangeEvent : public DOM::Event {
|
||||
WEB_PLATFORM_OBJECT(IDBVersionChangeEvent, DOM::Event);
|
||||
JS_DECLARE_ALLOCATOR(IDBVersionChangeEvent);
|
||||
|
||||
public:
|
||||
virtual ~IDBVersionChangeEvent() override;
|
||||
|
||||
static JS::NonnullGCPtr<IDBVersionChangeEvent> create(JS::Realm&, FlyString const&, IDBVersionChangeEventInit const&);
|
||||
|
||||
u64 old_version() const { return m_old_version; }
|
||||
Optional<u64> new_version() const { return m_new_version; }
|
||||
|
||||
protected:
|
||||
explicit IDBVersionChangeEvent(JS::Realm&, FlyString const& event_name, IDBVersionChangeEventInit const& event_init);
|
||||
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
|
||||
private:
|
||||
u64 m_old_version { 0 };
|
||||
Optional<u64> m_new_version;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#import <DOM/Event.idl>
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface IDBVersionChangeEvent : Event {
|
||||
constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict = {});
|
||||
readonly attribute unsigned long long oldVersion;
|
||||
readonly attribute unsigned long long? newVersion;
|
||||
};
|
||||
|
||||
dictionary IDBVersionChangeEventInit : EventInit {
|
||||
unsigned long long oldVersion = 0;
|
||||
unsigned long long? newVersion;
|
||||
};
|
||||
@@ -247,6 +247,7 @@ libweb_js_bindings(IndexedDB/IDBDatabase)
|
||||
libweb_js_bindings(IndexedDB/IDBFactory)
|
||||
libweb_js_bindings(IndexedDB/IDBOpenDBRequest)
|
||||
libweb_js_bindings(IndexedDB/IDBRequest)
|
||||
libweb_js_bindings(IndexedDB/IDBVersionChangeEvent)
|
||||
libweb_js_bindings(Internals/Inspector)
|
||||
libweb_js_bindings(Internals/InternalAnimationTimeline)
|
||||
libweb_js_bindings(Internals/Internals)
|
||||
|
||||
Reference in New Issue
Block a user