15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/dev/ppb_cursor_control_dev.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/thunk.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/enter.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_instance_api.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This interface is only for temporary backwards compat and currently just
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// forwards to the stable interfaces that implement these features.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunk {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool SetCursor(PP_Instance instance,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  PP_CursorType_Dev type,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  PP_Resource custom_image,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  const PP_Point* hot_spot) {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (enter.failed())
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return PP_FALSE;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return enter.functions()->SetCursor(instance,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      static_cast<PP_MouseCursor_Type>(type), custom_image, hot_spot);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool LockCursor(PP_Instance instance) {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_FALSE;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool UnlockCursor(PP_Instance instance) {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_FALSE;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool HasCursorLock(PP_Instance instance) {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_FALSE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool CanLockCursor(PP_Instance instance) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_FALSE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_CursorControl_Dev g_ppb_cursor_control_thunk = {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &SetCursor,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &LockCursor,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &UnlockCursor,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &HasCursorLock,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &CanLockCursor
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_CursorControl_Dev_0_4* GetPPB_CursorControl_Dev_0_4_Thunk() {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &g_ppb_cursor_control_thunk;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace thunk
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
61