mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-13 11:39:43 +00:00
LibWeb: Add IDBVersionChangeEvent
This commit is contained in:
parent
20a30dee46
commit
54b5822e0b
Notes:
github-actions[bot]
2024-11-08 18:11:21 +00:00
Author: https://github.com/stelar7
Commit: 54b5822e0b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2165
Reviewed-by: https://github.com/ADKaster ✅
Reviewed-by: https://github.com/shannonbooth
7 changed files with 96 additions and 0 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue