diff options
Diffstat (limited to 'webkit/port')
-rw-r--r-- | webkit/port/bindings/v8/v8_proxy.cpp | 14 | ||||
-rw-r--r-- | webkit/port/bindings/v8/v8_proxy.h | 12 |
2 files changed, 17 insertions, 9 deletions
diff --git a/webkit/port/bindings/v8/v8_proxy.cpp b/webkit/port/bindings/v8/v8_proxy.cpp index e2b71d6..b9ea99b 100644 --- a/webkit/port/bindings/v8/v8_proxy.cpp +++ b/webkit/port/bindings/v8/v8_proxy.cpp @@ -2408,6 +2408,20 @@ v8::Handle<v8::Object> V8Proxy::LookupDOMWrapper( } +// static +void* V8Proxy::DOMWrapperToNodeHelper(v8::Handle<v8::Value> value) { + ASSERT(MaybeDOMWrapper(value)); + + v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value); + + ASSERT(GetDOMWrapperType(object) == V8ClassIndex::NODE); + + v8::Handle<v8::Value> wrapper = + object->GetInternalField(V8Custom::kDOMWrapperObjectIndex); + return ExtractCPointer<Node>(wrapper); +} + + PassRefPtr<NodeFilter> V8Proxy::ToNativeNodeFilter(v8::Handle<v8::Value> filter) { // A NodeFilter is used when walking through a DOM tree or iterating tree diff --git a/webkit/port/bindings/v8/v8_proxy.h b/webkit/port/bindings/v8/v8_proxy.h index 8f44a10..1a7c13d 100644 --- a/webkit/port/bindings/v8/v8_proxy.h +++ b/webkit/port/bindings/v8/v8_proxy.h @@ -348,17 +348,11 @@ class V8Proxy { // A help function extract a node type pointer from a DOM wrapper. // Wrapped pointer must be cast to Node* first. + static void* DOMWrapperToNodeHelper(v8::Handle<v8::Value> value); + template <class C> static C* DOMWrapperToNode(v8::Handle<v8::Value> value) { - ASSERT(MaybeDOMWrapper(value)); - - v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value); - - ASSERT(GetDOMWrapperType(object) == V8ClassIndex::NODE); - - v8::Handle<v8::Value> wrapper = - object->GetInternalField(V8Custom::kDOMWrapperObjectIndex); - return static_cast<C*>(ExtractCPointer<Node>(wrapper)); + return static_cast<C*>(DOMWrapperToNodeHelper(value)); } template<typename T> |