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_RESOURCE_H_
6 #define PPAPI_PROXY_FLASH_RESOURCE_H_
7 
8 #include <stdint.h>
9 
10 #include "base/macros.h"
11 #include "ppapi/c/pp_instance.h"
12 #include "ppapi/c/pp_var.h"
13 #include "ppapi/c/private/ppb_flash.h"
14 #include "ppapi/proxy/connection.h"
15 #include "ppapi/proxy/plugin_resource.h"
16 #include "ppapi/thunk/ppb_flash_functions_api.h"
17 
18 namespace ppapi {
19 namespace proxy {
20 
21 class PluginDispatcher;
22 
23 class FlashResource
24     : public PluginResource,
25       public thunk::PPB_Flash_Functions_API {
26  public:
27   FlashResource(Connection connection,
28                 PP_Instance instance,
29                 PluginDispatcher* plugin_dispatcher);
30   ~FlashResource() override;
31 
32   // Resource override.
33   thunk::PPB_Flash_Functions_API* AsPPB_Flash_Functions_API() override;
34 
35   // PPB_Flash_Functions_API implementation.
36   PP_Var GetProxyForURL(PP_Instance instance, const std::string& url) override;
37   void UpdateActivity(PP_Instance instance) override;
38   PP_Bool SetCrashData(PP_Instance instance,
39                        PP_FlashCrashKey key,
40                        PP_Var value) override;
41   double GetLocalTimeZoneOffset(PP_Instance instance, PP_Time t) override;
42   PP_Var GetSetting(PP_Instance instance, PP_FlashSetting setting) override;
43   void SetInstanceAlwaysOnTop(PP_Instance instance, PP_Bool on_top) override;
44   PP_Bool DrawGlyphs(
45       PP_Instance instance,
46       PP_Resource pp_image_data,
47       const PP_BrowserFont_Trusted_Description* font_desc,
48       uint32_t color,
49       const PP_Point* position,
50       const PP_Rect* clip,
51       const float transformation[3][3],
52       PP_Bool allow_subpixel_aa,
53       uint32_t glyph_count,
54       const uint16_t glyph_indices[],
55       const PP_Point glyph_advances[]) override;
56   int32_t Navigate(PP_Instance instance,
57                    PP_Resource request_info,
58                    const char* target,
59                    PP_Bool from_user_action) override;
60   PP_Bool IsRectTopmost(PP_Instance instance, const PP_Rect* rect) override;
61   void InvokePrinting(PP_Instance instance) override;
62 
63  private:
64   // Non-owning pointer to the PluginDispatcher that owns this object.
65   PluginDispatcher* plugin_dispatcher_;
66 
67   DISALLOW_COPY_AND_ASSIGN(FlashResource);
68 };
69 
70 }  // namespace proxy
71 }  // namespace ppapi
72 
73 #endif  // PPAPI_PROXY_FLASH_RESOURCE_H_
74