| Index: ppapi/proxy/flash_resource.cc
|
| diff --git a/ppapi/proxy/flash_resource.cc b/ppapi/proxy/flash_resource.cc
|
| index be5acd3a851eb26532aa54b95d96768e90bea998..7c278c11437c0ed84299b52ef7a5bd7eeb7057cf 100644
|
| --- a/ppapi/proxy/flash_resource.cc
|
| +++ b/ppapi/proxy/flash_resource.cc
|
| @@ -6,9 +6,15 @@
|
|
|
| #include "ppapi/c/pp_errors.h"
|
| #include "ppapi/c/private/ppb_flash.h"
|
| +#include "ppapi/c/trusted/ppb_browser_font_trusted.h"
|
| #include "ppapi/proxy/plugin_globals.h"
|
| #include "ppapi/proxy/ppapi_messages.h"
|
| +#include "ppapi/proxy/serialized_structs.h"
|
| #include "ppapi/shared_impl/var.h"
|
| +#include "ppapi/thunk/enter.h"
|
| +#include "ppapi/thunk/ppb_url_request_info_api.h"
|
| +
|
| +using ppapi::thunk::EnterResourceNoLock;
|
|
|
| namespace ppapi {
|
| namespace proxy {
|
| @@ -56,5 +62,75 @@ PP_Bool FlashResource::SetCrashData(PP_Instance instance,
|
| return PP_FALSE;
|
| }
|
|
|
| +void FlashResource::SetInstanceAlwaysOnTop(PP_Instance instance,
|
| + PP_Bool on_top) {
|
| + Post(RENDERER, PpapiHostMsg_Flash_SetInstanceAlwaysOnTop(PP_ToBool(on_top)));
|
| +}
|
| +
|
| +PP_Bool FlashResource::DrawGlyphs(
|
| + PP_Instance instance,
|
| + PP_Resource pp_image_data,
|
| + const PP_BrowserFont_Trusted_Description* font_desc,
|
| + uint32_t color,
|
| + const PP_Point* position,
|
| + const PP_Rect* clip,
|
| + const float transformation[3][3],
|
| + PP_Bool allow_subpixel_aa,
|
| + uint32_t glyph_count,
|
| + const uint16_t glyph_indices[],
|
| + const PP_Point glyph_advances[]) {
|
| + EnterResourceNoLock<thunk::PPB_ImageData_API> enter(pp_image_data, true);
|
| + if (enter.failed())
|
| + return PP_FALSE;
|
| + // The instance parameter isn't strictly necessary but we check that it
|
| + // matches anyway.
|
| + if (enter.resource()->pp_instance() != instance)
|
| + return PP_FALSE;
|
| +
|
| + PPBFlash_DrawGlyphs_Params params;
|
| + params.image_data = enter.resource()->host_resource();
|
| + params.font_desc.SetFromPPBrowserFontDescription(*font_desc);
|
| + params.color = color;
|
| + params.position = *position;
|
| + params.clip = *clip;
|
| + for (int i = 0; i < 3; i++) {
|
| + for (int j = 0; j < 3; j++)
|
| + params.transformation[i][j] = transformation[i][j];
|
| + }
|
| + params.allow_subpixel_aa = allow_subpixel_aa;
|
| +
|
| + params.glyph_indices.insert(params.glyph_indices.begin(),
|
| + &glyph_indices[0],
|
| + &glyph_indices[glyph_count]);
|
| + params.glyph_advances.insert(params.glyph_advances.begin(),
|
| + &glyph_advances[0],
|
| + &glyph_advances[glyph_count]);
|
| +
|
| + // This has to be synchronous because the caller may want to composite on
|
| + // top of the resulting text after the call is complete.
|
| + int32_t result = SyncCall<IPC::Message>(RENDERER,
|
| + PpapiHostMsg_Flash_DrawGlyphs(params));
|
| + return PP_FromBool(result == PP_OK);
|
| +}
|
| +
|
| +int32_t FlashResource::Navigate(PP_Instance instance,
|
| + PP_Resource request_info,
|
| + const char* target,
|
| + PP_Bool from_user_action) {
|
| + thunk::EnterResourceNoLock<thunk::PPB_URLRequestInfo_API> enter(request_info,
|
| + true);
|
| + if (enter.failed())
|
| + return PP_ERROR_BADRESOURCE;
|
| + return SyncCall<IPC::Message>(RENDERER, PpapiHostMsg_Flash_Navigate(
|
| + enter.object()->GetData(), target, PP_ToBool(from_user_action)));
|
| +}
|
| +
|
| +PP_Bool FlashResource::IsRectTopmost(PP_Instance instance,
|
| + const PP_Rect* rect) {
|
| + int32_t result = SyncCall<IPC::Message>(RENDERER,
|
| + PpapiHostMsg_Flash_IsRectTopmost(*rect));
|
| + return PP_FromBool(result == PP_OK);
|
| +}
|
| +
|
| } // namespace proxy
|
| } // namespace ppapi
|
|
|