Index: content/common/cursors/webcursor_unittest.cc |
diff --git a/content/common/cursors/webcursor_unittest.cc b/content/common/cursors/webcursor_unittest.cc |
index d05a68f3d88c24d1d2074686dbebb81f8d702b6d..0fd1a751273643fee10b727255d3181223df2bb6 100644 |
--- a/content/common/cursors/webcursor_unittest.cc |
+++ b/content/common/cursors/webcursor_unittest.cc |
@@ -150,7 +150,7 @@ TEST(WebCursorTest, ClampHotspot) { |
// Custom Windows message. |
ok_custom_pickle.WriteUInt32(0); |
base::PickleIterator iter(ok_custom_pickle); |
- ASSERT_TRUE(custom_cursor.Deserialize(&iter)); |
+ EXPECT_TRUE(custom_cursor.Deserialize(&iter)); |
// Convert to WebCursorInfo, make sure the hotspot got clamped. |
WebCursor::CursorInfo info; |
@@ -185,7 +185,7 @@ TEST(WebCursorTest, EmptyImage) { |
// Make sure we can read this on all platforms; it is technicaally a valid |
// cursor. |
base::PickleIterator iter(broken_cursor_pickle); |
- ASSERT_TRUE(custom_cursor.Deserialize(&iter)); |
+ EXPECT_TRUE(custom_cursor.Deserialize(&iter)); |
} |
TEST(WebCursorTest, Scale2) { |
@@ -210,4 +210,38 @@ TEST(WebCursorTest, Scale2) { |
EXPECT_TRUE(custom_cursor.Deserialize(&iter)); |
} |
+TEST(WebCursorTest, AlphaConversion) { |
+ SkBitmap bitmap; |
+ SkPMColor testColor = SkPreMultiplyARGB(10, 255, 255, 255); |
+ bitmap.allocN32Pixels(1,1); |
+ SkAutoLockPixels bitmap_lock(bitmap); |
+ *bitmap.getAddr32(0, 0) = testColor; |
+ WebCursor::CursorInfo cursor_info; |
+ cursor_info.type = WebCursorInfo::TypeCustom; |
+ cursor_info.custom_image = bitmap; |
+ cursor_info.image_scale_factor = 1; |
+ WebCursor custom_cursor; |
+ |
+ // This round trip will convert the cursor to unpremultiplied form |
+ custom_cursor.InitFromCursorInfo(cursor_info); |
+ custom_cursor.GetCursorInfo(&cursor_info); |
+ { |
+ SkAutoLockPixels lock(cursor_info.custom_image); |
+ EXPECT_EQ(kUnpremul_SkAlphaType, cursor_info.custom_image.alphaType()); |
+ EXPECT_EQ(testColor, |
+ SkPreMultiplyColor(*cursor_info.custom_image.getAddr32(0,0))); |
+ } |
+ |
+ // Second round trip should not do any conversion because data is alread |
+ // unpremultiplied |
+ custom_cursor.InitFromCursorInfo(cursor_info); |
+ custom_cursor.GetCursorInfo(&cursor_info); |
+ { |
+ SkAutoLockPixels lock(cursor_info.custom_image); |
+ EXPECT_EQ(kUnpremul_SkAlphaType, cursor_info.custom_image.alphaType()); |
+ EXPECT_EQ(testColor, |
+ SkPreMultiplyColor(*cursor_info.custom_image.getAddr32(0,0))); |
+ } |
+} |
+ |
} // namespace content |