ladybird/Libraries/LibWeb/IndexedDB/Internal/ConnectionQueueHandler.h
Luke Wilde 85e8d2ba38 LibWeb/IndexedDB: Prevent copying and moving of RequestList
RequestList cannot be copied or moved, because m_pending_request_queue
contains lambdas that store pointers to the original RequestList and
completion steps that we don't have a reference to.

Fixes a bunch of WPT regressions and imports the ones that work.
2025-10-23 14:42:45 +02:00

41 lines
948 B
C++

/*
* Copyright (c) 2024, stelar7 <dudedbz@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/HashMap.h>
#include <LibWeb/IndexedDB/Internal/RequestList.h>
#include <LibWeb/StorageAPI/StorageKey.h>
namespace Web::IndexedDB {
struct Connection final : public RefCounted<Connection> {
Connection(StorageAPI::StorageKey storage_key, String name)
: storage_key(move(storage_key))
, name(move(name))
{
}
StorageAPI::StorageKey storage_key;
String name;
RequestList request_list;
};
// https://w3c.github.io/IndexedDB/#connection-queues
class ConnectionQueueHandler {
public:
static RequestList& for_key_and_name(StorageAPI::StorageKey const& key, String const& name);
static ConnectionQueueHandler& the()
{
static ConnectionQueueHandler s_instance;
return s_instance;
}
private:
Vector<NonnullRefPtr<Connection>> m_open_requests;
};
}