OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 namespace ui { | 43 namespace ui { |
44 | 44 |
45 class ClipboardTest : public PlatformTest { | 45 class ClipboardTest : public PlatformTest { |
46 public: | 46 public: |
47 #if defined(USE_AURA) | 47 #if defined(USE_AURA) |
48 ClipboardTest() : event_source_(ui::PlatformEventSource::CreateDefault()) {} | 48 ClipboardTest() : event_source_(ui::PlatformEventSource::CreateDefault()) {} |
49 #else | 49 #else |
50 ClipboardTest() {} | 50 ClipboardTest() {} |
51 #endif | 51 #endif |
52 | 52 |
| 53 virtual ~ClipboardTest() { |
| 54 ui::Clipboard::DestroyClipboardForCurrentThread(); |
| 55 } |
| 56 |
53 static void WriteObjectsToClipboard(ui::Clipboard* clipboard, | 57 static void WriteObjectsToClipboard(ui::Clipboard* clipboard, |
54 const Clipboard::ObjectMap& objects) { | 58 const Clipboard::ObjectMap& objects) { |
55 clipboard->WriteObjects(ui::CLIPBOARD_TYPE_COPY_PASTE, objects); | 59 clipboard->WriteObjects(ui::CLIPBOARD_TYPE_COPY_PASTE, objects); |
56 } | 60 } |
57 | 61 |
58 protected: | 62 protected: |
59 Clipboard& clipboard() { return clipboard_; } | 63 Clipboard& clipboard() { return *ui::Clipboard::GetForCurrentThread(); } |
60 | 64 |
61 void WriteObjectsToClipboard(const Clipboard::ObjectMap& objects) { | 65 void WriteObjectsToClipboard(const Clipboard::ObjectMap& objects) { |
62 WriteObjectsToClipboard(&clipboard(), objects); | 66 WriteObjectsToClipboard(&clipboard(), objects); |
63 } | 67 } |
64 | 68 |
65 private: | 69 private: |
66 base::MessageLoopForUI message_loop_; | 70 base::MessageLoopForUI message_loop_; |
67 #if defined(USE_AURA) | 71 #if defined(USE_AURA) |
68 scoped_ptr<PlatformEventSource> event_source_; | 72 scoped_ptr<PlatformEventSource> event_source_; |
69 #endif | 73 #endif |
70 Clipboard clipboard_; | |
71 }; | 74 }; |
72 | 75 |
73 namespace { | 76 namespace { |
74 | 77 |
75 bool MarkupMatches(const base::string16& expected_markup, | 78 bool MarkupMatches(const base::string16& expected_markup, |
76 const base::string16& actual_markup) { | 79 const base::string16& actual_markup) { |
77 return actual_markup.find(expected_markup) != base::string16::npos; | 80 return actual_markup.find(expected_markup) != base::string16::npos; |
78 } | 81 } |
79 | 82 |
80 } // namespace | 83 } // namespace |
81 | 84 |
82 TEST_F(ClipboardTest, ClearTest) { | 85 TEST_F(ClipboardTest, ClearTest) { |
83 { | 86 { |
84 ScopedClipboardWriter clipboard_writer(&clipboard(), | 87 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
85 CLIPBOARD_TYPE_COPY_PASTE); | |
86 clipboard_writer.WriteText(ASCIIToUTF16("clear me")); | 88 clipboard_writer.WriteText(ASCIIToUTF16("clear me")); |
87 } | 89 } |
88 | 90 |
89 clipboard().Clear(CLIPBOARD_TYPE_COPY_PASTE); | 91 clipboard().Clear(CLIPBOARD_TYPE_COPY_PASTE); |
90 | 92 |
91 EXPECT_FALSE(clipboard().IsFormatAvailable( | 93 EXPECT_FALSE(clipboard().IsFormatAvailable( |
92 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 94 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
93 EXPECT_FALSE(clipboard().IsFormatAvailable( | 95 EXPECT_FALSE(clipboard().IsFormatAvailable( |
94 Clipboard::GetPlainTextFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 96 Clipboard::GetPlainTextFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
95 } | 97 } |
96 | 98 |
97 TEST_F(ClipboardTest, TextTest) { | 99 TEST_F(ClipboardTest, TextTest) { |
98 base::string16 text(ASCIIToUTF16("This is a base::string16!#$")), text_result; | 100 base::string16 text(ASCIIToUTF16("This is a base::string16!#$")), text_result; |
99 std::string ascii_text; | 101 std::string ascii_text; |
100 | 102 |
101 { | 103 { |
102 ScopedClipboardWriter clipboard_writer(&clipboard(), | 104 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
103 CLIPBOARD_TYPE_COPY_PASTE); | |
104 clipboard_writer.WriteText(text); | 105 clipboard_writer.WriteText(text); |
105 } | 106 } |
106 | 107 |
107 EXPECT_TRUE(clipboard().IsFormatAvailable( | 108 EXPECT_TRUE(clipboard().IsFormatAvailable( |
108 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 109 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
109 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(), | 110 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
110 CLIPBOARD_TYPE_COPY_PASTE)); | 111 CLIPBOARD_TYPE_COPY_PASTE)); |
111 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &text_result); | 112 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &text_result); |
112 | 113 |
113 EXPECT_EQ(text, text_result); | 114 EXPECT_EQ(text, text_result); |
114 clipboard().ReadAsciiText(CLIPBOARD_TYPE_COPY_PASTE, &ascii_text); | 115 clipboard().ReadAsciiText(CLIPBOARD_TYPE_COPY_PASTE, &ascii_text); |
115 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); | 116 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); |
116 } | 117 } |
117 | 118 |
118 TEST_F(ClipboardTest, HTMLTest) { | 119 TEST_F(ClipboardTest, HTMLTest) { |
119 base::string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result; | 120 base::string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result; |
120 base::string16 plain(ASCIIToUTF16("Hi!")), plain_result; | 121 base::string16 plain(ASCIIToUTF16("Hi!")), plain_result; |
121 std::string url("http://www.example.com/"), url_result; | 122 std::string url("http://www.example.com/"), url_result; |
122 | 123 |
123 { | 124 { |
124 ScopedClipboardWriter clipboard_writer(&clipboard(), | 125 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
125 CLIPBOARD_TYPE_COPY_PASTE); | |
126 clipboard_writer.WriteText(plain); | 126 clipboard_writer.WriteText(plain); |
127 clipboard_writer.WriteHTML(markup, url); | 127 clipboard_writer.WriteHTML(markup, url); |
128 } | 128 } |
129 | 129 |
130 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 130 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
131 CLIPBOARD_TYPE_COPY_PASTE)); | 131 CLIPBOARD_TYPE_COPY_PASTE)); |
132 uint32 ignored; | 132 uint32 ignored; |
133 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, | 133 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, |
134 &ignored, &ignored); | 134 &ignored, &ignored); |
135 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 135 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
136 #if defined(OS_WIN) | 136 #if defined(OS_WIN) |
137 // TODO(playmobil): It's not clear that non windows clipboards need to support | 137 // TODO(playmobil): It's not clear that non windows clipboards need to support |
138 // this. | 138 // this. |
139 EXPECT_EQ(url, url_result); | 139 EXPECT_EQ(url, url_result); |
140 #endif // defined(OS_WIN) | 140 #endif // defined(OS_WIN) |
141 } | 141 } |
142 | 142 |
143 TEST_F(ClipboardTest, RTFTest) { | 143 TEST_F(ClipboardTest, RTFTest) { |
144 std::string rtf = | 144 std::string rtf = |
145 "{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\n" | 145 "{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\n" |
146 "This is some {\\b bold} text.\\par\n" | 146 "This is some {\\b bold} text.\\par\n" |
147 "}"; | 147 "}"; |
148 | 148 |
149 { | 149 { |
150 ScopedClipboardWriter clipboard_writer(&clipboard(), | 150 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
151 CLIPBOARD_TYPE_COPY_PASTE); | |
152 clipboard_writer.WriteRTF(rtf); | 151 clipboard_writer.WriteRTF(rtf); |
153 } | 152 } |
154 | 153 |
155 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetRtfFormatType(), | 154 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetRtfFormatType(), |
156 CLIPBOARD_TYPE_COPY_PASTE)); | 155 CLIPBOARD_TYPE_COPY_PASTE)); |
157 std::string result; | 156 std::string result; |
158 clipboard().ReadRTF(CLIPBOARD_TYPE_COPY_PASTE, &result); | 157 clipboard().ReadRTF(CLIPBOARD_TYPE_COPY_PASTE, &result); |
159 EXPECT_EQ(rtf, result); | 158 EXPECT_EQ(rtf, result); |
160 } | 159 } |
161 | 160 |
162 // TODO(dnicoara) Enable test once Ozone implements clipboard support: | 161 // TODO(dnicoara) Enable test once Ozone implements clipboard support: |
163 // crbug.com/361707 | 162 // crbug.com/361707 |
164 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) | 163 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) |
165 TEST_F(ClipboardTest, MultipleBufferTest) { | 164 TEST_F(ClipboardTest, MultipleBufferTest) { |
166 base::string16 text(ASCIIToUTF16("Standard")), text_result; | 165 base::string16 text(ASCIIToUTF16("Standard")), text_result; |
167 base::string16 markup(ASCIIToUTF16("<string>Selection</string>")); | 166 base::string16 markup(ASCIIToUTF16("<string>Selection</string>")); |
168 std::string url("http://www.example.com/"), url_result; | 167 std::string url("http://www.example.com/"), url_result; |
169 | 168 |
170 { | 169 { |
171 ScopedClipboardWriter clipboard_writer(&clipboard(), | 170 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
172 CLIPBOARD_TYPE_COPY_PASTE); | |
173 clipboard_writer.WriteText(text); | 171 clipboard_writer.WriteText(text); |
174 } | 172 } |
175 | 173 |
176 { | 174 { |
177 ScopedClipboardWriter clipboard_writer(&clipboard(), | 175 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_SELECTION); |
178 CLIPBOARD_TYPE_SELECTION); | |
179 clipboard_writer.WriteHTML(markup, url); | 176 clipboard_writer.WriteHTML(markup, url); |
180 } | 177 } |
181 | 178 |
182 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(), | 179 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
183 CLIPBOARD_TYPE_COPY_PASTE)); | 180 CLIPBOARD_TYPE_COPY_PASTE)); |
184 EXPECT_FALSE(clipboard().IsFormatAvailable( | 181 EXPECT_FALSE(clipboard().IsFormatAvailable( |
185 Clipboard::GetPlainTextFormatType(), | 182 Clipboard::GetPlainTextFormatType(), |
186 CLIPBOARD_TYPE_SELECTION)); | 183 CLIPBOARD_TYPE_SELECTION)); |
187 | 184 |
188 EXPECT_FALSE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 185 EXPECT_FALSE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
(...skipping 15 matching lines...) Expand all Loading... |
204 } | 201 } |
205 #endif | 202 #endif |
206 | 203 |
207 TEST_F(ClipboardTest, TrickyHTMLTest) { | 204 TEST_F(ClipboardTest, TrickyHTMLTest) { |
208 base::string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")), | 205 base::string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")), |
209 markup_result; | 206 markup_result; |
210 std::string url, url_result; | 207 std::string url, url_result; |
211 base::string16 plain(ASCIIToUTF16("Bye!")), plain_result; | 208 base::string16 plain(ASCIIToUTF16("Bye!")), plain_result; |
212 | 209 |
213 { | 210 { |
214 ScopedClipboardWriter clipboard_writer(&clipboard(), | 211 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
215 CLIPBOARD_TYPE_COPY_PASTE); | |
216 clipboard_writer.WriteText(plain); | 212 clipboard_writer.WriteText(plain); |
217 clipboard_writer.WriteHTML(markup, url); | 213 clipboard_writer.WriteHTML(markup, url); |
218 } | 214 } |
219 | 215 |
220 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 216 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
221 CLIPBOARD_TYPE_COPY_PASTE)); | 217 CLIPBOARD_TYPE_COPY_PASTE)); |
222 uint32 ignored; | 218 uint32 ignored; |
223 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, | 219 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, |
224 &ignored, &ignored); | 220 &ignored, &ignored); |
225 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 221 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
226 #if defined(OS_WIN) | 222 #if defined(OS_WIN) |
227 // TODO(playmobil): It's not clear that non windows clipboards need to support | 223 // TODO(playmobil): It's not clear that non windows clipboards need to support |
228 // this. | 224 // this. |
229 EXPECT_EQ(url, url_result); | 225 EXPECT_EQ(url, url_result); |
230 #endif // defined(OS_WIN) | 226 #endif // defined(OS_WIN) |
231 } | 227 } |
232 | 228 |
233 #if defined(OS_WIN) | 229 #if defined(OS_WIN) |
234 TEST_F(ClipboardTest, UniodeHTMLTest) { | 230 TEST_F(ClipboardTest, UniodeHTMLTest) { |
235 base::string16 markup(UTF8ToUTF16("<div>A \xc3\xb8 \xe6\xb0\xb4</div>")), | 231 base::string16 markup(UTF8ToUTF16("<div>A \xc3\xb8 \xe6\xb0\xb4</div>")), |
236 markup_result; | 232 markup_result; |
237 std::string url, url_result; | 233 std::string url, url_result; |
238 | 234 |
239 { | 235 { |
240 ScopedClipboardWriter clipboard_writer(&clipboard(), | 236 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
241 CLIPBOARD_TYPE_COPY_PASTE); | |
242 clipboard_writer.WriteHTML(markup, url); | 237 clipboard_writer.WriteHTML(markup, url); |
243 } | 238 } |
244 | 239 |
245 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 240 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
246 CLIPBOARD_TYPE_COPY_PASTE)); | 241 CLIPBOARD_TYPE_COPY_PASTE)); |
247 uint32 fragment_start; | 242 uint32 fragment_start; |
248 uint32 fragment_end; | 243 uint32 fragment_end; |
249 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, | 244 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, |
250 &fragment_start, &fragment_end); | 245 &fragment_start, &fragment_end); |
251 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 246 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
252 EXPECT_EQ(url, url_result); | 247 EXPECT_EQ(url, url_result); |
253 // Make sure that fragment indices were adjusted when converting. | 248 // Make sure that fragment indices were adjusted when converting. |
254 EXPECT_EQ(36, fragment_start); | 249 EXPECT_EQ(36, fragment_start); |
255 EXPECT_EQ(52, fragment_end); | 250 EXPECT_EQ(52, fragment_end); |
256 } | 251 } |
257 #endif // defined(OS_WIN) | 252 #endif // defined(OS_WIN) |
258 | 253 |
259 // TODO(estade): Port the following test (decide what target we use for urls) | 254 // TODO(estade): Port the following test (decide what target we use for urls) |
260 #if !defined(OS_POSIX) || defined(OS_MACOSX) | 255 #if !defined(OS_POSIX) || defined(OS_MACOSX) |
261 TEST_F(ClipboardTest, BookmarkTest) { | 256 TEST_F(ClipboardTest, BookmarkTest) { |
262 base::string16 title(ASCIIToUTF16("The Example Company")), title_result; | 257 base::string16 title(ASCIIToUTF16("The Example Company")), title_result; |
263 std::string url("http://www.example.com/"), url_result; | 258 std::string url("http://www.example.com/"), url_result; |
264 | 259 |
265 { | 260 { |
266 ScopedClipboardWriter clipboard_writer(&clipboard(), | 261 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
267 CLIPBOARD_TYPE_COPY_PASTE); | |
268 clipboard_writer.WriteBookmark(title, url); | 262 clipboard_writer.WriteBookmark(title, url); |
269 } | 263 } |
270 | 264 |
271 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetUrlWFormatType(), | 265 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetUrlWFormatType(), |
272 CLIPBOARD_TYPE_COPY_PASTE)); | 266 CLIPBOARD_TYPE_COPY_PASTE)); |
273 clipboard().ReadBookmark(&title_result, &url_result); | 267 clipboard().ReadBookmark(&title_result, &url_result); |
274 EXPECT_EQ(title, title_result); | 268 EXPECT_EQ(title, title_result); |
275 EXPECT_EQ(url, url_result); | 269 EXPECT_EQ(url, url_result); |
276 } | 270 } |
277 #endif // defined(OS_WIN) | 271 #endif // defined(OS_WIN) |
278 | 272 |
279 TEST_F(ClipboardTest, MultiFormatTest) { | 273 TEST_F(ClipboardTest, MultiFormatTest) { |
280 base::string16 text(ASCIIToUTF16("Hi!")), text_result; | 274 base::string16 text(ASCIIToUTF16("Hi!")), text_result; |
281 base::string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result; | 275 base::string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result; |
282 std::string url("http://www.example.com/"), url_result; | 276 std::string url("http://www.example.com/"), url_result; |
283 std::string ascii_text; | 277 std::string ascii_text; |
284 | 278 |
285 { | 279 { |
286 ScopedClipboardWriter clipboard_writer(&clipboard(), | 280 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
287 CLIPBOARD_TYPE_COPY_PASTE); | |
288 clipboard_writer.WriteHTML(markup, url); | 281 clipboard_writer.WriteHTML(markup, url); |
289 clipboard_writer.WriteText(text); | 282 clipboard_writer.WriteText(text); |
290 } | 283 } |
291 | 284 |
292 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 285 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
293 CLIPBOARD_TYPE_COPY_PASTE)); | 286 CLIPBOARD_TYPE_COPY_PASTE)); |
294 EXPECT_TRUE(clipboard().IsFormatAvailable( | 287 EXPECT_TRUE(clipboard().IsFormatAvailable( |
295 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 288 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
296 EXPECT_TRUE(clipboard().IsFormatAvailable( | 289 EXPECT_TRUE(clipboard().IsFormatAvailable( |
297 Clipboard::GetPlainTextFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 290 Clipboard::GetPlainTextFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
298 uint32 ignored; | 291 uint32 ignored; |
299 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, | 292 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &markup_result, &url_result, |
300 &ignored, &ignored); | 293 &ignored, &ignored); |
301 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 294 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
302 #if defined(OS_WIN) | 295 #if defined(OS_WIN) |
303 // TODO(playmobil): It's not clear that non windows clipboards need to support | 296 // TODO(playmobil): It's not clear that non windows clipboards need to support |
304 // this. | 297 // this. |
305 EXPECT_EQ(url, url_result); | 298 EXPECT_EQ(url, url_result); |
306 #endif // defined(OS_WIN) | 299 #endif // defined(OS_WIN) |
307 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &text_result); | 300 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &text_result); |
308 EXPECT_EQ(text, text_result); | 301 EXPECT_EQ(text, text_result); |
309 clipboard().ReadAsciiText(CLIPBOARD_TYPE_COPY_PASTE, &ascii_text); | 302 clipboard().ReadAsciiText(CLIPBOARD_TYPE_COPY_PASTE, &ascii_text); |
310 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); | 303 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); |
311 } | 304 } |
312 | 305 |
313 TEST_F(ClipboardTest, URLTest) { | 306 TEST_F(ClipboardTest, URLTest) { |
314 base::string16 url(ASCIIToUTF16("http://www.google.com/")); | 307 base::string16 url(ASCIIToUTF16("http://www.google.com/")); |
315 | 308 |
316 { | 309 { |
317 ScopedClipboardWriter clipboard_writer(&clipboard(), | 310 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
318 CLIPBOARD_TYPE_COPY_PASTE); | |
319 clipboard_writer.WriteURL(url); | 311 clipboard_writer.WriteURL(url); |
320 } | 312 } |
321 | 313 |
322 EXPECT_TRUE(clipboard().IsFormatAvailable( | 314 EXPECT_TRUE(clipboard().IsFormatAvailable( |
323 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 315 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
324 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(), | 316 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
325 CLIPBOARD_TYPE_COPY_PASTE)); | 317 CLIPBOARD_TYPE_COPY_PASTE)); |
326 base::string16 text_result; | 318 base::string16 text_result; |
327 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &text_result); | 319 clipboard().ReadText(CLIPBOARD_TYPE_COPY_PASTE, &text_result); |
328 | 320 |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 } | 527 } |
536 | 528 |
537 TEST_F(ClipboardTest, DataTest) { | 529 TEST_F(ClipboardTest, DataTest) { |
538 const ui::Clipboard::FormatType kFormat = | 530 const ui::Clipboard::FormatType kFormat = |
539 ui::Clipboard::GetFormatType("chromium/x-test-format"); | 531 ui::Clipboard::GetFormatType("chromium/x-test-format"); |
540 std::string payload("test string"); | 532 std::string payload("test string"); |
541 Pickle write_pickle; | 533 Pickle write_pickle; |
542 write_pickle.WriteString(payload); | 534 write_pickle.WriteString(payload); |
543 | 535 |
544 { | 536 { |
545 ScopedClipboardWriter clipboard_writer(&clipboard(), | 537 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
546 CLIPBOARD_TYPE_COPY_PASTE); | |
547 clipboard_writer.WritePickledData(write_pickle, kFormat); | 538 clipboard_writer.WritePickledData(write_pickle, kFormat); |
548 } | 539 } |
549 | 540 |
550 ASSERT_TRUE(clipboard().IsFormatAvailable( | 541 ASSERT_TRUE(clipboard().IsFormatAvailable( |
551 kFormat, CLIPBOARD_TYPE_COPY_PASTE)); | 542 kFormat, CLIPBOARD_TYPE_COPY_PASTE)); |
552 std::string output; | 543 std::string output; |
553 clipboard().ReadData(kFormat, &output); | 544 clipboard().ReadData(kFormat, &output); |
554 ASSERT_FALSE(output.empty()); | 545 ASSERT_FALSE(output.empty()); |
555 | 546 |
556 Pickle read_pickle(output.data(), output.size()); | 547 Pickle read_pickle(output.data(), output.size()); |
(...skipping 10 matching lines...) Expand all Loading... |
567 Pickle write_pickle1; | 558 Pickle write_pickle1; |
568 write_pickle1.WriteString(payload1); | 559 write_pickle1.WriteString(payload1); |
569 | 560 |
570 const ui::Clipboard::FormatType kFormat2 = | 561 const ui::Clipboard::FormatType kFormat2 = |
571 ui::Clipboard::GetFormatType("chromium/x-test-format2"); | 562 ui::Clipboard::GetFormatType("chromium/x-test-format2"); |
572 std::string payload2("test string2"); | 563 std::string payload2("test string2"); |
573 Pickle write_pickle2; | 564 Pickle write_pickle2; |
574 write_pickle2.WriteString(payload2); | 565 write_pickle2.WriteString(payload2); |
575 | 566 |
576 { | 567 { |
577 ScopedClipboardWriter clipboard_writer(&clipboard(), | 568 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
578 CLIPBOARD_TYPE_COPY_PASTE); | |
579 clipboard_writer.WritePickledData(write_pickle1, kFormat1); | 569 clipboard_writer.WritePickledData(write_pickle1, kFormat1); |
580 // overwrite the previous pickle for fun | 570 // overwrite the previous pickle for fun |
581 clipboard_writer.WritePickledData(write_pickle2, kFormat2); | 571 clipboard_writer.WritePickledData(write_pickle2, kFormat2); |
582 } | 572 } |
583 | 573 |
584 ASSERT_TRUE(clipboard().IsFormatAvailable( | 574 ASSERT_TRUE(clipboard().IsFormatAvailable( |
585 kFormat2, CLIPBOARD_TYPE_COPY_PASTE)); | 575 kFormat2, CLIPBOARD_TYPE_COPY_PASTE)); |
586 | 576 |
587 // Check string 2. | 577 // Check string 2. |
588 std::string output2; | 578 std::string output2; |
589 clipboard().ReadData(kFormat2, &output2); | 579 clipboard().ReadData(kFormat2, &output2); |
590 ASSERT_FALSE(output2.empty()); | 580 ASSERT_FALSE(output2.empty()); |
591 | 581 |
592 Pickle read_pickle2(output2.data(), output2.size()); | 582 Pickle read_pickle2(output2.data(), output2.size()); |
593 PickleIterator iter2(read_pickle2); | 583 PickleIterator iter2(read_pickle2); |
594 std::string unpickled_string2; | 584 std::string unpickled_string2; |
595 ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2)); | 585 ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2)); |
596 EXPECT_EQ(payload2, unpickled_string2); | 586 EXPECT_EQ(payload2, unpickled_string2); |
597 | 587 |
598 { | 588 { |
599 ScopedClipboardWriter clipboard_writer(&clipboard(), | 589 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
600 CLIPBOARD_TYPE_COPY_PASTE); | |
601 clipboard_writer.WritePickledData(write_pickle2, kFormat2); | 590 clipboard_writer.WritePickledData(write_pickle2, kFormat2); |
602 // overwrite the previous pickle for fun | 591 // overwrite the previous pickle for fun |
603 clipboard_writer.WritePickledData(write_pickle1, kFormat1); | 592 clipboard_writer.WritePickledData(write_pickle1, kFormat1); |
604 } | 593 } |
605 | 594 |
606 ASSERT_TRUE(clipboard().IsFormatAvailable( | 595 ASSERT_TRUE(clipboard().IsFormatAvailable( |
607 kFormat1, CLIPBOARD_TYPE_COPY_PASTE)); | 596 kFormat1, CLIPBOARD_TYPE_COPY_PASTE)); |
608 | 597 |
609 // Check string 1. | 598 // Check string 1. |
610 std::string output1; | 599 std::string output1; |
(...skipping 11 matching lines...) Expand all Loading... |
622 TEST_F(ClipboardTest, HyperlinkTest) { | 611 TEST_F(ClipboardTest, HyperlinkTest) { |
623 const std::string kTitle("The <Example> Company's \"home page\""); | 612 const std::string kTitle("The <Example> Company's \"home page\""); |
624 const std::string kUrl("http://www.example.com?x=3<=3#\"'<>"); | 613 const std::string kUrl("http://www.example.com?x=3<=3#\"'<>"); |
625 const std::string kExpectedHtml( | 614 const std::string kExpectedHtml( |
626 "<a href=\"http://www.example.com?x=3&lt=3#"'<>\">" | 615 "<a href=\"http://www.example.com?x=3&lt=3#"'<>\">" |
627 "The <Example> Company's "home page"</a>"); | 616 "The <Example> Company's "home page"</a>"); |
628 | 617 |
629 std::string url_result; | 618 std::string url_result; |
630 base::string16 html_result; | 619 base::string16 html_result; |
631 { | 620 { |
632 ScopedClipboardWriter clipboard_writer(&clipboard(), | 621 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
633 CLIPBOARD_TYPE_COPY_PASTE); | |
634 clipboard_writer.WriteHyperlink(ASCIIToUTF16(kTitle), kUrl); | 622 clipboard_writer.WriteHyperlink(ASCIIToUTF16(kTitle), kUrl); |
635 } | 623 } |
636 | 624 |
637 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 625 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
638 CLIPBOARD_TYPE_COPY_PASTE)); | 626 CLIPBOARD_TYPE_COPY_PASTE)); |
639 uint32 ignored; | 627 uint32 ignored; |
640 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &html_result, &url_result, | 628 clipboard().ReadHTML(CLIPBOARD_TYPE_COPY_PASTE, &html_result, &url_result, |
641 &ignored, &ignored); | 629 &ignored, &ignored); |
642 EXPECT_PRED2(MarkupMatches, ASCIIToUTF16(kExpectedHtml), html_result); | 630 EXPECT_PRED2(MarkupMatches, ASCIIToUTF16(kExpectedHtml), html_result); |
643 } | 631 } |
644 #endif | 632 #endif |
645 | 633 |
646 #if defined(OS_WIN) // Windows only tests. | 634 #if defined(OS_WIN) // Windows only tests. |
647 TEST_F(ClipboardTest, WebSmartPasteTest) { | 635 TEST_F(ClipboardTest, WebSmartPasteTest) { |
648 { | 636 { |
649 ScopedClipboardWriter clipboard_writer(&clipboard(), | 637 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
650 CLIPBOARD_TYPE_COPY_PASTE); | |
651 clipboard_writer.WriteWebSmartPaste(); | 638 clipboard_writer.WriteWebSmartPaste(); |
652 } | 639 } |
653 | 640 |
654 EXPECT_TRUE(clipboard().IsFormatAvailable( | 641 EXPECT_TRUE(clipboard().IsFormatAvailable( |
655 Clipboard::GetWebKitSmartPasteFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 642 Clipboard::GetWebKitSmartPasteFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
656 } | 643 } |
657 | 644 |
658 void HtmlTestHelper(const std::string& cf_html, | 645 void HtmlTestHelper(const std::string& cf_html, |
659 const std::string& expected_html) { | 646 const std::string& expected_html) { |
660 std::string html; | 647 std::string html; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 "<p>Foo</p>\r\n" | 681 "<p>Foo</p>\r\n" |
695 "</body>\r\n" | 682 "</body>\r\n" |
696 "</html>\r\n\r\n", | 683 "</html>\r\n\r\n", |
697 "<p>Foo</p>"); | 684 "<p>Foo</p>"); |
698 } | 685 } |
699 #endif // defined(OS_WIN) | 686 #endif // defined(OS_WIN) |
700 | 687 |
701 // Test writing all formats we have simultaneously. | 688 // Test writing all formats we have simultaneously. |
702 TEST_F(ClipboardTest, WriteEverything) { | 689 TEST_F(ClipboardTest, WriteEverything) { |
703 { | 690 { |
704 ScopedClipboardWriter writer(&clipboard(), CLIPBOARD_TYPE_COPY_PASTE); | 691 ScopedClipboardWriter writer(CLIPBOARD_TYPE_COPY_PASTE); |
705 writer.WriteText(UTF8ToUTF16("foo")); | 692 writer.WriteText(UTF8ToUTF16("foo")); |
706 writer.WriteURL(UTF8ToUTF16("foo")); | 693 writer.WriteURL(UTF8ToUTF16("foo")); |
707 writer.WriteHTML(UTF8ToUTF16("foo"), "bar"); | 694 writer.WriteHTML(UTF8ToUTF16("foo"), "bar"); |
708 writer.WriteBookmark(UTF8ToUTF16("foo"), "bar"); | 695 writer.WriteBookmark(UTF8ToUTF16("foo"), "bar"); |
709 writer.WriteHyperlink(ASCIIToUTF16("foo"), "bar"); | 696 writer.WriteHyperlink(ASCIIToUTF16("foo"), "bar"); |
710 writer.WriteWebSmartPaste(); | 697 writer.WriteWebSmartPaste(); |
711 // Left out: WriteFile, WriteFiles, WriteBitmapFromPixels, WritePickledData. | 698 // Left out: WriteFile, WriteFiles, WriteBitmapFromPixels, WritePickledData. |
712 } | 699 } |
713 | 700 |
714 // Passes if we don't crash. | 701 // Passes if we don't crash. |
715 } | 702 } |
716 | 703 |
717 // TODO(dcheng): Fix this test for Android. It's rather involved, since the | 704 // TODO(dcheng): Fix this test for Android. It's rather involved, since the |
718 // clipboard change listener is posted to the Java message loop, and spinning | 705 // clipboard change listener is posted to the Java message loop, and spinning |
719 // that loop from C++ to trigger the callback in the test requires a non-trivial | 706 // that loop from C++ to trigger the callback in the test requires a non-trivial |
720 // amount of additional work. | 707 // amount of additional work. |
721 #if !defined(OS_ANDROID) | 708 #if !defined(OS_ANDROID) |
722 // Simple test that the sequence number appears to change when the clipboard is | 709 // Simple test that the sequence number appears to change when the clipboard is |
723 // written to. | 710 // written to. |
724 // TODO(dcheng): Add a version to test CLIPBOARD_TYPE_SELECTION. | 711 // TODO(dcheng): Add a version to test CLIPBOARD_TYPE_SELECTION. |
725 TEST_F(ClipboardTest, GetSequenceNumber) { | 712 TEST_F(ClipboardTest, GetSequenceNumber) { |
726 const uint64 first_sequence_number = | 713 const uint64 first_sequence_number = |
727 clipboard().GetSequenceNumber(CLIPBOARD_TYPE_COPY_PASTE); | 714 clipboard().GetSequenceNumber(CLIPBOARD_TYPE_COPY_PASTE); |
728 | 715 |
729 { | 716 { |
730 ScopedClipboardWriter writer(&clipboard(), CLIPBOARD_TYPE_COPY_PASTE); | 717 ScopedClipboardWriter writer(CLIPBOARD_TYPE_COPY_PASTE); |
731 writer.WriteText(UTF8ToUTF16("World")); | 718 writer.WriteText(UTF8ToUTF16("World")); |
732 } | 719 } |
733 | 720 |
734 // On some platforms, the sequence number is updated by a UI callback so pump | 721 // On some platforms, the sequence number is updated by a UI callback so pump |
735 // the message loop to make sure we get the notification. | 722 // the message loop to make sure we get the notification. |
736 base::RunLoop().RunUntilIdle(); | 723 base::RunLoop().RunUntilIdle(); |
737 | 724 |
738 const uint64 second_sequence_number = | 725 const uint64 second_sequence_number = |
739 clipboard().GetSequenceNumber(CLIPBOARD_TYPE_COPY_PASTE); | 726 clipboard().GetSequenceNumber(CLIPBOARD_TYPE_COPY_PASTE); |
740 | 727 |
741 EXPECT_NE(first_sequence_number, second_sequence_number); | 728 EXPECT_NE(first_sequence_number, second_sequence_number); |
742 } | 729 } |
743 #endif | 730 #endif |
744 | 731 |
745 #if defined(OS_ANDROID) | 732 #if defined(OS_ANDROID) |
746 | 733 |
747 // Test that if another application writes some text to the pasteboard the | 734 // Test that if another application writes some text to the pasteboard the |
748 // clipboard properly invalidates other types. | 735 // clipboard properly invalidates other types. |
749 TEST_F(ClipboardTest, InternalClipboardInvalidation) { | 736 TEST_F(ClipboardTest, InternalClipboardInvalidation) { |
750 // Write a Webkit smart paste tag to our clipboard. | 737 // Write a Webkit smart paste tag to our clipboard. |
751 { | 738 { |
752 ScopedClipboardWriter clipboard_writer(&clipboard(), | 739 ScopedClipboardWriter clipboard_writer(CLIPBOARD_TYPE_COPY_PASTE); |
753 CLIPBOARD_TYPE_COPY_PASTE); | |
754 clipboard_writer.WriteWebSmartPaste(); | 740 clipboard_writer.WriteWebSmartPaste(); |
755 } | 741 } |
756 EXPECT_TRUE(clipboard().IsFormatAvailable( | 742 EXPECT_TRUE(clipboard().IsFormatAvailable( |
757 Clipboard::GetWebKitSmartPasteFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 743 Clipboard::GetWebKitSmartPasteFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
758 | 744 |
759 // | 745 // |
760 // Simulate that another application copied something in the Clipboard | 746 // Simulate that another application copied something in the Clipboard |
761 // | 747 // |
762 std::string new_value("Some text copied by some other app"); | 748 std::string new_value("Some text copied by some other app"); |
763 using base::android::ConvertUTF8ToJavaString; | 749 using base::android::ConvertUTF8ToJavaString; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 EXPECT_TRUE(clipboard().IsFormatAvailable( | 791 EXPECT_TRUE(clipboard().IsFormatAvailable( |
806 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); | 792 Clipboard::GetPlainTextWFormatType(), CLIPBOARD_TYPE_COPY_PASTE)); |
807 | 793 |
808 // Make sure the text is what we inserted while simulating the other app | 794 // Make sure the text is what we inserted while simulating the other app |
809 std::string contents; | 795 std::string contents; |
810 clipboard().ReadAsciiText(CLIPBOARD_TYPE_COPY_PASTE, &contents); | 796 clipboard().ReadAsciiText(CLIPBOARD_TYPE_COPY_PASTE, &contents); |
811 EXPECT_EQ(contents, new_value); | 797 EXPECT_EQ(contents, new_value); |
812 } | 798 } |
813 #endif | 799 #endif |
814 } // namespace ui | 800 } // namespace ui |
OLD | NEW |