| 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 12 matching lines...) Expand all Loading... |
| 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "config.h" | 31 #include "config.h" |
| 32 | 32 |
| 33 #include "bindings/v8/V8NPObject.h" | 33 #include "bindings/core/v8/V8NPObject.h" |
| 34 | 34 |
| 35 #include "bindings/core/v8/NPV8Object.h" |
| 36 #include "bindings/core/v8/V8Binding.h" |
| 35 #include "bindings/core/v8/V8HTMLAppletElement.h" | 37 #include "bindings/core/v8/V8HTMLAppletElement.h" |
| 36 #include "bindings/core/v8/V8HTMLEmbedElement.h" | 38 #include "bindings/core/v8/V8HTMLEmbedElement.h" |
| 37 #include "bindings/core/v8/V8HTMLObjectElement.h" | 39 #include "bindings/core/v8/V8HTMLObjectElement.h" |
| 38 #include "bindings/v8/NPV8Object.h" | 40 #include "bindings/core/v8/V8NPUtils.h" |
| 39 #include "bindings/v8/V8Binding.h" | 41 #include "bindings/core/v8/V8ObjectConstructor.h" |
| 40 #include "bindings/v8/V8NPUtils.h" | 42 #include "bindings/core/v8/V8PersistentValueMap.h" |
| 41 #include "bindings/v8/V8ObjectConstructor.h" | 43 #include "bindings/core/v8/npruntime_impl.h" |
| 42 #include "bindings/v8/V8PersistentValueMap.h" | 44 #include "bindings/core/v8/npruntime_priv.h" |
| 43 #include "bindings/v8/npruntime_impl.h" | |
| 44 #include "bindings/v8/npruntime_priv.h" | |
| 45 #include "core/html/HTMLPlugInElement.h" | 45 #include "core/html/HTMLPlugInElement.h" |
| 46 #include "v8-util.h" | 46 #include "v8-util.h" |
| 47 #include "wtf/OwnPtr.h" | 47 #include "wtf/OwnPtr.h" |
| 48 | 48 |
| 49 namespace WebCore { | 49 namespace WebCore { |
| 50 | 50 |
| 51 enum InvokeFunctionType { | 51 enum InvokeFunctionType { |
| 52 InvokeMethod = 1, | 52 InvokeMethod = 1, |
| 53 InvokeConstruct = 2, | 53 InvokeConstruct = 2, |
| 54 InvokeDefault = 3 | 54 InvokeDefault = 3 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 77 if (!element) { | 77 if (!element) { |
| 78 element = V8HTMLEmbedElement::toNativeWithTypeCheck(isolate, info.Holder
()); | 78 element = V8HTMLEmbedElement::toNativeWithTypeCheck(isolate, info.Holder
()); |
| 79 if (!element) { | 79 if (!element) { |
| 80 element = V8HTMLObjectElement::toNativeWithTypeCheck(isolate, info.H
older()); | 80 element = V8HTMLObjectElement::toNativeWithTypeCheck(isolate, info.H
older()); |
| 81 } | 81 } |
| 82 } | 82 } |
| 83 if (element) { | 83 if (element) { |
| 84 if (RefPtr<SharedPersistent<v8::Object> > wrapper = element->pluginWrapp
er()) { | 84 if (RefPtr<SharedPersistent<v8::Object> > wrapper = element->pluginWrapp
er()) { |
| 85 v8::HandleScope handleScope(isolate); | 85 v8::HandleScope handleScope(isolate); |
| 86 npObject = v8ObjectToNPObject(wrapper->newLocal(isolate)); | 86 npObject = v8ObjectToNPObject(wrapper->newLocal(isolate)); |
| 87 } else | 87 } else { |
| 88 npObject = 0; | 88 npObject = 0; |
| 89 } |
| 89 } else { | 90 } else { |
| 90 // The holder object is not a subtype of HTMLPlugInElement, it must be a
n NPObject which has three | 91 // The holder object is not a subtype of HTMLPlugInElement, it must be a
n NPObject which has three |
| 91 // internal fields. | 92 // internal fields. |
| 92 if (info.Holder()->InternalFieldCount() != npObjectInternalFieldCount) { | 93 if (info.Holder()->InternalFieldCount() != npObjectInternalFieldCount) { |
| 93 throwError(v8ReferenceError, "NPMethod called on non-NPObject", info
.GetIsolate()); | 94 throwError(v8ReferenceError, "NPMethod called on non-NPObject", info
.GetIsolate()); |
| 94 return; | 95 return; |
| 95 } | 96 } |
| 96 | 97 |
| 97 npObject = v8ObjectToNPObject(info.Holder()); | 98 npObject = v8ObjectToNPObject(info.Holder()); |
| 98 } | 99 } |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 v8SetReturnValueInt(info, 0); | 316 v8SetReturnValueInt(info, 0); |
| 316 } | 317 } |
| 317 | 318 |
| 318 static v8::Handle<v8::Value> npObjectSetProperty(v8::Local<v8::Object> self, NPI
dentifier identifier, v8::Local<v8::Value> value, v8::Isolate* isolate) | 319 static v8::Handle<v8::Value> npObjectSetProperty(v8::Local<v8::Object> self, NPI
dentifier identifier, v8::Local<v8::Value> value, v8::Isolate* isolate) |
| 319 { | 320 { |
| 320 NPObject* npObject = v8ObjectToNPObject(self); | 321 NPObject* npObject = v8ObjectToNPObject(self); |
| 321 | 322 |
| 322 // Verify that our wrapper wasn't using a NPObject which has already been de
leted. | 323 // Verify that our wrapper wasn't using a NPObject which has already been de
leted. |
| 323 if (!npObject || !_NPN_IsAlive(npObject)) { | 324 if (!npObject || !_NPN_IsAlive(npObject)) { |
| 324 throwError(v8ReferenceError, "NPObject deleted", isolate); | 325 throwError(v8ReferenceError, "NPObject deleted", isolate); |
| 325 return value; // Intercepted, but an exception was thrown. | 326 return value; // Intercepted, but an exception was thrown. |
| 326 } | 327 } |
| 327 | 328 |
| 328 if (npObject->_class->hasProperty && npObject->_class->setProperty && npObje
ct->_class->hasProperty(npObject, identifier)) { | 329 if (npObject->_class->hasProperty && npObject->_class->setProperty && npObje
ct->_class->hasProperty(npObject, identifier)) { |
| 329 if (!_NPN_IsAlive(npObject)) | 330 if (!_NPN_IsAlive(npObject)) |
| 330 return throwError(v8ReferenceError, "NPObject deleted", isolate); | 331 return throwError(v8ReferenceError, "NPObject deleted", isolate); |
| 331 | 332 |
| 332 NPVariant npValue; | 333 NPVariant npValue; |
| 333 VOID_TO_NPVARIANT(npValue); | 334 VOID_TO_NPVARIANT(npValue); |
| 334 convertV8ObjectToNPVariant(value, npObject, &npValue, isolate); | 335 convertV8ObjectToNPVariant(value, npObject, &npValue, isolate); |
| 335 bool success = npObject->_class->setProperty(npObject, identifier, &npVa
lue); | 336 bool success = npObject->_class->setProperty(npObject, identifier, &npVa
lue); |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 v8::HandleScope scope(isolate); | 486 v8::HandleScope scope(isolate); |
| 486 v8::Handle<v8::Object> wrapper = staticNPObjectMap().newLocal(object, isolat
e); | 487 v8::Handle<v8::Object> wrapper = staticNPObjectMap().newLocal(object, isolat
e); |
| 487 if (!wrapper.IsEmpty()) { | 488 if (!wrapper.IsEmpty()) { |
| 488 V8DOMWrapper::clearNativeInfo(wrapper, npObjectTypeInfo()); | 489 V8DOMWrapper::clearNativeInfo(wrapper, npObjectTypeInfo()); |
| 489 staticNPObjectMap().removeAndDispose(object); | 490 staticNPObjectMap().removeAndDispose(object); |
| 490 _NPN_ReleaseObject(object); | 491 _NPN_ReleaseObject(object); |
| 491 } | 492 } |
| 492 } | 493 } |
| 493 | 494 |
| 494 } // namespace WebCore | 495 } // namespace WebCore |
| OLD | NEW |