saved_desk_builder.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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_SAVED_DESK_BUILDER_H_
  5. #define COMPONENTS_DESKS_STORAGE_CORE_SAVED_DESK_BUILDER_H_
  6. #include <string>
  7. #include <vector>
  8. #include "base/guid.h"
  9. #include "base/time/time.h"
  10. #include "components/app_restore/restore_data.h"
  11. #include "url/gurl.h"
  12. namespace ash {
  13. class DeskTemplate;
  14. enum class DeskTemplateSource;
  15. enum class DeskTemplateType;
  16. } // namespace ash
  17. namespace desks_storage {
  18. // Helper class for building a saved desk for test.
  19. class SavedDeskBuilder {
  20. public:
  21. SavedDeskBuilder();
  22. SavedDeskBuilder(const SavedDeskBuilder&) = delete;
  23. SavedDeskBuilder& operator=(const SavedDeskBuilder&) = delete;
  24. ~SavedDeskBuilder();
  25. // Builds a saved desk. This should only be called once per builder
  26. // instance.
  27. std::unique_ptr<ash::DeskTemplate> Build();
  28. // Sets saved desk UUID. If not set, the built desk will have a random UUID.
  29. SavedDeskBuilder& SetUuid(const std::string& uuid);
  30. // Sets saved desk name. If not set, the built desk will have a fixed name.
  31. SavedDeskBuilder& SetName(const std::string& name);
  32. // Sets saved desk type. If not set, the built desk will default to
  33. // DeskTemplate.
  34. SavedDeskBuilder& SetType(ash::DeskTemplateType desk_type);
  35. // Sets saved desk source. If not set, the built desk will default to kUser.
  36. SavedDeskBuilder& SetSource(ash::DeskTemplateSource desk_source);
  37. // Sets saved desk creation timestamp. If not set, the built desk will have
  38. // its creation timestamp set at the creation time of the SavedDeskBuilder.
  39. SavedDeskBuilder& SetCreatedTime(base::Time& created_time);
  40. // Adds a Ash Chrome Browser App window.
  41. SavedDeskBuilder& AddAshBrowserAppWindow(int window_id,
  42. std::vector<GURL> urls);
  43. // Adds a Lacros Chrome Browser App window.
  44. SavedDeskBuilder& AddLacrosBrowserAppWindow(int window_id,
  45. std::vector<GURL> urls);
  46. // Adds a PWA window hosted in Ash Chrome.
  47. SavedDeskBuilder& AddAshPwaAppWindow(int window_id, const std::string url);
  48. // Adds a PWA window hosted in Lacros Chrome.
  49. SavedDeskBuilder& AddLacrosPwaAppWindow(int window_id, const std::string url);
  50. // Adds a Chrome app window.
  51. SavedDeskBuilder& AddChromeAppWindow(int window_id, const std::string app_id);
  52. // Adds a generic app window.
  53. SavedDeskBuilder& AddGenericAppWindow(int window_id,
  54. const std::string app_id);
  55. private:
  56. base::GUID desk_uuid_;
  57. std::string desk_name_;
  58. ash::DeskTemplateSource desk_source_;
  59. ash::DeskTemplateType desk_type_;
  60. base::Time created_time_;
  61. std::unique_ptr<app_restore::RestoreData> restore_data_;
  62. };
  63. } // namespace desks_storage
  64. #endif // COMPONENTS_DESKS_STORAGE_CORE_SAVED_DESK_BUILDER_H_