Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(458)

Side by Side Diff: base/clipboard_unittest.cc

Issue 260003: Move the clipboard stuff out of base and into app/clipboard. I renamed... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/clipboard_mac.mm ('k') | base/clipboard_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2006-2008 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
5 #include <string>
6
7 #include "base/basictypes.h"
8 #include "base/clipboard.h"
9 #include "base/gfx/size.h"
10 #include "base/message_loop.h"
11 #include "base/pickle.h"
12 #include "base/scoped_clipboard_writer.h"
13 #include "base/string_util.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "testing/platform_test.h"
16
17 #if defined(OS_WIN)
18 class ClipboardTest : public PlatformTest {
19 protected:
20 virtual void SetUp() {
21 message_loop_.reset(new MessageLoopForUI());
22 }
23 virtual void TearDown() {
24 }
25
26 private:
27 scoped_ptr<MessageLoop> message_loop_;
28 };
29 #elif defined(OS_POSIX)
30 typedef PlatformTest ClipboardTest;
31 #endif // defined(OS_WIN)
32
33 TEST_F(ClipboardTest, ClearTest) {
34 Clipboard clipboard;
35
36 {
37 ScopedClipboardWriter clipboard_writer(&clipboard);
38 clipboard_writer.WriteText(ASCIIToUTF16("clear me"));
39 }
40
41 {
42 ScopedClipboardWriter clipboard_writer(&clipboard);
43 clipboard_writer.WriteHTML(ASCIIToUTF16("<b>broom</b>"), "");
44 }
45
46 EXPECT_FALSE(clipboard.IsFormatAvailable(
47 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
48 EXPECT_FALSE(clipboard.IsFormatAvailable(
49 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD));
50 }
51
52 TEST_F(ClipboardTest, TextTest) {
53 Clipboard clipboard;
54
55 string16 text(ASCIIToUTF16("This is a string16!#$")), text_result;
56 std::string ascii_text;
57
58 {
59 ScopedClipboardWriter clipboard_writer(&clipboard);
60 clipboard_writer.WriteText(text);
61 }
62
63 EXPECT_TRUE(clipboard.IsFormatAvailable(
64 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
65 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(),
66 Clipboard::BUFFER_STANDARD));
67 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result);
68
69 EXPECT_EQ(text, text_result);
70 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text);
71 EXPECT_EQ(UTF16ToUTF8(text), ascii_text);
72 }
73
74 TEST_F(ClipboardTest, HTMLTest) {
75 Clipboard clipboard;
76
77 string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result;
78 std::string url("http://www.example.com/"), url_result;
79
80 {
81 ScopedClipboardWriter clipboard_writer(&clipboard);
82 clipboard_writer.WriteHTML(markup, url);
83 }
84
85 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(),
86 Clipboard::BUFFER_STANDARD));
87 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result);
88 EXPECT_EQ(markup, markup_result);
89 #if defined(OS_WIN)
90 // TODO(playmobil): It's not clear that non windows clipboards need to support
91 // this.
92 EXPECT_EQ(url, url_result);
93 #endif // defined(OS_WIN)
94 }
95
96 TEST_F(ClipboardTest, TrickyHTMLTest) {
97 Clipboard clipboard;
98
99 string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")),
100 markup_result;
101 std::string url, url_result;
102
103 {
104 ScopedClipboardWriter clipboard_writer(&clipboard);
105 clipboard_writer.WriteHTML(markup, url);
106 }
107
108 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(),
109 Clipboard::BUFFER_STANDARD));
110 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result);
111 EXPECT_EQ(markup, markup_result);
112 #if defined(OS_WIN)
113 // TODO(playmobil): It's not clear that non windows clipboards need to support
114 // this.
115 EXPECT_EQ(url, url_result);
116 #endif // defined(OS_WIN)
117 }
118
119 // TODO(estade): Port the following test (decide what target we use for urls)
120 #if !defined(OS_LINUX)
121 TEST_F(ClipboardTest, BookmarkTest) {
122 Clipboard clipboard;
123
124 string16 title(ASCIIToUTF16("The Example Company")), title_result;
125 std::string url("http://www.example.com/"), url_result;
126
127 {
128 ScopedClipboardWriter clipboard_writer(&clipboard);
129 clipboard_writer.WriteBookmark(title, url);
130 }
131
132 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType(),
133 Clipboard::BUFFER_STANDARD));
134 clipboard.ReadBookmark(&title_result, &url_result);
135 EXPECT_EQ(title, title_result);
136 EXPECT_EQ(url, url_result);
137 }
138 #endif // defined(OS_WIN)
139
140 TEST_F(ClipboardTest, MultiFormatTest) {
141 Clipboard clipboard;
142
143 string16 text(ASCIIToUTF16("Hi!")), text_result;
144 string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result;
145 std::string url("http://www.example.com/"), url_result;
146 std::string ascii_text;
147
148 {
149 ScopedClipboardWriter clipboard_writer(&clipboard);
150 clipboard_writer.WriteHTML(markup, url);
151 clipboard_writer.WriteText(text);
152 }
153
154 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(),
155 Clipboard::BUFFER_STANDARD));
156 EXPECT_TRUE(clipboard.IsFormatAvailable(
157 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
158 EXPECT_TRUE(clipboard.IsFormatAvailable(
159 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD));
160 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result);
161 EXPECT_EQ(markup, markup_result);
162 #if defined(OS_WIN)
163 // TODO(playmobil): It's not clear that non windows clipboards need to support
164 // this.
165 EXPECT_EQ(url, url_result);
166 #endif // defined(OS_WIN)
167 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result);
168 EXPECT_EQ(text, text_result);
169 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text);
170 EXPECT_EQ(UTF16ToUTF8(text), ascii_text);
171 }
172
173 // TODO(estade): Port the following tests (decide what targets we use for files)
174 #if !defined(OS_LINUX)
175 // Files for this test don't actually need to exist on the file system, just
176 // don't try to use a non-existent file you've retrieved from the clipboard.
177 TEST_F(ClipboardTest, FileTest) {
178 Clipboard clipboard;
179 #if defined(OS_WIN)
180 FilePath file(L"C:\\Downloads\\My Downloads\\A Special File.txt");
181 #elif defined(OS_MACOSX)
182 // OS X will print a warning message if we stick a non-existant file on the
183 // clipboard.
184 FilePath file("/usr/bin/make");
185 #endif // defined(OS_MACOSX)
186
187 {
188 ScopedClipboardWriter clipboard_writer(&clipboard);
189 clipboard_writer.WriteFile(file);
190 }
191
192 FilePath out_file;
193 clipboard.ReadFile(&out_file);
194 EXPECT_EQ(file.value(), out_file.value());
195 }
196
197 TEST_F(ClipboardTest, MultipleFilesTest) {
198 Clipboard clipboard;
199
200 #if defined(OS_WIN)
201 FilePath file1(L"C:\\Downloads\\My Downloads\\File 1.exe");
202 FilePath file2(L"C:\\Downloads\\My Downloads\\File 2.pdf");
203 FilePath file3(L"C:\\Downloads\\My Downloads\\File 3.doc");
204 #elif defined(OS_MACOSX)
205 // OS X will print a warning message if we stick a non-existant file on the
206 // clipboard.
207 FilePath file1("/usr/bin/make");
208 FilePath file2("/usr/bin/man");
209 FilePath file3("/usr/bin/perl");
210 #endif // defined(OS_MACOSX)
211 std::vector<FilePath> files;
212 files.push_back(file1);
213 files.push_back(file2);
214 files.push_back(file3);
215
216 {
217 ScopedClipboardWriter clipboard_writer(&clipboard);
218 clipboard_writer.WriteFiles(files);
219 }
220
221 std::vector<FilePath> out_files;
222 clipboard.ReadFiles(&out_files);
223
224 EXPECT_EQ(files.size(), out_files.size());
225 for (size_t i = 0; i < out_files.size(); ++i)
226 EXPECT_EQ(files[i].value(), out_files[i].value());
227 }
228 #endif // !defined(OS_LINUX)
229
230 TEST_F(ClipboardTest, URLTest) {
231 Clipboard clipboard;
232
233 string16 url(ASCIIToUTF16("http://www.google.com/"));
234
235 {
236 ScopedClipboardWriter clipboard_writer(&clipboard);
237 clipboard_writer.WriteURL(url);
238 }
239
240 EXPECT_TRUE(clipboard.IsFormatAvailable(
241 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
242 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(),
243 Clipboard::BUFFER_STANDARD));
244 string16 text_result;
245 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result);
246
247 EXPECT_EQ(text_result, url);
248
249 std::string ascii_text;
250 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text);
251 EXPECT_EQ(UTF16ToUTF8(url), ascii_text);
252
253 #if defined(OS_LINUX)
254 ascii_text.clear();
255 clipboard.ReadAsciiText(Clipboard::BUFFER_SELECTION, &ascii_text);
256 EXPECT_EQ(UTF16ToUTF8(url), ascii_text);
257 #endif // defined(OS_LINUX)
258 }
259
260 #if defined(OS_WIN) || defined(OS_LINUX)
261 TEST_F(ClipboardTest, DataTest) {
262 Clipboard clipboard;
263 const char* format = "chromium/x-test-format";
264 std::string payload("test string");
265 Pickle write_pickle;
266 write_pickle.WriteString(payload);
267
268 {
269 ScopedClipboardWriter clipboard_writer(&clipboard);
270 clipboard_writer.WritePickledData(write_pickle, format);
271 }
272
273 ASSERT_TRUE(clipboard.IsFormatAvailableByString(
274 format, Clipboard::BUFFER_STANDARD));
275 std::string output;
276 clipboard.ReadData(format, &output);
277 ASSERT_FALSE(output.empty());
278
279 Pickle read_pickle(output.data(), output.size());
280 void* iter = NULL;
281 std::string unpickled_string;
282 ASSERT_TRUE(read_pickle.ReadString(&iter, &unpickled_string));
283 EXPECT_EQ(payload, unpickled_string);
284 }
285 #endif
286
287 #if defined(OS_WIN) // Windows only tests.
288 TEST_F(ClipboardTest, HyperlinkTest) {
289 Clipboard clipboard;
290
291 std::string title("The Example Company");
292 std::string url("http://www.example.com/"), url_result;
293 std::string html("<a href=\"http://www.example.com/\">"
294 "The Example Company</a>");
295 string16 html_result;
296
297 {
298 ScopedClipboardWriter clipboard_writer(&clipboard);
299 clipboard_writer.WriteHyperlink(title, url);
300 }
301
302 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(),
303 Clipboard::BUFFER_STANDARD));
304 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &html_result, &url_result);
305 EXPECT_EQ(UTF8ToUTF16(html), html_result);
306 }
307
308 TEST_F(ClipboardTest, WebSmartPasteTest) {
309 Clipboard clipboard;
310
311 {
312 ScopedClipboardWriter clipboard_writer(&clipboard);
313 clipboard_writer.WriteWebSmartPaste();
314 }
315
316 EXPECT_TRUE(clipboard.IsFormatAvailable(
317 Clipboard::GetWebKitSmartPasteFormatType(), Clipboard::BUFFER_STANDARD));
318 }
319
320 TEST_F(ClipboardTest, BitmapTest) {
321 unsigned int fake_bitmap[] = {
322 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
323 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
324 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
325 };
326
327 Clipboard clipboard;
328
329 {
330 ScopedClipboardWriter clipboard_writer(&clipboard);
331 clipboard_writer.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4));
332 }
333
334 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(),
335 Clipboard::BUFFER_STANDARD));
336 }
337 #endif // defined(OS_WIN)
OLDNEW
« no previous file with comments | « base/clipboard_mac.mm ('k') | base/clipboard_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698