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 CHROME_RENDERER_PEPPER_PEPPER_FLASH_RENDERER_HOST_H_ 6 #define CHROME_RENDERER_PEPPER_PEPPER_FLASH_RENDERER_HOST_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/basictypes.h" 12 #include "base/memory/weak_ptr.h" 13 #include "ppapi/host/host_message_context.h" 14 #include "ppapi/host/resource_host.h" 15 16 struct PP_Rect; 17 18 namespace ppapi { 19 struct URLRequestInfoData; 20 } 21 22 namespace ppapi { 23 namespace proxy { 24 struct PPBFlash_DrawGlyphs_Params; 25 } 26 } 27 28 namespace content { 29 class RendererPpapiHost; 30 } 31 32 class PepperFlashRendererHost : public ppapi::host::ResourceHost { 33 public: 34 PepperFlashRendererHost(content::RendererPpapiHost* host, 35 PP_Instance instance, 36 PP_Resource resource); 37 virtual ~PepperFlashRendererHost(); 38 39 // ppapi::host::ResourceHost override. 40 virtual int32_t OnResourceMessageReceived( 41 const IPC::Message& msg, 42 ppapi::host::HostMessageContext* context) OVERRIDE; 43 44 private: 45 int32_t OnGetProxyForURL(ppapi::host::HostMessageContext* host_context, 46 const std::string& url); 47 int32_t OnSetInstanceAlwaysOnTop( 48 ppapi::host::HostMessageContext* host_context, 49 bool on_top); 50 int32_t OnDrawGlyphs(ppapi::host::HostMessageContext* host_context, 51 ppapi::proxy::PPBFlash_DrawGlyphs_Params params); 52 int32_t OnNavigate(ppapi::host::HostMessageContext* host_context, 53 const ppapi::URLRequestInfoData& data, 54 const std::string& target, 55 bool from_user_action); 56 int32_t OnIsRectTopmost(ppapi::host::HostMessageContext* host_context, 57 const PP_Rect& rect); 58 int32_t OnInvokePrinting(ppapi::host::HostMessageContext* host_context); 59 60 // A stack of ReplyMessageContexts to track Navigate() calls which have not 61 // yet been replied to. 62 std::vector<ppapi::host::ReplyMessageContext> navigate_replies_; 63 64 content::RendererPpapiHost* host_; 65 base::WeakPtrFactory<PepperFlashRendererHost> weak_factory_; 66 67 DISALLOW_COPY_AND_ASSIGN(PepperFlashRendererHost); 68 }; 69 70 #endif // CHROME_RENDERER_PEPPER_PEPPER_FLASH_RENDERER_HOST_H_ 71