Represent WebIDL C++ types with a single CppType model that tracks nullability, optional presence, and contained storage. GC-like values now use GC::Ref/GC::Ptr directly, while containers choose "plain", "Root", or "Conservative" container types depending on what they contain. For example, sequence<Element> becomes a RootVector of GC::Ref values, while sequence<SomeDictionary> becomes a ConservativeVector only when the dictionary contains GC-like values. This moves the generated bindings away from wrapping GC values in GC::Root by default. This has broad fallout as the types passed to interfaces for GC objects changes almost fully across the board.
36 lines
1.1 KiB
C++
36 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2024, stelar7 <dudedbz@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibJS/Runtime/Realm.h>
|
|
#include <LibWeb/Bindings/IDBVersionChangeEvent.h>
|
|
#include <LibWeb/Bindings/Intrinsics.h>
|
|
#include <LibWeb/IndexedDB/IDBVersionChangeEvent.h>
|
|
|
|
namespace Web::IndexedDB {
|
|
|
|
GC_DEFINE_ALLOCATOR(IDBVersionChangeEvent);
|
|
|
|
GC::Ref<IDBVersionChangeEvent> IDBVersionChangeEvent::create(JS::Realm& realm, FlyString const& event_name, Bindings::IDBVersionChangeEventInit const& event_init)
|
|
{
|
|
return realm.create<IDBVersionChangeEvent>(realm, event_name, event_init);
|
|
}
|
|
|
|
IDBVersionChangeEvent::IDBVersionChangeEvent(JS::Realm& realm, FlyString const& event_name, Bindings::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.value_or({}))
|
|
{
|
|
}
|
|
|
|
IDBVersionChangeEvent::~IDBVersionChangeEvent() = default;
|
|
|
|
void IDBVersionChangeEvent::initialize(JS::Realm& realm)
|
|
{
|
|
WEB_SET_PROTOTYPE_FOR_INTERFACE(IDBVersionChangeEvent);
|
|
Base::initialize(realm);
|
|
}
|
|
|
|
}
|