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

Side by Side Diff: ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_font.cc

Issue 9187071: Lift the 64K message size limit for postMessage to/from NativeClient. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 8 years, 11 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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_font.h" 5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_font.h"
6 6
7 #include "native_client/src/include/nacl_scoped_ptr.h" 7 #include "native_client/src/include/nacl_scoped_ptr.h"
8 #include "native_client/src/include/portability.h" 8 #include "native_client/src/include/portability.h"
9 #include "native_client/src/shared/ppapi_proxy/object_serialize.h" 9 #include "native_client/src/shared/ppapi_proxy/object_serialize.h"
10 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" 10 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h"
11 #include "native_client/src/shared/ppapi_proxy/plugin_globals.h" 11 #include "native_client/src/shared/ppapi_proxy/plugin_globals.h"
(...skipping 20 matching lines...) Expand all
32 const nacl_abi_size_t kPPFontDescriptionBytes = 32 const nacl_abi_size_t kPPFontDescriptionBytes =
33 static_cast<nacl_abi_size_t>(sizeof(struct PP_FontDescription_Dev)); 33 static_cast<nacl_abi_size_t>(sizeof(struct PP_FontDescription_Dev));
34 const int32_t kInvalidOffset = -1; 34 const int32_t kInvalidOffset = -1;
35 35
36 PP_Var GetFontFamilies(PP_Instance instance) { 36 PP_Var GetFontFamilies(PP_Instance instance) {
37 DebugPrintf("PPB_Font::GetFontFamilies: instance=%"NACL_PRIu32"\n", 37 DebugPrintf("PPB_Font::GetFontFamilies: instance=%"NACL_PRIu32"\n",
38 instance); 38 instance);
39 NaClSrpcChannel* channel = GetMainSrpcChannel(); 39 NaClSrpcChannel* channel = GetMainSrpcChannel();
40 40
41 PP_Var font_families = PP_MakeUndefined(); 41 PP_Var font_families = PP_MakeUndefined();
42 nacl_abi_size_t var_size = kMaxVarSize; 42 nacl_abi_size_t var_size = kMaxReturnVarSize;
43 nacl::scoped_array<char> var_bytes(new char[kMaxVarSize]); 43 nacl::scoped_array<char> var_bytes(new char[var_size]);
44 44
45 NaClSrpcError srpc_result = 45 NaClSrpcError srpc_result =
46 PpbFontRpcClient::PPB_Font_GetFontFamilies( 46 PpbFontRpcClient::PPB_Font_GetFontFamilies(
47 channel, 47 channel,
48 instance, 48 instance,
49 &var_size, 49 &var_size,
50 var_bytes.get()); 50 var_bytes.get());
51 51
52 DebugPrintf("PPB_Font::GetFontFamilies: %s\n", 52 DebugPrintf("PPB_Font::GetFontFamilies: %s\n",
53 NaClSrpcErrorString(srpc_result)); 53 NaClSrpcErrorString(srpc_result));
54 54
55 if (srpc_result == NACL_SRPC_RESULT_OK) 55 if (srpc_result == NACL_SRPC_RESULT_OK)
56 (void) DeserializeTo(var_bytes.get(), var_size, 1, &font_families); 56 (void) DeserializeTo(var_bytes.get(), var_size, 1, &font_families);
57 return font_families; 57 return font_families;
58 } 58 }
59 59
60 PP_Resource Create(PP_Instance instance, 60 PP_Resource Create(PP_Instance instance,
61 const struct PP_FontDescription_Dev* description) { 61 const struct PP_FontDescription_Dev* description) {
62 DebugPrintf("PPB_Font::Create: instance=%"NACL_PRIu32"\n", instance); 62 DebugPrintf("PPB_Font::Create: instance=%"NACL_PRIu32"\n", instance);
63 63
64 nacl_abi_size_t face_size = kMaxVarSize; 64 nacl_abi_size_t face_size = 0;
65 nacl::scoped_array<char> face_bytes( 65 nacl::scoped_array<char> face_bytes(
66 Serialize(&description->face, 1, &face_size)); 66 Serialize(&description->face, 1, &face_size));
67 67
68 PP_Resource resource = kInvalidResourceId; 68 PP_Resource resource = kInvalidResourceId;
69 NaClSrpcError srpc_result = 69 NaClSrpcError srpc_result =
70 PpbFontRpcClient::PPB_Font_Create( 70 PpbFontRpcClient::PPB_Font_Create(
71 GetMainSrpcChannel(), 71 GetMainSrpcChannel(),
72 instance, 72 instance,
73 kPPFontDescriptionBytes, 73 kPPFontDescriptionBytes,
74 reinterpret_cast<char*>( 74 reinterpret_cast<char*>(
(...skipping 28 matching lines...) Expand all
103 } 103 }
104 104
105 PP_Bool Describe(PP_Resource font, 105 PP_Bool Describe(PP_Resource font,
106 struct PP_FontDescription_Dev* description, 106 struct PP_FontDescription_Dev* description,
107 struct PP_FontMetrics_Dev* metrics) { 107 struct PP_FontMetrics_Dev* metrics) {
108 DebugPrintf("PPB_Font::Describe: font=%"NACL_PRIu32"\n", font); 108 DebugPrintf("PPB_Font::Describe: font=%"NACL_PRIu32"\n", font);
109 NaClSrpcChannel* channel = GetMainSrpcChannel(); 109 NaClSrpcChannel* channel = GetMainSrpcChannel();
110 110
111 int32_t success = 0; 111 int32_t success = 0;
112 nacl_abi_size_t description_size = kPPFontDescriptionBytes; 112 nacl_abi_size_t description_size = kPPFontDescriptionBytes;
113 nacl_abi_size_t face_size = kMaxVarSize; 113 nacl_abi_size_t face_size = kMaxReturnVarSize;
114 nacl::scoped_array<char> face_bytes(new char[kMaxVarSize]); 114 nacl::scoped_array<char> face_bytes(new char[face_size]);
115 nacl_abi_size_t metrics_size = kPPFontMetricsBytes; 115 nacl_abi_size_t metrics_size = kPPFontMetricsBytes;
116 NaClSrpcError srpc_result = 116 NaClSrpcError srpc_result =
117 PpbFontRpcClient::PPB_Font_Describe( 117 PpbFontRpcClient::PPB_Font_Describe(
118 channel, 118 channel,
119 font, 119 font,
120 &description_size, 120 &description_size,
121 reinterpret_cast<char*>(description), 121 reinterpret_cast<char*>(description),
122 &face_size, 122 &face_size,
123 face_bytes.get(), 123 face_bytes.get(),
124 &metrics_size, 124 &metrics_size,
(...skipping 12 matching lines...) Expand all
137 137
138 PP_Bool DrawTextAt(PP_Resource font, 138 PP_Bool DrawTextAt(PP_Resource font,
139 PP_Resource image_data, 139 PP_Resource image_data,
140 const struct PP_TextRun_Dev* text_run, 140 const struct PP_TextRun_Dev* text_run,
141 const struct PP_Point* position, 141 const struct PP_Point* position,
142 uint32_t color, 142 uint32_t color,
143 const struct PP_Rect* clip, 143 const struct PP_Rect* clip,
144 PP_Bool image_data_is_opaque) { 144 PP_Bool image_data_is_opaque) {
145 DebugPrintf("PPB_Font::DrawTextAt: font=%"NACL_PRIu32"\n", font); 145 DebugPrintf("PPB_Font::DrawTextAt: font=%"NACL_PRIu32"\n", font);
146 146
147 nacl_abi_size_t text_size = kMaxVarSize; 147 nacl_abi_size_t text_size = 0;
148 nacl::scoped_array<char> text_bytes( 148 nacl::scoped_array<char> text_bytes(
149 Serialize(&text_run->text, 1, &text_size)); 149 Serialize(&text_run->text, 1, &text_size));
150 150
151 int32_t success = 0; 151 int32_t success = 0;
152 NaClSrpcError srpc_result = 152 NaClSrpcError srpc_result =
153 PpbFontRpcClient::PPB_Font_DrawTextAt( 153 PpbFontRpcClient::PPB_Font_DrawTextAt(
154 GetMainSrpcChannel(), 154 GetMainSrpcChannel(),
155 font, 155 font,
156 image_data, 156 image_data,
157 kPPTextRunBytes, 157 kPPTextRunBytes,
(...skipping 12 matching lines...) Expand all
170 DebugPrintf("PPB_Font::DrawTextAt: %s\n", NaClSrpcErrorString(srpc_result)); 170 DebugPrintf("PPB_Font::DrawTextAt: %s\n", NaClSrpcErrorString(srpc_result));
171 if (srpc_result == NACL_SRPC_RESULT_OK && success) 171 if (srpc_result == NACL_SRPC_RESULT_OK && success)
172 return PP_TRUE; 172 return PP_TRUE;
173 return PP_FALSE; 173 return PP_FALSE;
174 } 174 }
175 175
176 int32_t MeasureText(PP_Resource font, 176 int32_t MeasureText(PP_Resource font,
177 const struct PP_TextRun_Dev* text_run) { 177 const struct PP_TextRun_Dev* text_run) {
178 DebugPrintf("PPB_Font::MeasureText: font=%"NACL_PRIu32"\n", font); 178 DebugPrintf("PPB_Font::MeasureText: font=%"NACL_PRIu32"\n", font);
179 179
180 nacl_abi_size_t text_size = kMaxVarSize; 180 nacl_abi_size_t text_size = 0;
181 nacl::scoped_array<char> text_bytes( 181 nacl::scoped_array<char> text_bytes(
182 Serialize(&text_run->text, 1, &text_size)); 182 Serialize(&text_run->text, 1, &text_size));
183 int32_t width = 0; 183 int32_t width = 0;
184 NaClSrpcError srpc_result = 184 NaClSrpcError srpc_result =
185 PpbFontRpcClient::PPB_Font_MeasureText( 185 PpbFontRpcClient::PPB_Font_MeasureText(
186 GetMainSrpcChannel(), 186 GetMainSrpcChannel(),
187 font, 187 font,
188 kPPTextRunBytes, 188 kPPTextRunBytes,
189 reinterpret_cast<char*>( 189 reinterpret_cast<char*>(
190 const_cast<struct PP_TextRun_Dev*>(text_run)), 190 const_cast<struct PP_TextRun_Dev*>(text_run)),
191 text_size, 191 text_size,
192 text_bytes.get(), 192 text_bytes.get(),
193 &width); 193 &width);
194 194
195 DebugPrintf("PPB_Font::MeasureText: %s\n", NaClSrpcErrorString(srpc_result)); 195 DebugPrintf("PPB_Font::MeasureText: %s\n", NaClSrpcErrorString(srpc_result));
196 return width; 196 return width;
197 } 197 }
198 198
199 uint32_t CharacterOffsetForPixel(PP_Resource font, 199 uint32_t CharacterOffsetForPixel(PP_Resource font,
200 const struct PP_TextRun_Dev* text_run, 200 const struct PP_TextRun_Dev* text_run,
201 int32_t pixel_position) { 201 int32_t pixel_position) {
202 DebugPrintf("PPB_Font::CharacterOffsetForPixel: font=%"NACL_PRIu32"\n", font); 202 DebugPrintf("PPB_Font::CharacterOffsetForPixel: font=%"NACL_PRIu32"\n", font);
203 203
204 nacl_abi_size_t text_size = kMaxVarSize; 204 nacl_abi_size_t text_size = 0;
205 nacl::scoped_array<char> text_bytes( 205 nacl::scoped_array<char> text_bytes(
206 Serialize(&text_run->text, 1, &text_size)); 206 Serialize(&text_run->text, 1, &text_size));
207 int32_t offset = kInvalidOffset; 207 int32_t offset = kInvalidOffset;
208 NaClSrpcError srpc_result = 208 NaClSrpcError srpc_result =
209 PpbFontRpcClient::PPB_Font_CharacterOffsetForPixel( 209 PpbFontRpcClient::PPB_Font_CharacterOffsetForPixel(
210 GetMainSrpcChannel(), 210 GetMainSrpcChannel(),
211 font, 211 font,
212 kPPTextRunBytes, 212 kPPTextRunBytes,
213 reinterpret_cast<char*>( 213 reinterpret_cast<char*>(
214 const_cast<struct PP_TextRun_Dev*>(text_run)), 214 const_cast<struct PP_TextRun_Dev*>(text_run)),
215 text_size, 215 text_size,
216 text_bytes.get(), 216 text_bytes.get(),
217 pixel_position, 217 pixel_position,
218 &offset); 218 &offset);
219 219
220 DebugPrintf("PPB_Font::CharacterOffsetForPixel: %s\n", 220 DebugPrintf("PPB_Font::CharacterOffsetForPixel: %s\n",
221 NaClSrpcErrorString(srpc_result)); 221 NaClSrpcErrorString(srpc_result));
222 return offset; 222 return offset;
223 } 223 }
224 224
225 int32_t PixelOffsetForCharacter(PP_Resource font, 225 int32_t PixelOffsetForCharacter(PP_Resource font,
226 const struct PP_TextRun_Dev* text_run, 226 const struct PP_TextRun_Dev* text_run,
227 uint32_t char_offset) { 227 uint32_t char_offset) {
228 DebugPrintf("PPB_Font::PixelOffsetForCharacter: font=%"NACL_PRIu32"\n", font); 228 DebugPrintf("PPB_Font::PixelOffsetForCharacter: font=%"NACL_PRIu32"\n", font);
229 229
230 nacl_abi_size_t text_size = kMaxVarSize; 230 nacl_abi_size_t text_size = 0;
231 nacl::scoped_array<char> text_bytes( 231 nacl::scoped_array<char> text_bytes(
232 Serialize(&text_run->text, 1, &text_size)); 232 Serialize(&text_run->text, 1, &text_size));
233 int32_t offset = kInvalidOffset; 233 int32_t offset = kInvalidOffset;
234 NaClSrpcError srpc_result = 234 NaClSrpcError srpc_result =
235 PpbFontRpcClient::PPB_Font_PixelOffsetForCharacter( 235 PpbFontRpcClient::PPB_Font_PixelOffsetForCharacter(
236 GetMainSrpcChannel(), 236 GetMainSrpcChannel(),
237 font, 237 font,
238 kPPTextRunBytes, 238 kPPTextRunBytes,
239 reinterpret_cast<char*>( 239 reinterpret_cast<char*>(
240 const_cast<struct PP_TextRun_Dev*>(text_run)), 240 const_cast<struct PP_TextRun_Dev*>(text_run)),
(...skipping 17 matching lines...) Expand all
258 Describe, 258 Describe,
259 DrawTextAt, 259 DrawTextAt,
260 MeasureText, 260 MeasureText,
261 CharacterOffsetForPixel, 261 CharacterOffsetForPixel,
262 PixelOffsetForCharacter 262 PixelOffsetForCharacter
263 }; 263 };
264 return &font_interface; 264 return &font_interface;
265 } 265 }
266 266
267 } // namespace ppapi_proxy 267 } // namespace ppapi_proxy
268
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698