blob: 92e9bdc98c26651345e7fd4f2797f92f0d94ac2a [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/indexed_db/instance/fake_transaction.h"
#include <utility>
#include "base/check.h"
#include "base/notreached.h"
#include "components/services/storage/indexed_db/locks/partitioned_lock_manager.h"
#include "content/browser/indexed_db/indexed_db_value.h"
#include "third_party/blink/public/common/indexeddb/indexeddb_key.h"
#include "third_party/blink/public/common/indexeddb/indexeddb_key_path.h"
#include "third_party/blink/public/common/indexeddb/indexeddb_key_range.h"
#include "third_party/blink/public/common/indexeddb/indexeddb_metadata.h"
#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-forward.h"
namespace content::indexed_db {
FakeTransaction::FakeTransaction(
Status phase_two_result,
std::unique_ptr<BackingStore::Transaction> wrapped)
: result_(phase_two_result), wrapped_transaction_(std::move(wrapped)) {}
FakeTransaction::~FakeTransaction() = default;
Status FakeTransaction::CommitPhaseOne(BlobWriteCallback callback,
SerializeFsaCallback /*unused*/) {
return std::move(callback).Run(
BlobWriteResult::kRunPhaseTwoAndReturnResult,
storage::mojom::WriteBlobToFileResult::kSuccess);
}
Status FakeTransaction::CommitPhaseTwo() {
return result_;
}
void FakeTransaction::Rollback() {}
void FakeTransaction::Begin(std::vector<PartitionedLock> locks) {
wrapped_transaction_->Begin(std::move(locks));
}
Status FakeTransaction::SetDatabaseVersion(int64_t version) {
return wrapped_transaction_->SetDatabaseVersion(version);
}
Status FakeTransaction::CreateObjectStore(int64_t object_store_id,
const std::u16string& name,
blink::IndexedDBKeyPath key_path,
bool auto_increment) {
return wrapped_transaction_->CreateObjectStore(
object_store_id, name, std::move(key_path), auto_increment);
}
Status FakeTransaction::DeleteObjectStore(int64_t object_store_id) {
return wrapped_transaction_->DeleteObjectStore(object_store_id);
}
Status FakeTransaction::RenameObjectStore(int64_t object_store_id,
const std::u16string& new_name) {
return wrapped_transaction_->RenameObjectStore(object_store_id, new_name);
}
Status FakeTransaction::ClearObjectStore(int64_t object_store_id) {
return wrapped_transaction_->ClearObjectStore(object_store_id);
}
Status FakeTransaction::CreateIndex(int64_t object_store_id,
blink::IndexedDBIndexMetadata index) {
return wrapped_transaction_->CreateIndex(object_store_id, std::move(index));
}
Status FakeTransaction::DeleteIndex(int64_t object_store_id, int64_t index_id) {
return wrapped_transaction_->DeleteIndex(object_store_id, index_id);
}
Status FakeTransaction::RenameIndex(int64_t object_store_id,
int64_t index_id,
const std::u16string& new_name) {
return wrapped_transaction_->RenameIndex(object_store_id, index_id, new_name);
}
StatusOr<IndexedDBValue> FakeTransaction::GetRecord(
int64_t object_store_id,
const blink::IndexedDBKey& key) {
return wrapped_transaction_->GetRecord(object_store_id, key);
}
StatusOr<BackingStore::RecordIdentifier> FakeTransaction::PutRecord(
int64_t object_store_id,
const blink::IndexedDBKey& key,
IndexedDBValue value) {
return wrapped_transaction_->PutRecord(object_store_id, key,
std::move(value));
}
Status FakeTransaction::DeleteRange(int64_t object_store_id,
const blink::IndexedDBKeyRange& key_range) {
return wrapped_transaction_->DeleteRange(object_store_id, key_range);
}
StatusOr<int64_t> FakeTransaction::GetKeyGeneratorCurrentNumber(
int64_t object_store_id) {
return wrapped_transaction_->GetKeyGeneratorCurrentNumber(object_store_id);
}
Status FakeTransaction::MaybeUpdateKeyGeneratorCurrentNumber(
int64_t object_store_id,
int64_t new_number,
bool was_generated) {
return wrapped_transaction_->MaybeUpdateKeyGeneratorCurrentNumber(
object_store_id, new_number, was_generated);
}
StatusOr<std::optional<BackingStore::RecordIdentifier>>
FakeTransaction::KeyExistsInObjectStore(int64_t object_store_id,
const blink::IndexedDBKey& key) {
return wrapped_transaction_->KeyExistsInObjectStore(object_store_id, key);
}
Status FakeTransaction::PutIndexDataForRecord(
int64_t object_store_id,
int64_t index_id,
const blink::IndexedDBKey& key,
const BackingStore::RecordIdentifier& record) {
return wrapped_transaction_->PutIndexDataForRecord(object_store_id, index_id,
key, record);
}
StatusOr<blink::IndexedDBKey> FakeTransaction::GetFirstPrimaryKeyForIndexKey(
int64_t object_store_id,
int64_t index_id,
const blink::IndexedDBKey& key) {
return wrapped_transaction_->GetFirstPrimaryKeyForIndexKey(object_store_id,
index_id, key);
}
StatusOr<std::unique_ptr<indexed_db::BackingStore::Cursor>>
FakeTransaction::OpenObjectStoreKeyCursor(
int64_t object_store_id,
const blink::IndexedDBKeyRange& key_range,
blink::mojom::IDBCursorDirection direction) {
return wrapped_transaction_->OpenObjectStoreKeyCursor(object_store_id,
key_range, direction);
}
StatusOr<uint32_t> FakeTransaction::GetObjectStoreKeyCount(
int64_t object_store_id,
blink::IndexedDBKeyRange key_range) {
return wrapped_transaction_->GetObjectStoreKeyCount(object_store_id,
std::move(key_range));
}
StatusOr<uint32_t> FakeTransaction::GetIndexKeyCount(
int64_t object_store_id,
int64_t index_id,
blink::IndexedDBKeyRange key_range) {
return wrapped_transaction_->GetIndexKeyCount(object_store_id, index_id,
std::move(key_range));
}
StatusOr<std::unique_ptr<indexed_db::BackingStore::Cursor>>
FakeTransaction::OpenObjectStoreCursor(
int64_t object_store_id,
const blink::IndexedDBKeyRange& key_range,
blink::mojom::IDBCursorDirection direction) {
return wrapped_transaction_->OpenObjectStoreCursor(object_store_id, key_range,
direction);
}
StatusOr<std::unique_ptr<indexed_db::BackingStore::Cursor>>
FakeTransaction::OpenIndexKeyCursor(
int64_t object_store_id,
int64_t index_id,
const blink::IndexedDBKeyRange& key_range,
blink::mojom::IDBCursorDirection direction) {
return wrapped_transaction_->OpenIndexKeyCursor(object_store_id, index_id,
key_range, direction);
}
StatusOr<std::unique_ptr<indexed_db::BackingStore::Cursor>>
FakeTransaction::OpenIndexCursor(int64_t object_store_id,
int64_t index_id,
const blink::IndexedDBKeyRange& key_range,
blink::mojom::IDBCursorDirection direction) {
return wrapped_transaction_->OpenIndexCursor(object_store_id, index_id,
key_range, direction);
}
blink::mojom::IDBValuePtr FakeTransaction::BuildMojoValue(
IndexedDBValue value,
DeserializeFsaCallback deserialize_fsa_handle) {
return wrapped_transaction_->BuildMojoValue(
std::move(value), std::move(deserialize_fsa_handle));
}
} // namespace content::indexed_db