Home | History | Annotate | Download | only in proxy
      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