Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: ppapi/thunk/ppb_flash_thunk.cc

Issue 10091003: Convert flash to thunk (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 #include "ppapi/c/pp_errors.h"
6 #include "ppapi/c/private/ppb_flash.h"
7 #include "ppapi/shared_impl/ppapi_globals.h"
8 #include "ppapi/shared_impl/proxy_lock.h"
9 #include "ppapi/shared_impl/var.h"
10 #include "ppapi/thunk/thunk.h"
11 #include "ppapi/thunk/enter.h"
yzshen1 2012/04/18 17:57:22 sort, please.
12 #include "ppapi/thunk/ppb_instance_api.h"
13 #include "ppapi/thunk/ppb_flash_api.h"
yzshen1 2012/04/18 17:57:22 and here.
14
15 namespace ppapi {
16 namespace thunk {
17
18 namespace {
19
20 void SetInstanceAlwaysOnTop(PP_Instance instance, PP_Bool on_top) {
21 EnterInstance enter(instance);
22 if (enter.failed())
23 return;
24 enter.functions()->GetFlashAPI()->SetInstanceAlwaysOnTop(instance, on_top);
25 }
26
27 PP_Bool DrawGlyphs(PP_Instance instance,
28 PP_Resource pp_image_data,
29 const PP_FontDescription_Dev* font_desc,
30 uint32_t color,
31 const PP_Point* position,
32 const PP_Rect* clip,
33 const float transformation[3][3],
34 PP_Bool allow_subpixel_aa,
35 uint32_t glyph_count,
36 const uint16_t glyph_indices[],
37 const PP_Point glyph_advances[]) {
38 EnterInstance enter(instance);
39 if (enter.failed())
40 return PP_FALSE;
41 return enter.functions()->GetFlashAPI()->DrawGlyphs(
42 instance, pp_image_data, font_desc, color, position, clip, transformation,
43 allow_subpixel_aa, glyph_count, glyph_indices, glyph_advances);
44 }
45
46 PP_Bool DrawGlyphs11(PP_Instance instance,
47 PP_Resource pp_image_data,
48 const PP_FontDescription_Dev* font_desc,
49 uint32_t color,
50 PP_Point position,
51 PP_Rect clip,
52 const float transformation[3][3],
53 uint32_t glyph_count,
54 const uint16_t glyph_indices[],
55 const PP_Point glyph_advances[]) {
56 // Backwards-compatible version. DrawGlyphs locks; no need to lock here.
57 return DrawGlyphs(instance, pp_image_data, font_desc, color, &position,
58 &clip, transformation, PP_TRUE, glyph_count, glyph_indices,
59 glyph_advances);
60 }
61
62 PP_Var GetProxyForURL(PP_Instance instance, const char* url) {
63 EnterInstance enter(instance);
64 if (enter.failed())
65 return PP_MakeUndefined();
66 return enter.functions()->GetFlashAPI()->GetProxyForURL(instance, url);
67 }
68
69 int32_t Navigate(PP_Resource request_id,
70 const char* target,
71 PP_Bool from_user_action) {
72 // TODO(brettw): this function should take an instance.
73 // To work around this, use the PP_Instance from the resource.
74 PP_Instance instance;
75 {
76 thunk::EnterResource<thunk::PPB_URLRequestInfo_API> enter(request_id, true);
77 if (enter.failed())
78 return PP_ERROR_BADRESOURCE;
79 instance = enter.resource()->pp_instance();
80 }
81
82 EnterInstance enter(instance);
83 if (enter.failed())
84 return PP_FALSE;
yzshen1 2012/04/18 17:57:22 Wrong return type.
85 return enter.functions()->GetFlashAPI()->Navigate(instance, request_id,
86 target, from_user_action);
87 }
88
89 int32_t Navigate11(PP_Resource request_id,
90 const char* target,
91 bool from_user_action) {
92 // Backwards-compatible version. Navigate locks; no need to lock here.
93 return Navigate(request_id, target, PP_FromBool(from_user_action));
94 }
95
96 void RunMessageLoop(PP_Instance instance) {
97 EnterInstance enter(instance);
98 if (enter.failed())
99 return;
100 enter.functions()->GetFlashAPI()->RunMessageLoop(instance);
101 }
102
103 void QuitMessageLoop(PP_Instance instance) {
104 EnterInstance enter(instance);
105 if (enter.failed())
106 return;
107 enter.functions()->GetFlashAPI()->QuitMessageLoop(instance);
108 }
109
110 double GetLocalTimeZoneOffset(PP_Instance instance, PP_Time t) {
111 EnterInstance enter(instance);
112 if (enter.failed())
113 return 0.0;
114 return enter.functions()->GetFlashAPI()->GetLocalTimeZoneOffset(instance, t);
115 }
116
117 PP_Var GetCommandLineArgs(PP_Module /* pp_module */) {
118 // There's no instance so we have to reach into the globals without thunking.
119 ProxyAutoLock lock;
120 return StringVar::StringToPPVar(PpapiGlobals::Get()->GetCommandLine());
121 }
122
123 void PreLoadFontWin(const void* logfontw) {
124 // There's no instance so we have to reach into the delegate without
125 // thunking.
126 ProxyAutoLock lock;
127 PpapiGlobals::Get()->PreCacheFontForFlash(logfontw);
128 }
129
130 PP_Bool IsRectTopmost(PP_Instance instance, const PP_Rect* rect) {
131 EnterInstance enter(instance);
132 if (enter.failed())
133 return PP_FALSE;
134 return enter.functions()->GetFlashAPI()->IsRectTopmost(instance, rect);
135 }
136
137 int32_t InvokePrinting(PP_Instance instance) {
138 EnterInstance enter(instance);
139 if (enter.failed())
140 return PP_FALSE;
yzshen1 2012/04/18 17:57:22 Wrong return type.
141 return enter.functions()->GetFlashAPI()->InvokePrinting(instance);
142 }
143
144 void UpdateActivity(PP_Instance instance) {
145 EnterInstance enter(instance);
146 if (enter.failed())
147 return;
148 enter.functions()->GetFlashAPI()->UpdateActivity(instance);
149 }
150
151 PP_Var GetDeviceID(PP_Instance instance) {
152 EnterInstance enter(instance);
153 if (enter.failed())
154 return PP_MakeUndefined();
155 return enter.functions()->GetFlashAPI()->GetDeviceID(instance);
156 }
157
158 const PPB_Flash_11 g_ppb_flash_11_thunk = {
159 &SetInstanceAlwaysOnTop,
160 &DrawGlyphs11,
161 &GetProxyForURL,
162 &Navigate11,
163 &RunMessageLoop,
164 &QuitMessageLoop,
165 &GetLocalTimeZoneOffset,
166 &GetCommandLineArgs
167 };
168
169 const PPB_Flash_12_0 g_ppb_flash_12_0_thunk = {
170 &SetInstanceAlwaysOnTop,
171 &DrawGlyphs,
172 &GetProxyForURL,
173 &Navigate,
174 &RunMessageLoop,
175 &QuitMessageLoop,
176 &GetLocalTimeZoneOffset,
177 &GetCommandLineArgs,
178 &PreLoadFontWin
179 };
180
181 const PPB_Flash_12_1 g_ppb_flash_12_1_thunk = {
182 &SetInstanceAlwaysOnTop,
183 &DrawGlyphs,
184 &GetProxyForURL,
185 &Navigate,
186 &RunMessageLoop,
187 &QuitMessageLoop,
188 &GetLocalTimeZoneOffset,
189 &GetCommandLineArgs,
190 &PreLoadFontWin,
191 &IsRectTopmost,
192 &InvokePrinting,
193 &UpdateActivity
194 };
195
196 const PPB_Flash_12_2 g_ppb_flash_12_2_thunk = {
197 &SetInstanceAlwaysOnTop,
198 &DrawGlyphs,
199 &GetProxyForURL,
200 &Navigate,
201 &RunMessageLoop,
202 &QuitMessageLoop,
203 &GetLocalTimeZoneOffset,
204 &GetCommandLineArgs,
205 &PreLoadFontWin,
206 &IsRectTopmost,
207 &InvokePrinting,
208 &UpdateActivity,
209 &GetDeviceID
210 };
211
212 } // namespace
213
214 const PPB_Flash_11* GetPPB_Flash_11_Thunk() {
215 return &g_ppb_flash_11_thunk;
216 }
217
218 const PPB_Flash_12_0* GetPPB_Flash_12_0_Thunk() {
219 return &g_ppb_flash_12_0_thunk;
220 }
221
222 const PPB_Flash_12_1* GetPPB_Flash_12_1_Thunk() {
223 return &g_ppb_flash_12_1_thunk;
224 }
225
226 const PPB_Flash_12_2* GetPPB_Flash_12_2_Thunk() {
227 return &g_ppb_flash_12_2_thunk;
228 }
229
230 } // namespace thunk
231 } // namespace ppapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698