Chromium Code Reviews| Index: webkit/glue/webcursor_unittest.cc |
| diff --git a/webkit/glue/webcursor_unittest.cc b/webkit/glue/webcursor_unittest.cc |
| index 5c1ddfe04053571a2f2e1a1fb494f09e9d71ab00..6e7701d8f14a37f71247be2f5b40e53eb668170b 100644 |
| --- a/webkit/glue/webcursor_unittest.cc |
| +++ b/webkit/glue/webcursor_unittest.cc |
| @@ -4,9 +4,12 @@ |
| #include "base/pickle.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "third_party/WebKit/WebKit/chromium/public/WebCursorInfo.h" |
| #include "webkit/glue/webcursor.h" |
| #include "webkit/tools/test_shell/test_shell_test.h" |
| +using WebKit::WebCursorInfo; |
| + |
| TEST(WebCursorTest, CursorSerialization) { |
| WebCursor custom_cursor; |
| // This is a valid custom cursor. |
| @@ -80,3 +83,36 @@ TEST(WebCursorTest, CursorSerialization) { |
| EXPECT_FALSE(custom_cursor.Deserialize(&neg_custom_pickle, &iter)); |
| } |
| +TEST(WebCursorTest, ClampHotspot) { |
| + WebCursor custom_cursor; |
| + // This is a valid custom cursor. |
| + Pickle ok_custom_pickle; |
| + // Type and hotspots. |
| + ok_custom_pickle.WriteInt(WebCursorInfo::TypeCustom); |
| + // Hotspot is invalid --- outside the bounds of the image. |
| + ok_custom_pickle.WriteInt(5); |
| + ok_custom_pickle.WriteInt(5); |
| + // X & Y |
| + ok_custom_pickle.WriteInt(2); |
| + ok_custom_pickle.WriteInt(2); |
| + // Data len including enough data for a 2x2 image. |
| + ok_custom_pickle.WriteInt(4 * 4); |
| + for (size_t i = 0; i < 4; i++) |
| + ok_custom_pickle.WriteUInt32(0); |
| + // Custom Windows message. |
| + ok_custom_pickle.WriteUInt32(0); |
| + void* iter = NULL; |
| + ASSERT_TRUE(custom_cursor.Deserialize(&ok_custom_pickle, &iter)); |
|
Evan Martin
2010/08/11 00:01:58
yay correct usage of assert
|
| + |
| + // Convert to WebCursorInfo, make sure the hotspot got clamped. |
| + WebCursorInfo info; |
| + custom_cursor.GetCursorInfo(&info); |
| + EXPECT_EQ(gfx::Point(1, 1), gfx::Point(info.hotSpot)); |
| + |
| + // Set hotspot to an invalid point again, pipe back through WebCursor, |
| + // and make sure the hotspot got clamped again. |
| + info.hotSpot = gfx::Point(-1, -1); |
| + custom_cursor.InitFromCursorInfo(info); |
| + custom_cursor.GetCursorInfo(&info); |
| + EXPECT_EQ(gfx::Point(0, 0), gfx::Point(info.hotSpot)); |
| +} |