#include "third_party/blink/renderer/modules/indexeddb/idb_factory.h"
#include <memory>
#include <utility>
#include "base/task/bind_post_task.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_associated_remote.h"
#include "mojo/public/cpp/bindings/self_owned_associated_receiver.h"
#include "third_party/blink/public/mojom/feature_observer/feature_observer.mojom-blink.h"
#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/public/platform/web_content_settings_client.h"
#include "third_party/blink/public/platform/web_security_origin.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_binding_for_modules.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_idb_database_info.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/probe/async_task_context.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/modules/indexed_db_names.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_database.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_factory_client.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_key.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
#include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/weborigin/security_origin.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
#include "third_party/blink/renderer/platform/wtf/gc_plugin.h"
namespace blink {
static const char kPermissionDeniedErrorMessage[] = …;
IDBFactory::IDBFactory(ExecutionContext* context)
: … { … }
IDBFactory::~IDBFactory() = default;
static bool IsContextValid(ExecutionContext* context) { … }
void IDBFactory::Trace(Visitor* visitor) const { … }
void IDBFactory::SetRemote(
mojo::PendingRemote<mojom::blink::IDBFactory> remote) { … }
ExecutionContext* IDBFactory::GetValidContext(ScriptState* script_state) { … }
HeapMojoRemote<mojom::blink::IDBFactory>& IDBFactory::GetRemote() { … }
scoped_refptr<base::SingleThreadTaskRunner> IDBFactory::GetTaskRunner() { … }
ScriptPromise<IDLSequence<IDBDatabaseInfo>> IDBFactory::GetDatabaseInfo(
ScriptState* script_state,
ExceptionState& exception_state) { … }
void IDBFactory::GetDatabaseInfoImpl(
ScriptPromiseResolver<IDLSequence<IDBDatabaseInfo>>* resolver) { … }
void IDBFactory::DidGetDatabaseInfo(
ScriptPromiseResolver<IDLSequence<IDBDatabaseInfo>>* resolver,
Vector<mojom::blink::IDBNameAndVersionPtr> names_and_versions,
mojom::blink::IDBErrorPtr error) { … }
void IDBFactory::GetDatabaseInfoForDevTools(
mojom::blink::IDBFactory::GetDatabaseInfoCallback callback) { … }
void IDBFactory::ContextDestroyed() { … }
void IDBFactory::GetDatabaseInfoForDevToolsHelper(
mojom::blink::IDBFactory::GetDatabaseInfoCallback callback) { … }
IDBOpenDBRequest* IDBFactory::open(ScriptState* script_state,
const String& name,
uint64_t version,
ExceptionState& exception_state) { … }
IDBOpenDBRequest* IDBFactory::OpenInternal(ScriptState* script_state,
const String& name,
int64_t version,
ExceptionState& exception_state) { … }
void IDBFactory::OpenInternalImpl(
IDBOpenDBRequest* request,
mojo::PendingAssociatedRemote<mojom::blink::IDBDatabaseCallbacks>
callbacks_remote,
mojo::PendingAssociatedReceiver<mojom::blink::IDBTransaction>
transaction_receiver,
const String& name,
int64_t version,
int64_t transaction_id) { … }
IDBOpenDBRequest* IDBFactory::open(ScriptState* script_state,
const String& name,
ExceptionState& exception_state) { … }
IDBOpenDBRequest* IDBFactory::deleteDatabase(ScriptState* script_state,
const String& name,
ExceptionState& exception_state) { … }
IDBOpenDBRequest* IDBFactory::CloseConnectionsAndDeleteDatabase(
ScriptState* script_state,
const String& name,
ExceptionState& exception_state) { … }
IDBOpenDBRequest* IDBFactory::DeleteDatabaseInternal(
ScriptState* script_state,
const String& name,
ExceptionState& exception_state,
bool force_close) { … }
void IDBFactory::DeleteDatabaseInternalImpl(
IDBOpenDBRequest* request,
const String& name,
bool force_close) { … }
int16_t IDBFactory::cmp(ScriptState* script_state,
const ScriptValue& first_value,
const ScriptValue& second_value,
ExceptionState& exception_state) { … }
void IDBFactory::AllowIndexedDB(base::OnceCallback<void()> callback) { … }
void IDBFactory::DidAllowIndexedDB(bool allow_access) { … }
mojo::PendingAssociatedRemote<mojom::blink::IDBFactoryClient>
IDBFactory::CreatePendingRemote(
std::unique_ptr<IDBFactoryClient> factory_client) { … }
mojo::PendingRemote<mojom::blink::ObservedFeature>
IDBFactory::CreatePendingRemoteFeatureObserver() { … }
}