| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 const string16& actual_markup) { | 47 const string16& actual_markup) { |
| 48 return actual_markup.find(expected_markup) != string16::npos; | 48 return actual_markup.find(expected_markup) != string16::npos; |
| 49 } | 49 } |
| 50 | 50 |
| 51 } // namespace | 51 } // namespace |
| 52 | 52 |
| 53 TEST_F(ClipboardTest, ClearTest) { | 53 TEST_F(ClipboardTest, ClearTest) { |
| 54 Clipboard clipboard; | 54 Clipboard clipboard; |
| 55 | 55 |
| 56 { | 56 { |
| 57 ScopedClipboardWriter clipboard_writer(&clipboard); | 57 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 58 Clipboard::BUFFER_STANDARD); |
| 58 clipboard_writer.WriteText(ASCIIToUTF16("clear me")); | 59 clipboard_writer.WriteText(ASCIIToUTF16("clear me")); |
| 59 } | 60 } |
| 60 | 61 |
| 61 { | 62 { |
| 62 ScopedClipboardWriter clipboard_writer(&clipboard); | 63 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 64 Clipboard::BUFFER_STANDARD); |
| 63 clipboard_writer.WriteHTML(ASCIIToUTF16("<b>broom</b>"), ""); | 65 clipboard_writer.WriteHTML(ASCIIToUTF16("<b>broom</b>"), ""); |
| 64 } | 66 } |
| 65 | 67 |
| 66 EXPECT_FALSE(clipboard.IsFormatAvailable( | 68 EXPECT_FALSE(clipboard.IsFormatAvailable( |
| 67 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); | 69 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); |
| 68 EXPECT_FALSE(clipboard.IsFormatAvailable( | 70 EXPECT_FALSE(clipboard.IsFormatAvailable( |
| 69 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD)); | 71 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD)); |
| 70 } | 72 } |
| 71 | 73 |
| 72 TEST_F(ClipboardTest, TextTest) { | 74 TEST_F(ClipboardTest, TextTest) { |
| 73 Clipboard clipboard; | 75 Clipboard clipboard; |
| 74 | 76 |
| 75 string16 text(ASCIIToUTF16("This is a string16!#$")), text_result; | 77 string16 text(ASCIIToUTF16("This is a string16!#$")), text_result; |
| 76 std::string ascii_text; | 78 std::string ascii_text; |
| 77 | 79 |
| 78 { | 80 { |
| 79 ScopedClipboardWriter clipboard_writer(&clipboard); | 81 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 82 Clipboard::BUFFER_STANDARD); |
| 80 clipboard_writer.WriteText(text); | 83 clipboard_writer.WriteText(text); |
| 81 } | 84 } |
| 82 | 85 |
| 83 EXPECT_TRUE(clipboard.IsFormatAvailable( | 86 EXPECT_TRUE(clipboard.IsFormatAvailable( |
| 84 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); | 87 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); |
| 85 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), | 88 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
| 86 Clipboard::BUFFER_STANDARD)); | 89 Clipboard::BUFFER_STANDARD)); |
| 87 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); | 90 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); |
| 88 | 91 |
| 89 EXPECT_EQ(text, text_result); | 92 EXPECT_EQ(text, text_result); |
| 90 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); | 93 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); |
| 91 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); | 94 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); |
| 92 } | 95 } |
| 93 | 96 |
| 94 TEST_F(ClipboardTest, HTMLTest) { | 97 TEST_F(ClipboardTest, HTMLTest) { |
| 95 Clipboard clipboard; | 98 Clipboard clipboard; |
| 96 | 99 |
| 97 string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result; | 100 string16 markup(ASCIIToUTF16("<string>Hi!</string>")), markup_result; |
| 98 std::string url("http://www.example.com/"), url_result; | 101 std::string url("http://www.example.com/"), url_result; |
| 99 | 102 |
| 100 { | 103 { |
| 101 ScopedClipboardWriter clipboard_writer(&clipboard); | 104 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 105 Clipboard::BUFFER_STANDARD); |
| 102 clipboard_writer.WriteHTML(markup, url); | 106 clipboard_writer.WriteHTML(markup, url); |
| 103 } | 107 } |
| 104 | 108 |
| 105 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 109 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 106 Clipboard::BUFFER_STANDARD)); | 110 Clipboard::BUFFER_STANDARD)); |
| 107 uint32 ignored; | 111 uint32 ignored; |
| 108 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, | 112 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, |
| 109 &ignored, &ignored); | 113 &ignored, &ignored); |
| 110 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 114 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
| 111 #if defined(OS_WIN) | 115 #if defined(OS_WIN) |
| 112 // TODO(playmobil): It's not clear that non windows clipboards need to support | 116 // TODO(playmobil): It's not clear that non windows clipboards need to support |
| 113 // this. | 117 // this. |
| 114 EXPECT_EQ(url, url_result); | 118 EXPECT_EQ(url, url_result); |
| 115 #endif // defined(OS_WIN) | 119 #endif // defined(OS_WIN) |
| 116 } | 120 } |
| 117 | 121 |
| 122 #if defined(TOOLKIT_USES_GTK) |
| 123 TEST_F(ClipboardTest, MultipleBufferTest) { |
| 124 Clipboard clipboard; |
| 125 |
| 126 string16 text(ASCIIToUTF16("Standard")), text_result; |
| 127 string16 markup(ASCIIToUTF16("<string>Selection</string>")), markup_result; |
| 128 std::string url("http://www.example.com/"), url_result; |
| 129 |
| 130 { |
| 131 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 132 Clipboard::BUFFER_STANDARD); |
| 133 clipboard_writer.WriteText(text); |
| 134 } |
| 135 |
| 136 { |
| 137 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 138 Clipboard::BUFFER_SELECTION); |
| 139 clipboard_writer.WriteHTML(markup, url); |
| 140 } |
| 141 |
| 142 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
| 143 Clipboard::BUFFER_STANDARD)); |
| 144 EXPECT_FALSE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
| 145 Clipboard::BUFFER_SELECTION)); |
| 146 |
| 147 EXPECT_FALSE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 148 Clipboard::BUFFER_STANDARD)); |
| 149 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 150 Clipboard::BUFFER_SELECTION)); |
| 151 |
| 152 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); |
| 153 EXPECT_EQ(text, text_result); |
| 154 |
| 155 uint32 ignored; |
| 156 clipboard.ReadHTML(Clipboard::BUFFER_SELECTION, &markup_result, &url_result, |
| 157 &ignored, &ignored); |
| 158 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
| 159 } |
| 160 #endif |
| 161 |
| 118 TEST_F(ClipboardTest, TrickyHTMLTest) { | 162 TEST_F(ClipboardTest, TrickyHTMLTest) { |
| 119 Clipboard clipboard; | 163 Clipboard clipboard; |
| 120 | 164 |
| 121 string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")), | 165 string16 markup(ASCIIToUTF16("<em>Bye!<!--EndFragment --></em>")), |
| 122 markup_result; | 166 markup_result; |
| 123 std::string url, url_result; | 167 std::string url, url_result; |
| 124 | 168 |
| 125 { | 169 { |
| 126 ScopedClipboardWriter clipboard_writer(&clipboard); | 170 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 171 Clipboard::BUFFER_STANDARD); |
| 127 clipboard_writer.WriteHTML(markup, url); | 172 clipboard_writer.WriteHTML(markup, url); |
| 128 } | 173 } |
| 129 | 174 |
| 130 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 175 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 131 Clipboard::BUFFER_STANDARD)); | 176 Clipboard::BUFFER_STANDARD)); |
| 132 uint32 ignored; | 177 uint32 ignored; |
| 133 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, | 178 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, |
| 134 &ignored, &ignored); | 179 &ignored, &ignored); |
| 135 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 180 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
| 136 #if defined(OS_WIN) | 181 #if defined(OS_WIN) |
| 137 // TODO(playmobil): It's not clear that non windows clipboards need to support | 182 // TODO(playmobil): It's not clear that non windows clipboards need to support |
| 138 // this. | 183 // this. |
| 139 EXPECT_EQ(url, url_result); | 184 EXPECT_EQ(url, url_result); |
| 140 #endif // defined(OS_WIN) | 185 #endif // defined(OS_WIN) |
| 141 } | 186 } |
| 142 | 187 |
| 143 #if defined(OS_WIN) | 188 #if defined(OS_WIN) |
| 144 TEST_F(ClipboardTest, UniodeHTMLTest) { | 189 TEST_F(ClipboardTest, UniodeHTMLTest) { |
| 145 Clipboard clipboard; | 190 Clipboard clipboard; |
| 146 | 191 |
| 147 string16 markup(UTF8ToUTF16("<div>A \xc3\xb8 \xe6\xb0\xb4</div>")), | 192 string16 markup(UTF8ToUTF16("<div>A \xc3\xb8 \xe6\xb0\xb4</div>")), |
| 148 markup_result; | 193 markup_result; |
| 149 std::string url, url_result; | 194 std::string url, url_result; |
| 150 | 195 |
| 151 { | 196 { |
| 152 ScopedClipboardWriter clipboard_writer(&clipboard); | 197 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 198 Clipboard::BUFFER_STANDARD); |
| 153 clipboard_writer.WriteHTML(markup, url); | 199 clipboard_writer.WriteHTML(markup, url); |
| 154 } | 200 } |
| 155 | 201 |
| 156 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 202 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 157 Clipboard::BUFFER_STANDARD)); | 203 Clipboard::BUFFER_STANDARD)); |
| 158 uint32 fragment_start; | 204 uint32 fragment_start; |
| 159 uint32 fragment_end; | 205 uint32 fragment_end; |
| 160 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, | 206 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, |
| 161 &fragment_start, &fragment_end); | 207 &fragment_start, &fragment_end); |
| 162 EXPECT_PRED2(MarkupMatches, markup, markup_result); | 208 EXPECT_PRED2(MarkupMatches, markup, markup_result); |
| 163 EXPECT_EQ(url, url_result); | 209 EXPECT_EQ(url, url_result); |
| 164 // Make sure that fragment indices were adjusted when converting. | 210 // Make sure that fragment indices were adjusted when converting. |
| 165 EXPECT_EQ(36, fragment_start); | 211 EXPECT_EQ(36, fragment_start); |
| 166 EXPECT_EQ(56, fragment_end); | 212 EXPECT_EQ(56, fragment_end); |
| 167 } | 213 } |
| 168 #endif // defined(OS_WIN) | 214 #endif // defined(OS_WIN) |
| 169 | 215 |
| 170 #if defined(TOOLKIT_USES_GTK) | 216 #if defined(TOOLKIT_USES_GTK) |
| 171 // Regression test for crbug.com/56298 (pasting empty HTML crashes Linux). | 217 // Regression test for crbug.com/56298 (pasting empty HTML crashes Linux). |
| 172 TEST_F(ClipboardTest, EmptyHTMLTest) { | 218 TEST_F(ClipboardTest, EmptyHTMLTest) { |
| 173 Clipboard clipboard; | 219 Clipboard clipboard; |
| 174 // ScopedClipboardWriter doesn't let us write empty data to the clipboard. | 220 // ScopedClipboardWriter doesn't let us write empty data to the clipboard. |
| 175 clipboard.clipboard_data_ = new Clipboard::TargetMap(); | 221 clipboard.clipboard_data_ = new Clipboard::TargetMap(); |
| 176 // 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. |
| 177 char* empty = new char[1]; | 223 char* empty = new char[1]; |
| 178 clipboard.InsertMapping("text/html", empty, 0U); | 224 clipboard.InsertMapping("text/html", empty, 0U); |
| 179 clipboard.SetGtkClipboard(); | 225 clipboard.SetGtkClipboard(Clipboard::BUFFER_STANDARD); |
| 180 | 226 |
| 181 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 227 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 182 Clipboard::BUFFER_STANDARD)); | 228 Clipboard::BUFFER_STANDARD)); |
| 183 string16 markup_result; | 229 string16 markup_result; |
| 184 std::string url_result; | 230 std::string url_result; |
| 185 uint32 ignored; | 231 uint32 ignored; |
| 186 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, | 232 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &markup_result, &url_result, |
| 187 &ignored, &ignored); | 233 &ignored, &ignored); |
| 188 EXPECT_PRED2(MarkupMatches, string16(), markup_result); | 234 EXPECT_PRED2(MarkupMatches, string16(), markup_result); |
| 189 } | 235 } |
| 190 #endif | 236 #endif |
| 191 | 237 |
| 192 // 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) |
| 193 #if !defined(OS_POSIX) || defined(OS_MACOSX) | 239 #if !defined(OS_POSIX) || defined(OS_MACOSX) |
| 194 TEST_F(ClipboardTest, BookmarkTest) { | 240 TEST_F(ClipboardTest, BookmarkTest) { |
| 195 Clipboard clipboard; | 241 Clipboard clipboard; |
| 196 | 242 |
| 197 string16 title(ASCIIToUTF16("The Example Company")), title_result; | 243 string16 title(ASCIIToUTF16("The Example Company")), title_result; |
| 198 std::string url("http://www.example.com/"), url_result; | 244 std::string url("http://www.example.com/"), url_result; |
| 199 | 245 |
| 200 { | 246 { |
| 201 ScopedClipboardWriter clipboard_writer(&clipboard); | 247 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 248 Clipboard::BUFFER_STANDARD); |
| 202 clipboard_writer.WriteBookmark(title, url); | 249 clipboard_writer.WriteBookmark(title, url); |
| 203 } | 250 } |
| 204 | 251 |
| 205 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType(), | 252 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetUrlWFormatType(), |
| 206 Clipboard::BUFFER_STANDARD)); | 253 Clipboard::BUFFER_STANDARD)); |
| 207 clipboard.ReadBookmark(&title_result, &url_result); | 254 clipboard.ReadBookmark(&title_result, &url_result); |
| 208 EXPECT_EQ(title, title_result); | 255 EXPECT_EQ(title, title_result); |
| 209 EXPECT_EQ(url, url_result); | 256 EXPECT_EQ(url, url_result); |
| 210 } | 257 } |
| 211 #endif // defined(OS_WIN) | 258 #endif // defined(OS_WIN) |
| 212 | 259 |
| 213 TEST_F(ClipboardTest, MultiFormatTest) { | 260 TEST_F(ClipboardTest, MultiFormatTest) { |
| 214 Clipboard clipboard; | 261 Clipboard clipboard; |
| 215 | 262 |
| 216 string16 text(ASCIIToUTF16("Hi!")), text_result; | 263 string16 text(ASCIIToUTF16("Hi!")), text_result; |
| 217 string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result; | 264 string16 markup(ASCIIToUTF16("<strong>Hi!</string>")), markup_result; |
| 218 std::string url("http://www.example.com/"), url_result; | 265 std::string url("http://www.example.com/"), url_result; |
| 219 std::string ascii_text; | 266 std::string ascii_text; |
| 220 | 267 |
| 221 { | 268 { |
| 222 ScopedClipboardWriter clipboard_writer(&clipboard); | 269 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 270 Clipboard::BUFFER_STANDARD); |
| 223 clipboard_writer.WriteHTML(markup, url); | 271 clipboard_writer.WriteHTML(markup, url); |
| 224 clipboard_writer.WriteText(text); | 272 clipboard_writer.WriteText(text); |
| 225 } | 273 } |
| 226 | 274 |
| 227 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 275 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 228 Clipboard::BUFFER_STANDARD)); | 276 Clipboard::BUFFER_STANDARD)); |
| 229 EXPECT_TRUE(clipboard.IsFormatAvailable( | 277 EXPECT_TRUE(clipboard.IsFormatAvailable( |
| 230 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); | 278 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); |
| 231 EXPECT_TRUE(clipboard.IsFormatAvailable( | 279 EXPECT_TRUE(clipboard.IsFormatAvailable( |
| 232 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD)); | 280 Clipboard::GetPlainTextFormatType(), Clipboard::BUFFER_STANDARD)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 244 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); | 292 clipboard.ReadAsciiText(Clipboard::BUFFER_STANDARD, &ascii_text); |
| 245 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); | 293 EXPECT_EQ(UTF16ToUTF8(text), ascii_text); |
| 246 } | 294 } |
| 247 | 295 |
| 248 TEST_F(ClipboardTest, URLTest) { | 296 TEST_F(ClipboardTest, URLTest) { |
| 249 Clipboard clipboard; | 297 Clipboard clipboard; |
| 250 | 298 |
| 251 string16 url(ASCIIToUTF16("http://www.google.com/")); | 299 string16 url(ASCIIToUTF16("http://www.google.com/")); |
| 252 | 300 |
| 253 { | 301 { |
| 254 ScopedClipboardWriter clipboard_writer(&clipboard); | 302 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 303 Clipboard::BUFFER_STANDARD); |
| 255 clipboard_writer.WriteURL(url); | 304 clipboard_writer.WriteURL(url); |
| 256 } | 305 } |
| 257 | 306 |
| 258 EXPECT_TRUE(clipboard.IsFormatAvailable( | 307 EXPECT_TRUE(clipboard.IsFormatAvailable( |
| 259 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); | 308 Clipboard::GetPlainTextWFormatType(), Clipboard::BUFFER_STANDARD)); |
| 260 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), | 309 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetPlainTextFormatType(), |
| 261 Clipboard::BUFFER_STANDARD)); | 310 Clipboard::BUFFER_STANDARD)); |
| 262 string16 text_result; | 311 string16 text_result; |
| 263 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); | 312 clipboard.ReadText(Clipboard::BUFFER_STANDARD, &text_result); |
| 264 | 313 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 | 354 |
| 306 Clipboard::ObjectMapParams params; | 355 Clipboard::ObjectMapParams params; |
| 307 params.push_back(placeholder_param); | 356 params.push_back(placeholder_param); |
| 308 params.push_back(size_param); | 357 params.push_back(size_param); |
| 309 | 358 |
| 310 Clipboard::ObjectMap objects; | 359 Clipboard::ObjectMap objects; |
| 311 objects[Clipboard::CBF_SMBITMAP] = params; | 360 objects[Clipboard::CBF_SMBITMAP] = params; |
| 312 Clipboard::ReplaceSharedMemHandle(&objects, handle_to_share, current_process); | 361 Clipboard::ReplaceSharedMemHandle(&objects, handle_to_share, current_process); |
| 313 | 362 |
| 314 Clipboard clipboard; | 363 Clipboard clipboard; |
| 315 clipboard.WriteObjects(objects); | 364 clipboard.WriteObjects(Clipboard::BUFFER_STANDARD, objects); |
| 316 | 365 |
| 317 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), | 366 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), |
| 318 Clipboard::BUFFER_STANDARD)); | 367 Clipboard::BUFFER_STANDARD)); |
| 319 } | 368 } |
| 320 | 369 |
| 321 // The following test somehow fails on GTK. The image when read back from the | 370 // The following test somehow fails on GTK. The image when read back from the |
| 322 // clipboard has the alpha channel set to 0xFF for some reason. The other | 371 // clipboard has the alpha channel set to 0xFF for some reason. The other |
| 323 // channels stay intact. So I am turning this on only for aura. | 372 // channels stay intact. So I am turning this on only for aura. |
| 324 #if defined(USE_AURA) | 373 #if defined(USE_AURA) |
| 325 TEST_F(ClipboardTest, MultipleBitmapReadWriteTest) { | 374 TEST_F(ClipboardTest, MultipleBitmapReadWriteTest) { |
| 326 Clipboard clipboard; | 375 Clipboard clipboard; |
| 327 | 376 |
| 328 // Test first bitmap | 377 // Test first bitmap |
| 329 unsigned int fake_bitmap_1[] = { | 378 unsigned int fake_bitmap_1[] = { |
| 330 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, | 379 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, |
| 331 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, | 380 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, |
| 332 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, | 381 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, |
| 333 }; | 382 }; |
| 334 gfx::Size fake_bitmap_1_size(3, 4); | 383 gfx::Size fake_bitmap_1_size(3, 4); |
| 335 { | 384 { |
| 336 ScopedClipboardWriter clipboard_writer(&clipboard); | 385 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 386 Clipboard::BUFFER_STANDARD); |
| 337 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_1, fake_bitmap_1_size); | 387 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_1, fake_bitmap_1_size); |
| 338 } | 388 } |
| 339 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), | 389 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), |
| 340 Clipboard::BUFFER_STANDARD)); | 390 Clipboard::BUFFER_STANDARD)); |
| 341 SkBitmap image_1 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); | 391 SkBitmap image_1 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); |
| 342 EXPECT_EQ(fake_bitmap_1_size, gfx::Size(image_1.width(), image_1.height())); | 392 EXPECT_EQ(fake_bitmap_1_size, gfx::Size(image_1.width(), image_1.height())); |
| 343 unsigned int* pixels_1 = reinterpret_cast<unsigned int*>(image_1.getPixels()); | 393 unsigned int* pixels_1 = reinterpret_cast<unsigned int*>(image_1.getPixels()); |
| 344 for (int i = 0; i < fake_bitmap_1_size.width(); ++i) { | 394 for (int i = 0; i < fake_bitmap_1_size.width(); ++i) { |
| 345 for (int j = 0; j < fake_bitmap_1_size.height(); ++j) { | 395 for (int j = 0; j < fake_bitmap_1_size.height(); ++j) { |
| 346 int id = i * fake_bitmap_1_size.height() + j; | 396 int id = i * fake_bitmap_1_size.height() + j; |
| 347 EXPECT_EQ(fake_bitmap_1[id], pixels_1[id]); | 397 EXPECT_EQ(fake_bitmap_1[id], pixels_1[id]); |
| 348 } | 398 } |
| 349 } | 399 } |
| 350 | 400 |
| 351 // Test second bitmap | 401 // Test second bitmap |
| 352 unsigned int fake_bitmap_2[] = { | 402 unsigned int fake_bitmap_2[] = { |
| 353 0x46155189, 0xF6A55C8D, | 403 0x46155189, 0xF6A55C8D, |
| 354 0x79845674, 0xFA57BD89, | 404 0x79845674, 0xFA57BD89, |
| 355 0x78FD46AE, 0x87C64F5A, | 405 0x78FD46AE, 0x87C64F5A, |
| 356 0x36EDC5AF, 0x4378F568, | 406 0x36EDC5AF, 0x4378F568, |
| 357 0x91E9F63A, 0xC31EA14F, | 407 0x91E9F63A, 0xC31EA14F, |
| 358 0x69AB32DF, 0x643A3FD1, | 408 0x69AB32DF, 0x643A3FD1, |
| 359 0xA6DF041D, 0x83046278, | 409 0xA6DF041D, 0x83046278, |
| 360 }; | 410 }; |
| 361 gfx::Size fake_bitmap_2_size(7, 2); | 411 gfx::Size fake_bitmap_2_size(7, 2); |
| 362 { | 412 { |
| 363 ScopedClipboardWriter clipboard_writer(&clipboard); | 413 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 414 Clipboard::BUFFER_STANDARD); |
| 364 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_2, fake_bitmap_2_size); | 415 clipboard_writer.WriteBitmapFromPixels(fake_bitmap_2, fake_bitmap_2_size); |
| 365 } | 416 } |
| 366 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), | 417 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), |
| 367 Clipboard::BUFFER_STANDARD)); | 418 Clipboard::BUFFER_STANDARD)); |
| 368 SkBitmap image_2 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); | 419 SkBitmap image_2 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); |
| 369 EXPECT_EQ(fake_bitmap_2_size, gfx::Size(image_2.width(), image_2.height())); | 420 EXPECT_EQ(fake_bitmap_2_size, gfx::Size(image_2.width(), image_2.height())); |
| 370 unsigned int* pixels_2 = reinterpret_cast<unsigned int*>(image_2.getPixels()); | 421 unsigned int* pixels_2 = reinterpret_cast<unsigned int*>(image_2.getPixels()); |
| 371 for (int i = 0; i < fake_bitmap_2_size.width(); ++i) { | 422 for (int i = 0; i < fake_bitmap_2_size.width(); ++i) { |
| 372 for (int j = 0; j < fake_bitmap_2_size.height(); ++j) { | 423 for (int j = 0; j < fake_bitmap_2_size.height(); ++j) { |
| 373 int id = i * fake_bitmap_2_size.height() + j; | 424 int id = i * fake_bitmap_2_size.height() + j; |
| 374 EXPECT_EQ(fake_bitmap_2[id], pixels_2[id]); | 425 EXPECT_EQ(fake_bitmap_2[id], pixels_2[id]); |
| 375 } | 426 } |
| 376 } | 427 } |
| 377 } | 428 } |
| 378 #endif | 429 #endif |
| 379 | 430 |
| 380 TEST_F(ClipboardTest, DataTest) { | 431 TEST_F(ClipboardTest, DataTest) { |
| 381 Clipboard clipboard; | 432 Clipboard clipboard; |
| 382 const ui::Clipboard::FormatType kFormat = | 433 const ui::Clipboard::FormatType kFormat = |
| 383 ui::Clipboard::GetFormatType("chromium/x-test-format"); | 434 ui::Clipboard::GetFormatType("chromium/x-test-format"); |
| 384 std::string payload("test string"); | 435 std::string payload("test string"); |
| 385 Pickle write_pickle; | 436 Pickle write_pickle; |
| 386 write_pickle.WriteString(payload); | 437 write_pickle.WriteString(payload); |
| 387 | 438 |
| 388 { | 439 { |
| 389 ScopedClipboardWriter clipboard_writer(&clipboard); | 440 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 441 Clipboard::BUFFER_STANDARD); |
| 390 clipboard_writer.WritePickledData(write_pickle, kFormat); | 442 clipboard_writer.WritePickledData(write_pickle, kFormat); |
| 391 } | 443 } |
| 392 | 444 |
| 393 ASSERT_TRUE(clipboard.IsFormatAvailable( | 445 ASSERT_TRUE(clipboard.IsFormatAvailable( |
| 394 kFormat, Clipboard::BUFFER_STANDARD)); | 446 kFormat, Clipboard::BUFFER_STANDARD)); |
| 395 std::string output; | 447 std::string output; |
| 396 clipboard.ReadData(kFormat, &output); | 448 clipboard.ReadData(kFormat, &output); |
| 397 ASSERT_FALSE(output.empty()); | 449 ASSERT_FALSE(output.empty()); |
| 398 | 450 |
| 399 Pickle read_pickle(output.data(), output.size()); | 451 Pickle read_pickle(output.data(), output.size()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 411 Pickle write_pickle1; | 463 Pickle write_pickle1; |
| 412 write_pickle1.WriteString(payload1); | 464 write_pickle1.WriteString(payload1); |
| 413 | 465 |
| 414 const ui::Clipboard::FormatType kFormat2 = | 466 const ui::Clipboard::FormatType kFormat2 = |
| 415 ui::Clipboard::GetFormatType("chromium/x-test-format2"); | 467 ui::Clipboard::GetFormatType("chromium/x-test-format2"); |
| 416 std::string payload2("test string2"); | 468 std::string payload2("test string2"); |
| 417 Pickle write_pickle2; | 469 Pickle write_pickle2; |
| 418 write_pickle2.WriteString(payload2); | 470 write_pickle2.WriteString(payload2); |
| 419 | 471 |
| 420 { | 472 { |
| 421 ScopedClipboardWriter clipboard_writer(&clipboard); | 473 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 474 Clipboard::BUFFER_STANDARD); |
| 422 clipboard_writer.WritePickledData(write_pickle1, kFormat1); | 475 clipboard_writer.WritePickledData(write_pickle1, kFormat1); |
| 423 // overwrite the previous pickle for fun | 476 // overwrite the previous pickle for fun |
| 424 clipboard_writer.WritePickledData(write_pickle2, kFormat2); | 477 clipboard_writer.WritePickledData(write_pickle2, kFormat2); |
| 425 } | 478 } |
| 426 | 479 |
| 427 ASSERT_TRUE(clipboard.IsFormatAvailable( | 480 ASSERT_TRUE(clipboard.IsFormatAvailable( |
| 428 kFormat2, Clipboard::BUFFER_STANDARD)); | 481 kFormat2, Clipboard::BUFFER_STANDARD)); |
| 429 | 482 |
| 430 // Check string 2. | 483 // Check string 2. |
| 431 std::string output2; | 484 std::string output2; |
| 432 clipboard.ReadData(kFormat2, &output2); | 485 clipboard.ReadData(kFormat2, &output2); |
| 433 ASSERT_FALSE(output2.empty()); | 486 ASSERT_FALSE(output2.empty()); |
| 434 | 487 |
| 435 Pickle read_pickle2(output2.data(), output2.size()); | 488 Pickle read_pickle2(output2.data(), output2.size()); |
| 436 void* iter2 = NULL; | 489 void* iter2 = NULL; |
| 437 std::string unpickled_string2; | 490 std::string unpickled_string2; |
| 438 ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2)); | 491 ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2)); |
| 439 EXPECT_EQ(payload2, unpickled_string2); | 492 EXPECT_EQ(payload2, unpickled_string2); |
| 440 | 493 |
| 441 { | 494 { |
| 442 ScopedClipboardWriter clipboard_writer(&clipboard); | 495 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 496 Clipboard::BUFFER_STANDARD); |
| 443 clipboard_writer.WritePickledData(write_pickle2, kFormat2); | 497 clipboard_writer.WritePickledData(write_pickle2, kFormat2); |
| 444 // overwrite the previous pickle for fun | 498 // overwrite the previous pickle for fun |
| 445 clipboard_writer.WritePickledData(write_pickle1, kFormat1); | 499 clipboard_writer.WritePickledData(write_pickle1, kFormat1); |
| 446 } | 500 } |
| 447 | 501 |
| 448 ASSERT_TRUE(clipboard.IsFormatAvailable( | 502 ASSERT_TRUE(clipboard.IsFormatAvailable( |
| 449 kFormat1, Clipboard::BUFFER_STANDARD)); | 503 kFormat1, Clipboard::BUFFER_STANDARD)); |
| 450 | 504 |
| 451 // Check string 1. | 505 // Check string 1. |
| 452 std::string output1; | 506 std::string output1; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 465 Clipboard clipboard; | 519 Clipboard clipboard; |
| 466 | 520 |
| 467 const std::string kTitle("The Example Company"); | 521 const std::string kTitle("The Example Company"); |
| 468 const std::string kUrl("http://www.example.com/"); | 522 const std::string kUrl("http://www.example.com/"); |
| 469 const std::string kExpectedHtml("<a href=\"http://www.example.com/\">" | 523 const std::string kExpectedHtml("<a href=\"http://www.example.com/\">" |
| 470 "The Example Company</a>"); | 524 "The Example Company</a>"); |
| 471 std::string url_result; | 525 std::string url_result; |
| 472 string16 html_result; | 526 string16 html_result; |
| 473 | 527 |
| 474 { | 528 { |
| 475 ScopedClipboardWriter clipboard_writer(&clipboard); | 529 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 530 Clipboard::BUFFER_STANDARD); |
| 476 clipboard_writer.WriteHyperlink(ASCIIToUTF16(kTitle), kUrl); | 531 clipboard_writer.WriteHyperlink(ASCIIToUTF16(kTitle), kUrl); |
| 477 } | 532 } |
| 478 | 533 |
| 479 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), | 534 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetHtmlFormatType(), |
| 480 Clipboard::BUFFER_STANDARD)); | 535 Clipboard::BUFFER_STANDARD)); |
| 481 uint32 ignored; | 536 uint32 ignored; |
| 482 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &html_result, &url_result, | 537 clipboard.ReadHTML(Clipboard::BUFFER_STANDARD, &html_result, &url_result, |
| 483 &ignored, &ignored); | 538 &ignored, &ignored); |
| 484 EXPECT_PRED2(MarkupMatches, ASCIIToUTF16(kExpectedHtml), html_result); | 539 EXPECT_PRED2(MarkupMatches, ASCIIToUTF16(kExpectedHtml), html_result); |
| 485 } | 540 } |
| 486 | 541 |
| 487 TEST_F(ClipboardTest, WebSmartPasteTest) { | 542 TEST_F(ClipboardTest, WebSmartPasteTest) { |
| 488 Clipboard clipboard; | 543 Clipboard clipboard; |
| 489 | 544 |
| 490 { | 545 { |
| 491 ScopedClipboardWriter clipboard_writer(&clipboard); | 546 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 547 Clipboard::BUFFER_STANDARD); |
| 492 clipboard_writer.WriteWebSmartPaste(); | 548 clipboard_writer.WriteWebSmartPaste(); |
| 493 } | 549 } |
| 494 | 550 |
| 495 EXPECT_TRUE(clipboard.IsFormatAvailable( | 551 EXPECT_TRUE(clipboard.IsFormatAvailable( |
| 496 Clipboard::GetWebKitSmartPasteFormatType(), Clipboard::BUFFER_STANDARD)); | 552 Clipboard::GetWebKitSmartPasteFormatType(), Clipboard::BUFFER_STANDARD)); |
| 497 } | 553 } |
| 498 | 554 |
| 499 TEST_F(ClipboardTest, BitmapTest) { | 555 TEST_F(ClipboardTest, BitmapTest) { |
| 500 unsigned int fake_bitmap[] = { | 556 unsigned int fake_bitmap[] = { |
| 501 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, | 557 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, |
| 502 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, | 558 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, |
| 503 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, | 559 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, |
| 504 }; | 560 }; |
| 505 | 561 |
| 506 Clipboard clipboard; | 562 Clipboard clipboard; |
| 507 | 563 |
| 508 { | 564 { |
| 509 ScopedClipboardWriter clipboard_writer(&clipboard); | 565 ScopedClipboardWriter clipboard_writer(&clipboard, |
| 566 Clipboard::BUFFER_STANDARD); |
| 510 clipboard_writer.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4)); | 567 clipboard_writer.WriteBitmapFromPixels(fake_bitmap, gfx::Size(3, 4)); |
| 511 } | 568 } |
| 512 | 569 |
| 513 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), | 570 EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), |
| 514 Clipboard::BUFFER_STANDARD)); | 571 Clipboard::BUFFER_STANDARD)); |
| 515 } | 572 } |
| 516 | 573 |
| 517 void HtmlTestHelper(const std::string& cf_html, | 574 void HtmlTestHelper(const std::string& cf_html, |
| 518 const std::string& expected_html) { | 575 const std::string& expected_html) { |
| 519 std::string html; | 576 std::string html; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 "</html>\r\n\r\n", | 612 "</html>\r\n\r\n", |
| 556 "<p>Foo</p>"); | 613 "<p>Foo</p>"); |
| 557 } | 614 } |
| 558 #endif // defined(OS_WIN) | 615 #endif // defined(OS_WIN) |
| 559 | 616 |
| 560 // Test writing all formats we have simultaneously. | 617 // Test writing all formats we have simultaneously. |
| 561 TEST_F(ClipboardTest, WriteEverything) { | 618 TEST_F(ClipboardTest, WriteEverything) { |
| 562 Clipboard clipboard; | 619 Clipboard clipboard; |
| 563 | 620 |
| 564 { | 621 { |
| 565 ScopedClipboardWriter writer(&clipboard); | 622 ScopedClipboardWriter writer(&clipboard, Clipboard::BUFFER_STANDARD); |
| 566 writer.WriteText(UTF8ToUTF16("foo")); | 623 writer.WriteText(UTF8ToUTF16("foo")); |
| 567 writer.WriteURL(UTF8ToUTF16("foo")); | 624 writer.WriteURL(UTF8ToUTF16("foo")); |
| 568 writer.WriteHTML(UTF8ToUTF16("foo"), "bar"); | 625 writer.WriteHTML(UTF8ToUTF16("foo"), "bar"); |
| 569 writer.WriteBookmark(UTF8ToUTF16("foo"), "bar"); | 626 writer.WriteBookmark(UTF8ToUTF16("foo"), "bar"); |
| 570 writer.WriteHyperlink(ASCIIToUTF16("foo"), "bar"); | 627 writer.WriteHyperlink(ASCIIToUTF16("foo"), "bar"); |
| 571 writer.WriteWebSmartPaste(); | 628 writer.WriteWebSmartPaste(); |
| 572 // Left out: WriteFile, WriteFiles, WriteBitmapFromPixels, WritePickledData. | 629 // Left out: WriteFile, WriteFiles, WriteBitmapFromPixels, WritePickledData. |
| 573 } | 630 } |
| 574 | 631 |
| 575 // Passes if we don't crash. | 632 // Passes if we don't crash. |
| 576 } | 633 } |
| 577 | 634 |
| 578 } // namespace ui | 635 } // namespace ui |
| OLD | NEW |