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

Unified Diff: ui/base/clipboard/clipboard_unittest.cc

Issue 8364037: Implement clipboard for aura and re-enable clipboard_unittests. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: minor changes Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698