| Index: webkit/glue/webcursor_unittest.cc
|
| ===================================================================
|
| --- webkit/glue/webcursor_unittest.cc (revision 58015)
|
| +++ webkit/glue/webcursor_unittest.cc (working copy)
|
| @@ -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 @@
|
| 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));
|
| +
|
| + // 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));
|
| +}
|
|
|