diff options
author | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-20 19:55:39 +0000 |
---|---|---|
committer | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-20 19:55:39 +0000 |
commit | 13a8f498151ac4e1e771cb3d70d56f38848be04a (patch) | |
tree | a751efce3637a6705caf9dd526574855e0fc09c8 /ppapi | |
parent | 40e67ab32b12fbcbbbca4cd0764c9796918e82ae (diff) | |
download | chromium_src-13a8f498151ac4e1e771cb3d70d56f38848be04a.zip chromium_src-13a8f498151ac4e1e771cb3d70d56f38848be04a.tar.gz chromium_src-13a8f498151ac4e1e771cb3d70d56f38848be04a.tar.bz2 |
Reland http://codereview.chromium.org/7452002/ again
Update chromoting input events. (Clang caught this. Thanks, Clang!)
Note I'm leaving in temporary backwards-compatibility.
BUG=None
TEST=ppapi tests
TBR=brettw,sergeyu
Review URL: http://codereview.chromium.org/7466008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93234 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/api/ppp_instance.idl | 45 | ||||
-rw-r--r-- | ppapi/c/pp_input_event.h | 38 | ||||
-rw-r--r-- | ppapi/c/ppp_instance.h | 45 | ||||
-rw-r--r-- | ppapi/cpp/instance.cc | 4 | ||||
-rw-r--r-- | ppapi/cpp/instance.h | 5 | ||||
-rw-r--r-- | ppapi/cpp/module.cc | 12 | ||||
-rw-r--r-- | ppapi/examples/2d/graphics_2d_example.c | 7 | ||||
-rw-r--r-- | ppapi/examples/2d/paint_manager_example.cc | 22 | ||||
-rw-r--r-- | ppapi/examples/file_chooser/file_chooser.cc | 15 | ||||
-rw-r--r-- | ppapi/proxy/dispatcher.cc | 2 | ||||
-rw-r--r-- | ppapi/proxy/ppapi_messages.h | 4 | ||||
-rw-r--r-- | ppapi/proxy/ppapi_param_traits.cc | 24 | ||||
-rw-r--r-- | ppapi/proxy/ppapi_param_traits.h | 9 | ||||
-rw-r--r-- | ppapi/proxy/ppp_instance_proxy.cc | 34 | ||||
-rw-r--r-- | ppapi/proxy/ppp_instance_proxy.h | 8 | ||||
-rw-r--r-- | ppapi/proxy/ppp_instance_proxy_test.cc | 35 | ||||
-rw-r--r-- | ppapi/shared_impl/ppp_instance_combined.cc | 14 | ||||
-rw-r--r-- | ppapi/shared_impl/ppp_instance_combined.h | 42 |
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); }; |