Pepper_47_C++_interfaces
mouse_lock.cc
Go to the documentation of this file.
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ppapi/cpp/mouse_lock.h"
6 
7 #include "ppapi/c/ppb_mouse_lock.h"
8 #include "ppapi/c/ppp_mouse_lock.h"
10 #include "ppapi/cpp/instance.h"
12 #include "ppapi/cpp/module.h"
13 #include "ppapi/cpp/module_impl.h"
14 
15 namespace pp {
16 
17 namespace {
18 
19 static const char kPPPMouseLockInterface[] = PPP_MOUSELOCK_INTERFACE;
20 
21 void MouseLockLost(PP_Instance instance) {
22  void* object =
23  Instance::GetPerInstanceObject(instance, kPPPMouseLockInterface);
24  if (!object)
25  return;
26  static_cast<MouseLock*>(object)->MouseLockLost();
27 }
28 
29 const PPP_MouseLock ppp_mouse_lock = {
30  &MouseLockLost
31 };
32 
33 template <> const char* interface_name<PPB_MouseLock_1_0>() {
34  return PPB_MOUSELOCK_INTERFACE_1_0;
35 }
36 
37 } // namespace
38 
40  : associated_instance_(instance) {
41  Module::Get()->AddPluginInterface(kPPPMouseLockInterface, &ppp_mouse_lock);
42  instance->AddPerInstanceObject(kPPPMouseLockInterface, this);
43 }
44 
46  Instance::RemovePerInstanceObject(associated_instance_,
47  kPPPMouseLockInterface, this);
48 }
49 
51  if (!has_interface<PPB_MouseLock_1_0>())
52  return cc.MayForce(PP_ERROR_NOINTERFACE);
53  return get_interface<PPB_MouseLock_1_0>()->LockMouse(
54  associated_instance_.pp_instance(), cc.pp_completion_callback());
55 }
56 
58  if (has_interface<PPB_MouseLock_1_0>()) {
59  get_interface<PPB_MouseLock_1_0>()->UnlockMouse(
60  associated_instance_.pp_instance());
61  }
62 }
63 
64 } // namespace pp
virtual ~MouseLock()
Destructor.
Definition: mouse_lock.cc:45
int32_t MayForce(int32_t result) const
const PP_CompletionCallback & pp_completion_callback() const
void AddPluginInterface(const std::string &interface_name, const void *vtable)
Definition: module.cc:190
void RemovePerInstanceObject(const std::string &interface_name, void *object)
Definition: instance.cc:219
int32_t LockMouse(const CompletionCallback &cc)
Definition: mouse_lock.cc:50
MouseLock(Instance *instance)
Definition: mouse_lock.cc:39
void UnlockMouse()
Definition: mouse_lock.cc:57
static void * GetPerInstanceObject(PP_Instance instance, const std::string &interface_name)
Definition: instance.cc:249
void AddPerInstanceObject(const std::string &interface_name, void *object)
Definition: instance.cc:210
PP_Instance pp_instance() const
static Module * Get()