// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PPAPI_PROXY_SERIALIZED_STRUCTS_H_ #define PPAPI_PROXY_SERIALIZED_STRUCTS_H_ #include <string> #include <vector> #include "base/logging.h" #include "base/memory/shared_memory.h" #include "build/build_config.h" #include "ppapi/c/dev/ppb_truetype_font_dev.h" #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_point.h" #include "ppapi/c/pp_rect.h" #include "ppapi/c/ppb_network_list.h" #include "ppapi/c/private/ppb_net_address_private.h" #include "ppapi/proxy/ppapi_proxy_export.h" #include "ppapi/shared_impl/host_resource.h" class Pickle; struct PP_FontDescription_Dev; struct PP_BrowserFont_Trusted_Description; namespace ppapi { namespace proxy { // PP_FontDescription_Dev/PP_BrowserFontDescription (same definition, different // names) has to be redefined with a string in place of the PP_Var used for the // face name. struct PPAPI_PROXY_EXPORT SerializedFontDescription { SerializedFontDescription(); ~SerializedFontDescription(); // Converts a PP_FontDescription_Dev to a SerializedFontDescription. // // The reference of |face| owned by the PP_FontDescription_Dev will be // unchanged and the caller is responsible for freeing it. void SetFromPPFontDescription(const PP_FontDescription_Dev& desc); void SetFromPPBrowserFontDescription( const PP_BrowserFont_Trusted_Description& desc); // Converts to a PP_FontDescription_Dev. The face name will have one ref // assigned to it. The caller is responsible for freeing it. void SetToPPFontDescription(PP_FontDescription_Dev* desc) const; void SetToPPBrowserFontDescription( PP_BrowserFont_Trusted_Description* desc) const; std::string face; int32_t family; uint32_t size; int32_t weight; PP_Bool italic; PP_Bool small_caps; int32_t letter_spacing; int32_t word_spacing; }; struct PPAPI_PROXY_EXPORT SerializedNetworkInfo { SerializedNetworkInfo(); ~SerializedNetworkInfo(); std::string name; PP_NetworkList_Type type; PP_NetworkList_State state; std::vector<PP_NetAddress_Private> addresses; std::string display_name; int mtu; }; typedef std::vector<SerializedNetworkInfo> SerializedNetworkList; struct PPAPI_PROXY_EXPORT SerializedTrueTypeFontDesc { SerializedTrueTypeFontDesc(); ~SerializedTrueTypeFontDesc(); // Sets this to correspond to the contents of a PP_TrueTypeFontDesc_Dev. // // The reference count of the desc.family PP_Var will be unchanged and the // caller is responsible for releasing it. void SetFromPPTrueTypeFontDesc(const PP_TrueTypeFontDesc_Dev& desc); // Converts this to a PP_FontDescription_Dev. // // The desc.family PP_Var will have one reference assigned to it. The caller // is responsible for releasing it. void CopyToPPTrueTypeFontDesc(PP_TrueTypeFontDesc_Dev* desc) const; std::string family; PP_TrueTypeFontFamily_Dev generic_family; PP_TrueTypeFontStyle_Dev style; PP_TrueTypeFontWeight_Dev weight; PP_TrueTypeFontWidth_Dev width; PP_TrueTypeFontCharset_Dev charset; }; struct SerializedDirEntry { std::string name; bool is_dir; }; struct PPAPI_PROXY_EXPORT PPBFlash_DrawGlyphs_Params { PPBFlash_DrawGlyphs_Params(); ~PPBFlash_DrawGlyphs_Params(); PP_Instance instance; ppapi::HostResource image_data; SerializedFontDescription font_desc; uint32_t color; PP_Point position; PP_Rect clip; float transformation[3][3]; PP_Bool allow_subpixel_aa; std::vector<uint16_t> glyph_indices; std::vector<PP_Point> glyph_advances; }; struct PPBURLLoader_UpdateProgress_Params { PP_Instance instance; ppapi::HostResource resource; int64_t bytes_sent; int64_t total_bytes_to_be_sent; int64_t bytes_received; int64_t total_bytes_to_be_received; }; struct PPPDecryptor_Buffer { ppapi::HostResource resource; uint32_t size; base::SharedMemoryHandle handle; }; // TODO(raymes): Make ImageHandle compatible with SerializedHandle. #if defined(OS_WIN) typedef HANDLE ImageHandle; #elif defined(TOOLKIT_GTK) // On legacy X Windows this is a SysV shared memory key. typedef int ImageHandle; #else typedef base::SharedMemoryHandle ImageHandle; #endif } // namespace proxy } // namespace ppapi #endif // PPAPI_PROXY_SERIALIZED_STRUCTS_H_