mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-14 05:22:24 +00:00
Everywhere: Hoist the Libraries folder to the top-level
This commit is contained in:
parent
950e819ee7
commit
93712b24bf
Notes:
github-actions[bot]
2024-11-10 11:51:52 +00:00
Author: https://github.com/trflynn89
Commit: 93712b24bf
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2256
Reviewed-by: https://github.com/sideshowbarker
4547 changed files with 104 additions and 113 deletions
78
Libraries/LibWeb/IndexedDB/Internal/Database.cpp
Normal file
78
Libraries/LibWeb/IndexedDB/Internal/Database.cpp
Normal file
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* Copyright (c) 2024, stelar7 <dudedbz@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/IndexedDB/Internal/ConnectionQueueHandler.h>
|
||||
#include <LibWeb/IndexedDB/Internal/Database.h>
|
||||
|
||||
namespace Web::IndexedDB {
|
||||
|
||||
using IDBDatabaseMapping = HashMap<StorageAPI::StorageKey, HashMap<String, JS::Handle<Database>>>;
|
||||
static IDBDatabaseMapping m_databases;
|
||||
|
||||
JS_DEFINE_ALLOCATOR(Database);
|
||||
|
||||
Database::~Database() = default;
|
||||
|
||||
JS::NonnullGCPtr<Database> Database::create(JS::Realm& realm, String const& name)
|
||||
{
|
||||
return realm.heap().allocate<Database>(realm, realm, name);
|
||||
}
|
||||
|
||||
void Database::visit_edges(Visitor& visitor)
|
||||
{
|
||||
Base::visit_edges(visitor);
|
||||
visitor.visit(m_associated_connections);
|
||||
}
|
||||
|
||||
ConnectionQueue& ConnectionQueueHandler::for_key_and_name(StorageAPI::StorageKey& key, String& name)
|
||||
{
|
||||
return ConnectionQueueHandler::the().m_open_requests.ensure(key, [] {
|
||||
return HashMap<String, ConnectionQueue>();
|
||||
})
|
||||
.ensure(name, [] {
|
||||
return ConnectionQueue();
|
||||
});
|
||||
}
|
||||
|
||||
Optional<JS::Handle<Database>> Database::for_key_and_name(StorageAPI::StorageKey& key, String& name)
|
||||
{
|
||||
return m_databases.ensure(key, [] {
|
||||
return HashMap<String, JS::Handle<Database>>();
|
||||
})
|
||||
.get(name);
|
||||
}
|
||||
|
||||
ErrorOr<JS::Handle<Database>> Database::create_for_key_and_name(JS::Realm& realm, StorageAPI::StorageKey& key, String& name)
|
||||
{
|
||||
auto database_mapping = TRY(m_databases.try_ensure(key, [] {
|
||||
return HashMap<String, JS::Handle<Database>>();
|
||||
}));
|
||||
|
||||
return database_mapping.try_ensure(name, [&] {
|
||||
return Database::create(realm, name);
|
||||
});
|
||||
}
|
||||
|
||||
ErrorOr<void> Database::delete_for_key_and_name(StorageAPI::StorageKey& key, String& name)
|
||||
{
|
||||
// FIXME: Is a missing entry a failure?
|
||||
auto maybe_database_mapping = m_databases.get(key);
|
||||
if (!maybe_database_mapping.has_value())
|
||||
return {};
|
||||
|
||||
auto& database_mapping = maybe_database_mapping.value();
|
||||
auto maybe_database = database_mapping.get(name);
|
||||
if (!maybe_database.has_value())
|
||||
return {};
|
||||
|
||||
auto did_remove = database_mapping.remove(name);
|
||||
if (!did_remove)
|
||||
return {};
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue