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( |