summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/serialized_structs.h
blob: f3e114c09fa4fc318de79bb7cc63c7d71688fa15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// 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;
#else
typedef base::SharedMemoryHandle ImageHandle;
#endif

}  // namespace proxy
}  // namespace ppapi

#endif  // PPAPI_PROXY_SERIALIZED_STRUCTS_H_