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

Side by Side Diff: base/clipboard_unittest.cc

Issue 9154: Rewrote the clipboard API to be more concurrent. Added a helper class to make... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month 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_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 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 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 <string> 5 #include <string>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/clipboard.h" 8 #include "base/clipboard.h"
9 #include "base/platform_test.h" 9 #include "base/platform_test.h"
10 #include "base/scoped_clipboard_writer.h"
10 #include "base/string_util.h" 11 #include "base/string_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 typedef PlatformTest ClipboardTest; 14 typedef PlatformTest ClipboardTest;
14 15
15 TEST_F(ClipboardTest, ClearTest) { 16 TEST_F(ClipboardTest, ClearTest) {
16 Clipboard clipboard; 17 Clipboard clipboard;
17 18
18 clipboard.Clear(); 19 {
19 clipboard.WriteText(L"erase me"); 20 ScopedClipboardWriter scw(&clipboard);
20 clipboard.Clear(); 21 scw.WriteText(std::wstring(L"clear me"));
21 EXPECT_EQ(false, clipboard.IsFormatAvailable( 22 }
23
24 {
25 ScopedClipboardWriter scw(&clipboard);
26 scw.WriteHTML(std::wstring(L"<b>broom</b>"), "");
27 }
28
29 EXPECT_FALSE(clipboard.IsFormatAvailable(
30 Clipboard::GetPlainTextWFormatType()));
31 EXPECT_FALSE(clipboard.IsFormatAvailable(
22 Clipboard::GetPlainTextFormatType())); 32 Clipboard::GetPlainTextFormatType()));
23 EXPECT_EQ(false, clipboard.IsFormatAvailable(
24 Clipboard::GetHtmlFormatType()));
25 } 33 }
26 34
27 TEST_F(ClipboardTest, TextTest) { 35 TEST_F(ClipboardTest, TextTest) {
28 Clipboard clipboard; 36 Clipboard clipboard;
29 37
30 std::wstring text(L"This is a wstring!#$"), text_result; 38 std::wstring text(L"This is a wstring!#$"), text_result;
31 std::string ascii_text; 39 std::string ascii_text;
32 40
33 clipboard.Clear(); 41 {
34 clipboard.WriteText(text); 42 ScopedClipboardWriter scw(&clipboard);
35 EXPECT_EQ(true, clipboard.IsFormatAvailable( 43 scw.WriteText(text);
44 }
45
46 EXPECT_TRUE(clipboard.IsFormatAvailable(
36 Clipboard::GetPlainTextWFormatType())); 47 Clipboard::GetPlainTextWFormatType()));
37 EXPECT_EQ(true, clipboard.IsFormatAvailable( 48 EXPECT_TRUE(clipboard.IsFormatAvailable(
38 Clipboard::GetPlainTextFormatType())); 49 Clipboard::GetPlainTextFormatType()));
39 clipboard.ReadText(&text_result); 50 clipboard.ReadText(&text_result);
40 EXPECT_EQ(text, text_result); 51 EXPECT_EQ(text, text_result);
41 clipboard.ReadAsciiText(&ascii_text); 52 clipboard.ReadAsciiText(&ascii_text);
42 EXPECT_EQ(WideToUTF8(text), ascii_text); 53 EXPECT_EQ(WideToUTF8(text), ascii_text);
43 } 54 }
44 55
45 TEST_F(ClipboardTest, OverwriteTest) {
46 Clipboard clipboard;
47
48 std::wstring text1(L"first string"), text2(L"second string"), text_result;
49
50 clipboard.Clear();
51 clipboard.WriteText(text1);
52 clipboard.WriteText(text2);
53
54 EXPECT_TRUE(clipboard.IsFormatAvailable(
55 Clipboard::GetPlainTextWFormatType()));
56 clipboard.ReadText(&text_result);
57 EXPECT_EQ(text2, text_result);
58 }
59
60 TEST_F(ClipboardTest, HTMLTest) { 56 TEST_F(ClipboardTest, HTMLTest) {
61 Clipboard clipboard; 57 Clipboard clipboard;
62 58
63 std::wstring markup(L"<strong>Hi!</string>"), markup_result; 59 std::wstring markup(L"<string>Hi!</string>"), markup_result;
64 std::string url("http://www.example.com/"), url_result; 60 std::string url("http://www.example.com/"), url_result;
65 61
66 clipboard.Clear(); 62 {
67 clipboard.WriteHTML(markup, url); 63 ScopedClipboardWriter scw(&clipboard);
64 scw.WriteHTML(markup, url);
65 }
66
68 EXPECT_EQ(true, clipboard.IsFormatAvailable( 67 EXPECT_EQ(true, clipboard.IsFormatAvailable(
69 Clipboard::GetHtmlFormatType())); 68 Clipboard::GetHtmlFormatType()));
70 clipboard.ReadHTML(&markup_result, &url_result); 69 clipboard.ReadHTML(&markup_result, &url_result);
71 EXPECT_EQ(markup, markup_result); 70 EXPECT_EQ(markup, markup_result);
72 #if defined(OS_WIN) 71 #if defined(OS_WIN)
73 // TODO(playmobil): It's not clear that non windows clipboards need to support 72 // TODO(playmobil): It's not clear that non windows clipboards need to support
74 // this. 73 // this.
75 EXPECT_EQ(url, url_result); 74 EXPECT_EQ(url, url_result);
76 #endif 75 #endif
77 } 76 }
78 77
79 TEST_F(ClipboardTest, TrickyHTMLTest) { 78 TEST_F(ClipboardTest, TrickyHTMLTest) {
80 Clipboard clipboard; 79 Clipboard clipboard;
81 80
82 std::wstring markup(L"<em>Bye!<!--EndFragment --></em>"), markup_result; 81 std::wstring markup(L"<em>Bye!<!--EndFragment --></em>"), markup_result;
83 std::string url, url_result; 82 std::string url, url_result;
84 83
85 clipboard.Clear(); 84 {
86 clipboard.WriteHTML(markup, url); 85 ScopedClipboardWriter scw(&clipboard);
86 scw.WriteHTML(markup, url);
87 }
88
87 EXPECT_EQ(true, clipboard.IsFormatAvailable( 89 EXPECT_EQ(true, clipboard.IsFormatAvailable(
88 Clipboard::GetHtmlFormatType())); 90 Clipboard::GetHtmlFormatType()));
89 clipboard.ReadHTML(&markup_result, &url_result); 91 clipboard.ReadHTML(&markup_result, &url_result);
90 EXPECT_EQ(markup, markup_result); 92 EXPECT_EQ(markup, markup_result);
91 #if defined(OS_WIN) 93 #if defined(OS_WIN)
92 // TODO(playmobil): It's not clear that non windows clipboards need to support 94 // TODO(playmobil): It's not clear that non windows clipboards need to support
93 // this. 95 // this.
94 EXPECT_EQ(url, url_result); 96 EXPECT_EQ(url, url_result);
95 #endif 97 #endif
96 } 98 }
97 99
98 // TODO(estade): Port the following test (decide what target we use for urls) 100 // TODO(estade): Port the following test (decide what target we use for urls)
99 #if !defined(OS_LINUX) 101 #if !defined(OS_LINUX)
100 TEST_F(ClipboardTest, BookmarkTest) { 102 TEST_F(ClipboardTest, BookmarkTest) {
101 Clipboard clipboard; 103 Clipboard clipboard;
102 104
103 std::wstring title(L"The Example Company"), title_result; 105 std::wstring title(L"The Example Company"), title_result;
104 std::string url("http://www.example.com/"), url_result; 106 std::string url("http://www.example.com/"), url_result;
105 107
106 clipboard.Clear(); 108 {
107 clipboard.WriteBookmark(title, url); 109 ScopedClipboardWriter scw(&clipboard);
110 scw.WriteBookmark(title, url);
111 }
112
108 EXPECT_EQ(true, 113 EXPECT_EQ(true,
109 clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType())); 114 clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType()));
110 clipboard.ReadBookmark(&title_result, &url_result); 115 clipboard.ReadBookmark(&title_result, &url_result);
111 EXPECT_EQ(title, title_result); 116 EXPECT_EQ(title, title_result);
112 EXPECT_EQ(url, url_result); 117 EXPECT_EQ(url, url_result);
113 } 118 }
114 #endif 119 #endif
115 120
116 TEST_F(ClipboardTest, MultiFormatTest) { 121 TEST_F(ClipboardTest, MultiFormatTest) {
117 Clipboard clipboard; 122 Clipboard clipboard;
118 123
119 std::wstring text(L"Hi!"), text_result; 124 std::wstring text(L"Hi!"), text_result;
120 std::wstring markup(L"<strong>Hi!</string>"), markup_result; 125 std::wstring markup(L"<strong>Hi!</string>"), markup_result;
121 std::string url("http://www.example.com/"), url_result; 126 std::string url("http://www.example.com/"), url_result;
122 std::string ascii_text; 127 std::string ascii_text;
123 128
124 clipboard.Clear(); 129 {
125 clipboard.WriteHTML(markup, url); 130 ScopedClipboardWriter scw(&clipboard);
126 clipboard.WriteText(text); 131 scw.WriteHTML(markup, url);
132 scw.WriteText(text);
133 }
134
127 EXPECT_EQ(true, 135 EXPECT_EQ(true,
128 clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType())); 136 clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType()));
129 EXPECT_EQ(true, clipboard.IsFormatAvailable( 137 EXPECT_EQ(true, clipboard.IsFormatAvailable(
130 Clipboard::GetPlainTextWFormatType())); 138 Clipboard::GetPlainTextWFormatType()));
131 EXPECT_EQ(true, clipboard.IsFormatAvailable( 139 EXPECT_EQ(true, clipboard.IsFormatAvailable(
132 Clipboard::GetPlainTextFormatType())); 140 Clipboard::GetPlainTextFormatType()));
133 clipboard.ReadHTML(&markup_result, &url_result); 141 clipboard.ReadHTML(&markup_result, &url_result);
134 EXPECT_EQ(markup, markup_result); 142 EXPECT_EQ(markup, markup_result);
135 #if defined(OS_WIN) 143 #if defined(OS_WIN)
136 // TODO(playmobil): It's not clear that non windows clipboards need to support 144 // TODO(playmobil): It's not clear that non windows clipboards need to support
137 // this. 145 // this.
138 EXPECT_EQ(url, url_result); 146 EXPECT_EQ(url, url_result);
139 #endif 147 #endif
140 clipboard.ReadText(&text_result); 148 clipboard.ReadText(&text_result);
141 EXPECT_EQ(text, text_result); 149 EXPECT_EQ(text, text_result);
142 clipboard.ReadAsciiText(&ascii_text); 150 clipboard.ReadAsciiText(&ascii_text);
143 EXPECT_EQ(WideToUTF8(text), ascii_text); 151 EXPECT_EQ(WideToUTF8(text), ascii_text);
144 } 152 }
145 153
146 // TODO(estade): Port the following tests (decide what targets we use for files) 154 // TODO(estade): Port the following tests (decide what targets we use for files)
147 #if !defined(OS_LINUX) 155 #if !defined(OS_LINUX)
148 // Files for this test don't actually need to exist on the file system, just 156 // Files for this test don't actually need to exist on the file system, just
149 // don't try to use a non-existent file you've retrieved from the clipboard. 157 // don't try to use a non-existent file you've retrieved from the clipboard.
150 TEST_F(ClipboardTest, FileTest) { 158 TEST_F(ClipboardTest, FileTest) {
151 Clipboard clipboard; 159 Clipboard clipboard;
152 clipboard.Clear();
153 #if defined(OS_WIN) 160 #if defined(OS_WIN)
154 std::wstring file = L"C:\\Downloads\\My Downloads\\A Special File.txt"; 161 std::wstring file = L"C:\\Downloads\\My Downloads\\A Special File.txt";
155 #else 162 #else
156 // OS X will print a warning message if we stick a non-existant file on the 163 // OS X will print a warning message if we stick a non-existant file on the
157 // clipboard. 164 // clipboard.
158 std::wstring file = L"/usr/bin/make"; 165 std::wstring file = L"/usr/bin/make";
159 #endif 166 #endif
160 clipboard.WriteFile(file); 167
168 {
169 ScopedClipboardWriter scw(&clipboard);
170 scw.WriteFile(file);
171 }
172
161 std::wstring out_file; 173 std::wstring out_file;
162 clipboard.ReadFile(&out_file); 174 clipboard.ReadFile(&out_file);
163 EXPECT_EQ(file, out_file); 175 EXPECT_EQ(file, out_file);
164 } 176 }
165 177
166 TEST_F(ClipboardTest, MultipleFilesTest) { 178 TEST_F(ClipboardTest, MultipleFilesTest) {
167 Clipboard clipboard; 179 Clipboard clipboard;
168 clipboard.Clear(); 180
169
170 #if defined(OS_WIN) 181 #if defined(OS_WIN)
171 std::wstring file1 = L"C:\\Downloads\\My Downloads\\File 1.exe"; 182 std::wstring file1 = L"C:\\Downloads\\My Downloads\\File 1.exe";
172 std::wstring file2 = L"C:\\Downloads\\My Downloads\\File 2.pdf"; 183 std::wstring file2 = L"C:\\Downloads\\My Downloads\\File 2.pdf";
173 std::wstring file3 = L"C:\\Downloads\\My Downloads\\File 3.doc"; 184 std::wstring file3 = L"C:\\Downloads\\My Downloads\\File 3.doc";
174 #elif defined(OS_MACOSX) 185 #elif defined(OS_MACOSX)
175 // OS X will print a warning message if we stick a non-existant file on the 186 // OS X will print a warning message if we stick a non-existant file on the
176 // clipboard. 187 // clipboard.
177 std::wstring file1 = L"/usr/bin/make"; 188 std::wstring file1 = L"/usr/bin/make";
178 std::wstring file2 = L"/usr/bin/man"; 189 std::wstring file2 = L"/usr/bin/man";
179 std::wstring file3 = L"/usr/bin/perl"; 190 std::wstring file3 = L"/usr/bin/perl";
180 #endif 191 #endif
181 std::vector<std::wstring> files; 192 std::vector<std::wstring> files;
182 files.push_back(file1); 193 files.push_back(file1);
183 files.push_back(file2); 194 files.push_back(file2);
184 files.push_back(file3); 195 files.push_back(file3);
185 clipboard.WriteFiles(files); 196
197 {
198 ScopedClipboardWriter scw(&clipboard);
199 scw.WriteFiles(files);
200 }
186 201
187 std::vector<std::wstring> out_files; 202 std::vector<std::wstring> out_files;
188 clipboard.ReadFiles(&out_files); 203 clipboard.ReadFiles(&out_files);
189 204
190 EXPECT_EQ(files.size(), out_files.size()); 205 EXPECT_EQ(files.size(), out_files.size());
191 for (size_t i = 0; i < out_files.size(); ++i) 206 for (size_t i = 0; i < out_files.size(); ++i)
192 EXPECT_EQ(files[i], out_files[i]); 207 EXPECT_EQ(files[i], out_files[i]);
193 } 208 }
194 #endif // !defined(OS_LINUX) 209 #endif // !defined(OS_LINUX)
195 210
196 #if defined(OS_WIN) // Windows only tests. 211 #if defined(OS_WIN) // Windows only tests.
197 TEST_F(ClipboardTest, HyperlinkTest) { 212 TEST_F(ClipboardTest, HyperlinkTest) {
198 Clipboard clipboard; 213 Clipboard clipboard;
199 214
200 std::wstring title(L"The Example Company"), title_result; 215 std::wstring title(L"The Example Company"), title_result;
201 std::string url("http://www.example.com/"), url_result; 216 std::string url("http://www.example.com/"), url_result;
202 std::wstring html(L"<a href=\"http://www.example.com/\">" 217 std::wstring html(L"<a href=\"http://www.example.com/\">"
203 L"The Example Company</a>"), html_result; 218 L"The Example Company</a>"), html_result;
204 219
205 clipboard.Clear(); 220 {
206 clipboard.WriteHyperlink(title, url); 221 ScopedClipboardWriter scw(&clipboard);
222 scw.WriteHyperlink(title, url);
223 }
224
207 EXPECT_EQ(true, 225 EXPECT_EQ(true,
208 clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType())); 226 clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType()));
209 EXPECT_EQ(true, 227 EXPECT_EQ(true,
210 clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType())); 228 clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType()));
211 clipboard.ReadBookmark(&title_result, &url_result); 229 clipboard.ReadBookmark(&title_result, &url_result);
212 EXPECT_EQ(title, title_result); 230 EXPECT_EQ(title, title_result);
213 EXPECT_EQ(url, url_result); 231 EXPECT_EQ(url, url_result);
214 clipboard.ReadHTML(&html_result, &url_result); 232 clipboard.ReadHTML(&html_result, &url_result);
215 EXPECT_EQ(html, html_result); 233 EXPECT_EQ(html, html_result);
216 //XXX EXPECT_FALSE(url_result.is_valid()); 234 //XXX EXPECT_FALSE(url_result.is_valid());
217 } 235 }
218 236
219 TEST_F(ClipboardTest, WebSmartPasteTest) { 237 TEST_F(ClipboardTest, WebSmartPasteTest) {
220 Clipboard clipboard; 238 Clipboard clipboard;
221 239
222 clipboard.Clear(); 240 {
223 clipboard.WriteWebSmartPaste(); 241 ScopedClipboardWriter scw(&clipboard);
242 scw.WriteWebSmartPaste();
243 }
244
224 EXPECT_EQ(true, clipboard.IsFormatAvailable( 245 EXPECT_EQ(true, clipboard.IsFormatAvailable(
225 Clipboard::GetWebKitSmartPasteFormatType())); 246 Clipboard::GetWebKitSmartPasteFormatType()));
226 } 247 }
227 248
228 TEST_F(ClipboardTest, BitmapTest) { 249 TEST_F(ClipboardTest, BitmapTest) {
229 unsigned int fake_bitmap[] = { 250 unsigned int fake_bitmap[] = {
230 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, 251 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
231 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, 252 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
232 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, 253 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
233 }; 254 };
234 255
235 Clipboard clipboard; 256 Clipboard clipboard;
236 257
237 clipboard.Clear(); 258 {
238 clipboard.WriteBitmap(fake_bitmap, gfx::Size(3, 4)); 259 ScopedClipboardWriter scw(&clipboard);
260 scw.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4));
261 }
262
239 EXPECT_EQ(true, clipboard.IsFormatAvailable( 263 EXPECT_EQ(true, clipboard.IsFormatAvailable(
240 Clipboard::GetBitmapFormatType())); 264 Clipboard::GetBitmapFormatType()));
241 } 265 }
242 #endif 266 #endif
OLDNEW
« no previous file with comments | « base/clipboard_mac.mm ('k') | base/clipboard_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698