2323#include " base/run_loop.h"
2424#include " base/strings/string_util.h"
2525#include " base/strings/utf_string_conversions.h"
26+ #include " testing/gmock/include/gmock/gmock-matchers.h"
2627#include " testing/gtest/include/gtest/gtest.h"
2728#include " testing/platform_test.h"
2829#include " third_party/skia/include/core/SkBitmap.h"
@@ -46,6 +47,8 @@ using base::ASCIIToUTF16;
4647using base::UTF8ToUTF16;
4748using base::UTF16ToUTF8;
4849
50+ using testing::Contains;
51+
4952namespace ui {
5053
5154template <typename ClipboardTraits>
@@ -64,6 +67,13 @@ class ClipboardTest : public PlatformTest {
6467 protected:
6568 Clipboard& clipboard () { return *clipboard_; }
6669
70+ std::vector<base::string16> GetAvailableTypes (ClipboardType type) {
71+ bool contains_filenames;
72+ std::vector<base::string16> types;
73+ clipboard ().ReadAvailableTypes (type, &types, &contains_filenames);
74+ return types;
75+ }
76+
6777 private:
6878 base::MessageLoopForUI message_loop_;
6979#if defined(USE_AURA)
@@ -89,6 +99,7 @@ TYPED_TEST(ClipboardTest, ClearTest) {
8999
90100 this ->clipboard ().Clear (CLIPBOARD_TYPE_COPY_PASTE);
91101
102+ EXPECT_TRUE (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE).empty ());
92103 EXPECT_FALSE (this ->clipboard ().IsFormatAvailable (
93104 Clipboard::GetPlainTextWFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
94105 EXPECT_FALSE (this ->clipboard ().IsFormatAvailable (
@@ -104,6 +115,8 @@ TYPED_TEST(ClipboardTest, TextTest) {
104115 clipboard_writer.WriteText (text);
105116 }
106117
118+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
119+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeText )));
107120 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
108121 Clipboard::GetPlainTextWFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
109122 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
@@ -126,6 +139,8 @@ TYPED_TEST(ClipboardTest, HTMLTest) {
126139 clipboard_writer.WriteHTML (markup, url);
127140 }
128141
142+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
143+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeHTML )));
129144 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
130145 Clipboard::GetHtmlFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
131146 uint32 fragment_start;
@@ -153,6 +168,8 @@ TYPED_TEST(ClipboardTest, RTFTest) {
153168 clipboard_writer.WriteRTF (rtf);
154169 }
155170
171+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
172+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeRTF )));
156173 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (Clipboard::GetRtfFormatType (),
157174 CLIPBOARD_TYPE_COPY_PASTE));
158175 std::string result;
@@ -178,6 +195,11 @@ TYPED_TEST(ClipboardTest, MultipleBufferTest) {
178195 clipboard_writer.WriteHTML (markup, url);
179196 }
180197
198+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
199+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeText )));
200+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_SELECTION),
201+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeHTML )));
202+
181203 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
182204 Clipboard::GetPlainTextFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
183205 EXPECT_FALSE (this ->clipboard ().IsFormatAvailable (
@@ -214,6 +236,8 @@ TYPED_TEST(ClipboardTest, TrickyHTMLTest) {
214236 clipboard_writer.WriteHTML (markup, url);
215237 }
216238
239+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
240+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeHTML )));
217241 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
218242 Clipboard::GetHtmlFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
219243 uint32 fragment_start;
@@ -242,6 +266,8 @@ TYPED_TEST(ClipboardTest, UnicodeHTMLTest) {
242266 clipboard_writer.WriteHTML (markup, url);
243267 }
244268
269+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
270+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeHTML )));
245271 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
246272 Clipboard::GetHtmlFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
247273 uint32 fragment_start;
@@ -287,6 +313,10 @@ TYPED_TEST(ClipboardTest, MultiFormatTest) {
287313 clipboard_writer.WriteText (text);
288314 }
289315
316+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
317+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeHTML )));
318+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
319+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeText )));
290320 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
291321 Clipboard::GetHtmlFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
292322 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
@@ -319,6 +349,8 @@ TYPED_TEST(ClipboardTest, URLTest) {
319349 clipboard_writer.WriteURL (url);
320350 }
321351
352+ EXPECT_THAT (this ->GetAvailableTypes (CLIPBOARD_TYPE_COPY_PASTE),
353+ Contains (ASCIIToUTF16 (Clipboard::kMimeTypeText )));
322354 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
323355 Clipboard::GetPlainTextWFormatType (), CLIPBOARD_TYPE_COPY_PASTE));
324356 EXPECT_TRUE (this ->clipboard ().IsFormatAvailable (
0 commit comments