OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/plugins/ppapi/npapi_glue.h" | 5 #include "webkit/plugins/ppapi/npapi_glue.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "webkit/plugins/ppapi/npobject_var.h" | 10 #include "webkit/plugins/ppapi/npobject_var.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 case PP_VARTYPE_BOOL: | 43 case PP_VARTYPE_BOOL: |
44 BOOLEAN_TO_NPVARIANT(var.value.as_bool, *result); | 44 BOOLEAN_TO_NPVARIANT(var.value.as_bool, *result); |
45 break; | 45 break; |
46 case PP_VARTYPE_INT32: | 46 case PP_VARTYPE_INT32: |
47 INT32_TO_NPVARIANT(var.value.as_int, *result); | 47 INT32_TO_NPVARIANT(var.value.as_int, *result); |
48 break; | 48 break; |
49 case PP_VARTYPE_DOUBLE: | 49 case PP_VARTYPE_DOUBLE: |
50 DOUBLE_TO_NPVARIANT(var.value.as_double, *result); | 50 DOUBLE_TO_NPVARIANT(var.value.as_double, *result); |
51 break; | 51 break; |
52 case PP_VARTYPE_STRING: { | 52 case PP_VARTYPE_STRING: { |
53 scoped_refptr<StringVar> string(StringVar::FromPPVar(var)); | 53 StringVar* string = StringVar::FromPPVar(var); |
54 if (!string) { | 54 if (!string) { |
55 VOID_TO_NPVARIANT(*result); | 55 VOID_TO_NPVARIANT(*result); |
56 return false; | 56 return false; |
57 } | 57 } |
58 const std::string& value = string->value(); | 58 const std::string& value = string->value(); |
59 char* c_string = static_cast<char*>(malloc(value.size())); | 59 char* c_string = static_cast<char*>(malloc(value.size())); |
60 memcpy(c_string, value.data(), value.size()); | 60 memcpy(c_string, value.data(), value.size()); |
61 STRINGN_TO_NPVARIANT(c_string, value.size(), *result); | 61 STRINGN_TO_NPVARIANT(c_string, value.size(), *result); |
62 break; | 62 break; |
63 } | 63 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 case NPVariantType_Object: | 99 case NPVariantType_Object: |
100 return NPObjectToPPVar(instance, NPVARIANT_TO_OBJECT(*variant)); | 100 return NPObjectToPPVar(instance, NPVARIANT_TO_OBJECT(*variant)); |
101 } | 101 } |
102 NOTREACHED(); | 102 NOTREACHED(); |
103 return PP_MakeUndefined(); | 103 return PP_MakeUndefined(); |
104 } | 104 } |
105 | 105 |
106 NPIdentifier PPVarToNPIdentifier(PP_Var var) { | 106 NPIdentifier PPVarToNPIdentifier(PP_Var var) { |
107 switch (var.type) { | 107 switch (var.type) { |
108 case PP_VARTYPE_STRING: { | 108 case PP_VARTYPE_STRING: { |
109 scoped_refptr<StringVar> string(StringVar::FromPPVar(var)); | 109 StringVar* string = StringVar::FromPPVar(var); |
110 if (!string) | 110 if (!string) |
111 return NULL; | 111 return NULL; |
112 return WebBindings::getStringIdentifier(string->value().c_str()); | 112 return WebBindings::getStringIdentifier(string->value().c_str()); |
113 } | 113 } |
114 case PP_VARTYPE_INT32: | 114 case PP_VARTYPE_INT32: |
115 return WebBindings::getIntIdentifier(var.value.as_int); | 115 return WebBindings::getIntIdentifier(var.value.as_int); |
116 default: | 116 default: |
117 return NULL; | 117 return NULL; |
118 } | 118 } |
119 } | 119 } |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 } | 209 } |
210 | 210 |
211 // Call this to ignore any exception. This prevents the DCHECK from failing | 211 // Call this to ignore any exception. This prevents the DCHECK from failing |
212 // in the destructor. | 212 // in the destructor. |
213 void PPResultAndExceptionToNPResult::IgnoreException() { | 213 void PPResultAndExceptionToNPResult::IgnoreException() { |
214 checked_exception_ = true; | 214 checked_exception_ = true; |
215 } | 215 } |
216 | 216 |
217 // Throws the current exception to JS. The exception must be set. | 217 // Throws the current exception to JS. The exception must be set. |
218 void PPResultAndExceptionToNPResult::ThrowException() { | 218 void PPResultAndExceptionToNPResult::ThrowException() { |
219 scoped_refptr<StringVar> string(StringVar::FromPPVar(exception_)); | 219 StringVar* string = StringVar::FromPPVar(exception_); |
220 if (string) { | 220 if (string) |
221 WebBindings::setException(object_var_, string->value().c_str()); | 221 WebBindings::setException(object_var_, string->value().c_str()); |
222 } | |
223 } | 222 } |
224 | 223 |
225 // PPVarArrayFromNPVariantArray ------------------------------------------------ | 224 // PPVarArrayFromNPVariantArray ------------------------------------------------ |
226 | 225 |
227 PPVarArrayFromNPVariantArray::PPVarArrayFromNPVariantArray( | 226 PPVarArrayFromNPVariantArray::PPVarArrayFromNPVariantArray( |
228 PluginInstance* instance, | 227 PluginInstance* instance, |
229 size_t size, | 228 size_t size, |
230 const NPVariant* variants) | 229 const NPVariant* variants) |
231 : size_(size) { | 230 : size_(size) { |
232 if (size_ > 0) { | 231 if (size_ > 0) { |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 } | 310 } |
312 } | 311 } |
313 | 312 |
314 // static | 313 // static |
315 void TryCatch::Catch(void* self, const char* message) { | 314 void TryCatch::Catch(void* self, const char* message) { |
316 static_cast<TryCatch*>(self)->SetException(message); | 315 static_cast<TryCatch*>(self)->SetException(message); |
317 } | 316 } |
318 | 317 |
319 } // namespace ppapi | 318 } // namespace ppapi |
320 } // namespace webkit | 319 } // namespace webkit |
OLD | NEW |