Chromium Code Reviews| Index: ui/base/clipboard/clipboard_test_template.h |
| diff --git a/ui/base/clipboard/clipboard_test_template.h b/ui/base/clipboard/clipboard_test_template.h |
| index 844266bcf6bc7cb761cfa770701e09eaae71102e..3f776659cec4eb156f1fc4f94d310bba53e97018 100644 |
| --- a/ui/base/clipboard/clipboard_test_template.h |
| +++ b/ui/base/clipboard/clipboard_test_template.h |
| @@ -64,6 +64,50 @@ class ClipboardTest : public PlatformTest { |
| protected: |
| Clipboard& clipboard() { return *clipboard_; } |
| + bool AvailableTypesIsEmpty(ClipboardType type = CLIPBOARD_TYPE_COPY_PASTE) { |
|
dcheng
2015/07/15 01:04:45
Default arguments are not permitted in Chromium.
Tobias Sargeant
2015/07/15 14:03:59
Done.
|
| + bool contains_filenames; |
| + std::vector<base::string16> types; |
| + clipboard().ReadAvailableTypes( |
| + type, |
| + &types, |
| + &contains_filenames); |
| + return types.size() == 0; |
|
dcheng
2015/07/15 01:04:45
types.empty()
Tobias Sargeant
2015/07/15 14:03:59
removed
|
| + } |
| + |
| + bool AvailableTypesHas(ClipboardType type, |
| + const std::set<base::string16> &expected) { |
|
dcheng
2015/07/15 01:04:45
& by the type. For style issues like this, git cl
Tobias Sargeant
2015/07/15 14:04:00
Thanks for pointing this out. I did this soon afte
|
| + bool contains_filenames; |
| + std::vector<base::string16> types; |
| + clipboard().ReadAvailableTypes( |
| + type, |
| + &types, |
| + &contains_filenames); |
| + |
| + for (auto it = expected.begin(); it != expected.end(); ++it) { |
|
dcheng
2015/07/15 01:04:45
This is copying each string16. Use const auto&
Tobias Sargeant
2015/07/15 14:03:59
removed (I admit it was lazy, but it didn't seem l
|
| + if (std::find(types.begin(), types.end(), *it) == types.end()) { |
| + return false; |
| + } |
| + } |
| + |
| + return true; |
| + } |
| + |
| + bool AvailableTypesHas(const char* _1, |
|
dcheng
2015/07/15 01:04:45
It seems to me that the code would be clearer if y
Tobias Sargeant
2015/07/15 14:03:59
I've switched everything to using this scheme. Tha
|
| + ClipboardType type = CLIPBOARD_TYPE_COPY_PASTE) { |
| + std::set<base::string16> expected; |
| + expected.insert(base::UTF8ToUTF16(_1)); |
| + return AvailableTypesHas(type, expected); |
| + } |
| + |
| + bool AvailableTypesHas(const char* _1, |
| + const char* _2, |
| + ClipboardType type = CLIPBOARD_TYPE_COPY_PASTE) { |
| + std::set<base::string16> expected; |
| + expected.insert(base::UTF8ToUTF16(_1)); |
| + expected.insert(base::UTF8ToUTF16(_2)); |
| + return AvailableTypesHas(type, expected); |
| + } |
| + |
| private: |
| base::MessageLoopForUI message_loop_; |
| #if defined(USE_AURA) |
| @@ -89,6 +133,7 @@ TYPED_TEST(ClipboardTest, ClearTest) { |
| this->clipboard().Clear(CLIPBOARD_TYPE_COPY_PASTE); |
| + EXPECT_TRUE(this->AvailableTypesIsEmpty()); |
| EXPECT_FALSE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| EXPECT_FALSE(this->clipboard().IsFormatAvailable( |
| @@ -104,6 +149,7 @@ TYPED_TEST(ClipboardTest, TextTest) { |
| clipboard_writer.WriteText(text); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeText)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| @@ -126,6 +172,7 @@ TYPED_TEST(ClipboardTest, HTMLTest) { |
| clipboard_writer.WriteHTML(markup, url); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeHTML)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| uint32 fragment_start; |
| @@ -153,6 +200,7 @@ TYPED_TEST(ClipboardTest, RTFTest) { |
| clipboard_writer.WriteRTF(rtf); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeRTF)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable(Clipboard::GetRtfFormatType(), |
| CLIPBOARD_TYPE_COPY_PASTE)); |
| std::string result; |
| @@ -178,6 +226,11 @@ TYPED_TEST(ClipboardTest, MultipleBufferTest) { |
| clipboard_writer.WriteHTML(markup, url); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeText, |
| + CLIPBOARD_TYPE_COPY_PASTE)); |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeHTML, |
| + CLIPBOARD_TYPE_SELECTION)); |
| + |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetPlainTextFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| EXPECT_FALSE(this->clipboard().IsFormatAvailable( |
| @@ -214,6 +267,7 @@ TYPED_TEST(ClipboardTest, TrickyHTMLTest) { |
| clipboard_writer.WriteHTML(markup, url); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeHTML)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| uint32 fragment_start; |
| @@ -242,6 +296,7 @@ TYPED_TEST(ClipboardTest, UnicodeHTMLTest) { |
| clipboard_writer.WriteHTML(markup, url); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeHTML)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| uint32 fragment_start; |
| @@ -250,7 +305,10 @@ TYPED_TEST(ClipboardTest, UnicodeHTMLTest) { |
| &url_result, &fragment_start, &fragment_end); |
| EXPECT_LE(markup.size(), fragment_end - fragment_start); |
| EXPECT_EQ(markup, |
| - markup_result.substr(fragment_end - markup.size(), markup.size())); |
| + markup_result.substr( |
| + fragment_end - |
| + std::min(fragment_end, static_cast<uint32>(markup.size())), |
|
dcheng
2015/07/15 01:04:45
Can you explain to me why we need to use fragment_
Tobias Sargeant
2015/07/15 14:04:00
Again, It has been a while, and I can't remember t
dcheng
2015/07/16 06:10:00
As long as it passes the trybots.
|
| + markup.size())); |
| #if defined(OS_WIN) |
| EXPECT_EQ(url, url_result); |
| #endif |
| @@ -287,6 +345,8 @@ TYPED_TEST(ClipboardTest, MultiFormatTest) { |
| clipboard_writer.WriteText(text); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeHTML, |
| + Clipboard::kMimeTypeText)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetHtmlFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| @@ -299,7 +359,10 @@ TYPED_TEST(ClipboardTest, MultiFormatTest) { |
| &url_result, &fragment_start, &fragment_end); |
| EXPECT_LE(markup.size(), fragment_end - fragment_start); |
| EXPECT_EQ(markup, |
| - markup_result.substr(fragment_end - markup.size(), markup.size())); |
| + markup_result.substr( |
| + fragment_end - |
| + std::min(fragment_end, static_cast<uint32>(markup.size())), |
| + markup.size())); |
| #if defined(OS_WIN) |
| // TODO(playmobil): It's not clear that non windows clipboards need to support |
| // this. |
| @@ -319,6 +382,7 @@ TYPED_TEST(ClipboardTest, URLTest) { |
| clipboard_writer.WriteURL(url); |
| } |
| + EXPECT_TRUE(this->AvailableTypesHas(Clipboard::kMimeTypeText)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |
| Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
| EXPECT_TRUE(this->clipboard().IsFormatAvailable( |