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

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

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

Powered by Google App Engine
This is Rietveld 408576698