110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// Copyright (c) 2011 The Chromium Authors. All rights reserved.
210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// found in the LICENSE file.
410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "ppapi/tests/test_cursor_control.h"
610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "ppapi/c/dev/ppb_cursor_control_dev.h"
810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "ppapi/cpp/module.h"
910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "ppapi/tests/testing_instance.h"
1010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)REGISTER_TEST_CASE(CursorControl);
12e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
1310f88d5669dbd969c059d61ba09fa37dd72ac559Ben MurdochTestCursorControl::TestCursorControl(TestingInstance* instance)
1410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    : TestCase(instance),
1510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch      cursor_control_interface_(NULL) {
1610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
1710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
1810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochbool TestCursorControl::Init() {
1910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  cursor_control_interface_ = static_cast<const PPB_CursorControl_Dev*>(
2010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch      pp::Module::Get()->GetBrowserInterface(PPB_CURSOR_CONTROL_DEV_INTERFACE));
21e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  return !!cursor_control_interface_;
2210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
2310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
2410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochvoid TestCursorControl::RunTests(const std::string& filter) {
2510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  RUN_TEST(SetCursor, filter);
2610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
2710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
2810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochstd::string TestCursorControl::TestSetCursor() {
2910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  // Very simplistic test to make sure we can actually call the function and
3010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  // it reports success. This is a nice integration test to make sure the
3110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  // interface is hooked up. Obviously it's not easy in a plugin to test whether
3210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  // the mouse cursor actually changed.
3310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  ASSERT_TRUE(cursor_control_interface_->SetCursor(instance_->pp_instance(),
3410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch      PP_CURSORTYPE_WAIT, 0, NULL));
3510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
3610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  PASS();
37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)}
3810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch