Chromium Code Reviews| Index: ui/base/clipboard/clipboard_unittest.cc |
| diff --git a/ui/base/clipboard/clipboard_unittest.cc b/ui/base/clipboard/clipboard_unittest.cc |
| index 550254b6c9cb628d0aaf2af33ebcf861e40c53ce..59252d9304d9336f1aa22a9a9ec08b176d33552d 100644 |
| --- a/ui/base/clipboard/clipboard_unittest.cc |
| +++ b/ui/base/clipboard/clipboard_unittest.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/utf_string_conversions.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "testing/platform_test.h" |
| +#include "third_party/skia/include/core/SkBitmap.h" |
| #include "ui/base/clipboard/clipboard.h" |
| #include "ui/base/clipboard/scoped_clipboard_writer.h" |
| #include "ui/gfx/size.h" |
| @@ -293,6 +294,65 @@ TEST_F(ClipboardTest, SharedBitmapTest) { |
| Clipboard::BUFFER_STANDARD)); |
| } |
| +// The following test somehow fails on GTK. The image when read back from the |
| +// clipboard has the alpha channel set to 0xFF for some reason. The other |
| +// channels stay intact. So I am turning this on only for aura. |
|
oshima
2011/10/24 23:31:26
how about other platforms such as mac and win?
varunjain
2011/10/25 21:04:40
it passes the trybot win_aura. So I think it is ok
|
| +#if defined(USE_AURA) |
| +TEST_F(ClipboardTest, MultipleBitmapReadWriteTest) { |
| + Clipboard clipboard; |
| + |
| + // Test first bitmap |
| + unsigned int fake_bitmap_1[] = { |
| + 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89, |
| + 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568, |
| + 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1, |
| + }; |
| + gfx::Size fake_bitmap_1_size(3, 4); |
| + { |
| + ScopedClipboardWriter clipboard_writer(&clipboard); |
| + clipboard_writer.WriteBitmapFromPixels(fake_bitmap_1, fake_bitmap_1_size); |
| + } |
| + EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), |
| + Clipboard::BUFFER_STANDARD)); |
| + SkBitmap image_1 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); |
| + EXPECT_EQ(fake_bitmap_1_size, gfx::Size(image_1.width(), image_1.height())); |
| + unsigned int* pixels_1 = reinterpret_cast<unsigned int*>(image_1.getPixels()); |
| + for (int i = 0; i < fake_bitmap_1_size.width(); ++i) { |
| + for (int j = 0; j < fake_bitmap_1_size.height(); ++j) { |
| + int id = i * fake_bitmap_1_size.height() + j; |
| + EXPECT_EQ(fake_bitmap_1[id], pixels_1[id]); |
| + } |
| + } |
| + |
| + // Test second bitmap |
| + unsigned int fake_bitmap_2[] = { |
| + 0x46155189, 0xF6A55C8D, |
| + 0x79845674, 0xFA57BD89, |
| + 0x78FD46AE, 0x87C64F5A, |
| + 0x36EDC5AF, 0x4378F568, |
| + 0x91E9F63A, 0xC31EA14F, |
| + 0x69AB32DF, 0x643A3FD1, |
| + 0xA6DF041D, 0x83046278, |
| + }; |
| + gfx::Size fake_bitmap_2_size(7, 2); |
| + { |
| + ScopedClipboardWriter clipboard_writer(&clipboard); |
| + clipboard_writer.WriteBitmapFromPixels(fake_bitmap_2, fake_bitmap_2_size); |
| + } |
| + EXPECT_TRUE(clipboard.IsFormatAvailable(Clipboard::GetBitmapFormatType(), |
| + Clipboard::BUFFER_STANDARD)); |
| + SkBitmap image_2 = clipboard.ReadImage(Clipboard::BUFFER_STANDARD); |
| + EXPECT_EQ(fake_bitmap_2_size, gfx::Size(image_2.width(), image_2.height())); |
| + unsigned int* pixels_2 = reinterpret_cast<unsigned int*>(image_2.getPixels()); |
| + for (int i = 0; i < fake_bitmap_2_size.width(); ++i) { |
| + for (int j = 0; j < fake_bitmap_2_size.height(); ++j) { |
| + int id = i * fake_bitmap_2_size.height() + j; |
| + EXPECT_EQ(fake_bitmap_2[id], pixels_2[id]); |
| + } |
| + } |
| +} |
| +#endif |
| + |
| #if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MACOSX)) |
| TEST_F(ClipboardTest, DataTest) { |
| Clipboard clipboard; |
| @@ -318,6 +378,61 @@ TEST_F(ClipboardTest, DataTest) { |
| ASSERT_TRUE(read_pickle.ReadString(&iter, &unpickled_string)); |
| EXPECT_EQ(payload, unpickled_string); |
| } |
| + |
| +TEST_F(ClipboardTest, MultipleDataTest) { |
| + Clipboard clipboard; |
| + const char* kFormat1 = "chromium/x-test-format1"; |
| + std::string payload1("test string1"); |
| + Pickle write_pickle1; |
| + write_pickle1.WriteString(payload1); |
| + |
| + const char* kFormat2 = "chromium/x-test-format2"; |
| + std::string payload2("test string2"); |
| + Pickle write_pickle2; |
| + write_pickle2.WriteString(payload2); |
| + |
| + { |
| + ScopedClipboardWriter clipboard_writer(&clipboard); |
| + clipboard_writer.WritePickledData(write_pickle1, kFormat1); |
| + // overwrite the previous pickle for fun |
| + clipboard_writer.WritePickledData(write_pickle2, kFormat2); |
| + } |
| + |
| + ASSERT_TRUE(clipboard.IsFormatAvailableByString( |
| + kFormat2, Clipboard::BUFFER_STANDARD)); |
| + |
| + // Check string 2. |
| + std::string output2; |
| + clipboard.ReadData(kFormat2, &output2); |
| + ASSERT_FALSE(output2.empty()); |
| + |
| + Pickle read_pickle2(output2.data(), output2.size()); |
| + void* iter2 = NULL; |
| + std::string unpickled_string2; |
| + ASSERT_TRUE(read_pickle2.ReadString(&iter2, &unpickled_string2)); |
| + EXPECT_EQ(payload2, unpickled_string2); |
| + |
| + { |
| + ScopedClipboardWriter clipboard_writer(&clipboard); |
| + clipboard_writer.WritePickledData(write_pickle2, kFormat2); |
| + // overwrite the previous pickle for fun |
| + clipboard_writer.WritePickledData(write_pickle1, kFormat1); |
| + } |
| + |
| + ASSERT_TRUE(clipboard.IsFormatAvailableByString( |
| + kFormat1, Clipboard::BUFFER_STANDARD)); |
| + |
| + // Check string 1. |
| + std::string output1; |
| + clipboard.ReadData(kFormat1, &output1); |
| + ASSERT_FALSE(output1.empty()); |
| + |
| + Pickle read_pickle1(output1.data(), output1.size()); |
| + void* iter1 = NULL; |
| + std::string unpickled_string1; |
| + ASSERT_TRUE(read_pickle1.ReadString(&iter1, &unpickled_string1)); |
| + EXPECT_EQ(payload1, unpickled_string1); |
| +} |
| #endif |
| #if defined(OS_WIN) // Windows only tests. |