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 #ifndef PPAPI_PROXY_FLASH_MENU_RESOURCE_H_ 6 #define PPAPI_PROXY_FLASH_MENU_RESOURCE_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "ppapi/proxy/plugin_resource.h" 11 #include "ppapi/shared_impl/tracked_callback.h" 12 #include "ppapi/thunk/ppb_flash_menu_api.h" 13 14 struct PP_Flash_Menu; 15 16 namespace ppapi { 17 namespace proxy { 18 19 class FlashMenuResource 20 : public PluginResource, 21 public thunk::PPB_Flash_Menu_API { 22 public: 23 // You must call Initialize after construction. 24 FlashMenuResource(Connection connection, PP_Instance instance); 25 virtual ~FlashMenuResource(); 26 27 // Returns true on success. False means that this object can not be used. 28 // This has to be separate from the constructor because the menu data could 29 // be invalid. 30 bool Initialize(const PP_Flash_Menu* menu_data); 31 32 // Resource overrides. 33 virtual thunk::PPB_Flash_Menu_API* AsPPB_Flash_Menu_API() OVERRIDE; 34 35 // PPB_Flash_Menu_API. 36 virtual int32_t Show(const PP_Point* location, 37 int32_t* selected_id, 38 scoped_refptr<TrackedCallback> callback) OVERRIDE; 39 40 private: 41 virtual void OnReplyReceived(const proxy::ResourceMessageReplyParams& params, 42 const IPC::Message& msg) OVERRIDE; 43 44 void OnShowReply( 45 const proxy::ResourceMessageReplyParams& params, 46 int32_t selected_id); 47 48 int* selected_id_dest_; 49 scoped_refptr<TrackedCallback> callback_; 50 51 DISALLOW_COPY_AND_ASSIGN(FlashMenuResource); 52 }; 53 54 } // namespace proxy 55 } // namespace ppapi 56 57 #endif // PPAPI_PROXY_FLASH_MENU_RESOURCE_H_ 58