LibWeb: Implement DataTransferItemList.remove()

This commit is contained in:
Tim Ledbetter 2025-09-05 07:23:46 +01:00 committed by Jelle Raaijmakers
commit d9341adb1e
Notes: github-actions[bot] 2025-09-12 10:31:50 +00:00
9 changed files with 84 additions and 1 deletions

View file

@ -108,6 +108,23 @@ GC::Ptr<DataTransferItem> DataTransferItemList::add(GC::Ref<FileAPI::File> file)
return item;
}
// https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransferitemlist-remove
WebIDL::ExceptionOr<void> DataTransferItemList::remove(WebIDL::UnsignedLong index)
{
// 1. If the DataTransferItemList object is not in the read/write mode, throw an "InvalidStateError" DOMException.
if (m_data_transfer->mode() != DragDataStore::Mode::ReadWrite)
return WebIDL::InvalidStateError::create(realm(), "DataTransferItemList is not in read/write mode"_utf16);
// 2. If the drag data store does not contain an indexth item, then return.
if (index >= m_data_transfer->length())
return {};
// 3. Remove the indexth item from the drag data store
m_data_transfer->remove_item(index);
return {};
}
// https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransferitemlist-item
Optional<JS::Value> DataTransferItemList::item_value(size_t index) const
{