-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Save And Recall: Create desk model wrapper
This CL creates a wrapper desk model so that we can keep generic calls to the desk model by wrapping both desk type backend storage into one. BUG=b/231610203 TEST=DeskTemplatesTest*, DeskSync*, DeskTemplatesClient* Change-Id: I1979854df42a7309a79b7a1a45076c38d8aa75a8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3633187 Commit-Queue: Matthew Zhu <zhumatthew@google.com> Reviewed-by: Daniel Andersson <dandersson@chromium.org> Reviewed-by: Yanzhu Du <yzd@google.com> Reviewed-by: Yongshun Liu <yongshun@chromium.org> Cr-Commit-Position: refs/heads/main@{#1001805}
- Loading branch information
zhumatthew
authored and
Chromium LUCI CQ
committed
May 10, 2022
1 parent
240310d
commit 2e5c472
Showing
13 changed files
with
404 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
// Copyright 2022 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
#include "components/desks_storage/core/desk_model_wrapper.h" | ||
|
||
#include "ash/public/cpp/desk_template.h" | ||
#include "base/guid.h" | ||
#include "base/logging.h" | ||
#include "components/account_id/account_id.h" | ||
#include "components/desks_storage/core/desk_model.h" | ||
#include "desk_sync_bridge.h" | ||
#include "local_desk_data_manager.h" | ||
|
||
namespace desks_storage { | ||
|
||
DeskModelWrapper::DeskModelWrapper( | ||
desks_storage::DeskModel* save_and_recall_desks_model) | ||
: save_and_recall_desks_model_(save_and_recall_desks_model) {} | ||
|
||
DeskModelWrapper::~DeskModelWrapper() = default; | ||
|
||
void DeskModelWrapper::GetAllEntries( | ||
DeskModel::GetAllEntriesCallback callback) { | ||
auto template_entries = std::vector<const ash::DeskTemplate*>(); | ||
auto desk_template_status = | ||
GetDeskTemplateModel()->GetAllEntries(template_entries); | ||
if (desk_template_status != DeskModel::GetAllEntriesStatus::kOk) { | ||
std::move(callback).Run(DeskModel::GetAllEntriesStatus::kFailure, | ||
template_entries); | ||
return; | ||
} | ||
|
||
save_and_recall_desks_model_->GetAllEntries(base::BindOnce( | ||
&DeskModelWrapper::OnGetAllEntries, weak_ptr_factory_.GetWeakPtr(), | ||
template_entries, std::move(callback))); | ||
} | ||
|
||
void DeskModelWrapper::GetEntryByUUID( | ||
const std::string& uuid, | ||
DeskModel::GetEntryByUuidCallback callback) { | ||
if (GetDeskTemplateModel()->HasUuid(uuid)) { | ||
GetDeskTemplateModel()->GetEntryByUUID(uuid, std::move(callback)); | ||
} else { | ||
save_and_recall_desks_model_->GetEntryByUUID(uuid, std::move(callback)); | ||
} | ||
} | ||
|
||
void DeskModelWrapper::AddOrUpdateEntry( | ||
std::unique_ptr<ash::DeskTemplate> new_entry, | ||
DeskModel::AddOrUpdateEntryCallback callback) { | ||
if (new_entry->type() == ash::DeskTemplateType::kTemplate) { | ||
GetDeskTemplateModel()->AddOrUpdateEntry(std::move(new_entry), | ||
std::move(callback)); | ||
} else { | ||
save_and_recall_desks_model_->AddOrUpdateEntry(std::move(new_entry), | ||
std::move(callback)); | ||
} | ||
} | ||
|
||
void DeskModelWrapper::DeleteEntry(const std::string& uuid_str, | ||
DeskModel::DeleteEntryCallback callback) { | ||
auto status = std::make_unique<DeskModel::DeleteEntryStatus>(); | ||
if (GetDeskTemplateModel()->HasUuid(uuid_str)) { | ||
GetDeskTemplateModel()->DeleteEntry(uuid_str, std::move(callback)); | ||
} else { | ||
save_and_recall_desks_model_->DeleteEntry(uuid_str, std::move(callback)); | ||
} | ||
} | ||
|
||
void DeskModelWrapper::DeleteAllEntries( | ||
DeskModel::DeleteEntryCallback callback) { | ||
DeskModel::DeleteEntryStatus desk_template_delete_status = | ||
GetDeskTemplateModel()->DeleteAllEntries(); | ||
if (desk_template_delete_status != DeskModel::DeleteEntryStatus::kOk) { | ||
std::move(callback).Run(desk_template_delete_status); | ||
return; | ||
} | ||
save_and_recall_desks_model_->DeleteAllEntries( | ||
base::BindOnce(&DeskModelWrapper::OnDeleteAllEntries, | ||
weak_ptr_factory_.GetWeakPtr(), std::move(callback))); | ||
} | ||
|
||
// TODO(crbug.com/1320805): Remove this function once both desk models support | ||
// desk type counts. | ||
size_t DeskModelWrapper::GetEntryCount() const { | ||
return GetSaveAndRecallDeskEntryCount() + GetDeskTemplateEntryCount(); | ||
} | ||
|
||
size_t DeskModelWrapper::GetSaveAndRecallDeskEntryCount() const { | ||
return save_and_recall_desks_model_->GetSaveAndRecallDeskEntryCount(); | ||
} | ||
|
||
size_t DeskModelWrapper::GetDeskTemplateEntryCount() const { | ||
return GetDeskTemplateModel()->GetDeskTemplateEntryCount(); | ||
} | ||
|
||
size_t DeskModelWrapper::GetMaxEntryCount() const { | ||
return GetMaxSaveAndRecallDeskEntryCount() + GetMaxDeskTemplateEntryCount(); | ||
} | ||
|
||
size_t DeskModelWrapper::GetMaxSaveAndRecallDeskEntryCount() const { | ||
return save_and_recall_desks_model_->GetMaxSaveAndRecallDeskEntryCount(); | ||
} | ||
|
||
size_t DeskModelWrapper::GetMaxDeskTemplateEntryCount() const { | ||
return GetDeskTemplateModel()->GetMaxDeskTemplateEntryCount(); | ||
} | ||
|
||
std::vector<base::GUID> DeskModelWrapper::GetAllEntryUuids() const { | ||
std::vector<base::GUID> keys; | ||
for (const auto& save_and_recall_uuid : | ||
save_and_recall_desks_model_->GetAllEntryUuids()) { | ||
keys.emplace_back(save_and_recall_uuid); | ||
} | ||
|
||
for (const auto& desk_template_uuid : | ||
GetDeskTemplateModel()->GetAllEntryUuids()) { | ||
keys.emplace_back(desk_template_uuid); | ||
} | ||
return keys; | ||
} | ||
|
||
bool DeskModelWrapper::IsReady() const { | ||
return save_and_recall_desks_model_->IsReady() && | ||
GetDeskTemplateModel()->IsReady(); | ||
} | ||
|
||
bool DeskModelWrapper::IsSyncing() const { | ||
return GetDeskTemplateModel()->IsSyncing(); | ||
} | ||
|
||
desks_storage::DeskSyncBridge* DeskModelWrapper::GetDeskTemplateModel() const { | ||
DCHECK(desk_template_model_); | ||
return desk_template_model_; | ||
} | ||
|
||
void DeskModelWrapper::OnGetAllEntries( | ||
const std::vector<const ash::DeskTemplate*>& template_entries, | ||
DeskModel::GetAllEntriesCallback callback, | ||
desks_storage::DeskModel::GetAllEntriesStatus status, | ||
const std::vector<const ash::DeskTemplate*>& entries) { | ||
if (status != DeskModel::GetAllEntriesStatus::kOk) { | ||
std::move(callback).Run(status, template_entries); | ||
return; | ||
} | ||
|
||
auto all_entries = template_entries; | ||
|
||
for (auto* const entry : entries) | ||
all_entries.push_back(entry); | ||
|
||
std::move(callback).Run(status, all_entries); | ||
} | ||
|
||
void DeskModelWrapper::OnDeleteAllEntries( | ||
DeskModel::DeleteEntryCallback callback, | ||
desks_storage::DeskModel::DeleteEntryStatus status) { | ||
std::move(callback).Run(status); | ||
} | ||
|
||
} // namespace desks_storage |
Oops, something went wrong.