clipboard_history_item_builder.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // Copyright 2020 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 ASH_CLIPBOARD_TEST_SUPPORT_CLIPBOARD_HISTORY_ITEM_BUILDER_H_
  5. #define ASH_CLIPBOARD_TEST_SUPPORT_CLIPBOARD_HISTORY_ITEM_BUILDER_H_
  6. #include <string>
  7. #include "ash/ash_export.h"
  8. #include "base/memory/ref_counted_memory.h"
  9. #include "third_party/abseil-cpp/absl/types/optional.h"
  10. #include "ui/base/clipboard/file_info.h"
  11. namespace ui {
  12. enum class ClipboardInternalFormat;
  13. } // namespace ui
  14. namespace ash {
  15. class ClipboardHistoryItem;
  16. // A builder for constructing `ClipboardHistoryItem`s in testing.
  17. class ASH_EXPORT ClipboardHistoryItemBuilder {
  18. public:
  19. ClipboardHistoryItemBuilder();
  20. ClipboardHistoryItemBuilder(const ClipboardHistoryItemBuilder&) = delete;
  21. ClipboardHistoryItemBuilder& operator=(const ClipboardHistoryItemBuilder&) =
  22. delete;
  23. ~ClipboardHistoryItemBuilder();
  24. // Constructs a `ClipboardHistoryItem` from only explicitly set data.
  25. ClipboardHistoryItem Build() const;
  26. // Clears all data.
  27. ClipboardHistoryItemBuilder& Clear();
  28. // Sets data of the specified `format` to a hardcoded value.
  29. ClipboardHistoryItemBuilder& SetFormat(ui::ClipboardInternalFormat format);
  30. // Clears data of the specified `format`.
  31. ClipboardHistoryItemBuilder& ClearFormat(ui::ClipboardInternalFormat format);
  32. // Sets/clears `text_` data.
  33. ClipboardHistoryItemBuilder& SetText(const std::string&);
  34. ClipboardHistoryItemBuilder& ClearText();
  35. // Sets/clears `markup_` data.
  36. ClipboardHistoryItemBuilder& SetMarkup(const std::string& markup);
  37. ClipboardHistoryItemBuilder& ClearMarkup();
  38. // Sets/clears `svg_` data.
  39. ClipboardHistoryItemBuilder& SetSvg(const std::string& svg);
  40. ClipboardHistoryItemBuilder& ClearSvg();
  41. // Sets/clears `rtf_` data.
  42. ClipboardHistoryItemBuilder& SetRtf(const std::string& rtf);
  43. ClipboardHistoryItemBuilder& ClearRtf();
  44. // Sets/clears `filenames_` data.
  45. ClipboardHistoryItemBuilder& SetFilenames(
  46. std::vector<ui::FileInfo> filenames);
  47. ClipboardHistoryItemBuilder& ClearFilenames();
  48. // Sets/clears `bookmark_title_` data.
  49. ClipboardHistoryItemBuilder& SetBookmarkTitle(
  50. const std::string& bookmark_title);
  51. ClipboardHistoryItemBuilder& ClearBookmarkTitle();
  52. // Sets/clears `png_` data.
  53. ClipboardHistoryItemBuilder& SetPng(std::vector<uint8_t> png);
  54. ClipboardHistoryItemBuilder& SetPng(
  55. const scoped_refptr<base::RefCountedMemory>& png);
  56. ClipboardHistoryItemBuilder& ClearPng();
  57. // Sets/clears `custom_format_` and `custom_data_` data.
  58. ClipboardHistoryItemBuilder& SetCustomData(const std::string& custom_format,
  59. const std::string& custom_data);
  60. ClipboardHistoryItemBuilder& ClearCustomData();
  61. // Sets/clears file system data.
  62. // NOTE: File system data is a special type of custom data.
  63. ClipboardHistoryItemBuilder& SetFileSystemData(
  64. const std::initializer_list<std::u16string>& source_list);
  65. // Sets/clears `web_smart_paste_` data.
  66. ClipboardHistoryItemBuilder& SetWebSmartPaste(bool web_smart_paste);
  67. ClipboardHistoryItemBuilder& ClearWebSmartPaste();
  68. private:
  69. // `ui::ClipboardData` formats.
  70. absl::optional<std::string> text_;
  71. absl::optional<std::string> markup_;
  72. absl::optional<std::string> svg_;
  73. absl::optional<std::string> rtf_;
  74. std::vector<ui::FileInfo> filenames_;
  75. absl::optional<std::string> bookmark_title_;
  76. absl::optional<std::vector<uint8_t>> png_;
  77. absl::optional<std::string> custom_format_;
  78. absl::optional<std::string> custom_data_;
  79. absl::optional<bool> web_smart_paste_;
  80. };
  81. } // namespace ash
  82. #endif // ASH_CLIPBOARD_TEST_SUPPORT_CLIPBOARD_HISTORY_ITEM_BUILDER_H_