OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 if (!npObject || !_NPN_IsAlive(npObject)) { | 104 if (!npObject || !_NPN_IsAlive(npObject)) { |
105 throwError(v8ReferenceError, "NPObject deleted", args.GetIsolate()); | 105 throwError(v8ReferenceError, "NPObject deleted", args.GetIsolate()); |
106 return; | 106 return; |
107 } | 107 } |
108 | 108 |
109 // Wrap up parameters. | 109 // Wrap up parameters. |
110 int numArgs = args.Length(); | 110 int numArgs = args.Length(); |
111 OwnArrayPtr<NPVariant> npArgs = adoptArrayPtr(new NPVariant[numArgs]); | 111 OwnArrayPtr<NPVariant> npArgs = adoptArrayPtr(new NPVariant[numArgs]); |
112 | 112 |
113 for (int i = 0; i < numArgs; i++) | 113 for (int i = 0; i < numArgs; i++) |
114 convertV8ObjectToNPVariant(args[i], npObject, &npArgs[i]); | 114 convertV8ObjectToNPVariant(args[i], npObject, &npArgs[i], args.GetIsolat
e()); |
115 | 115 |
116 NPVariant result; | 116 NPVariant result; |
117 VOID_TO_NPVARIANT(result); | 117 VOID_TO_NPVARIANT(result); |
118 | 118 |
119 bool retval = true; | 119 bool retval = true; |
120 switch (functionId) { | 120 switch (functionId) { |
121 case InvokeMethod: | 121 case InvokeMethod: |
122 if (npObject->_class->invoke) { | 122 if (npObject->_class->invoke) { |
123 v8::Handle<v8::String> functionName = v8::Handle<v8::String>::Cast(a
rgs.Data()); | 123 v8::Handle<v8::String> functionName = v8::Handle<v8::String>::Cast(a
rgs.Data()); |
124 NPIdentifier identifier = getStringIdentifier(functionName); | 124 NPIdentifier identifier = getStringIdentifier(functionName); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 throwError(v8ReferenceError, "NPObject deleted", isolate); | 313 throwError(v8ReferenceError, "NPObject deleted", isolate); |
314 return value; // Intercepted, but an exception was thrown. | 314 return value; // Intercepted, but an exception was thrown. |
315 } | 315 } |
316 | 316 |
317 if (npObject->_class->hasProperty && npObject->_class->setProperty && npObje
ct->_class->hasProperty(npObject, identifier)) { | 317 if (npObject->_class->hasProperty && npObject->_class->setProperty && npObje
ct->_class->hasProperty(npObject, identifier)) { |
318 if (!_NPN_IsAlive(npObject)) | 318 if (!_NPN_IsAlive(npObject)) |
319 return throwError(v8ReferenceError, "NPObject deleted", isolate); | 319 return throwError(v8ReferenceError, "NPObject deleted", isolate); |
320 | 320 |
321 NPVariant npValue; | 321 NPVariant npValue; |
322 VOID_TO_NPVARIANT(npValue); | 322 VOID_TO_NPVARIANT(npValue); |
323 convertV8ObjectToNPVariant(value, npObject, &npValue); | 323 convertV8ObjectToNPVariant(value, npObject, &npValue, isolate); |
324 bool success = npObject->_class->setProperty(npObject, identifier, &npVa
lue); | 324 bool success = npObject->_class->setProperty(npObject, identifier, &npVa
lue); |
325 _NPN_ReleaseVariantValue(&npValue); | 325 _NPN_ReleaseVariantValue(&npValue); |
326 if (success) | 326 if (success) |
327 return value; // Intercept the call. | 327 return value; // Intercept the call. |
328 } | 328 } |
329 return v8Undefined(); | 329 return v8Undefined(); |
330 } | 330 } |
331 | 331 |
332 | 332 |
333 void npObjectNamedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value
> value, const v8::PropertyCallbackInfo<v8::Value>& info) | 333 void npObjectNamedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value
> value, const v8::PropertyCallbackInfo<v8::Value>& info) |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 v8::HandleScope scope(isolate); | 470 v8::HandleScope scope(isolate); |
471 v8::Handle<v8::Object> wrapper = staticNPObjectMap().newLocal(object, isolat
e); | 471 v8::Handle<v8::Object> wrapper = staticNPObjectMap().newLocal(object, isolat
e); |
472 if (!wrapper.IsEmpty()) { | 472 if (!wrapper.IsEmpty()) { |
473 V8DOMWrapper::clearNativeInfo(wrapper, npObjectTypeInfo()); | 473 V8DOMWrapper::clearNativeInfo(wrapper, npObjectTypeInfo()); |
474 staticNPObjectMap().removeAndDispose(object); | 474 staticNPObjectMap().removeAndDispose(object); |
475 _NPN_ReleaseObject(object); | 475 _NPN_ReleaseObject(object); |
476 } | 476 } |
477 } | 477 } |
478 | 478 |
479 } // namespace WebCore | 479 } // namespace WebCore |
OLD | NEW |