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

Side by Side Diff: ui/base/clipboard/clipboard_unittest.cc

Issue 10911074: Change how ui::Clipboard is accessed so there's only one per thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch cleanup Created 8 years, 3 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
OLDNEW
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"
11 #include "base/message_loop.h"
11 #include "base/pickle.h" 12 #include "base/pickle.h"
12 #include "base/string_util.h" 13 #include "base/string_util.h"
13 #include "base/utf_string_conversions.h" 14 #include "base/utf_string_conversions.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "testing/platform_test.h" 16 #include "testing/platform_test.h"
16 #include "third_party/skia/include/core/SkBitmap.h" 17 #include "third_party/skia/include/core/SkBitmap.h"
17 #include "ui/base/clipboard/clipboard.h" 18 #include "ui/base/clipboard/clipboard.h"
18 #include "ui/base/clipboard/scoped_clipboard_writer.h" 19 #include "ui/base/clipboard/scoped_clipboard_writer.h"
19 #include "ui/gfx/size.h" 20 #include "ui/gfx/size.h"
20 21
21 #if defined(OS_WIN) 22 #if defined(OS_WIN)
22 #include "base/message_loop.h"
23 #include "ui/base/clipboard/clipboard_util_win.h" 23 #include "ui/base/clipboard/clipboard_util_win.h"
24 #endif 24 #endif
25 25
26 #if defined(OS_ANDROID) 26 #if defined(OS_ANDROID)
27 #include "base/android/jni_android.h" 27 #include "base/android/jni_android.h"
28 #endif 28 #endif
29 29
30 namespace ui { 30 namespace ui {
31 31
32 #if defined(OS_WIN)
33 class ClipboardTest : public PlatformTest { 32 class ClipboardTest : public PlatformTest {
34 protected: 33 protected:
35 virtual void SetUp() { 34 virtual void SetUp() {
36 message_loop_.reset(new MessageLoopForUI()); 35 message_loop_.reset(new MessageLoopForUI());
37 } 36 }
38 virtual void TearDown() { 37 virtual void TearDown() {
39 } 38 }
40 39
40 Clipboard& clipboard() { return clipboard_; }
41
41 private: 42 private:
42 scoped_ptr<MessageLoop> message_loop_; 43 scoped_ptr<MessageLoop> message_loop_;
44 Clipboard clipboard_;
43 }; 45 };
44 #elif defined(OS_POSIX)
45 typedef PlatformTest ClipboardTest;
46 #endif // defined(OS_WIN)
47 46
48 namespace { 47 namespace {
49 48
50 bool MarkupMatches(const string16& expected_markup, 49 bool MarkupMatches(const string16& expected_markup,
51 const string16& actual_markup) { 50 const string16& actual_markup) {
52 return actual_markup.find(expected_markup) != string16::npos; 51 return actual_markup.find(expected_markup) != string16::npos;
53 } 52 }
54 53
55 } // namespace 54 } // namespace
56 55
57 TEST_F(ClipboardTest, ClearTest) { 56 TEST_F(ClipboardTest, ClearTest) {
58 Clipboard clipboard;
59
60 { 57 {
61 ScopedClipboardWriter clipboard_writer(&clipboard, 58 ScopedClipboardWriter clipboard_writer(&clipboard(),
62 Clipboard::BUFFER_STANDARD); 59 Clipboard::BUFFER_STANDARD);
63 clipboard_writer.WriteText(ASCIIToUTF16("clear me")); 60 clipboard_writer.WriteText(ASCIIToUTF16("clear me"));
64 } 61 }
65 62
66 clipboard.Clear(Clipboard::BUFFER_STANDARD); 63 clipboard().Clear(Clipboard::BUFFER_STANDARD);
67 64
68 EXPECT_FALSE(clipboard.IsFormatAvailable( 65 EXPECT_FALSE(clipboard().IsFormatAvailable(
69 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); 66 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
70 EXPECT_FALSE(clipboard.IsFormatAvailable( 67 EXPECT_FALSE(clipboard().IsFormatAvailable(
71 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD)); 68 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD));
72 } 69 }
73 70
74 TEST_F(ClipboardTest, TextTest) { 71 TEST_F(ClipboardTest, TextTest) {
75 Clipboard clipboard;
76
77 string16 text(ASCIIToUTF16("This is a string16!#$")), text_result; 72 string16 text(ASCIIToUTF16("This is a string16!#$")), text_result;
78 std::string ascii_text; 73 std::string ascii_text;
79 74
80 { 75 {
81 ScopedClipboardWriter clipboard_writer(&clipboard, 76 ScopedClipboardWriter clipboard_writer(&clipboard(),
82 Clipboard::BUFFER_STANDARD); 77 Clipboard::BUFFER_STANDARD);
83 clipboard_writer.WriteText(text); 78 clipboard_writer.WriteText(text);
84 } 79 }
85 80
86 EXPECT_TRUE(clipboard.IsFormatAvailable( 81 EXPECT_TRUE(clipboard().IsFormatAvailable(
87 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); 82 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
88 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), 83 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(),
89 Clipboard::BUFFER_STANDARD)); 84 Clipboard::BUFFER_STANDARD));
90 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); 85 clipboard().ReadText(Clipboard::BUFFER_STANDARD, &text_result);
91 86
92 EXPECT_EQ(text, text_result); 87 EXPECT_EQ(text, text_result);
93 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); 88 clipboard().ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text);
94 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); 89 EXPECT_EQ(UTF16ToUTF8(text), ascii_text);
95 } 90 }
96 91
97 TEST_F(ClipboardTest, HTMLTest) { 92 TEST_F(ClipboardTest, HTMLTest) {
98 Clipboard clipboard;
99
100 string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result; 93 string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result;
101 std::string url("http://www.example.com/"), url_result; 94 std::string url("http://www.example.com/"), url_result;
102 95
103 { 96 {
104 ScopedClipboardWriter clipboard_writer(&clipboard, 97 ScopedClipboardWriter clipboard_writer(&clipboard(),
105 Clipboard::BUFFER_STANDARD); 98 Clipboard::BUFFER_STANDARD);
106 clipboard_writer.WriteHTML(markup, url); 99 clipboard_writer.WriteHTML(markup, url);
107 } 100 }
108 101
109 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 102 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
110 Clipboard::BUFFER_STANDARD)); 103 Clipboard::BUFFER_STANDARD));
111 uint32 ignored; 104 uint32 ignored;
112 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, 105 clipboard().ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result,
113 &ignored, &ignored); 106 &ignored, &ignored);
114 EXPECT_PRED2(MarkupMatches, markup, markup_result); 107 EXPECT_PRED2(MarkupMatches, markup, markup_result);
115 #if defined(OS_WIN) 108 #if defined(OS_WIN)
116 // TODO(playmobil): It's not clear that non windows clipboards need to support 109 // TODO(playmobil): It's not clear that non windows clipboards need to support
117 // this. 110 // this.
118 EXPECT_EQ(url, url_result); 111 EXPECT_EQ(url, url_result);
119 #endif // defined(OS_WIN) 112 #endif // defined(OS_WIN)
120 } 113 }
121 114
122 TEST_F(ClipboardTest, RTFTest) { 115 TEST_F(ClipboardTest, RTFTest) {
123 Clipboard clipboard;
124
125 std::string rtf = 116 std::string rtf =
126 "{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\n" 117 "{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\n"
127 "This is some {\\b bold} text.\\par\n" 118 "This is some {\\b bold} text.\\par\n"
128 "}"; 119 "}";
129 120
130 { 121 {
131 ScopedClipboardWriter clipboard_writer(&clipboard, 122 ScopedClipboardWriter clipboard_writer(&clipboard(),
132 Clipboard::BUFFER_STANDARD); 123 Clipboard::BUFFER_STANDARD);
133 clipboard_writer.WriteRTF(rtf); 124 clipboard_writer.WriteRTF(rtf);
134 } 125 }
135 126
136 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetRtfFormatType(), 127 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetRtfFormatType(),
137 Clipboard::BUFFER_STANDARD)); 128 Clipboard::BUFFER_STANDARD));
138 std::string result; 129 std::string result;
139 clipboard.ReadRTF(Clipboard::BUFFER_STANDARD, &result); 130 clipboard().ReadRTF(Clipboard::BUFFER_STANDARD, &result);
140 EXPECT_EQ(rtf, result); 131 EXPECT_EQ(rtf, result);
141 } 132 }
142 133
143 #if defined(TOOLKIT_GTK) 134 #if defined(TOOLKIT_GTK)
144 TEST_F(ClipboardTest, MultipleBufferTest) { 135 TEST_F(ClipboardTest, MultipleBufferTest) {
145 Clipboard clipboard;
146
147 string16 text(ASCIIToUTF16("Standard")), text_result; 136 string16 text(ASCIIToUTF16("Standard")), text_result;
148 string16 markup(ASCIIToUTF16("<string>Selection</string>")), markup_result; 137 string16 markup(ASCIIToUTF16("<string>Selection</string>")), markup_result;
149 std::string url("http://www.example.com/"), url_result; 138 std::string url("http://www.example.com/"), url_result;
150 139
151 { 140 {
152 ScopedClipboardWriter clipboard_writer(&clipboard, 141 ScopedClipboardWriter clipboard_writer(&clipboard(),
153 Clipboard::BUFFER_STANDARD); 142 Clipboard::BUFFER_STANDARD);
154 clipboard_writer.WriteText(text); 143 clipboard_writer.WriteText(text);
155 } 144 }
156 145
157 { 146 {
158 ScopedClipboardWriter clipboard_writer(&clipboard, 147 ScopedClipboardWriter clipboard_writer(&clipboard(),
159 Clipboard::BUFFER_SELECTION); 148 Clipboard::BUFFER_SELECTION);
160 clipboard_writer.WriteHTML(markup, url); 149 clipboard_writer.WriteHTML(markup, url);
161 } 150 }
162 151
163 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), 152 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(),
164 Clipboard::BUFFER_STANDARD)); 153 Clipboard::BUFFER_STANDARD));
165 EXPECT_FALSE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), 154 EXPECT_FALSE(clipboard().IsFormatAvailable(
166 Clipboard::BUFFER_SELECTION)); 155 Clipboard::GetPlainTextFormatType(),
156 Clipboard::BUFFER_SELECTION));
167 157
168 EXPECT_FALSE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 158 EXPECT_FALSE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
169 Clipboard::BUFFER_STANDARD)); 159 Clipboard::BUFFER_STANDARD));
170 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 160 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
171 Clipboard::BUFFER_SELECTION)); 161 Clipboard::BUFFER_SELECTION));
172 162
173 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); 163 clipboard().ReadText(Clipboard::BUFFER_STANDARD, &text_result);
174 EXPECT_EQ(text, text_result); 164 EXPECT_EQ(text, text_result);
175 165
176 uint32 ignored; 166 uint32 ignored;
177 clipboard.ReadHTML(Clipboard::BUFFER_SELECTION, &markup_result, &url_result, 167 clipboard().ReadHTML(Clipboard::BUFFER_SELECTION, &markup_result, &url_result,
178 &ignored, &ignored); 168 &ignored, &ignored);
179 EXPECT_PRED2(MarkupMatches, markup, markup_result); 169 EXPECT_PRED2(MarkupMatches, markup, markup_result);
180 } 170 }
181 #endif 171 #endif
182 172
183 TEST_F(ClipboardTest, TrickyHTMLTest) { 173 TEST_F(ClipboardTest, TrickyHTMLTest) {
184 Clipboard clipboard;
185
186 string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")), 174 string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")),
187 markup_result; 175 markup_result;
188 std::string url, url_result; 176 std::string url, url_result;
189 177
190 { 178 {
191 ScopedClipboardWriter clipboard_writer(&clipboard, 179 ScopedClipboardWriter clipboard_writer(&clipboard(),
192 Clipboard::BUFFER_STANDARD); 180 Clipboard::BUFFER_STANDARD);
193 clipboard_writer.WriteHTML(markup, url); 181 clipboard_writer.WriteHTML(markup, url);
194 } 182 }
195 183
196 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 184 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
197 Clipboard::BUFFER_STANDARD)); 185 Clipboard::BUFFER_STANDARD));
198 uint32 ignored; 186 uint32 ignored;
199 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, 187 clipboard().ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result,
200 &ignored, &ignored); 188 &ignored, &ignored);
201 EXPECT_PRED2(MarkupMatches, markup, markup_result); 189 EXPECT_PRED2(MarkupMatches, markup, markup_result);
202 #if defined(OS_WIN) 190 #if defined(OS_WIN)
203 // TODO(playmobil): It's not clear that non windows clipboards need to support 191 // TODO(playmobil): It's not clear that non windows clipboards need to support
204 // this. 192 // this.
205 EXPECT_EQ(url, url_result); 193 EXPECT_EQ(url, url_result);
206 #endif // defined(OS_WIN) 194 #endif // defined(OS_WIN)
207 } 195 }
208 196
209 #if defined(OS_WIN) 197 #if defined(OS_WIN)
210 TEST_F(ClipboardTest, UniodeHTMLTest) { 198 TEST_F(ClipboardTest, UniodeHTMLTest) {
211 Clipboard clipboard;
212
213 string16 markup(UTF8ToUTF16("<div>A \xc3\xb8 \xe6\xb0\xb4</div>")), 199 string16 markup(UTF8ToUTF16("<div>A \xc3\xb8 \xe6\xb0\xb4</div>")),
214 markup_result; 200 markup_result;
215 std::string url, url_result; 201 std::string url, url_result;
216 202
217 { 203 {
218 ScopedClipboardWriter clipboard_writer(&clipboard, 204 ScopedClipboardWriter clipboard_writer(&clipboard(),
219 Clipboard::BUFFER_STANDARD); 205 Clipboard::BUFFER_STANDARD);
220 clipboard_writer.WriteHTML(markup, url); 206 clipboard_writer.WriteHTML(markup, url);
221 } 207 }
222 208
223 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 209 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
224 Clipboard::BUFFER_STANDARD)); 210 Clipboard::BUFFER_STANDARD));
225 uint32 fragment_start; 211 uint32 fragment_start;
226 uint32 fragment_end; 212 uint32 fragment_end;
227 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, 213 clipboard().ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result,
228 &fragment_start, &fragment_end); 214 &fragment_start, &fragment_end);
229 EXPECT_PRED2(MarkupMatches, markup, markup_result); 215 EXPECT_PRED2(MarkupMatches, markup, markup_result);
230 EXPECT_EQ(url, url_result); 216 EXPECT_EQ(url, url_result);
231 // Make sure that fragment indices were adjusted when converting. 217 // Make sure that fragment indices were adjusted when converting.
232 EXPECT_EQ(36, fragment_start); 218 EXPECT_EQ(36, fragment_start);
233 EXPECT_EQ(52, fragment_end); 219 EXPECT_EQ(52, fragment_end);
234 } 220 }
235 #endif // defined(OS_WIN) 221 #endif // defined(OS_WIN)
236 222
237 #if defined(TOOLKIT_GTK) 223 #if defined(TOOLKIT_GTK)
238 // Regression test for crbug.com/56298 (pasting empty HTML crashes Linux). 224 // Regression test for crbug.com/56298 (pasting empty HTML crashes Linux).
239 TEST_F(ClipboardTest, EmptyHTMLTest) { 225 TEST_F(ClipboardTest, EmptyHTMLTest) {
240 Clipboard clipboard;
241 // ScopedClipboardWriter doesn't let us write empty data to the clipboard. 226 // ScopedClipboardWriter doesn't let us write empty data to the clipboard.
242 clipboard.clipboard_data_ = new Clipboard::TargetMap(); 227 clipboard().clipboard_data_ = new Clipboard::TargetMap();
243 // The 1 is so the compiler doesn't warn about allocating an empty array. 228 // The 1 is so the compiler doesn't warn about allocating an empty array.
244 char* empty = new char[1]; 229 char* empty = new char[1];
245 clipboard.InsertMapping("text/html", empty, 0U); 230 clipboard().InsertMapping("text/html", empty, 0U);
246 clipboard.SetGtkClipboard(Clipboard::BUFFER_STANDARD); 231 clipboard().SetGtkClipboard(Clipboard::BUFFER_STANDARD);
247 232
248 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 233 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
249 Clipboard::BUFFER_STANDARD)); 234 Clipboard::BUFFER_STANDARD));
250 string16 markup_result; 235 string16 markup_result;
251 std::string url_result; 236 std::string url_result;
252 uint32 ignored; 237 uint32 ignored;
253 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, 238 clipboard().ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result,
254 &ignored, &ignored); 239 &ignored, &ignored);
255 EXPECT_PRED2(MarkupMatches, string16(), markup_result); 240 EXPECT_PRED2(MarkupMatches, string16(), markup_result);
256 } 241 }
257 #endif 242 #endif
258 243
259 // TODO(estade): Port the following test (decide what target we use for urls) 244 // TODO(estade): Port the following test (decide what target we use for urls)
260 #if !defined(OS_POSIX) || defined(OS_MACOSX) 245 #if !defined(OS_POSIX) || defined(OS_MACOSX)
261 TEST_F(ClipboardTest, BookmarkTest) { 246 TEST_F(ClipboardTest, BookmarkTest) {
262 Clipboard clipboard;
263
264 string16 title(ASCIIToUTF16("The Example Company")), title_result; 247 string16 title(ASCIIToUTF16("The Example Company")), title_result;
265 std::string url("http://www.example.com/"), url_result; 248 std::string url("http://www.example.com/"), url_result;
266 249
267 { 250 {
268 ScopedClipboardWriter clipboard_writer(&clipboard, 251 ScopedClipboardWriter clipboard_writer(&clipboard(),
269 Clipboard::BUFFER_STANDARD); 252 Clipboard::BUFFER_STANDARD);
270 clipboard_writer.WriteBookmark(title, url); 253 clipboard_writer.WriteBookmark(title, url);
271 } 254 }
272 255
273 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType(), 256 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetUrlWFormatType(),
274 Clipboard::BUFFER_STANDARD)); 257 Clipboard::BUFFER_STANDARD));
275 clipboard.ReadBookmark(&title_result, &url_result); 258 clipboard().ReadBookmark(&title_result, &url_result);
276 EXPECT_EQ(title, title_result); 259 EXPECT_EQ(title, title_result);
277 EXPECT_EQ(url, url_result); 260 EXPECT_EQ(url, url_result);
278 } 261 }
279 #endif // defined(OS_WIN) 262 #endif // defined(OS_WIN)
280 263
281 TEST_F(ClipboardTest, MultiFormatTest) { 264 TEST_F(ClipboardTest, MultiFormatTest) {
282 Clipboard clipboard;
283
284 string16 text(ASCIIToUTF16("Hi!")), text_result; 265 string16 text(ASCIIToUTF16("Hi!")), text_result;
285 string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result; 266 string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result;
286 std::string url("http://www.example.com/"), url_result; 267 std::string url("http://www.example.com/"), url_result;
287 std::string ascii_text; 268 std::string ascii_text;
288 269
289 { 270 {
290 ScopedClipboardWriter clipboard_writer(&clipboard, 271 ScopedClipboardWriter clipboard_writer(&clipboard(),
291 Clipboard::BUFFER_STANDARD); 272 Clipboard::BUFFER_STANDARD);
292 clipboard_writer.WriteHTML(markup, url); 273 clipboard_writer.WriteHTML(markup, url);
293 clipboard_writer.WriteText(text); 274 clipboard_writer.WriteText(text);
294 } 275 }
295 276
296 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 277 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
297 Clipboard::BUFFER_STANDARD)); 278 Clipboard::BUFFER_STANDARD));
298 EXPECT_TRUE(clipboard.IsFormatAvailable( 279 EXPECT_TRUE(clipboard().IsFormatAvailable(
299 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); 280 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
300 EXPECT_TRUE(clipboard.IsFormatAvailable( 281 EXPECT_TRUE(clipboard().IsFormatAvailable(
301 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD)); 282 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD));
302 uint32 ignored; 283 uint32 ignored;
303 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, 284 clipboard().ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result,
304 &ignored, &ignored); 285 &ignored, &ignored);
305 EXPECT_PRED2(MarkupMatches, markup, markup_result); 286 EXPECT_PRED2(MarkupMatches, markup, markup_result);
306 #if defined(OS_WIN) 287 #if defined(OS_WIN)
307 // TODO(playmobil): It's not clear that non windows clipboards need to support 288 // TODO(playmobil): It's not clear that non windows clipboards need to support
308 // this. 289 // this.
309 EXPECT_EQ(url, url_result); 290 EXPECT_EQ(url, url_result);
310 #endif // defined(OS_WIN) 291 #endif // defined(OS_WIN)
311 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); 292 clipboard().ReadText(Clipboard::BUFFER_STANDARD, &text_result);
312 EXPECT_EQ(text, text_result); 293 EXPECT_EQ(text, text_result);
313 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); 294 clipboard().ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text);
314 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); 295 EXPECT_EQ(UTF16ToUTF8(text), ascii_text);
315 } 296 }
316 297
317 TEST_F(ClipboardTest, URLTest) { 298 TEST_F(ClipboardTest, URLTest) {
318 Clipboard clipboard;
319
320 string16 url(ASCIIToUTF16("http://www.google.com/")); 299 string16 url(ASCIIToUTF16("http://www.google.com/"));
321 300
322 { 301 {
323 ScopedClipboardWriter clipboard_writer(&clipboard, 302 ScopedClipboardWriter clipboard_writer(&clipboard(),
324 Clipboard::BUFFER_STANDARD); 303 Clipboard::BUFFER_STANDARD);
325 clipboard_writer.WriteURL(url); 304 clipboard_writer.WriteURL(url);
326 } 305 }
327 306
328 EXPECT_TRUE(clipboard.IsFormatAvailable( 307 EXPECT_TRUE(clipboard().IsFormatAvailable(
329 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); 308 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
330 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), 309 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetPlainTextFormatType(),
331 Clipboard::BUFFER_STANDARD)); 310 Clipboard::BUFFER_STANDARD));
332 string16 text_result; 311 string16 text_result;
333 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); 312 clipboard().ReadText(Clipboard::BUFFER_STANDARD, &text_result);
334 313
335 EXPECT_EQ(text_result, url); 314 EXPECT_EQ(text_result, url);
336 315
337 std::string ascii_text; 316 std::string ascii_text;
338 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); 317 clipboard().ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text);
339 EXPECT_EQ(UTF16ToUTF8(url), ascii_text); 318 EXPECT_EQ(UTF16ToUTF8(url), ascii_text);
340 319
341 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) 320 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
342 ascii_text.clear(); 321 ascii_text.clear();
343 clipboard.ReadAsciiText(Clipboard::BUFFER_SELECTION, &ascii_text); 322 clipboard().ReadAsciiText(Clipboard::BUFFER_SELECTION, &ascii_text);
344 EXPECT_EQ(UTF16ToUTF8(url), ascii_text); 323 EXPECT_EQ(UTF16ToUTF8(url), ascii_text);
345 #endif 324 #endif
346 } 325 }
347 326
348 TEST_F(ClipboardTest, SharedBitmapTest) { 327 TEST_F(ClipboardTest, SharedBitmapTest) {
349 unsigned int fake_bitmap[] = { 328 unsigned int fake_bitmap[] = {
350 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, 329 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
351 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, 330 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
352 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, 331 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
353 }; 332 };
354 gfx::Size fake_bitmap_size(3, 4); 333 gfx::Size fake_bitmap_size(3, 4);
355 uint32 bytes = sizeof(fake_bitmap); 334 uint32 bytes = sizeof(fake_bitmap);
356 335
357 // Create shared memory region. 336 // Create shared memory region.
358 base::SharedMemory shared_buf; 337 base::SharedMemory shared_buf;
359 ASSERT_TRUE(shared_buf.CreateAndMapAnonymous(bytes)); 338 ASSERT_TRUE(shared_buf.CreateAndMapAnonymous(bytes));
360 memcpy(shared_buf.memory(), fake_bitmap, bytes); 339 memcpy(shared_buf.memory(), fake_bitmap, bytes);
361 base::SharedMemoryHandle handle_to_share; 340 base::SharedMemoryHandle handle_to_share;
362 base::ProcessHandle current_process = base::kNullProcessHandle; 341 base::ProcessHandle current_process = base::kNullProcessHandle;
363 #if defined(OS_WIN) 342 #if defined(OS_WIN)
364 current_process = GetCurrentProcess(); 343 current_process = GetCurrentProcess();
365 #endif 344 #endif
366 shared_buf.ShareToProcess(current_process, &handle_to_share); 345 shared_buf.ShareToProcess(current_process, &handle_to_share);
367 ASSERT_TRUE(shared_buf.Unmap()); 346 ASSERT_TRUE(shared_buf.Unmap());
368 347
369 // Setup data for clipboard. 348 // Setup data for clipboard().
370 Clipboard::ObjectMapParam placeholder_param; 349 Clipboard::ObjectMapParam placeholder_param;
371 Clipboard::ObjectMapParam size_param; 350 Clipboard::ObjectMapParam size_param;
372 const char* size_data = reinterpret_cast<const char*>(&fake_bitmap_size); 351 const char* size_data = reinterpret_cast<const char*>(&fake_bitmap_size);
373 for (size_t i = 0; i < sizeof(fake_bitmap_size); ++i) 352 for (size_t i = 0; i < sizeof(fake_bitmap_size); ++i)
374 size_param.push_back(size_data[i]); 353 size_param.push_back(size_data[i]);
375 354
376 Clipboard::ObjectMapParams params; 355 Clipboard::ObjectMapParams params;
377 params.push_back(placeholder_param); 356 params.push_back(placeholder_param);
378 params.push_back(size_param); 357 params.push_back(size_param);
379 358
380 Clipboard::ObjectMap objects; 359 Clipboard::ObjectMap objects;
381 objects[Clipboard::CBF_SMBITMAP] = params; 360 objects[Clipboard::CBF_SMBITMAP] = params;
382 Clipboard::ReplaceSharedMemHandle(&objects, handle_to_share, current_process); 361 Clipboard::ReplaceSharedMemHandle(&objects, handle_to_share, current_process);
383 362
384 Clipboard clipboard; 363 clipboard().WriteObjects(Clipboard::BUFFER_STANDARD, objects);
385 clipboard.WriteObjects(Clipboard::BUFFER_STANDARD, objects);
386 364
387 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), 365 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetBitmapFormatType(),
388 Clipboard::BUFFER_STANDARD)); 366 Clipboard::BUFFER_STANDARD));
389 } 367 }
390 368
391 // The following test somehow fails on GTK. The image when read back from the 369 // The following test somehow fails on GTK. The image when read back from the
392 // clipboard has the alpha channel set to 0xFF for some reason. The other 370 // clipboard has the alpha channel set to 0xFF for some reason. The other
393 // channels stay intact. So I am turning this on only for aura. 371 // channels stay intact. So I am turning this on only for aura.
394 #if (defined(USE_AURA) && !defined(OS_WIN)) || defined(OS_ANDROID) 372 #if (defined(USE_AURA) && !defined(OS_WIN)) || defined(OS_ANDROID)
395 TEST_F(ClipboardTest, MultipleBitmapReadWriteTest) { 373 TEST_F(ClipboardTest, MultipleBitmapReadWriteTest) {
396 Clipboard clipboard;
397
398 // Test first bitmap 374 // Test first bitmap
399 unsigned int fake_bitmap_1[] = { 375 unsigned int fake_bitmap_1[] = {
400 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, 376 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
401 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, 377 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
402 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, 378 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
403 }; 379 };
404 gfx::Size fake_bitmap_1_size(3, 4); 380 gfx::Size fake_bitmap_1_size(3, 4);
405 { 381 {
406 ScopedClipboardWriter clipboard_writer(&clipboard, 382 ScopedClipboardWriter clipboard_writer(&clipboard(),
407 Clipboard::BUFFER_STANDARD); 383 Clipboard::BUFFER_STANDARD);
408 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_1, fake_bitmap_1_size); 384 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_1, fake_bitmap_1_size);
409 } 385 }
410 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), 386 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetBitmapFormatType(),
411 Clipboard::BUFFER_STANDARD)); 387 Clipboard::BUFFER_STANDARD));
412 SkBitmap image_1 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); 388 SkBitmap image_1 = clipboard().ReadImage(Clipboard::BUFFER_STANDARD);
413 EXPECT_EQ(fake_bitmap_1_size, gfx::Size(image_1.width(), image_1.height())); 389 EXPECT_EQ(fake_bitmap_1_size, gfx::Size(image_1.width(), image_1.height()));
414 unsigned int* pixels_1 = reinterpret_cast<unsigned int*>(image_1.getPixels()); 390 unsigned int* pixels_1 = reinterpret_cast<unsigned int*>(image_1.getPixels());
415 for (int i = 0; i < fake_bitmap_1_size.width(); ++i) { 391 for (int i = 0; i < fake_bitmap_1_size.width(); ++i) {
416 for (int j = 0; j < fake_bitmap_1_size.height(); ++j) { 392 for (int j = 0; j < fake_bitmap_1_size.height(); ++j) {
417 int id = i * fake_bitmap_1_size.height() + j; 393 int id = i * fake_bitmap_1_size.height() + j;
418 EXPECT_EQ(fake_bitmap_1[id], pixels_1[id]); 394 EXPECT_EQ(fake_bitmap_1[id], pixels_1[id]);
419 } 395 }
420 } 396 }
421 397
422 // Test second bitmap 398 // Test second bitmap
423 unsigned int fake_bitmap_2[] = { 399 unsigned int fake_bitmap_2[] = {
424 0x46155189, 0xF6A55C8D, 400 0x46155189, 0xF6A55C8D,
425 0x79845674, 0xFA57BD89, 401 0x79845674, 0xFA57BD89,
426 0x78FD46AE, 0x87C64F5A, 402 0x78FD46AE, 0x87C64F5A,
427 0x36EDC5AF, 0x4378F568, 403 0x36EDC5AF, 0x4378F568,
428 0x91E9F63A, 0xC31EA14F, 404 0x91E9F63A, 0xC31EA14F,
429 0x69AB32DF, 0x643A3FD1, 405 0x69AB32DF, 0x643A3FD1,
430 0xA6DF041D, 0x83046278, 406 0xA6DF041D, 0x83046278,
431 }; 407 };
432 gfx::Size fake_bitmap_2_size(7, 2); 408 gfx::Size fake_bitmap_2_size(7, 2);
433 { 409 {
434 ScopedClipboardWriter clipboard_writer(&clipboard, 410 ScopedClipboardWriter clipboard_writer(&clipboard(),
435 Clipboard::BUFFER_STANDARD); 411 Clipboard::BUFFER_STANDARD);
436 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_2, fake_bitmap_2_size); 412 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_2, fake_bitmap_2_size);
437 } 413 }
438 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), 414 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetBitmapFormatType(),
439 Clipboard::BUFFER_STANDARD)); 415 Clipboard::BUFFER_STANDARD));
440 SkBitmap image_2 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); 416 SkBitmap image_2 = clipboard().ReadImage(Clipboard::BUFFER_STANDARD);
441 EXPECT_EQ(fake_bitmap_2_size, gfx::Size(image_2.width(), image_2.height())); 417 EXPECT_EQ(fake_bitmap_2_size, gfx::Size(image_2.width(), image_2.height()));
442 unsigned int* pixels_2 = reinterpret_cast<unsigned int*>(image_2.getPixels()); 418 unsigned int* pixels_2 = reinterpret_cast<unsigned int*>(image_2.getPixels());
443 for (int i = 0; i < fake_bitmap_2_size.width(); ++i) { 419 for (int i = 0; i < fake_bitmap_2_size.width(); ++i) {
444 for (int j = 0; j < fake_bitmap_2_size.height(); ++j) { 420 for (int j = 0; j < fake_bitmap_2_size.height(); ++j) {
445 int id = i * fake_bitmap_2_size.height() + j; 421 int id = i * fake_bitmap_2_size.height() + j;
446 EXPECT_EQ(fake_bitmap_2[id], pixels_2[id]); 422 EXPECT_EQ(fake_bitmap_2[id], pixels_2[id]);
447 } 423 }
448 } 424 }
449 } 425 }
450 #endif 426 #endif
451 427
452 TEST_F(ClipboardTest, DataTest) { 428 TEST_F(ClipboardTest, DataTest) {
453 Clipboard clipboard;
454 const ui::Clipboard::FormatType kFormat = 429 const ui::Clipboard::FormatType kFormat =
455 ui::Clipboard::GetFormatType("chromium/x-test-format"); 430 ui::Clipboard::GetFormatType("chromium/x-test-format");
456 std::string payload("test string"); 431 std::string payload("test string");
457 Pickle write_pickle; 432 Pickle write_pickle;
458 write_pickle.WriteString(payload); 433 write_pickle.WriteString(payload);
459 434
460 { 435 {
461 ScopedClipboardWriter clipboard_writer(&clipboard, 436 ScopedClipboardWriter clipboard_writer(&clipboard(),
462 Clipboard::BUFFER_STANDARD); 437 Clipboard::BUFFER_STANDARD);
463 clipboard_writer.WritePickledData(write_pickle, kFormat); 438 clipboard_writer.WritePickledData(write_pickle, kFormat);
464 } 439 }
465 440
466 ASSERT_TRUE(clipboard.IsFormatAvailable( 441 ASSERT_TRUE(clipboard().IsFormatAvailable(
467 kFormat, Clipboard::BUFFER_STANDARD)); 442 kFormat, Clipboard::BUFFER_STANDARD));
468 std::string output; 443 std::string output;
469 clipboard.ReadData(kFormat, &output); 444 clipboard().ReadData(kFormat, &output);
470 ASSERT_FALSE(output.empty()); 445 ASSERT_FALSE(output.empty());
471 446
472 Pickle read_pickle(output.data(), output.size()); 447 Pickle read_pickle(output.data(), output.size());
473 PickleIterator iter(read_pickle); 448 PickleIterator iter(read_pickle);
474 std::string unpickled_string; 449 std::string unpickled_string;
475 ASSERT_TRUE(read_pickle.ReadString(&iter, &unpickled_string)); 450 ASSERT_TRUE(read_pickle.ReadString(&iter, &unpickled_string));
476 EXPECT_EQ(payload, unpickled_string); 451 EXPECT_EQ(payload, unpickled_string);
477 } 452 }
478 453
479 TEST_F(ClipboardTest, MultipleDataTest) { 454 TEST_F(ClipboardTest, MultipleDataTest) {
480 Clipboard clipboard;
481 const ui::Clipboard::FormatType kFormat1 = 455 const ui::Clipboard::FormatType kFormat1 =
482 ui::Clipboard::GetFormatType("chromium/x-test-format1"); 456 ui::Clipboard::GetFormatType("chromium/x-test-format1");
483 std::string payload1("test string1"); 457 std::string payload1("test string1");
484 Pickle write_pickle1; 458 Pickle write_pickle1;
485 write_pickle1.WriteString(payload1); 459 write_pickle1.WriteString(payload1);
486 460
487 const ui::Clipboard::FormatType kFormat2 = 461 const ui::Clipboard::FormatType kFormat2 =
488 ui::Clipboard::GetFormatType("chromium/x-test-format2"); 462 ui::Clipboard::GetFormatType("chromium/x-test-format2");
489 std::string payload2("test string2"); 463 std::string payload2("test string2");
490 Pickle write_pickle2; 464 Pickle write_pickle2;
491 write_pickle2.WriteString(payload2); 465 write_pickle2.WriteString(payload2);
492 466
493 { 467 {
494 ScopedClipboardWriter clipboard_writer(&clipboard, 468 ScopedClipboardWriter clipboard_writer(&clipboard(),
495 Clipboard::BUFFER_STANDARD); 469 Clipboard::BUFFER_STANDARD);
496 clipboard_writer.WritePickledData(write_pickle1, kFormat1); 470 clipboard_writer.WritePickledData(write_pickle1, kFormat1);
497 // overwrite the previous pickle for fun 471 // overwrite the previous pickle for fun
498 clipboard_writer.WritePickledData(write_pickle2, kFormat2); 472 clipboard_writer.WritePickledData(write_pickle2, kFormat2);
499 } 473 }
500 474
501 ASSERT_TRUE(clipboard.IsFormatAvailable( 475 ASSERT_TRUE(clipboard().IsFormatAvailable(
502 kFormat2, Clipboard::BUFFER_STANDARD)); 476 kFormat2, Clipboard::BUFFER_STANDARD));
503 477
504 // Check string 2. 478 // Check string 2.
505 std::string output2; 479 std::string output2;
506 clipboard.ReadData(kFormat2, &output2); 480 clipboard().ReadData(kFormat2, &output2);
507 ASSERT_FALSE(output2.empty()); 481 ASSERT_FALSE(output2.empty());
508 482
509 Pickle read_pickle2(output2.data(), output2.size()); 483 Pickle read_pickle2(output2.data(), output2.size());
510 PickleIterator iter2(read_pickle2); 484 PickleIterator iter2(read_pickle2);
511 std::string unpickled_string2; 485 std::string unpickled_string2;
512 ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2)); 486 ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2));
513 EXPECT_EQ(payload2, unpickled_string2); 487 EXPECT_EQ(payload2, unpickled_string2);
514 488
515 { 489 {
516 ScopedClipboardWriter clipboard_writer(&clipboard, 490 ScopedClipboardWriter clipboard_writer(&clipboard(),
517 Clipboard::BUFFER_STANDARD); 491 Clipboard::BUFFER_STANDARD);
518 clipboard_writer.WritePickledData(write_pickle2, kFormat2); 492 clipboard_writer.WritePickledData(write_pickle2, kFormat2);
519 // overwrite the previous pickle for fun 493 // overwrite the previous pickle for fun
520 clipboard_writer.WritePickledData(write_pickle1, kFormat1); 494 clipboard_writer.WritePickledData(write_pickle1, kFormat1);
521 } 495 }
522 496
523 ASSERT_TRUE(clipboard.IsFormatAvailable( 497 ASSERT_TRUE(clipboard().IsFormatAvailable(
524 kFormat1, Clipboard::BUFFER_STANDARD)); 498 kFormat1, Clipboard::BUFFER_STANDARD));
525 499
526 // Check string 1. 500 // Check string 1.
527 std::string output1; 501 std::string output1;
528 clipboard.ReadData(kFormat1, &output1); 502 clipboard().ReadData(kFormat1, &output1);
529 ASSERT_FALSE(output1.empty()); 503 ASSERT_FALSE(output1.empty());
530 504
531 Pickle read_pickle1(output1.data(), output1.size()); 505 Pickle read_pickle1(output1.data(), output1.size());
532 PickleIterator iter1(read_pickle1); 506 PickleIterator iter1(read_pickle1);
533 std::string unpickled_string1; 507 std::string unpickled_string1;
534 ASSERT_TRUE(read_pickle1.ReadString(&iter1, &unpickled_string1)); 508 ASSERT_TRUE(read_pickle1.ReadString(&iter1, &unpickled_string1));
535 EXPECT_EQ(payload1, unpickled_string1); 509 EXPECT_EQ(payload1, unpickled_string1);
536 } 510 }
537 511
538 #if defined(OS_WIN) // Windows only tests. 512 #if defined(OS_WIN) // Windows only tests.
539 TEST_F(ClipboardTest, HyperlinkTest) { 513 TEST_F(ClipboardTest, HyperlinkTest) {
540 Clipboard clipboard;
541
542 const std::string kTitle("The Example Company"); 514 const std::string kTitle("The Example Company");
543 const std::string kUrl("http://www.example.com/"); 515 const std::string kUrl("http://www.example.com/");
544 const std::string kExpectedHtml("<a href=\"http://www.example.com/\">" 516 const std::string kExpectedHtml("<a href=\"http://www.example.com/\">"
545 "The Example Company</a>"); 517 "The Example Company</a>");
546 std::string url_result; 518 std::string url_result;
547 string16 html_result; 519 string16 html_result;
548 520
549 { 521 {
550 ScopedClipboardWriter clipboard_writer(&clipboard, 522 ScopedClipboardWriter clipboard_writer(&clipboard(),
551 Clipboard::BUFFER_STANDARD); 523 Clipboard::BUFFER_STANDARD);
552 clipboard_writer.WriteHyperlink(ASCIIToUTF16(kTitle), kUrl); 524 clipboard_writer.WriteHyperlink(ASCIIToUTF16(kTitle), kUrl);
553 } 525 }
554 526
555 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), 527 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetHtmlFormatType(),
556 Clipboard::BUFFER_STANDARD)); 528 Clipboard::BUFFER_STANDARD));
557 uint32 ignored; 529 uint32 ignored;
558 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &html_result, &url_result, 530 clipboard().ReadHTML(Clipboard::BUFFER_STANDARD, &html_result, &url_result,
559 &ignored, &ignored); 531 &ignored, &ignored);
560 EXPECT_PRED2(MarkupMatches, ASCIIToUTF16(kExpectedHtml), html_result); 532 EXPECT_PRED2(MarkupMatches, ASCIIToUTF16(kExpectedHtml), html_result);
561 } 533 }
562 534
563 TEST_F(ClipboardTest, WebSmartPasteTest) { 535 TEST_F(ClipboardTest, WebSmartPasteTest) {
564 Clipboard clipboard;
565
566 { 536 {
567 ScopedClipboardWriter clipboard_writer(&clipboard, 537 ScopedClipboardWriter clipboard_writer(&clipboard(),
568 Clipboard::BUFFER_STANDARD); 538 Clipboard::BUFFER_STANDARD);
569 clipboard_writer.WriteWebSmartPaste(); 539 clipboard_writer.WriteWebSmartPaste();
570 } 540 }
571 541
572 EXPECT_TRUE(clipboard.IsFormatAvailable( 542 EXPECT_TRUE(clipboard().IsFormatAvailable(
573 Clipboard::GetWebKitSmartPasteFormatType(), Clipboard::BUFFER_STANDARD)); 543 Clipboard::GetWebKitSmartPasteFormatType(), Clipboard::BUFFER_STANDARD));
574 } 544 }
575 545
576 TEST_F(ClipboardTest, BitmapTest) { 546 TEST_F(ClipboardTest, BitmapTest) {
577 unsigned int fake_bitmap[] = { 547 unsigned int fake_bitmap[] = {
578 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, 548 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
579 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, 549 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
580 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, 550 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
581 }; 551 };
582 552
583 Clipboard clipboard;
584
585 { 553 {
586 ScopedClipboardWriter clipboard_writer(&clipboard, 554 ScopedClipboardWriter clipboard_writer(&clipboard(),
587 Clipboard::BUFFER_STANDARD); 555 Clipboard::BUFFER_STANDARD);
588 clipboard_writer.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4)); 556 clipboard_writer.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4));
589 } 557 }
590 558
591 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), 559 EXPECT_TRUE(clipboard().IsFormatAvailable(Clipboard::GetBitmapFormatType(),
592 Clipboard::BUFFER_STANDARD)); 560 Clipboard::BUFFER_STANDARD));
593 } 561 }
594 562
595 void HtmlTestHelper(const std::string& cf_html, 563 void HtmlTestHelper(const std::string& cf_html,
596 const std::string& expected_html) { 564 const std::string& expected_html) {
597 std::string html; 565 std::string html;
598 ClipboardUtil::CFHtmlToHtml(cf_html, &html, NULL); 566 ClipboardUtil::CFHtmlToHtml(cf_html, &html, NULL);
599 EXPECT_EQ(html, expected_html); 567 EXPECT_EQ(html, expected_html);
600 } 568 }
601 569
602 TEST_F(ClipboardTest, HtmlTest) { 570 TEST_F(ClipboardTest, HtmlTest) {
(...skipping 27 matching lines...) Expand all
630 "<body>\r\n" 598 "<body>\r\n"
631 "<p>Foo</p>\r\n" 599 "<p>Foo</p>\r\n"
632 "</body>\r\n" 600 "</body>\r\n"
633 "</html>\r\n\r\n", 601 "</html>\r\n\r\n",
634 "<p>Foo</p>"); 602 "<p>Foo</p>");
635 } 603 }
636 #endif // defined(OS_WIN) 604 #endif // defined(OS_WIN)
637 605
638 // Test writing all formats we have simultaneously. 606 // Test writing all formats we have simultaneously.
639 TEST_F(ClipboardTest, WriteEverything) { 607 TEST_F(ClipboardTest, WriteEverything) {
640 Clipboard clipboard;
641
642 { 608 {
643 ScopedClipboardWriter writer(&clipboard, Clipboard::BUFFER_STANDARD); 609 ScopedClipboardWriter writer(&clipboard(), Clipboard::BUFFER_STANDARD);
644 writer.WriteText(UTF8ToUTF16("foo")); 610 writer.WriteText(UTF8ToUTF16("foo"));
645 writer.WriteURL(UTF8ToUTF16("foo")); 611 writer.WriteURL(UTF8ToUTF16("foo"));
646 writer.WriteHTML(UTF8ToUTF16("foo"), "bar"); 612 writer.WriteHTML(UTF8ToUTF16("foo"), "bar");
647 writer.WriteBookmark(UTF8ToUTF16("foo"), "bar"); 613 writer.WriteBookmark(UTF8ToUTF16("foo"), "bar");
648 writer.WriteHyperlink(ASCIIToUTF16("foo"), "bar"); 614 writer.WriteHyperlink(ASCIIToUTF16("foo"), "bar");
649 writer.WriteWebSmartPaste(); 615 writer.WriteWebSmartPaste();
650 // Left out: WriteFile, WriteFiles, WriteBitmapFromPixels, WritePickledData. 616 // Left out: WriteFile, WriteFiles, WriteBitmapFromPixels, WritePickledData.
651 } 617 }
652 618
653 // Passes if we don't crash. 619 // Passes if we don't crash.
654 } 620 }
655 621
656 #if defined(OS_ANDROID) 622 #if defined(OS_ANDROID)
657 623
658 // Test that if another application writes some text to the pasteboard the 624 // Test that if another application writes some text to the pasteboard the
659 // clipboard properly invalidates other types. 625 // clipboard properly invalidates other types.
660 TEST_F(ClipboardTest, InternalClipboardInvalidation) { 626 TEST_F(ClipboardTest, InternalClipboardInvalidation) {
661 const unsigned int kFakeBitmap[] = { 627 const unsigned int kFakeBitmap[] = {
662 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, 628 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
663 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, 629 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
664 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, 630 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
665 }; 631 };
666 632
667 // Write a bitmap in our clipboard. 633 // Write a bitmap in our clipboard().
668 Clipboard clipboard;
669 { 634 {
670 ScopedClipboardWriter clipboard_writer(&clipboard, 635 ScopedClipboardWriter clipboard_writer(&clipboard(),
671 Clipboard::BUFFER_STANDARD); 636 Clipboard::BUFFER_STANDARD);
672 clipboard_writer.WriteBitmapFromPixels(kFakeBitmap, gfx::Size(3, 4)); 637 clipboard_writer.WriteBitmapFromPixels(kFakeBitmap, gfx::Size(3, 4));
673 } 638 }
674 639
675 // 640 //
676 // Simulate that another application copied something in the Clipboard 641 // Simulate that another application copied something in the Clipboard
677 // 642 //
678 std::string new_value("Some text copied by some other app"); 643 std::string new_value("Some text copied by some other app");
679 using base::android::ScopedJavaLocalRef; 644 using base::android::ScopedJavaLocalRef;
680 645
(...skipping 20 matching lines...) Expand all
701 base::android::GetClass(env, "android/text/ClipboardManager"); 666 base::android::GetClass(env, "android/text/ClipboardManager");
702 jmethodID set_text = base::android::GetMethodID(env, clipboard_class, 667 jmethodID set_text = base::android::GetMethodID(env, clipboard_class,
703 "setText", "(Ljava/lang/CharSequence;)V"); 668 "setText", "(Ljava/lang/CharSequence;)V");
704 669
705 // Will need to call toString as CharSequence is not always a String. 670 // Will need to call toString as CharSequence is not always a String.
706 env->CallVoidMethod(clipboard_manager.obj(), 671 env->CallVoidMethod(clipboard_manager.obj(),
707 set_text, 672 set_text,
708 env->NewStringUTF(new_value.c_str())); 673 env->NewStringUTF(new_value.c_str()));
709 674
710 // The bitmap that should have been available should be gone. 675 // The bitmap that should have been available should be gone.
711 EXPECT_FALSE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), 676 EXPECT_FALSE(clipboard().IsFormatAvailable(Clipboard::GetBitmapFormatType(),
712 Clipboard::BUFFER_STANDARD)); 677 Clipboard::BUFFER_STANDARD));
713 678
714 // Make sure some text is available 679 // Make sure some text is available
715 EXPECT_TRUE(clipboard.IsFormatAvailable( 680 EXPECT_TRUE(clipboard().IsFormatAvailable(
716 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); 681 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD));
717 682
718 // Make sure the text is what we inserted while simulating the other app 683 // Make sure the text is what we inserted while simulating the other app
719 std::string contents; 684 std::string contents;
720 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &contents); 685 clipboard().ReadAsciiText(Clipboard::BUFFER_STANDARD, &contents);
721 EXPECT_EQ(contents, new_value); 686 EXPECT_EQ(contents, new_value);
722 } 687 }
723 #endif 688 #endif
724 } // namespace ui 689 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698