Commit d6e9382f authored by Alexey Baskakov's avatar Alexey Baskakov Committed by Commit Bot

WebApp: Erase WebAppDatabase::BeginTransaction method.

Erase WebAppDatabase::BeginTransaction and WebAppDatabase::CancelTransaction.

The contract "There can be only 1 update at a time" is tracked by
the WebAppSyncBridge::is_in_update_ flag anyway.
Get rid of this redundancy.

Bug: 860583
Change-Id: Ib330014773509c9f2201f8e51eb7eccbde2b1705
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1851626
Commit-Queue: Alexey Baskakov <loyso@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704955}
parent 92a0f823
...@@ -43,49 +43,37 @@ void WebAppDatabase::OpenDatabase(RegistryOpenedCallback callback) { ...@@ -43,49 +43,37 @@ void WebAppDatabase::OpenDatabase(RegistryOpenedCallback callback) {
weak_ptr_factory_.GetWeakPtr(), std::move(callback))); weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
} }
void WebAppDatabase::BeginTransaction() { void WebAppDatabase::Write(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(opened_);
DCHECK(!write_batch_);
write_batch_ = store_->CreateWriteBatch();
}
void WebAppDatabase::CommitTransaction(
const RegistryUpdateData& update_data, const RegistryUpdateData& update_data,
std::unique_ptr<syncer::MetadataChangeList> metadata_change_list, std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
CompletionCallback callback) { CompletionCallback callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(opened_); DCHECK(opened_);
DCHECK(write_batch_);
DCHECK(!update_data.IsEmpty()); DCHECK(!update_data.IsEmpty());
write_batch_->TakeMetadataChangesFrom(std::move(metadata_change_list)); std::unique_ptr<syncer::ModelTypeStore::WriteBatch> write_batch =
store_->CreateWriteBatch();
write_batch->TakeMetadataChangesFrom(std::move(metadata_change_list));
for (const std::unique_ptr<WebApp>& web_app : update_data.apps_to_create) { for (const std::unique_ptr<WebApp>& web_app : update_data.apps_to_create) {
auto proto = CreateWebAppProto(*web_app); auto proto = CreateWebAppProto(*web_app);
write_batch_->WriteData(web_app->app_id(), proto->SerializeAsString()); write_batch->WriteData(web_app->app_id(), proto->SerializeAsString());
} }
for (const AppId& app_id : update_data.apps_to_delete) for (const AppId& app_id : update_data.apps_to_delete)
write_batch_->DeleteData(app_id); write_batch->DeleteData(app_id);
for (const WebApp* web_app : update_data.apps_to_update) { for (const WebApp* web_app : update_data.apps_to_update) {
auto proto = CreateWebAppProto(*web_app); auto proto = CreateWebAppProto(*web_app);
write_batch_->WriteData(web_app->app_id(), proto->SerializeAsString()); write_batch->WriteData(web_app->app_id(), proto->SerializeAsString());
} }
store_->CommitWriteBatch( store_->CommitWriteBatch(
std::move(write_batch_), std::move(write_batch),
base::BindOnce(&WebAppDatabase::OnDataWritten, base::BindOnce(&WebAppDatabase::OnDataWritten,
weak_ptr_factory_.GetWeakPtr(), std::move(callback))); weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
write_batch_.reset();
}
void WebAppDatabase::CancelTransaction() {
DCHECK(write_batch_);
write_batch_.reset();
} }
// static // static
......
...@@ -48,13 +48,9 @@ class WebAppDatabase { ...@@ -48,13 +48,9 @@ class WebAppDatabase {
void OpenDatabase(RegistryOpenedCallback callback); void OpenDatabase(RegistryOpenedCallback callback);
using CompletionCallback = base::OnceCallback<void(bool success)>; using CompletionCallback = base::OnceCallback<void(bool success)>;
// There can be only 1 transaction at a time. void Write(const RegistryUpdateData& update_data,
void BeginTransaction();
void CommitTransaction(
const RegistryUpdateData& update_data,
std::unique_ptr<syncer::MetadataChangeList> metadata_change_list, std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
CompletionCallback callback); CompletionCallback callback);
void CancelTransaction();
// Exposed for testing. // Exposed for testing.
static std::unique_ptr<WebAppProto> CreateWebAppProto(const WebApp& web_app); static std::unique_ptr<WebAppProto> CreateWebAppProto(const WebApp& web_app);
...@@ -83,7 +79,6 @@ class WebAppDatabase { ...@@ -83,7 +79,6 @@ class WebAppDatabase {
const base::Optional<syncer::ModelError>& error); const base::Optional<syncer::ModelError>& error);
std::unique_ptr<syncer::ModelTypeStore> store_; std::unique_ptr<syncer::ModelTypeStore> store_;
std::unique_ptr<syncer::ModelTypeStore::WriteBatch> write_batch_;
AbstractWebAppDatabaseFactory* const database_factory_; AbstractWebAppDatabaseFactory* const database_factory_;
ReportErrorCallback error_callback_; ReportErrorCallback error_callback_;
......
...@@ -133,9 +133,6 @@ WebAppSyncBridge::~WebAppSyncBridge() = default; ...@@ -133,9 +133,6 @@ WebAppSyncBridge::~WebAppSyncBridge() = default;
std::unique_ptr<WebAppRegistryUpdate> WebAppSyncBridge::BeginUpdate() { std::unique_ptr<WebAppRegistryUpdate> WebAppSyncBridge::BeginUpdate() {
DCHECK(!is_in_update_); DCHECK(!is_in_update_);
is_in_update_ = true; is_in_update_ = true;
database_->BeginTransaction();
return std::make_unique<WebAppRegistryUpdate>(registrar_); return std::make_unique<WebAppRegistryUpdate>(registrar_);
} }
...@@ -146,7 +143,6 @@ void WebAppSyncBridge::CommitUpdate( ...@@ -146,7 +143,6 @@ void WebAppSyncBridge::CommitUpdate(
is_in_update_ = false; is_in_update_ = false;
if (update == nullptr || update->update_data().IsEmpty()) { if (update == nullptr || update->update_data().IsEmpty()) {
database_->CancelTransaction();
std::move(callback).Run(/*success*/ true); std::move(callback).Run(/*success*/ true);
return; return;
} }
...@@ -159,7 +155,7 @@ void WebAppSyncBridge::CommitUpdate( ...@@ -159,7 +155,7 @@ void WebAppSyncBridge::CommitUpdate(
UpdateSync(*update_data, metadata_change_list.get()); UpdateSync(*update_data, metadata_change_list.get());
database_->CommitTransaction( database_->Write(
*update_data, std::move(metadata_change_list), *update_data, std::move(metadata_change_list),
base::BindOnce(&WebAppSyncBridge::OnDataWritten, base::BindOnce(&WebAppSyncBridge::OnDataWritten,
weak_ptr_factory_.GetWeakPtr(), std::move(callback))); weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
...@@ -409,8 +405,6 @@ base::Optional<syncer::ModelError> WebAppSyncBridge::MergeSyncData( ...@@ -409,8 +405,6 @@ base::Optional<syncer::ModelError> WebAppSyncBridge::MergeSyncData(
auto update_local_data = std::make_unique<RegistryUpdateData>(); auto update_local_data = std::make_unique<RegistryUpdateData>();
database_->BeginTransaction();
for (const auto& change : entity_data) { for (const auto& change : entity_data) {
DCHECK_NE(change->type(), syncer::EntityChange::ACTION_DELETE); DCHECK_NE(change->type(), syncer::EntityChange::ACTION_DELETE);
ApplySyncDataChange(*change, update_local_data.get()); ApplySyncDataChange(*change, update_local_data.get());
...@@ -418,8 +412,8 @@ base::Optional<syncer::ModelError> WebAppSyncBridge::MergeSyncData( ...@@ -418,8 +412,8 @@ base::Optional<syncer::ModelError> WebAppSyncBridge::MergeSyncData(
MergeLocalAppsToSync(entity_data, metadata_change_list.get()); MergeLocalAppsToSync(entity_data, metadata_change_list.get());
database_->CommitTransaction( database_->Write(*update_local_data, std::move(metadata_change_list),
*update_local_data, std::move(metadata_change_list), base::DoNothing()); base::DoNothing());
ApplySyncChangesToRegistrar(std::move(update_local_data)); ApplySyncChangesToRegistrar(std::move(update_local_data));
return base::nullopt; return base::nullopt;
...@@ -432,13 +426,11 @@ base::Optional<syncer::ModelError> WebAppSyncBridge::ApplySyncChanges( ...@@ -432,13 +426,11 @@ base::Optional<syncer::ModelError> WebAppSyncBridge::ApplySyncChanges(
auto update_local_data = std::make_unique<RegistryUpdateData>(); auto update_local_data = std::make_unique<RegistryUpdateData>();
database_->BeginTransaction();
for (const auto& change : entity_changes) for (const auto& change : entity_changes)
ApplySyncDataChange(*change, update_local_data.get()); ApplySyncDataChange(*change, update_local_data.get());
database_->CommitTransaction( database_->Write(*update_local_data, std::move(metadata_change_list),
*update_local_data, std::move(metadata_change_list), base::DoNothing()); base::DoNothing());
ApplySyncChangesToRegistrar(std::move(update_local_data)); ApplySyncChangesToRegistrar(std::move(update_local_data));
return base::nullopt; return base::nullopt;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment