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

Side by Side Diff: webkit/glue/plugins/pepper_var.cc

Issue 2900003: Chrome side of converting enums to uppercase. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 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
« no previous file with comments | « webkit/glue/plugins/pepper_url_request_info.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "webkit/glue/plugins/pepper_var.h" 5 #include "webkit/glue/plugins/pepper_var.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "third_party/ppapi/c/pp_var.h" 10 #include "third_party/ppapi/c/pp_var.h"
(...skipping 19 matching lines...) Expand all
30 public: 30 public:
31 TryCatch(PP_Var* exception) : exception_(exception) { 31 TryCatch(PP_Var* exception) : exception_(exception) {
32 WebBindings::pushExceptionHandler(&TryCatch::Catch, this); 32 WebBindings::pushExceptionHandler(&TryCatch::Catch, this);
33 } 33 }
34 34
35 ~TryCatch() { 35 ~TryCatch() {
36 WebBindings::popExceptionHandler(); 36 WebBindings::popExceptionHandler();
37 } 37 }
38 38
39 bool HasException() const { 39 bool HasException() const {
40 return exception_ && exception_->type != PP_VarType_Void; 40 return exception_ && exception_->type != PP_VARTYPE_VOID;
41 } 41 }
42 42
43 void SetException(const char* message) { 43 void SetException(const char* message) {
44 DCHECK(!HasException()); 44 DCHECK(!HasException());
45 if (exception_) 45 if (exception_)
46 *exception_ = VarFromUtf8(message, strlen(message)); 46 *exception_ = VarFromUtf8(message, strlen(message));
47 } 47 }
48 48
49 private: 49 private:
50 static void Catch(void* self, const NPUTF8* message) { 50 static void Catch(void* self, const NPUTF8* message) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 } 99 }
100 NOTREACHED(); 100 NOTREACHED();
101 return PP_MakeVoid(); 101 return PP_MakeVoid();
102 } 102 }
103 103
104 // Returns a NPVariant that corresponds to the given PP_Var. The contents of 104 // Returns a NPVariant that corresponds to the given PP_Var. The contents of
105 // the PP_Var will be copied unless the PP_Var corresponds to an object. 105 // the PP_Var will be copied unless the PP_Var corresponds to an object.
106 NPVariant PPVarToNPVariant(PP_Var var) { 106 NPVariant PPVarToNPVariant(PP_Var var) {
107 NPVariant ret; 107 NPVariant ret;
108 switch (var.type) { 108 switch (var.type) {
109 case PP_VarType_Void: 109 case PP_VARTYPE_VOID:
110 VOID_TO_NPVARIANT(ret); 110 VOID_TO_NPVARIANT(ret);
111 break; 111 break;
112 case PP_VarType_Null: 112 case PP_VARTYPE_NULL:
113 NULL_TO_NPVARIANT(ret); 113 NULL_TO_NPVARIANT(ret);
114 break; 114 break;
115 case PP_VarType_Bool: 115 case PP_VARTYPE_BOOL:
116 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret); 116 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret);
117 break; 117 break;
118 case PP_VarType_Int32: 118 case PP_VARTYPE_INT32:
119 INT32_TO_NPVARIANT(var.value.as_int, ret); 119 INT32_TO_NPVARIANT(var.value.as_int, ret);
120 break; 120 break;
121 case PP_VarType_Double: 121 case PP_VARTYPE_DOUBLE:
122 DOUBLE_TO_NPVARIANT(var.value.as_double, ret); 122 DOUBLE_TO_NPVARIANT(var.value.as_double, ret);
123 break; 123 break;
124 case PP_VarType_String: { 124 case PP_VARTYPE_STRING: {
125 const std::string& value = GetStringUnchecked(var)->value(); 125 const std::string& value = GetStringUnchecked(var)->value();
126 STRINGN_TO_NPVARIANT(base::strdup(value.c_str()), value.size(), ret); 126 STRINGN_TO_NPVARIANT(base::strdup(value.c_str()), value.size(), ret);
127 break; 127 break;
128 } 128 }
129 case PP_VarType_Object: { 129 case PP_VARTYPE_OBJECT: {
130 NPObject* object = GetNPObjectUnchecked(var); 130 NPObject* object = GetNPObjectUnchecked(var);
131 OBJECT_TO_NPVARIANT(WebBindings::retainObject(object), ret); 131 OBJECT_TO_NPVARIANT(WebBindings::retainObject(object), ret);
132 break; 132 break;
133 } 133 }
134 } 134 }
135 return ret; 135 return ret;
136 } 136 }
137 137
138 // Returns a NPVariant that corresponds to the given PP_Var. The contents of 138 // Returns a NPVariant that corresponds to the given PP_Var. The contents of
139 // the PP_Var will NOT be copied, so you need to ensure that the PP_Var remains 139 // the PP_Var will NOT be copied, so you need to ensure that the PP_Var remains
140 // valid while the resultant NPVariant is in use. 140 // valid while the resultant NPVariant is in use.
141 NPVariant PPVarToNPVariantNoCopy(PP_Var var) { 141 NPVariant PPVarToNPVariantNoCopy(PP_Var var) {
142 NPVariant ret; 142 NPVariant ret;
143 switch (var.type) { 143 switch (var.type) {
144 case PP_VarType_Void: 144 case PP_VARTYPE_VOID:
145 VOID_TO_NPVARIANT(ret); 145 VOID_TO_NPVARIANT(ret);
146 break; 146 break;
147 case PP_VarType_Null: 147 case PP_VARTYPE_NULL:
148 NULL_TO_NPVARIANT(ret); 148 NULL_TO_NPVARIANT(ret);
149 break; 149 break;
150 case PP_VarType_Bool: 150 case PP_VARTYPE_BOOL:
151 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret); 151 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret);
152 break; 152 break;
153 case PP_VarType_Int32: 153 case PP_VARTYPE_INT32:
154 INT32_TO_NPVARIANT(var.value.as_int, ret); 154 INT32_TO_NPVARIANT(var.value.as_int, ret);
155 break; 155 break;
156 case PP_VarType_Double: 156 case PP_VARTYPE_DOUBLE:
157 DOUBLE_TO_NPVARIANT(var.value.as_double, ret); 157 DOUBLE_TO_NPVARIANT(var.value.as_double, ret);
158 break; 158 break;
159 case PP_VarType_String: { 159 case PP_VARTYPE_STRING: {
160 const std::string& value = GetStringUnchecked(var)->value(); 160 const std::string& value = GetStringUnchecked(var)->value();
161 STRINGN_TO_NPVARIANT(value.c_str(), value.size(), ret); 161 STRINGN_TO_NPVARIANT(value.c_str(), value.size(), ret);
162 break; 162 break;
163 } 163 }
164 case PP_VarType_Object: { 164 case PP_VARTYPE_OBJECT: {
165 OBJECT_TO_NPVARIANT(GetNPObjectUnchecked(var), ret); 165 OBJECT_TO_NPVARIANT(GetNPObjectUnchecked(var), ret);
166 break; 166 break;
167 } 167 }
168 } 168 }
169 return ret; 169 return ret;
170 } 170 }
171 171
172 // Returns a NPIdentifier that corresponds to the given PP_Var. The contents 172 // Returns a NPIdentifier that corresponds to the given PP_Var. The contents
173 // of the PP_Var will be copied. Returns NULL if the given PP_Var is not a a 173 // of the PP_Var will be copied. Returns NULL if the given PP_Var is not a a
174 // string or integer type. 174 // string or integer type.
175 NPIdentifier PPVarToNPIdentifier(PP_Var var) { 175 NPIdentifier PPVarToNPIdentifier(PP_Var var) {
176 switch (var.type) { 176 switch (var.type) {
177 case PP_VarType_String: 177 case PP_VARTYPE_STRING:
178 return WebBindings::getStringIdentifier( 178 return WebBindings::getStringIdentifier(
179 GetStringUnchecked(var)->value().c_str()); 179 GetStringUnchecked(var)->value().c_str());
180 case PP_VarType_Int32: 180 case PP_VARTYPE_INT32:
181 return WebBindings::getIntIdentifier(var.value.as_int); 181 return WebBindings::getIntIdentifier(var.value.as_int);
182 default: 182 default:
183 return NULL; 183 return NULL;
184 } 184 }
185 } 185 }
186 186
187 PP_Var NPIdentifierToPPVar(NPIdentifier id) { 187 PP_Var NPIdentifierToPPVar(NPIdentifier id) {
188 const NPUTF8* string_value = NULL; 188 const NPUTF8* string_value = NULL;
189 int32_t int_value = 0; 189 int32_t int_value = 0;
190 bool is_string = false; 190 bool is_string = false;
191 WebBindings::extractIdentifierData(id, string_value, int_value, is_string); 191 WebBindings::extractIdentifierData(id, string_value, int_value, is_string);
192 if (is_string) 192 if (is_string)
193 return VarFromUtf8(string_value, strlen(string_value)); 193 return VarFromUtf8(string_value, strlen(string_value));
194 194
195 return PP_MakeInt32(int_value); 195 return PP_MakeInt32(int_value);
196 } 196 }
197 197
198 PP_Var NPIdentifierToPPVarString(NPIdentifier id) { 198 PP_Var NPIdentifierToPPVarString(NPIdentifier id) {
199 PP_Var var = NPIdentifierToPPVar(id); 199 PP_Var var = NPIdentifierToPPVar(id);
200 if (var.type == PP_VarType_String) 200 if (var.type == PP_VARTYPE_STRING)
201 return var; 201 return var;
202 DCHECK(var.type == PP_VarType_Int32); 202 DCHECK(var.type == PP_VARTYPE_INT32);
203 const std::string& str = IntToString(var.value.as_int); 203 const std::string& str = IntToString(var.value.as_int);
204 return VarFromUtf8(str.data(), str.size()); 204 return VarFromUtf8(str.data(), str.size());
205 } 205 }
206 206
207 void ThrowException(NPObject* object, PP_Var exception) { 207 void ThrowException(NPObject* object, PP_Var exception) {
208 String* str = GetString(exception); 208 String* str = GetString(exception);
209 if (str) 209 if (str)
210 WebBindings::setException(object, str->value().c_str()); 210 WebBindings::setException(object, str->value().c_str());
211 } 211 }
212 212
(...skipping 26 matching lines...) Expand all
239 bool WrapperClass_HasMethod(NPObject* object, NPIdentifier method_name) { 239 bool WrapperClass_HasMethod(NPObject* object, NPIdentifier method_name) {
240 WrapperObject* wrapper = ToWrapper(object); 240 WrapperObject* wrapper = ToWrapper(object);
241 241
242 PP_Var method_name_var = NPIdentifierToPPVarString(method_name); 242 PP_Var method_name_var = NPIdentifierToPPVarString(method_name);
243 PP_Var exception = PP_MakeVoid(); 243 PP_Var exception = PP_MakeVoid();
244 bool rv = wrapper->ppp_class->HasMethod(wrapper->ppp_class_data, 244 bool rv = wrapper->ppp_class->HasMethod(wrapper->ppp_class_data,
245 method_name_var, 245 method_name_var,
246 &exception); 246 &exception);
247 Release(method_name_var); 247 Release(method_name_var);
248 248
249 if (exception.type != PP_VarType_Void) { 249 if (exception.type != PP_VARTYPE_VOID) {
250 ThrowException(object, exception); 250 ThrowException(object, exception);
251 Release(exception); 251 Release(exception);
252 return false; 252 return false;
253 } 253 }
254 return rv; 254 return rv;
255 } 255 }
256 256
257 bool WrapperClass_Invoke(NPObject* object, NPIdentifier method_name, 257 bool WrapperClass_Invoke(NPObject* object, NPIdentifier method_name,
258 const NPVariant* argv, uint32_t argc, 258 const NPVariant* argv, uint32_t argc,
259 NPVariant* result) { 259 NPVariant* result) {
260 WrapperObject* wrapper = ToWrapper(object); 260 WrapperObject* wrapper = ToWrapper(object);
261 261
262 scoped_array<PP_Var> args; 262 scoped_array<PP_Var> args;
263 if (argc) { 263 if (argc) {
264 args.reset(new PP_Var[argc]); 264 args.reset(new PP_Var[argc]);
265 for (uint32_t i = 0; i < argc; ++i) 265 for (uint32_t i = 0; i < argc; ++i)
266 args[i] = NPVariantToPPVar(&argv[i]); 266 args[i] = NPVariantToPPVar(&argv[i]);
267 } 267 }
268 PP_Var method_name_var = NPIdentifierToPPVarString(method_name); 268 PP_Var method_name_var = NPIdentifierToPPVarString(method_name);
269 PP_Var exception = PP_MakeVoid(); 269 PP_Var exception = PP_MakeVoid();
270 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data, 270 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data,
271 method_name_var, argc, 271 method_name_var, argc,
272 args.get(), &exception); 272 args.get(), &exception);
273 Release(method_name_var); 273 Release(method_name_var);
274 for (uint32_t i = 0; i < argc; ++i) 274 for (uint32_t i = 0; i < argc; ++i)
275 Release(args[i]); 275 Release(args[i]);
276 276
277 bool rv; 277 bool rv;
278 if (exception.type == PP_VarType_Void) { 278 if (exception.type == PP_VARTYPE_VOID) {
279 rv = true; 279 rv = true;
280 *result = PPVarToNPVariant(result_var); 280 *result = PPVarToNPVariant(result_var);
281 } else { 281 } else {
282 rv = false; 282 rv = false;
283 ThrowException(object, exception); 283 ThrowException(object, exception);
284 Release(exception); 284 Release(exception);
285 } 285 }
286 Release(result_var); 286 Release(result_var);
287 return rv; 287 return rv;
288 } 288 }
289 289
290 bool WrapperClass_InvokeDefault(NPObject* object, const NPVariant* argv, 290 bool WrapperClass_InvokeDefault(NPObject* object, const NPVariant* argv,
291 uint32_t argc, NPVariant* result) { 291 uint32_t argc, NPVariant* result) {
292 WrapperObject* wrapper = ToWrapper(object); 292 WrapperObject* wrapper = ToWrapper(object);
293 293
294 scoped_array<PP_Var> args; 294 scoped_array<PP_Var> args;
295 if (argc) { 295 if (argc) {
296 args.reset(new PP_Var[argc]); 296 args.reset(new PP_Var[argc]);
297 for (uint32_t i = 0; i < argc; ++i) 297 for (uint32_t i = 0; i < argc; ++i)
298 args[i] = NPVariantToPPVar(&argv[i]); 298 args[i] = NPVariantToPPVar(&argv[i]);
299 } 299 }
300 PP_Var exception = PP_MakeVoid(); 300 PP_Var exception = PP_MakeVoid();
301 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data, 301 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data,
302 PP_MakeVoid(), argc, args.get(), 302 PP_MakeVoid(), argc, args.get(),
303 &exception); 303 &exception);
304 for (uint32_t i = 0; i < argc; ++i) 304 for (uint32_t i = 0; i < argc; ++i)
305 Release(args[i]); 305 Release(args[i]);
306 306
307 bool rv; 307 bool rv;
308 if (exception.type == PP_VarType_Void) { 308 if (exception.type == PP_VARTYPE_VOID) {
309 rv = true; 309 rv = true;
310 *result = PPVarToNPVariant(result_var); 310 *result = PPVarToNPVariant(result_var);
311 } else { 311 } else {
312 rv = false; 312 rv = false;
313 ThrowException(object, exception); 313 ThrowException(object, exception);
314 Release(exception); 314 Release(exception);
315 } 315 }
316 Release(result_var); 316 Release(result_var);
317 return rv; 317 return rv;
318 } 318 }
319 319
320 bool WrapperClass_HasProperty(NPObject* object, NPIdentifier property_name) { 320 bool WrapperClass_HasProperty(NPObject* object, NPIdentifier property_name) {
321 WrapperObject* wrapper = ToWrapper(object); 321 WrapperObject* wrapper = ToWrapper(object);
322 322
323 PP_Var property_name_var = NPIdentifierToPPVar(property_name); 323 PP_Var property_name_var = NPIdentifierToPPVar(property_name);
324 PP_Var exception = PP_MakeVoid(); 324 PP_Var exception = PP_MakeVoid();
325 bool rv = wrapper->ppp_class->HasProperty(wrapper->ppp_class_data, 325 bool rv = wrapper->ppp_class->HasProperty(wrapper->ppp_class_data,
326 property_name_var, 326 property_name_var,
327 &exception); 327 &exception);
328 Release(property_name_var); 328 Release(property_name_var);
329 329
330 if (exception.type != PP_VarType_Void) { 330 if (exception.type != PP_VARTYPE_VOID) {
331 ThrowException(object, exception); 331 ThrowException(object, exception);
332 Release(exception); 332 Release(exception);
333 return false; 333 return false;
334 } 334 }
335 return rv; 335 return rv;
336 } 336 }
337 337
338 bool WrapperClass_GetProperty(NPObject* object, NPIdentifier property_name, 338 bool WrapperClass_GetProperty(NPObject* object, NPIdentifier property_name,
339 NPVariant* result) { 339 NPVariant* result) {
340 WrapperObject* wrapper = ToWrapper(object); 340 WrapperObject* wrapper = ToWrapper(object);
341 341
342 PP_Var property_name_var = NPIdentifierToPPVar(property_name); 342 PP_Var property_name_var = NPIdentifierToPPVar(property_name);
343 PP_Var exception = PP_MakeVoid(); 343 PP_Var exception = PP_MakeVoid();
344 PP_Var result_var = wrapper->ppp_class->GetProperty(wrapper->ppp_class_data, 344 PP_Var result_var = wrapper->ppp_class->GetProperty(wrapper->ppp_class_data,
345 property_name_var, 345 property_name_var,
346 &exception); 346 &exception);
347 Release(property_name_var); 347 Release(property_name_var);
348 348
349 bool rv; 349 bool rv;
350 if (exception.type == PP_VarType_Void) { 350 if (exception.type == PP_VARTYPE_VOID) {
351 rv = true; 351 rv = true;
352 *result = PPVarToNPVariant(result_var); 352 *result = PPVarToNPVariant(result_var);
353 } else { 353 } else {
354 rv = false; 354 rv = false;
355 ThrowException(object, exception); 355 ThrowException(object, exception);
356 Release(exception); 356 Release(exception);
357 } 357 }
358 Release(result_var); 358 Release(result_var);
359 return rv; 359 return rv;
360 } 360 }
361 361
362 bool WrapperClass_SetProperty(NPObject* object, NPIdentifier property_name, 362 bool WrapperClass_SetProperty(NPObject* object, NPIdentifier property_name,
363 const NPVariant* value) { 363 const NPVariant* value) {
364 WrapperObject* wrapper = ToWrapper(object); 364 WrapperObject* wrapper = ToWrapper(object);
365 365
366 PP_Var property_name_var = NPIdentifierToPPVar(property_name); 366 PP_Var property_name_var = NPIdentifierToPPVar(property_name);
367 PP_Var value_var = NPVariantToPPVar(value); 367 PP_Var value_var = NPVariantToPPVar(value);
368 PP_Var exception = PP_MakeVoid(); 368 PP_Var exception = PP_MakeVoid();
369 wrapper->ppp_class->SetProperty(wrapper->ppp_class_data, property_name_var, 369 wrapper->ppp_class->SetProperty(wrapper->ppp_class_data, property_name_var,
370 value_var, &exception); 370 value_var, &exception);
371 Release(value_var); 371 Release(value_var);
372 Release(property_name_var); 372 Release(property_name_var);
373 373
374 if (exception.type != PP_VarType_Void) { 374 if (exception.type != PP_VARTYPE_VOID) {
375 ThrowException(object, exception); 375 ThrowException(object, exception);
376 Release(exception); 376 Release(exception);
377 return false; 377 return false;
378 } 378 }
379 return true; 379 return true;
380 } 380 }
381 381
382 bool WrapperClass_RemoveProperty(NPObject* object, NPIdentifier property_name) { 382 bool WrapperClass_RemoveProperty(NPObject* object, NPIdentifier property_name) {
383 WrapperObject* wrapper = ToWrapper(object); 383 WrapperObject* wrapper = ToWrapper(object);
384 384
385 PP_Var property_name_var = NPIdentifierToPPVar(property_name); 385 PP_Var property_name_var = NPIdentifierToPPVar(property_name);
386 PP_Var exception = PP_MakeVoid(); 386 PP_Var exception = PP_MakeVoid();
387 wrapper->ppp_class->RemoveProperty(wrapper->ppp_class_data, property_name_var, 387 wrapper->ppp_class->RemoveProperty(wrapper->ppp_class_data, property_name_var,
388 &exception); 388 &exception);
389 Release(property_name_var); 389 Release(property_name_var);
390 390
391 if (exception.type != PP_VarType_Void) { 391 if (exception.type != PP_VARTYPE_VOID) {
392 ThrowException(object, exception); 392 ThrowException(object, exception);
393 Release(exception); 393 Release(exception);
394 return false; 394 return false;
395 } 395 }
396 return true; 396 return true;
397 } 397 }
398 398
399 bool WrapperClass_Enumerate(NPObject* object, NPIdentifier** values, 399 bool WrapperClass_Enumerate(NPObject* object, NPIdentifier** values,
400 uint32_t* count) { 400 uint32_t* count) {
401 WrapperObject* wrapper = ToWrapper(object); 401 WrapperObject* wrapper = ToWrapper(object);
402 402
403 uint32_t property_count = 0; 403 uint32_t property_count = 0;
404 PP_Var* properties = NULL; 404 PP_Var* properties = NULL;
405 PP_Var exception = PP_MakeVoid(); 405 PP_Var exception = PP_MakeVoid();
406 wrapper->ppp_class->GetAllPropertyNames(wrapper->ppp_class_data, 406 wrapper->ppp_class->GetAllPropertyNames(wrapper->ppp_class_data,
407 &property_count, 407 &property_count,
408 &properties, 408 &properties,
409 &exception); 409 &exception);
410 410
411 bool rv; 411 bool rv;
412 if (exception.type == PP_VarType_Void) { 412 if (exception.type == PP_VARTYPE_VOID) {
413 rv = true; 413 rv = true;
414 if (property_count == 0) { 414 if (property_count == 0) {
415 *values = NULL; 415 *values = NULL;
416 *count = 0; 416 *count = 0;
417 } else { 417 } else {
418 *values = static_cast<NPIdentifier*>( 418 *values = static_cast<NPIdentifier*>(
419 malloc(sizeof(NPIdentifier) * property_count)); 419 malloc(sizeof(NPIdentifier) * property_count));
420 *count = property_count; 420 *count = property_count;
421 for (uint32_t i = 0; i < property_count; ++i) 421 for (uint32_t i = 0; i < property_count; ++i)
422 (*values)[i] = PPVarToNPIdentifier(properties[i]); 422 (*values)[i] = PPVarToNPIdentifier(properties[i]);
(...skipping 22 matching lines...) Expand all
445 } 445 }
446 446
447 PP_Var exception = PP_MakeVoid(); 447 PP_Var exception = PP_MakeVoid();
448 PP_Var result_var = wrapper->ppp_class->Construct(wrapper->ppp_class_data, 448 PP_Var result_var = wrapper->ppp_class->Construct(wrapper->ppp_class_data,
449 argc, args.get(), 449 argc, args.get(),
450 &exception); 450 &exception);
451 for (uint32_t i = 0; i < argc; ++i) 451 for (uint32_t i = 0; i < argc; ++i)
452 Release(args[i]); 452 Release(args[i]);
453 453
454 bool rv; 454 bool rv;
455 if (exception.type == PP_VarType_Void) { 455 if (exception.type == PP_VARTYPE_VOID) {
456 rv = true; 456 rv = true;
457 *result = PPVarToNPVariant(result_var); 457 *result = PPVarToNPVariant(result_var);
458 } else { 458 } else {
459 rv = false; 459 rv = false;
460 ThrowException(object, exception); 460 ThrowException(object, exception);
461 Release(exception); 461 Release(exception);
462 } 462 }
463 Release(result_var); 463 Release(result_var);
464 return rv; 464 return rv;
465 } 465 }
(...skipping 11 matching lines...) Expand all
477 WrapperClass_SetProperty, 477 WrapperClass_SetProperty,
478 WrapperClass_RemoveProperty, 478 WrapperClass_RemoveProperty,
479 WrapperClass_Enumerate, 479 WrapperClass_Enumerate,
480 WrapperClass_Construct 480 WrapperClass_Construct
481 }; 481 };
482 482
483 // --------------------------------------------------------------------------- 483 // ---------------------------------------------------------------------------
484 // PPB_Var methods 484 // PPB_Var methods
485 485
486 void AddRef(PP_Var var) { 486 void AddRef(PP_Var var) {
487 if (var.type == PP_VarType_String) { 487 if (var.type == PP_VARTYPE_STRING) {
488 GetStringUnchecked(var)->AddRef(); 488 GetStringUnchecked(var)->AddRef();
489 } else if (var.type == PP_VarType_Object) { 489 } else if (var.type == PP_VARTYPE_OBJECT) {
490 // TODO(darin): Add thread safety check 490 // TODO(darin): Add thread safety check
491 WebBindings::retainObject(GetNPObjectUnchecked(var)); 491 WebBindings::retainObject(GetNPObjectUnchecked(var));
492 } 492 }
493 } 493 }
494 494
495 void Release(PP_Var var) { 495 void Release(PP_Var var) {
496 if (var.type == PP_VarType_String) { 496 if (var.type == PP_VARTYPE_STRING) {
497 GetStringUnchecked(var)->Release(); 497 GetStringUnchecked(var)->Release();
498 } else if (var.type == PP_VarType_Object) { 498 } else if (var.type == PP_VARTYPE_OBJECT) {
499 // TODO(darin): Add thread safety check 499 // TODO(darin): Add thread safety check
500 WebBindings::releaseObject(GetNPObjectUnchecked(var)); 500 WebBindings::releaseObject(GetNPObjectUnchecked(var));
501 } 501 }
502 } 502 }
503 503
504 PP_Var VarFromUtf8(const char* data, uint32_t len) { 504 PP_Var VarFromUtf8(const char* data, uint32_t len) {
505 String* str = new String(data, len); 505 String* str = new String(data, len);
506 str->AddRef(); // This is for the caller, we return w/ a refcount of 1. 506 str->AddRef(); // This is for the caller, we return w/ a refcount of 1.
507 PP_Var ret; 507 PP_Var ret;
508 ret.type = PP_VarType_String; 508 ret.type = PP_VARTYPE_STRING;
509 ret.value.as_id = reinterpret_cast<intptr_t>(str); 509 ret.value.as_id = reinterpret_cast<intptr_t>(str);
510 return ret; 510 return ret;
511 } 511 }
512 512
513 const char* VarToUtf8(PP_Var var, uint32_t* len) { 513 const char* VarToUtf8(PP_Var var, uint32_t* len) {
514 if (var.type != PP_VarType_String) { 514 if (var.type != PP_VARTYPE_STRING) {
515 *len = 0; 515 *len = 0;
516 return NULL; 516 return NULL;
517 } 517 }
518 const std::string& str = GetStringUnchecked(var)->value(); 518 const std::string& str = GetStringUnchecked(var)->value();
519 *len = static_cast<uint32_t>(str.size()); 519 *len = static_cast<uint32_t>(str.size());
520 if (str.empty()) 520 if (str.empty())
521 return ""; // Don't return NULL on success. 521 return ""; // Don't return NULL on success.
522 return str.data(); 522 return str.data();
523 } 523 }
524 524
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 if (try_catch.HasException()) 694 if (try_catch.HasException())
695 return PP_MakeVoid(); 695 return PP_MakeVoid();
696 696
697 NPObject* object = GetNPObject(var); 697 NPObject* object = GetNPObject(var);
698 if (!object) { 698 if (!object) {
699 try_catch.SetException(kInvalidObjectException); 699 try_catch.SetException(kInvalidObjectException);
700 return PP_MakeVoid(); 700 return PP_MakeVoid();
701 } 701 }
702 702
703 NPIdentifier identifier; 703 NPIdentifier identifier;
704 if (method_name.type == PP_VarType_Void) { 704 if (method_name.type == PP_VARTYPE_VOID) {
705 identifier = NULL; 705 identifier = NULL;
706 } else if (method_name.type == PP_VarType_String) { 706 } else if (method_name.type == PP_VARTYPE_STRING) {
707 // Specifically allow only string functions to be called. 707 // Specifically allow only string functions to be called.
708 identifier = PPVarToNPIdentifier(method_name); 708 identifier = PPVarToNPIdentifier(method_name);
709 if (!identifier) { 709 if (!identifier) {
710 try_catch.SetException(kInvalidPropertyException); 710 try_catch.SetException(kInvalidPropertyException);
711 return PP_MakeVoid(); 711 return PP_MakeVoid();
712 } 712 }
713 } else { 713 } else {
714 try_catch.SetException(kInvalidPropertyException); 714 try_catch.SetException(kInvalidPropertyException);
715 return PP_MakeVoid(); 715 return PP_MakeVoid();
716 } 716 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 }; 824 };
825 825
826 } // namespace 826 } // namespace
827 827
828 const PPB_Var* GetVarInterface() { 828 const PPB_Var* GetVarInterface() {
829 return &var_interface; 829 return &var_interface;
830 } 830 }
831 831
832 PP_Var NPObjectToPPVar(NPObject* object) { 832 PP_Var NPObjectToPPVar(NPObject* object) {
833 PP_Var ret; 833 PP_Var ret;
834 ret.type = PP_VarType_Object; 834 ret.type = PP_VARTYPE_OBJECT;
835 ret.value.as_id = reinterpret_cast<intptr_t>(object); 835 ret.value.as_id = reinterpret_cast<intptr_t>(object);
836 WebBindings::retainObject(object); 836 WebBindings::retainObject(object);
837 return ret; 837 return ret;
838 } 838 }
839 839
840 NPObject* GetNPObject(PP_Var var) { 840 NPObject* GetNPObject(PP_Var var) {
841 if (var.type != PP_VarType_Object) 841 if (var.type != PP_VARTYPE_OBJECT)
842 return NULL; 842 return NULL;
843 return GetNPObjectUnchecked(var); 843 return GetNPObjectUnchecked(var);
844 } 844 }
845 845
846 PP_Var StringToPPVar(const std::string& str) { 846 PP_Var StringToPPVar(const std::string& str) {
847 DCHECK(IsStringUTF8(str)); 847 DCHECK(IsStringUTF8(str));
848 return VarFromUtf8(str.data(), str.size()); 848 return VarFromUtf8(str.data(), str.size());
849 } 849 }
850 850
851 String* GetString(PP_Var var) { 851 String* GetString(PP_Var var) {
852 if (var.type != PP_VarType_String) 852 if (var.type != PP_VARTYPE_STRING)
853 return NULL; 853 return NULL;
854 return GetStringUnchecked(var); 854 return GetStringUnchecked(var);
855 } 855 }
856 856
857 } // namespace pepper 857 } // namespace pepper
OLDNEW
« no previous file with comments | « webkit/glue/plugins/pepper_url_request_info.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698