LibWeb/IDB: Implement IDBObjectStore::add

This commit is contained in:
stelar7 2025-04-11 11:41:30 +02:00
parent 51ef6ab8f4
commit 94183f1fc2
3 changed files with 9 additions and 1 deletions

View file

@ -317,4 +317,11 @@ WebIDL::ExceptionOr<GC::Ref<IDBRequest>> IDBObjectStore::add_or_put(GC::Ref<IDBO
return result;
}
// https://w3c.github.io/IndexedDB/#dom-idbobjectstore-add
WebIDL::ExceptionOr<GC::Ref<IDBRequest>> IDBObjectStore::add(JS::Value value, Optional<JS::Value> const& key)
{
// The add(value, key) method steps are to return the result of running add or put with this, value, key and the no-overwrite flag true.
return add_or_put(*this, value, key, true);
}
}

View file

@ -45,6 +45,7 @@ public:
WebIDL::ExceptionOr<void> delete_index(String const&);
[[nodiscard]] WebIDL::ExceptionOr<GC::Ref<IDBRequest>> add_or_put(GC::Ref<IDBObjectStore>, JS::Value, Optional<JS::Value> const&, bool);
[[nodiscard]] WebIDL::ExceptionOr<GC::Ref<IDBRequest>> add(JS::Value value, Optional<JS::Value> const& key);
protected:
explicit IDBObjectStore(JS::Realm&, GC::Ref<ObjectStore>, GC::Ref<IDBTransaction>);

View file

@ -11,7 +11,7 @@ interface IDBObjectStore {
readonly attribute boolean autoIncrement;
[FIXME, NewObject] IDBRequest put(any value, optional any key);
[FIXME, NewObject] IDBRequest add(any value, optional any key);
[NewObject] IDBRequest add(any value, optional any key);
[FIXME, NewObject] IDBRequest delete(any query);
[FIXME, NewObject] IDBRequest clear();
[FIXME, NewObject] IDBRequest get(any query);