OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. |
3 * Copyright (C) 2007, 2008, 2009 Google, Inc. All rights reserved. | 3 * Copyright (C) 2007, 2008, 2009 Google, Inc. All rights reserved. |
4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. | 4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 | 68 |
69 // FIXME: Comments on why use malloc and free. | 69 // FIXME: Comments on why use malloc and free. |
70 static NPObject* allocV8NPObject(NPP, NPClass*) | 70 static NPObject* allocV8NPObject(NPP, NPClass*) |
71 { | 71 { |
72 return static_cast<NPObject*>(malloc(sizeof(V8NPObject))); | 72 return static_cast<NPObject*>(malloc(sizeof(V8NPObject))); |
73 } | 73 } |
74 | 74 |
75 static void freeV8NPObject(NPObject* npObject) | 75 static void freeV8NPObject(NPObject* npObject) |
76 { | 76 { |
77 V8NPObject* v8NpObject = reinterpret_cast<V8NPObject*>(npObject); | 77 V8NPObject* v8NpObject = reinterpret_cast<V8NPObject*>(npObject); |
78 disposeUnderlyingV8Object(npObject, v8::Isolate::GetCurrent()); | 78 disposeUnderlyingV8Object(v8::Isolate::GetCurrent(), npObject); |
79 free(v8NpObject); | 79 free(v8NpObject); |
80 } | 80 } |
81 | 81 |
82 static NPClass V8NPObjectClass = { | 82 static NPClass V8NPObjectClass = { |
83 NP_CLASS_STRUCT_VERSION, | 83 NP_CLASS_STRUCT_VERSION, |
84 allocV8NPObject, | 84 allocV8NPObject, |
85 freeV8NPObject, | 85 freeV8NPObject, |
86 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | 86 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 |
87 }; | 87 }; |
88 | 88 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 | 127 |
128 bool isWrappedNPObject(v8::Handle<v8::Object> object) | 128 bool isWrappedNPObject(v8::Handle<v8::Object> object) |
129 { | 129 { |
130 if (object->InternalFieldCount() == npObjectInternalFieldCount) { | 130 if (object->InternalFieldCount() == npObjectInternalFieldCount) { |
131 const WrapperTypeInfo* typeInfo = static_cast<const WrapperTypeInfo*>(ob
ject->GetAlignedPointerFromInternalField(v8DOMWrapperTypeIndex)); | 131 const WrapperTypeInfo* typeInfo = static_cast<const WrapperTypeInfo*>(ob
ject->GetAlignedPointerFromInternalField(v8DOMWrapperTypeIndex)); |
132 return typeInfo == npObjectTypeInfo(); | 132 return typeInfo == npObjectTypeInfo(); |
133 } | 133 } |
134 return false; | 134 return false; |
135 } | 135 } |
136 | 136 |
137 NPObject* npCreateV8ScriptObject(NPP npp, v8::Handle<v8::Object> object, LocalDO
MWindow* root, v8::Isolate* isolate) | 137 NPObject* npCreateV8ScriptObject(v8::Isolate* isolate, NPP npp, v8::Handle<v8::O
bject> object, LocalDOMWindow* root) |
138 { | 138 { |
139 // Check to see if this object is already wrapped. | 139 // Check to see if this object is already wrapped. |
140 if (isWrappedNPObject(object)) { | 140 if (isWrappedNPObject(object)) { |
141 NPObject* returnValue = v8ObjectToNPObject(object); | 141 NPObject* returnValue = v8ObjectToNPObject(object); |
142 _NPN_RetainObject(returnValue); | 142 _NPN_RetainObject(returnValue); |
143 return returnValue; | 143 return returnValue; |
144 } | 144 } |
145 | 145 |
146 V8NPObjectVector* objectVector = 0; | 146 V8NPObjectVector* objectVector = 0; |
147 if (V8PerContextData* perContextData = V8PerContextData::from(object->Creati
onContext())) { | 147 if (V8PerContextData* perContextData = V8PerContextData::from(object->Creati
onContext())) { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 if (v8NpObject->v8Object.IsEmpty()) | 185 if (v8NpObject->v8Object.IsEmpty()) |
186 return 0; | 186 return 0; |
187 return v8NpObject; | 187 return v8NpObject; |
188 } | 188 } |
189 | 189 |
190 ScriptWrappableBase* npObjectToScriptWrappableBase(NPObject* npObject) | 190 ScriptWrappableBase* npObjectToScriptWrappableBase(NPObject* npObject) |
191 { | 191 { |
192 return reinterpret_cast<ScriptWrappableBase*>(npObject); | 192 return reinterpret_cast<ScriptWrappableBase*>(npObject); |
193 } | 193 } |
194 | 194 |
195 void disposeUnderlyingV8Object(NPObject* npObject, v8::Isolate* isolate) | 195 void disposeUnderlyingV8Object(v8::Isolate* isolate, NPObject* npObject) |
196 { | 196 { |
197 ASSERT(npObject); | 197 ASSERT(npObject); |
198 V8NPObject* v8NpObject = npObjectToV8NPObject(npObject); | 198 V8NPObject* v8NpObject = npObjectToV8NPObject(npObject); |
199 if (!v8NpObject) | 199 if (!v8NpObject) |
200 return; | 200 return; |
201 v8::HandleScope scope(isolate); | 201 v8::HandleScope scope(isolate); |
202 v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NpOb
ject->v8Object); | 202 v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NpOb
ject->v8Object); |
203 ASSERT(!v8Object->CreationContext().IsEmpty()); | 203 ASSERT(!v8Object->CreationContext().IsEmpty()); |
204 if (V8PerContextData* perContextData = V8PerContextData::from(v8Object->Crea
tionContext())) { | 204 if (V8PerContextData* perContextData = V8PerContextData::from(v8Object->Crea
tionContext())) { |
205 V8NPObjectMap* v8NPObjectMap = perContextData->v8NPObjectMap(); | 205 V8NPObjectMap* v8NPObjectMap = perContextData->v8NPObjectMap(); |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 616 |
617 convertV8ObjectToNPVariant(resultObject, npObject, result, isolate); | 617 convertV8ObjectToNPVariant(resultObject, npObject, result, isolate); |
618 return true; | 618 return true; |
619 } | 619 } |
620 | 620 |
621 if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->
construct) | 621 if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->
construct) |
622 return npObject->_class->construct(npObject, arguments, argumentCount, r
esult); | 622 return npObject->_class->construct(npObject, arguments, argumentCount, r
esult); |
623 | 623 |
624 return false; | 624 return false; |
625 } | 625 } |
OLD | NEW |