desk_model_wrapper.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_DESKS_STORAGE_CORE_DESK_MODEL_WRAPPER_H_
  5. #define COMPONENTS_DESKS_STORAGE_CORE_DESK_MODEL_WRAPPER_H_
  6. #include <map>
  7. #include <memory>
  8. #include "ash/public/cpp/desk_template.h"
  9. #include "base/guid.h"
  10. #include "base/memory/ref_counted.h"
  11. #include "base/memory/weak_ptr.h"
  12. #include "components/account_id/account_id.h"
  13. #include "components/desks_storage/core/desk_model.h"
  14. #include "components/desks_storage/core/desk_sync_bridge.h"
  15. namespace ash {
  16. class DeskTemplate;
  17. }
  18. namespace desks_storage {
  19. // The DeskModelWrapper handles storage operations for chrome sync
  20. // desk templates and local storage save and recall desks backends.
  21. //
  22. // TODO(crbug.com/1323946): Add unittests for this class.
  23. class DeskModelWrapper : public DeskModel {
  24. public:
  25. DeskModelWrapper(desks_storage::DeskModel* save_and_recall_desks_model);
  26. DeskModelWrapper(const DeskModelWrapper&) = delete;
  27. DeskModelWrapper& operator=(const DeskModelWrapper&) = delete;
  28. ~DeskModelWrapper() override;
  29. // DeskModel:
  30. DeskModel::GetAllEntriesResult GetAllEntries() override;
  31. void GetEntryByUUID(const std::string& uuid,
  32. GetEntryByUuidCallback callback) override;
  33. void AddOrUpdateEntry(std::unique_ptr<ash::DeskTemplate> new_entry,
  34. AddOrUpdateEntryCallback callback) override;
  35. void DeleteEntry(const std::string& uuid,
  36. DeleteEntryCallback callback) override;
  37. void DeleteAllEntries(DeleteEntryCallback callback) override;
  38. std::size_t GetEntryCount() const override;
  39. std::size_t GetMaxEntryCount() const override;
  40. std::size_t GetSaveAndRecallDeskEntryCount() const override;
  41. std::size_t GetDeskTemplateEntryCount() const override;
  42. std::size_t GetMaxSaveAndRecallDeskEntryCount() const override;
  43. std::size_t GetMaxDeskTemplateEntryCount() const override;
  44. std::vector<base::GUID> GetAllEntryUuids() const override;
  45. bool IsReady() const override;
  46. bool IsSyncing() const override;
  47. ash::DeskTemplate* FindOtherEntryWithName(
  48. const std::u16string& name,
  49. ash::DeskTemplateType type,
  50. const base::GUID& uuid) const override;
  51. // Setter method to set `desk_template_model_` to the correct `bridge`.
  52. void SetDeskSyncBridge(desks_storage::DeskSyncBridge* bridge) {
  53. desk_template_model_ = bridge;
  54. }
  55. private:
  56. desks_storage::DeskSyncBridge* GetDeskTemplateModel() const;
  57. // Wrapper for DeleteEntryCallback to consolidate deleting all entries from
  58. // both storage models.
  59. void OnDeleteAllEntries(DeskModel::DeleteEntryCallback callback,
  60. desks_storage::DeskModel::DeleteEntryStatus status);
  61. desks_storage::DeskModel* save_and_recall_desks_model_;
  62. desks_storage::DeskSyncBridge* desk_template_model_;
  63. base::WeakPtrFactory<DeskModelWrapper> weak_ptr_factory_{this};
  64. };
  65. } // namespace desks_storage
  66. #endif // COMPONENTS_DESKS_STORAGE_CORE_LOCAL_DESK_DATA_MANAGER_H_