// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ppapi/tests/test_mouse_cursor.h" #include "ppapi/cpp/image_data.h" #include "ppapi/tests/test_case.h" #include "ppapi/tests/testing_instance.h" REGISTER_TEST_CASE(MouseCursor); TestMouseCursor::TestMouseCursor(TestingInstance* instance) : TestCase(instance) { } bool TestMouseCursor::Init() { mouse_cursor_interface_ = static_cast( pp::Module::Get()->GetBrowserInterface(PPB_MOUSECURSOR_INTERFACE)); return !!mouse_cursor_interface_; } void TestMouseCursor::RunTests(const std::string& filter) { RUN_TEST(Type, filter); RUN_TEST(Custom, filter); RUN_TEST(Point, filter); } std::string TestMouseCursor::TestType() { ASSERT_TRUE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_POINTER, 0, NULL))); ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), static_cast(-2), 0, NULL))); PASS(); } std::string TestMouseCursor::TestCustom() { // First test a valid image. pp::ImageData valid_image(instance_, pp::ImageData::GetNativeImageDataFormat(), pp::Size(16, 16), true); PP_Point point = { 0, 0 }; ASSERT_TRUE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM, valid_image.pp_resource(), &point))); // 0 image resource ID. ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM, 0, NULL))); // Image specified for predefined type. ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_POINTER, valid_image.pp_resource(), &point))); // A too-big image. pp::ImageData big_image(instance_, pp::ImageData::GetNativeImageDataFormat(), pp::Size(65, 12), true); ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM, big_image.pp_resource(), &point))); PASS(); } std::string TestMouseCursor::TestPoint() { pp::ImageData valid_image(instance_, pp::ImageData::GetNativeImageDataFormat(), pp::Size(16, 16), true); PP_Point point = { -1, 0 }; ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM, valid_image.pp_resource(), &point))); point.x = 67; point.y = 5; ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor( instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM, valid_image.pp_resource(), &point))); PASS(); }