OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 ASSERT(wrapperTypeInfo); | 126 ASSERT(wrapperTypeInfo); |
127 // clearNativeInfo() is used only by NP objects, which are not garbage colle
cted. | 127 // clearNativeInfo() is used only by NP objects, which are not garbage colle
cted. |
128 ASSERT(wrapperTypeInfo->gcType == WrapperTypeInfo::RefCountedObject); | 128 ASSERT(wrapperTypeInfo->gcType == WrapperTypeInfo::RefCountedObject); |
129 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_cast<
WrapperTypeInfo*>(wrapperTypeInfo)); | 129 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_cast<
WrapperTypeInfo*>(wrapperTypeInfo)); |
130 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, 0); | 130 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, 0); |
131 } | 131 } |
132 | 132 |
133 template<typename V8T, typename T> | 133 template<typename V8T, typename T> |
134 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapper(PassRefPt
r<T> object, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::Object> wrap
per, v8::Isolate* isolate) | 134 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapper(PassRefPt
r<T> object, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::Object> wrap
per, v8::Isolate* isolate) |
135 { | 135 { |
136 setNativeInfo(wrapper, wrapperTypeInfo, V8T::toInternalPointer(object.get())
); | 136 setNativeInfo(wrapper, wrapperTypeInfo, V8T::toScriptWrappableBase(object.ge
t())); |
137 ASSERT(isDOMWrapper(wrapper)); | 137 ASSERT(isDOMWrapper(wrapper)); |
138 DOMDataStore::setWrapper<V8T>(object.leakRef(), wrapper, isolate, wrapperTyp
eInfo); | 138 DOMDataStore::setWrapper<V8T>(object.leakRef(), wrapper, isolate, wrapperTyp
eInfo); |
139 return wrapper; | 139 return wrapper; |
140 } | 140 } |
141 | 141 |
142 template<typename V8T, typename T> | 142 template<typename V8T, typename T> |
143 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapper(T* object
, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::Object> wrapper, v8::Is
olate* isolate) | 143 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapper(T* object
, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::Object> wrapper, v8::Is
olate* isolate) |
144 { | 144 { |
145 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, V8T::toInternalP
ointer(object), new WrapperPersistent<T>(object)); | 145 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, V8T::toScriptWra
ppableBase(object), new WrapperPersistent<T>(object)); |
146 ASSERT(isDOMWrapper(wrapper)); | 146 ASSERT(isDOMWrapper(wrapper)); |
147 DOMDataStore::setWrapper<V8T>(object, wrapper, isolate, wrapperTypeInfo); | 147 DOMDataStore::setWrapper<V8T>(object, wrapper, isolate, wrapperTypeInfo); |
148 return wrapper; | 148 return wrapper; |
149 } | 149 } |
150 | 150 |
151 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapperNonTemplat
e(ScriptWrappable* impl, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::
Object> wrapper, v8::Isolate* isolate) | 151 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapperNonTemplat
e(ScriptWrappable* impl, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::
Object> wrapper, v8::Isolate* isolate) |
152 { | 152 { |
153 #if ENABLE(OILPAN) | 153 #if ENABLE(OILPAN) |
154 if (wrapperTypeInfo->gcType == WrapperTypeInfo::RefCountedObject) | 154 if (wrapperTypeInfo->gcType == WrapperTypeInfo::RefCountedObject) |
155 setNativeInfo(wrapper, wrapperTypeInfo, impl->toInternalPointer()); | 155 setNativeInfo(wrapper, wrapperTypeInfo, impl->toScriptWrappableBase()); |
156 else | 156 else |
157 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, impl->toInte
rnalPointer(), wrapperTypeInfo->createPersistentHandle(impl)); | 157 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, impl->toScri
ptWrappableBase(), wrapperTypeInfo->createPersistentHandle(impl)); |
158 #else | 158 #else |
159 if (wrapperTypeInfo->gcType != WrapperTypeInfo::GarbageCollectedObject) | 159 if (wrapperTypeInfo->gcType != WrapperTypeInfo::GarbageCollectedObject) |
160 setNativeInfo(wrapper, wrapperTypeInfo, impl->toInternalPointer()); | 160 setNativeInfo(wrapper, wrapperTypeInfo, impl->toScriptWrappableBase()); |
161 else | 161 else |
162 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, impl->toInte
rnalPointer(), wrapperTypeInfo->createPersistentHandle(impl)); | 162 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, impl->toScri
ptWrappableBase(), wrapperTypeInfo->createPersistentHandle(impl)); |
163 #endif | 163 #endif |
164 ASSERT(isDOMWrapper(wrapper)); | 164 ASSERT(isDOMWrapper(wrapper)); |
165 DOMDataStore::setWrapperNonTemplate(impl, wrapper, isolate, wrapperTypeInfo)
; | 165 DOMDataStore::setWrapperNonTemplate(impl, wrapper, isolate, wrapperTypeInfo)
; |
166 return wrapper; | 166 return wrapper; |
167 } | 167 } |
168 | 168 |
169 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapperNonTemplat
e(Node* node, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::Object> wra
pper, v8::Isolate* isolate) | 169 inline v8::Handle<v8::Object> V8DOMWrapper::associateObjectWithWrapperNonTemplat
e(Node* node, const WrapperTypeInfo* wrapperTypeInfo, v8::Handle<v8::Object> wra
pper, v8::Isolate* isolate) |
170 { | 170 { |
171 #if ENABLE(OILPAN) | 171 #if ENABLE(OILPAN) |
172 if (wrapperTypeInfo->gcType == WrapperTypeInfo::RefCountedObject) | 172 if (wrapperTypeInfo->gcType == WrapperTypeInfo::RefCountedObject) |
173 setNativeInfo(wrapper, wrapperTypeInfo, ScriptWrappable::fromObject(node
)->toInternalPointer()); | 173 setNativeInfo(wrapper, wrapperTypeInfo, ScriptWrappable::fromObject(node
)->toScriptWrappableBase()); |
174 else | 174 else |
175 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, ScriptWrappa
ble::fromObject(node)->toInternalPointer(), wrapperTypeInfo->createPersistentHan
dle(ScriptWrappable::fromObject(node))); | 175 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, ScriptWrappa
ble::fromObject(node)->toScriptWrappableBase(), wrapperTypeInfo->createPersisten
tHandle(ScriptWrappable::fromObject(node))); |
176 #else | 176 #else |
177 if (wrapperTypeInfo->gcType != WrapperTypeInfo::GarbageCollectedObject) | 177 if (wrapperTypeInfo->gcType != WrapperTypeInfo::GarbageCollectedObject) |
178 setNativeInfo(wrapper, wrapperTypeInfo, ScriptWrappable::fromObject(node
)->toInternalPointer()); | 178 setNativeInfo(wrapper, wrapperTypeInfo, ScriptWrappable::fromObject(node
)->toScriptWrappableBase()); |
179 else | 179 else |
180 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, ScriptWrappa
ble::fromObject(node)->toInternalPointer(), wrapperTypeInfo->createPersistentHan
dle(ScriptWrappable::fromObject(node))); | 180 setNativeInfoWithPersistentHandle(wrapper, wrapperTypeInfo, ScriptWrappa
ble::fromObject(node)->toScriptWrappableBase(), wrapperTypeInfo->createPersisten
tHandle(ScriptWrappable::fromObject(node))); |
181 #endif | 181 #endif |
182 ASSERT(isDOMWrapper(wrapper)); | 182 ASSERT(isDOMWrapper(wrapper)); |
183 DOMDataStore::setWrapperNonTemplate(node, wrapper, isolate, wrapperTypeInfo)
; | 183 DOMDataStore::setWrapperNonTemplate(node, wrapper, isolate, wrapperTypeInfo)
; |
184 return wrapper; | 184 return wrapper; |
185 } | 185 } |
186 | 186 |
187 class V8WrapperInstantiationScope { | 187 class V8WrapperInstantiationScope { |
188 public: | 188 public: |
189 V8WrapperInstantiationScope(v8::Handle<v8::Object> creationContext, v8::Isol
ate* isolate) | 189 V8WrapperInstantiationScope(v8::Handle<v8::Object> creationContext, v8::Isol
ate* isolate) |
190 : m_didEnterContext(false) | 190 : m_didEnterContext(false) |
(...skipping 23 matching lines...) Expand all Loading... |
214 v8::Handle<v8::Context> context() const { return m_context; } | 214 v8::Handle<v8::Context> context() const { return m_context; } |
215 | 215 |
216 private: | 216 private: |
217 bool m_didEnterContext; | 217 bool m_didEnterContext; |
218 v8::Handle<v8::Context> m_context; | 218 v8::Handle<v8::Context> m_context; |
219 }; | 219 }; |
220 | 220 |
221 } // namespace blink | 221 } // namespace blink |
222 | 222 |
223 #endif // V8DOMWrapper_h | 223 #endif // V8DOMWrapper_h |
OLD | NEW |