summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authordmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-20 16:03:38 +0000
committerdmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-20 16:03:38 +0000
commit61e3ef3a32dd7b5bd4c8c6b1b3a68ed081101a97 (patch)
treee3e36bb4af1681c01d613cd290e9f13e5308f3f3 /ppapi
parent8d5f3ace1907853bd6e838d4f061c23a526b5384 (diff)
downloadchromium_src-61e3ef3a32dd7b5bd4c8c6b1b3a68ed081101a97.zip
chromium_src-61e3ef3a32dd7b5bd4c8c6b1b3a68ed081101a97.tar.gz
chromium_src-61e3ef3a32dd7b5bd4c8c6b1b3a68ed081101a97.tar.bz2
Remove HandleInputEvent from PPP_Instance and freeze to 1.0.
Note I'm leaving in temporary backwards-compatibility. BUG= http://code.google.com/p/nativeclient/issues/detail?id=2035 TEST=ppapi tests Review URL: http://codereview.chromium.org/7452002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93202 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/api/ppp_instance.idl45
-rw-r--r--ppapi/c/pp_input_event.h38
-rw-r--r--ppapi/c/ppp_instance.h45
-rw-r--r--ppapi/cpp/instance.cc4
-rw-r--r--ppapi/cpp/instance.h5
-rw-r--r--ppapi/cpp/module.cc12
-rw-r--r--ppapi/examples/2d/graphics_2d_example.c7
-rw-r--r--ppapi/examples/2d/paint_manager_example.cc22
-rw-r--r--ppapi/examples/file_chooser/file_chooser.cc15
-rw-r--r--ppapi/proxy/dispatcher.cc2
-rw-r--r--ppapi/proxy/ppapi_messages.h4
-rw-r--r--ppapi/proxy/ppapi_param_traits.cc24
-rw-r--r--ppapi/proxy/ppapi_param_traits.h9
-rw-r--r--ppapi/proxy/ppp_instance_proxy.cc34
-rw-r--r--ppapi/proxy/ppp_instance_proxy.h8
-rw-r--r--ppapi/proxy/ppp_instance_proxy_test.cc35
-rw-r--r--ppapi/shared_impl/ppp_instance_combined.cc14
-rw-r--r--ppapi/shared_impl/ppp_instance_combined.h42
18 files changed, 108 insertions, 257 deletions
diff --git a/ppapi/api/ppp_instance.idl b/ppapi/api/ppp_instance.idl
index da8f7a9..aeb95b1 100644
--- a/ppapi/api/ppp_instance.idl
+++ b/ppapi/api/ppp_instance.idl
@@ -9,7 +9,7 @@
*/
label Chrome {
- M14 = 0.5
+ M14 = 1.0
};
/**
@@ -161,11 +161,13 @@ interface PPP_Instance {
* An instance's default condition is that it will not have focus.
*
* <strong>Note:</strong>Clicks on instances will give focus only if you
- * handle the click event. Return <code>true</code> from HandleInputEvent to
- * signal that the click event was handled. Otherwise the browser will bubble
- * the event and give focus to the element on the page that actually did end
- * up consuming it. If you're not getting focus, check to make sure you're
- * returning true from the mouse click in <code>HandleInputEvent</code>.
+ * handle the click event. Return <code>true</code> from
+ * <code>HandleInputEvent</code> in <code>PPP_InputEvent</code> (or use
+ * unfiltered events) to signal that the click event was handled. Otherwise,
+ * the browser will bubble the event and give focus to the element on the page
+ * that actually did end up consuming it. If you're not getting focus, check
+ * to make sure you're returning true from the mouse click in
+ * <code>HandleInputEvent</code>.
*
* @param[in] instance A <code>PP_Instance</code> indentifying the instance
* receiving the input event.
@@ -179,37 +181,6 @@ interface PPP_Instance {
[in] PP_Bool has_focus);
/**
- * HandleInputEvent() handles input events, such as keyboard events. This
- * function returns <code>PP_TRUE</code> if the event was handled or
- * <code>PP_FALSE</code> if it was not.
- *
- * If the event was handled, it will not be forwarded to the web page or
- * browser. If it was not handled, it will bubble according to the normal
- * rules. So it is important that a module respond accurately with whether
- * event propagation should continue.
- *
- * Event propagation also controls focus. If you handle an event like a mouse
- * event, typically the instance will be given focus. Returning false means
- * that the click will be given to a lower part of the page and your module
- * will not receive focus. This allows an instance to be partially
- * transparent, where clicks on the transparent areas will behave like clicks
- * to the underlying page.
- *
- * @param[in] instance A <code>PP_Instance</code> indentifying one instance
- * of a module.
- *
- * @param[in] event The input event.
- *
- * @return <code>PP_TRUE</code> if <code>event</code> was handled,
- * <code>PP_FALSE</code> otherwise.
- */
- PP_Bool HandleInputEvent(
- /* A PP_Instance indentifying one instance of a module. */
- [in] PP_Instance instance,
- /* The event. */
- [in] PP_InputEvent event);
-
- /**
* HandleDocumentLoad() is called after initialize for a full-frame
* module that was instantiated based on the MIME type of a DOMWindow
* navigation. This situation only applies to modules that are pre-registered
diff --git a/ppapi/c/pp_input_event.h b/ppapi/c/pp_input_event.h
index 0c7854c..c3defc9 100644
--- a/ppapi/c/pp_input_event.h
+++ b/ppapi/c/pp_input_event.h
@@ -192,44 +192,6 @@ struct PP_InputEvent_Wheel {
PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_InputEvent_Wheel, 24);
/**
- * The PP_InputEventData union represents all input event data types.
- */
-union PP_InputEventData {
- struct PP_InputEvent_Key key;
- struct PP_InputEvent_Character character;
- struct PP_InputEvent_Mouse mouse;
- struct PP_InputEvent_Wheel wheel;
- /**
- * This value allows new events to be added without changing the size of
- * this struct.
- */
- char padding[64];
-};
-
-/**
- * The PP_InputEvent struct represents all input events.
- */
-struct PP_InputEvent {
- /** This value represents the type of the event. */
- PP_InputEvent_Type type;
- /** This value ensure the time_stamp is aligned on an 8-byte boundary
- * relative to the start of the struct. Some compilers align doubles
- * on 8-byte boundaries for 32-bit x86, and some align on 4-byte boundaries.
- */
- int32_t padding;
- /**
- * This value represents the time that this event was generated. This value
- * is not relative to any particular epoch; the most you can do is compare
- * time stamps.
- */
- PP_TimeTicks time_stamp;
- /**
- * This value represents the event type and its specific data.
- */
- union PP_InputEventData u;
-};
-PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_InputEvent, 80);
-/**
* @}
*/
diff --git a/ppapi/c/ppp_instance.h b/ppapi/c/ppp_instance.h
index f38f0ae..31f93a3 100644
--- a/ppapi/c/ppp_instance.h
+++ b/ppapi/c/ppp_instance.h
@@ -38,8 +38,8 @@
* to handle events such as change of focus or input events (keyboard/mouse)
* events.
*/
-#define PPP_INSTANCE_INTERFACE_0_5 "PPP_Instance;0.5"
-#define PPP_INSTANCE_INTERFACE PPP_INSTANCE_INTERFACE_0_5
+#define PPP_INSTANCE_INTERFACE_1_0 "PPP_Instance;1.0"
+#define PPP_INSTANCE_INTERFACE PPP_INSTANCE_INTERFACE_1_0
struct PPP_Instance {
/**
@@ -154,11 +154,13 @@ struct PPP_Instance {
* An instance's default condition is that it will not have focus.
*
* <strong>Note:</strong>Clicks on instances will give focus only if you
- * handle the click event. Return <code>true</code> from HandleInputEvent to
- * signal that the click event was handled. Otherwise the browser will bubble
- * the event and give focus to the element on the page that actually did end
- * up consuming it. If you're not getting focus, check to make sure you're
- * returning true from the mouse click in <code>HandleInputEvent</code>.
+ * handle the click event. Return <code>true</code> from
+ * <code>HandleInputEvent</code> in <code>PPP_InputEvent</code> (or use
+ * unfiltered events) to signal that the click event was handled. Otherwise,
+ * the browser will bubble the event and give focus to the element on the page
+ * that actually did end up consuming it. If you're not getting focus, check
+ * to make sure you're returning true from the mouse click in
+ * <code>HandleInputEvent</code>.
*
* @param[in] instance A <code>PP_Instance</code> indentifying the instance
* receiving the input event.
@@ -167,33 +169,6 @@ struct PPP_Instance {
*/
void (*DidChangeFocus)(PP_Instance instance, PP_Bool has_focus);
/**
- * HandleInputEvent() handles input events, such as keyboard events. This
- * function returns <code>PP_TRUE</code> if the event was handled or
- * <code>PP_FALSE</code> if it was not.
- *
- * If the event was handled, it will not be forwarded to the web page or
- * browser. If it was not handled, it will bubble according to the normal
- * rules. So it is important that a module respond accurately with whether
- * event propagation should continue.
- *
- * Event propagation also controls focus. If you handle an event like a mouse
- * event, typically the instance will be given focus. Returning false means
- * that the click will be given to a lower part of the page and your module
- * will not receive focus. This allows an instance to be partially
- * transparent, where clicks on the transparent areas will behave like clicks
- * to the underlying page.
- *
- * @param[in] instance A <code>PP_Instance</code> indentifying one instance
- * of a module.
- *
- * @param[in] event The input event.
- *
- * @return <code>PP_TRUE</code> if <code>event</code> was handled,
- * <code>PP_FALSE</code> otherwise.
- */
- PP_Bool (*HandleInputEvent)(PP_Instance instance,
- const struct PP_InputEvent* event);
- /**
* HandleDocumentLoad() is called after initialize for a full-frame
* module that was instantiated based on the MIME type of a DOMWindow
* navigation. This situation only applies to modules that are pre-registered
@@ -227,7 +202,7 @@ struct PPP_Instance {
*/
-typedef struct PPP_Instance PPP_Instance_0_5;
+typedef struct PPP_Instance PPP_Instance_1_0;
#endif /* PPAPI_C_PPP_INSTANCE_H_ */
diff --git a/ppapi/cpp/instance.cc b/ppapi/cpp/instance.cc
index 75e9a1f..9bb77dc 100644
--- a/ppapi/cpp/instance.cc
+++ b/ppapi/cpp/instance.cc
@@ -67,10 +67,6 @@ bool Instance::HandleDocumentLoad(const URLLoader& /*url_loader*/) {
return false;
}
-bool Instance::HandleInputEvent(const PP_InputEvent& /*event*/) {
- return false;
-}
-
bool Instance::HandleInputEvent(const InputEvent& /*event*/) {
return false;
}
diff --git a/ppapi/cpp/instance.h b/ppapi/cpp/instance.h
index abf441f..f08c2d5 100644
--- a/ppapi/cpp/instance.h
+++ b/ppapi/cpp/instance.h
@@ -154,10 +154,7 @@ class Instance {
/// @param[in] event The input event.
///
/// @return true if @a event was handled, false otherwise.
- virtual bool HandleInputEvent(const PP_InputEvent& event);
-
- /// @see InputEvent for an example
- virtual bool HandleInputEvent(const InputEvent& event);
+ virtual bool HandleInputEvent(const pp::InputEvent& event);
/// Notification of a data stream available after an instance was created
/// based on the MIME type of a DOMWindow navigation. This only applies to
diff --git a/ppapi/cpp/module.cc b/ppapi/cpp/module.cc
index 927710a..b727e46 100644
--- a/ppapi/cpp/module.cc
+++ b/ppapi/cpp/module.cc
@@ -110,17 +110,6 @@ void Instance_DidChangeFocus(PP_Instance pp_instance, PP_Bool has_focus) {
instance->DidChangeFocus(PP_ToBool(has_focus));
}
-PP_Bool Instance_HandleInputEvent(PP_Instance pp_instance,
- const PP_InputEvent* event) {
- Module* module_singleton = Module::Get();
- if (!module_singleton)
- return PP_FALSE;
- Instance* instance = module_singleton->InstanceForPPInstance(pp_instance);
- if (!instance)
- return PP_FALSE;
- return PP_FromBool(instance->HandleInputEvent(*event));
-}
-
PP_Bool Instance_HandleDocumentLoad(PP_Instance pp_instance,
PP_Resource pp_url_loader) {
Module* module_singleton = Module::Get();
@@ -137,7 +126,6 @@ static PPP_Instance instance_interface = {
&Instance_DidDestroy,
&Instance_DidChangeView,
&Instance_DidChangeFocus,
- &Instance_HandleInputEvent,
&Instance_HandleDocumentLoad
};
diff --git a/ppapi/examples/2d/graphics_2d_example.c b/ppapi/examples/2d/graphics_2d_example.c
index ccec9a1..6495cdc 100644
--- a/ppapi/examples/2d/graphics_2d_example.c
+++ b/ppapi/examples/2d/graphics_2d_example.c
@@ -157,12 +157,6 @@ void Instance_DidChangeView(PP_Instance pp_instance,
void Instance_DidChangeFocus(PP_Instance pp_instance, PP_Bool has_focus) {
}
-PP_Bool Instance_HandleInputEvent(PP_Instance pp_instance,
- const struct PP_InputEvent* event) {
- /* We don't handle any events. */
- return PP_FALSE;
-}
-
PP_Bool Instance_HandleDocumentLoad(PP_Instance pp_instance,
PP_Resource pp_url_loader) {
return PP_FALSE;
@@ -173,7 +167,6 @@ static struct PPP_Instance instance_interface = {
&Instance_DidDestroy,
&Instance_DidChangeView,
&Instance_DidChangeFocus,
- &Instance_HandleInputEvent,
&Instance_HandleDocumentLoad
};
diff --git a/ppapi/examples/2d/paint_manager_example.cc b/ppapi/examples/2d/paint_manager_example.cc
index 8a5a2f5..c129f07 100644
--- a/ppapi/examples/2d/paint_manager_example.cc
+++ b/ppapi/examples/2d/paint_manager_example.cc
@@ -5,6 +5,7 @@
#include "ppapi/c/pp_input_event.h"
#include "ppapi/cpp/graphics_2d.h"
#include "ppapi/cpp/image_data.h"
+#include "ppapi/cpp/input_event.h"
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/paint_manager.h"
@@ -41,25 +42,26 @@ class MyInstance : public pp::Instance, public pp::PaintManager::Client {
last_x_(0),
last_y_(0) {
paint_manager_.Initialize(this, this, false);
+ RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE);
}
- virtual bool HandleInputEvent(const PP_InputEvent& event) {
- switch (event.type) {
+ virtual bool HandleInputEvent(const pp::InputEvent& event) {
+ switch (event.GetType()) {
case PP_INPUTEVENT_TYPE_MOUSEDOWN: {
- const PP_InputEvent_Mouse& mouse_event = event.u.mouse;
+ pp::MouseInputEvent mouse_event(event);
// Update the square on a mouse down.
- if (mouse_event.button == PP_INPUTEVENT_MOUSEBUTTON_LEFT) {
- UpdateSquare(static_cast<int>(mouse_event.x),
- static_cast<int>(mouse_event.y));
+ if (mouse_event.GetMouseButton() == PP_INPUTEVENT_MOUSEBUTTON_LEFT) {
+ UpdateSquare(static_cast<int>(mouse_event.GetMousePosition().x()),
+ static_cast<int>(mouse_event.GetMousePosition().y()));
}
return true;
}
case PP_INPUTEVENT_TYPE_MOUSEMOVE: {
- const PP_InputEvent_Mouse& mouse_event = event.u.mouse;
+ pp::MouseInputEvent mouse_event(event);
// Update the square on a drag.
- if (mouse_event.button == PP_INPUTEVENT_MOUSEBUTTON_LEFT) {
- UpdateSquare(static_cast<int>(mouse_event.x),
- static_cast<int>(mouse_event.y));
+ if (mouse_event.GetMouseButton() == PP_INPUTEVENT_MOUSEBUTTON_LEFT) {
+ UpdateSquare(static_cast<int>(mouse_event.GetMousePosition().x()),
+ static_cast<int>(mouse_event.GetMousePosition().y()));
}
return true;
}
diff --git a/ppapi/examples/file_chooser/file_chooser.cc b/ppapi/examples/file_chooser/file_chooser.cc
index 598095f..e1eb6bd 100644
--- a/ppapi/examples/file_chooser/file_chooser.cc
+++ b/ppapi/examples/file_chooser/file_chooser.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -7,6 +7,7 @@
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/cpp/dev/file_chooser_dev.h"
#include "ppapi/cpp/file_ref.h"
+#include "ppapi/cpp/input_event.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/private/instance_private.h"
#include "ppapi/cpp/private/var_private.h"
@@ -16,15 +17,17 @@ class MyInstance : public pp::InstancePrivate {
MyInstance(PP_Instance instance)
: pp::InstancePrivate(instance) {
callback_factory_.Initialize(this);
+ RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE);
}
- virtual bool HandleInputEvent(const PP_InputEvent& event) {
- switch (event.type) {
+ virtual bool HandleInputEvent(const pp::InputEvent& event) {
+ switch (event.GetType()) {
case PP_INPUTEVENT_TYPE_MOUSEDOWN: {
- const PP_InputEvent_Mouse& mouse_event = event.u.mouse;
- if (mouse_event.button == PP_INPUTEVENT_MOUSEBUTTON_LEFT)
+ pp::MouseInputEvent mouse_event(event);
+ if (mouse_event.GetMouseButton() == PP_INPUTEVENT_MOUSEBUTTON_LEFT)
ShowFileChooser(false);
- else if (mouse_event.button == PP_INPUTEVENT_MOUSEBUTTON_RIGHT)
+ else if (mouse_event.GetMouseButton()
+ == PP_INPUTEVENT_MOUSEBUTTON_RIGHT)
ShowFileChooser(true);
else
return false;
diff --git a/ppapi/proxy/dispatcher.cc b/ppapi/proxy/dispatcher.cc
index 69e16ac..5de70c0 100644
--- a/ppapi/proxy/dispatcher.cc
+++ b/ppapi/proxy/dispatcher.cc
@@ -165,7 +165,7 @@ InterfaceList::InterfaceList() {
AddPPP(PPP_Graphics3D_Proxy::GetInfo());
AddPPP(PPP_InputEvent_Proxy::GetInfo());
AddPPP(PPP_Instance_Private_Proxy::GetInfo());
- AddPPP(PPP_Instance_Proxy::GetInfo0_5());
+ AddPPP(PPP_Instance_Proxy::GetInfo1_0());
}
void InterfaceList::AddPPP(const InterfaceProxy::Info* info) {
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index 41853ae..f4739e8 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -293,10 +293,6 @@ IPC_MESSAGE_ROUTED4(PpapiMsg_PPPInstance_DidChangeView,
IPC_MESSAGE_ROUTED2(PpapiMsg_PPPInstance_DidChangeFocus,
PP_Instance /* instance */,
PP_Bool /* has_focus */)
-IPC_SYNC_MESSAGE_ROUTED2_1(PpapiMsg_PPPInstance_HandleInputEvent,
- PP_Instance /* instance */,
- PP_InputEvent /* event */,
- PP_Bool /* result */)
IPC_SYNC_MESSAGE_ROUTED2_1(PpapiMsg_PPPInstance_HandleDocumentLoad,
PP_Instance /* instance */,
pp::proxy::HostResource /* url_loader */,
diff --git a/ppapi/proxy/ppapi_param_traits.cc b/ppapi/proxy/ppapi_param_traits.cc
index 87c253b..29e51bb 100644
--- a/ppapi/proxy/ppapi_param_traits.cc
+++ b/ppapi/proxy/ppapi_param_traits.cc
@@ -171,30 +171,6 @@ void ParamTraits<PP_Flash_NetAddress>::Log(const param_type& p,
l->append(" bytes)>");
}
-// PP_InputEvent ---------------------------------------------------------------
-
-// static
-void ParamTraits<PP_InputEvent>::Write(Message* m, const param_type& p) {
- // PP_InputEvent is just POD so we can just memcpy it.
- m->WriteData(reinterpret_cast<const char*>(&p), sizeof(PP_InputEvent));
-}
-
-// static
-bool ParamTraits<PP_InputEvent>::Read(const Message* m,
- void** iter,
- param_type* r) {
- const char* data;
- int data_size;
- if (!m->ReadData(iter, &data, &data_size))
- return false;
- memcpy(r, data, sizeof(PP_InputEvent));
- return true;
-}
-
-// static
-void ParamTraits<PP_InputEvent>::Log(const param_type& p, std::string* l) {
-}
-
// PP_ObjectProperty -----------------------------------------------------------
// static
diff --git a/ppapi/proxy/ppapi_param_traits.h b/ppapi/proxy/ppapi_param_traits.h
index 0db47cd..736120f 100644
--- a/ppapi/proxy/ppapi_param_traits.h
+++ b/ppapi/proxy/ppapi_param_traits.h
@@ -11,7 +11,6 @@
#include "ipc/ipc_message_utils.h"
#include "ipc/ipc_platform_file.h"
#include "ppapi/c/pp_completion_callback.h"
-#include "ppapi/c/pp_input_event.h"
#include "ppapi/c/pp_rect.h"
#include "ppapi/c/pp_var.h"
@@ -62,14 +61,6 @@ struct ParamTraits<PP_Flash_NetAddress> {
};
template<>
-struct ParamTraits<PP_InputEvent> {
- typedef PP_InputEvent param_type;
- static void Write(Message* m, const param_type& p);
- static bool Read(const Message* m, void** iter, param_type* r);
- static void Log(const param_type& p, std::string* l);
-};
-
-template<>
struct ParamTraits<PP_ObjectProperty> {
typedef PP_ObjectProperty param_type;
static void Write(Message* m, const param_type& p);
diff --git a/ppapi/proxy/ppp_instance_proxy.cc b/ppapi/proxy/ppp_instance_proxy.cc
index 99dcaab..cc2f9db 100644
--- a/ppapi/proxy/ppp_instance_proxy.cc
+++ b/ppapi/proxy/ppp_instance_proxy.cc
@@ -65,21 +65,6 @@ void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) {
instance, has_focus));
}
-PP_Bool HandleInputEvent(PP_Instance instance,
- const PP_InputEvent* event) {
- PP_Bool result = PP_FALSE;
- IPC::Message* msg = new PpapiMsg_PPPInstance_HandleInputEvent(
- INTERFACE_ID_PPP_INSTANCE, instance, *event, &result);
- // Make this message not unblock, to avoid re-entrancy problems when the
- // plugin does a synchronous call to the renderer. This will force any
- // synchronous calls from the plugin to complete before processing this
- // message. We avoid deadlock by never un-setting the unblock flag on messages
- // from the plugin to the renderer.
- msg->set_unblock(false);
- HostDispatcher::GetForInstance(instance)->Send(msg);
- return result;
-}
-
PP_Bool HandleDocumentLoad(PP_Instance instance,
PP_Resource url_loader) {
PP_Bool result = PP_FALSE;
@@ -112,12 +97,11 @@ PP_Bool HandleDocumentLoad(PP_Instance instance,
return result;
}
-static const PPP_Instance_0_5 instance_interface_0_5 = {
+static const PPP_Instance_1_0 instance_interface_1_0 = {
&DidCreate,
&DidDestroy,
&DidChangeView,
&DidChangeFocus,
- &HandleInputEvent,
&HandleDocumentLoad
};
@@ -135,13 +119,13 @@ PPP_Instance_Proxy::~PPP_Instance_Proxy() {
}
// static
-const InterfaceProxy::Info* PPP_Instance_Proxy::GetInfo0_5() {
+const InterfaceProxy::Info* PPP_Instance_Proxy::GetInfo1_0() {
static const Info info = {
- &instance_interface_0_5,
- PPP_INSTANCE_INTERFACE_0_5,
+ &instance_interface_1_0,
+ PPP_INSTANCE_INTERFACE_1_0,
INTERFACE_ID_PPP_INSTANCE,
false,
- &CreateInstanceProxy<PPP_Instance_0_5>,
+ &CreateInstanceProxy<PPP_Instance_1_0>,
};
return &info;
}
@@ -157,8 +141,6 @@ bool PPP_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) {
OnMsgDidChangeView)
IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidChangeFocus,
OnMsgDidChangeFocus)
- IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_HandleInputEvent,
- OnMsgHandleInputEvent)
IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_HandleDocumentLoad,
OnMsgHandleDocumentLoad)
IPC_MESSAGE_UNHANDLED(handled = false)
@@ -224,12 +206,6 @@ void PPP_Instance_Proxy::OnMsgDidChangeFocus(PP_Instance instance,
combined_interface_->DidChangeFocus(instance, has_focus);
}
-void PPP_Instance_Proxy::OnMsgHandleInputEvent(PP_Instance instance,
- const PP_InputEvent& event,
- PP_Bool* result) {
- *result = combined_interface_->HandleInputEvent(instance, &event);
-}
-
void PPP_Instance_Proxy::OnMsgHandleDocumentLoad(PP_Instance instance,
const HostResource& url_loader,
PP_Bool* result) {
diff --git a/ppapi/proxy/ppp_instance_proxy.h b/ppapi/proxy/ppp_instance_proxy.h
index 9448332..b246c5c 100644
--- a/ppapi/proxy/ppp_instance_proxy.h
+++ b/ppapi/proxy/ppp_instance_proxy.h
@@ -16,7 +16,6 @@
#include "ppapi/proxy/interface_proxy.h"
#include "ppapi/shared_impl/ppp_instance_combined.h"
-struct PP_InputEvent;
struct PP_Rect;
namespace pp {
@@ -35,8 +34,8 @@ class PPP_Instance_Proxy : public InterfaceProxy {
}
virtual ~PPP_Instance_Proxy();
- // Return the info for the 0.5 (latest, canonical) version of the interface.
- static const Info* GetInfo0_5();
+ // Return the info for the 1.0 (latest, canonical) version of the interface.
+ static const Info* GetInfo1_0();
::ppapi::PPP_Instance_Combined* ppp_instance_target() const {
return combined_interface_.get();
@@ -57,9 +56,6 @@ class PPP_Instance_Proxy : public InterfaceProxy {
const PP_Rect& clip,
PP_Bool fullscreen);
void OnMsgDidChangeFocus(PP_Instance instance, PP_Bool has_focus);
- void OnMsgHandleInputEvent(PP_Instance instance,
- const PP_InputEvent& event,
- PP_Bool* result);
void OnMsgHandleDocumentLoad(PP_Instance instance,
const HostResource& url_loader,
PP_Bool* result);
diff --git a/ppapi/proxy/ppp_instance_proxy_test.cc b/ppapi/proxy/ppp_instance_proxy_test.cc
index 00d776b..c49f1a2 100644
--- a/ppapi/proxy/ppp_instance_proxy_test.cc
+++ b/ppapi/proxy/ppp_instance_proxy_test.cc
@@ -60,13 +60,6 @@ void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) {
did_change_focus_called.Signal();
}
-PP_InputEvent received_event;
-PP_Bool HandleInputEvent(PP_Instance instance, const PP_InputEvent* event) {
- received_instance = instance;
- memcpy(&received_event, event, sizeof(*event));;
- return bool_to_return;
-}
-
PP_Bool HandleDocumentLoad(PP_Instance instance, PP_Resource url_loader) {
// This one requires use of the PPB_URLLoader proxy and PPB_Core, plus a
// resource tracker for the url_loader resource.
@@ -92,15 +85,13 @@ void ResetReceived() {
memset(&received_position, 0, sizeof(received_position));
memset(&received_clip, 0, sizeof(received_clip));
received_has_focus = PP_FALSE;
- memset(&received_event, 0, sizeof(received_event));
}
-PPP_Instance_0_5 ppp_instance_0_5 = {
+PPP_Instance_1_0 ppp_instance_1_0 = {
&DidCreate,
&DidDestroy,
&DidChangeView,
&DidChangeFocus,
- &HandleInputEvent,
&HandleDocumentLoad
};
@@ -120,15 +111,15 @@ class PPP_Instance_ProxyTest : public TwoWayTest {
}
};
-TEST_F(PPP_Instance_ProxyTest, PPPInstance0_5) {
- plugin().RegisterTestInterface(PPP_INSTANCE_INTERFACE_0_5, &ppp_instance_0_5);
+TEST_F(PPP_Instance_ProxyTest, PPPInstance1_0) {
+ plugin().RegisterTestInterface(PPP_INSTANCE_INTERFACE_1_0, &ppp_instance_1_0);
host().RegisterTestInterface(PPB_FULLSCREEN_DEV_INTERFACE,
&ppb_fullscreen_dev);
- // Grab the host-side proxy for the 0.5 interface.
- const PPP_Instance_0_5* ppp_instance = static_cast<const PPP_Instance_0_5*>(
+ // Grab the host-side proxy for the 1.0 interface.
+ const PPP_Instance_1_0* ppp_instance = static_cast<const PPP_Instance_1_0*>(
host().host_dispatcher()->GetProxiedInterface(
- PPP_INSTANCE_INTERFACE_0_5));
+ PPP_INSTANCE_INTERFACE_1_0));
// Call each function in turn, make sure we get the expected values and
// returns.
@@ -183,20 +174,6 @@ TEST_F(PPP_Instance_ProxyTest, PPPInstance0_5) {
EXPECT_EQ(received_instance, expected_instance);
EXPECT_EQ(received_has_focus, expected_has_focus);
- PP_InputEvent expected_event = { PP_INPUTEVENT_TYPE_KEYDOWN, // type
- 0, // padding
- 1.0, // time_stamp
- { { 2, 3 } } }; // u (as PP_InputEvent_Key)
- ResetReceived();
- EXPECT_EQ(bool_to_return,
- ppp_instance->HandleInputEvent(expected_instance, &expected_event));
- EXPECT_EQ(received_instance, expected_instance);
- ASSERT_EQ(received_event.type, expected_event.type);
- // Ignore padding; it's okay if it's not serialized.
- EXPECT_EQ(received_event.time_stamp, expected_event.time_stamp);
- EXPECT_EQ(received_event.u.key.modifier, expected_event.u.key.modifier);
- EXPECT_EQ(received_event.u.key.key_code, expected_event.u.key.key_code);
-
// TODO(dmichael): Need to mock out a resource Tracker to be able to test
// HandleResourceLoad. It also requires
// PPB_Core.AddRefResource and for PPB_URLLoader to be
diff --git a/ppapi/shared_impl/ppp_instance_combined.cc b/ppapi/shared_impl/ppp_instance_combined.cc
index ce3d2c4..ffb96a4 100644
--- a/ppapi/shared_impl/ppp_instance_combined.cc
+++ b/ppapi/shared_impl/ppp_instance_combined.cc
@@ -7,8 +7,20 @@
namespace ppapi {
PPP_Instance_Combined::PPP_Instance_Combined(
+ const PPP_Instance_1_0& instance_if)
+ : PPP_Instance_1_0(instance_if),
+ HandleInputEvent_0_5(NULL) {
+}
+
+PPP_Instance_Combined::PPP_Instance_Combined(
const PPP_Instance_0_5& instance_if)
- : PPP_Instance_0_5(instance_if) {
+ : PPP_Instance_1_0(),
+ HandleInputEvent_0_5(instance_if.HandleInputEvent) {
+ DidCreate = instance_if.DidCreate;
+ DidDestroy = instance_if.DidDestroy;
+ DidChangeView = instance_if.DidChangeView;
+ DidChangeFocus = instance_if.DidChangeFocus;
+ HandleDocumentLoad = instance_if.HandleDocumentLoad;
}
} // namespace ppapi
diff --git a/ppapi/shared_impl/ppp_instance_combined.h b/ppapi/shared_impl/ppp_instance_combined.h
index 33548d5..57b5beb 100644
--- a/ppapi/shared_impl/ppp_instance_combined.h
+++ b/ppapi/shared_impl/ppp_instance_combined.h
@@ -8,11 +8,51 @@
#include "base/basictypes.h"
#include "ppapi/c/ppp_instance.h"
+// TODO(dmichael): This is here only for temporary backwards compatibility so
+// that NaCl and other plugins aren't broken while the change propagates. This
+// needs to be deleted in 14, because we don't intend to support PPP_Instance.
+// HandleInputEvent.
+// --- Begin backwards compatibility code.
+union PP_InputEventData {
+ struct PP_InputEvent_Key key;
+ struct PP_InputEvent_Character character;
+ struct PP_InputEvent_Mouse mouse;
+ struct PP_InputEvent_Wheel wheel;
+ char padding[64];
+};
+struct PP_InputEvent {
+ PP_InputEvent_Type type;
+ int32_t padding;
+ PP_TimeTicks time_stamp;
+ union PP_InputEventData u;
+};
+PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_InputEvent, 80);
+
+#define PPP_INSTANCE_INTERFACE_0_5 "PPP_Instance;0.5"
+
+struct PPP_Instance_0_5 {
+ PP_Bool (*DidCreate)(PP_Instance instance,
+ uint32_t argc,
+ const char* argn[],
+ const char* argv[]);
+ void (*DidDestroy)(PP_Instance instance);
+ void (*DidChangeView)(PP_Instance instance,
+ const struct PP_Rect* position,
+ const struct PP_Rect* clip);
+ void (*DidChangeFocus)(PP_Instance instance, PP_Bool has_focus);
+ PP_Bool (*HandleInputEvent)(PP_Instance instance,
+ const struct PP_InputEvent* event);
+ PP_Bool (*HandleDocumentLoad)(PP_Instance instance, PP_Resource url_loader);
+};
+// --- End backwards compatibility code.
namespace ppapi {
-struct PPP_Instance_Combined : public PPP_Instance_0_5 {
+struct PPP_Instance_Combined : public PPP_Instance_1_0 {
public:
+ explicit PPP_Instance_Combined(const PPP_Instance_1_0& instance_if);
explicit PPP_Instance_Combined(const PPP_Instance_0_5& instance_if);
+ PP_Bool (*HandleInputEvent_0_5)(PP_Instance instance,
+ const struct PP_InputEvent* event);
DISALLOW_COPY_AND_ASSIGN(PPP_Instance_Combined);
};