7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/c/ppb_console.h"
9 #include "ppapi/c/ppb_input_event.h"
10 #include "ppapi/c/ppb_instance.h"
11 #include "ppapi/c/ppb_messaging.h"
12 #include "ppapi/c/ppp_message_handler.h"
32 template <>
const char* interface_name<PPB_Console_1_0>() {
33 return PPB_CONSOLE_INTERFACE_1_0;
36 template <>
const char* interface_name<PPB_InputEvent_1_0>() {
37 return PPB_INPUT_EVENT_INTERFACE_1_0;
40 template <>
const char* interface_name<PPB_Instance_1_0>() {
41 return PPB_INSTANCE_INTERFACE_1_0;
44 template <>
const char* interface_name<PPB_Messaging_1_0>() {
45 return PPB_MESSAGING_INTERFACE_1_0;
48 template <>
const char* interface_name<PPB_Messaging_1_2>() {
49 return PPB_MESSAGING_INTERFACE_1_2;
53 void HandleMessage(PP_Instance pp_instance,
56 MessageHandler* message_handler =
static_cast<MessageHandler*
>(user_data);
57 message_handler->HandleMessage(InstanceHandle(pp_instance), Var(*var));
60 void HandleBlockingMessage(PP_Instance pp_instance,
64 MessageHandler* message_handler =
static_cast<MessageHandler*
>(user_data);
66 message_handler->HandleBlockingMessage(InstanceHandle(pp_instance),
68 *result = result_var.
Detach();
71 void Destroy(PP_Instance pp_instance,
void* user_data) {
72 MessageHandler* message_handler =
static_cast<MessageHandler*
>(user_data);
73 message_handler->WasUnregistered(InstanceHandle(pp_instance));
76 static PPP_MessageHandler_0_2 message_handler_if = {
77 &HandleMessage, &HandleBlockingMessage, &Destroy
119 if (!has_interface<PPB_Instance_1_0>())
121 return PP_ToBool(get_interface<PPB_Instance_1_0>()->
BindGraphics(
126 if (!has_interface<PPB_Instance_1_0>())
128 return PP_ToBool(get_interface<PPB_Instance_1_0>()->
BindGraphics(
133 if (!has_interface<PPB_Instance_1_0>())
135 return PP_ToBool(get_interface<PPB_Instance_1_0>()->
BindGraphics(
140 if (!has_interface<PPB_Instance_1_0>())
142 return PP_ToBool(get_interface<PPB_Instance_1_0>()->
IsFullFrame(
147 if (!has_interface<PPB_InputEvent_1_0>())
148 return PP_ERROR_NOINTERFACE;
154 if (!has_interface<PPB_InputEvent_1_0>())
155 return PP_ERROR_NOINTERFACE;
161 if (!has_interface<PPB_InputEvent_1_0>())
168 if (has_interface<PPB_Messaging_1_2>()) {
171 }
else if (has_interface<PPB_Messaging_1_0>()) {
179 if (!has_interface<PPB_Messaging_1_2>())
180 return PP_ERROR_NOTSUPPORTED;
189 if (!has_interface<PPB_Messaging_1_2>())
195 if (!has_interface<PPB_Console_1_0>())
197 get_interface<PPB_Console_1_0>()->Log(
204 if (!has_interface<PPB_Console_1_0>())
206 get_interface<PPB_Console_1_0>()->LogWithSource(
214 PP_DCHECK(interface_name_to_objects_.find(interface_name) ==
215 interface_name_to_objects_.end());
216 interface_name_to_objects_[interface_name] = object;
221 InterfaceNameToObjectMap::iterator found = interface_name_to_objects_.find(
223 if (found == interface_name_to_objects_.end()) {
234 interface_name_to_objects_.erase(found);
239 const std::string& interface_name,
250 const std::string& interface_name) {
254 InterfaceNameToObjectMap::iterator found =
255 that->interface_name_to_objects_.find(interface_name);
256 if (found == that->interface_name_to_objects_.end())
258 return found->second;
int32_t RequestInputEvents(uint32_t event_classes)
void PostMessage(const Var &message)
virtual bool Init(uint32_t argc, const char *argn[], const char *argv[])
int32_t RequestFilteringInputEvents(uint32_t event_classes)
virtual void DidChangeView(const View &view)
virtual bool HandleInputEvent(const pp::InputEvent &event)
Instance(PP_Instance instance)
virtual void HandleMessage(const Var &message)
void ClearInputEventRequest(uint32_t event_classes)
This class represents a 3D rendering context in the browser.
void RemovePerInstanceObject(const std::string &interface_name, void *object)
virtual void DidChangeFocus(bool has_focus)
const PP_Var & pp_var() const
int32_t RegisterMessageHandler(MessageHandler *message_handler, const MessageLoop &message_loop)
static void * GetPerInstanceObject(PP_Instance instance, const std::string &interface_name)
bool BindGraphics(const Graphics2D &graphics)
Instance * InstanceForPPInstance(PP_Instance instance)
void AddPerInstanceObject(const std::string &interface_name, void *object)
PP_Instance pp_instance() const
void LogToConsole(PP_LogLevel level, const Var &value)
PP_Resource pp_resource() const
void UnregisterMessageHandler()
void LogToConsoleWithSource(PP_LogLevel level, const Var &source, const Var &value)
A generic type used for passing data types between the module and the page.
PP_Instance pp_instance() const
virtual bool HandleDocumentLoad(const URLLoader &url_loader)