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 16struct PP_Rect; 17 18namespace ppapi { 19struct URLRequestInfoData; 20} 21 22namespace ppapi { 23namespace proxy { 24struct PPBFlash_DrawGlyphs_Params; 25} 26} 27 28namespace content { 29class RendererPpapiHost; 30} 31 32class 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