diff options
author | Steve Block <steveblock@google.com> | 2009-12-15 10:12:09 +0000 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2009-12-17 17:41:10 +0000 |
commit | 643ca7872b450ea4efacab6188849e5aac2ba161 (patch) | |
tree | 6982576c228bcd1a7efe98afed544d840751094c /WebCore/bindings/v8/V8DOMWrapper.h | |
parent | d026980fde6eb3b01c1fe49441174e89cd1be298 (diff) | |
download | external_webkit-643ca7872b450ea4efacab6188849e5aac2ba161.zip external_webkit-643ca7872b450ea4efacab6188849e5aac2ba161.tar.gz external_webkit-643ca7872b450ea4efacab6188849e5aac2ba161.tar.bz2 |
Merge webkit.org at r51976 : Initial merge by git.
Change-Id: Ib0e7e2f0fb4bee5a186610272edf3186f0986b43
Diffstat (limited to 'WebCore/bindings/v8/V8DOMWrapper.h')
-rw-r--r-- | WebCore/bindings/v8/V8DOMWrapper.h | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/WebCore/bindings/v8/V8DOMWrapper.h b/WebCore/bindings/v8/V8DOMWrapper.h index 3d50af3..660b827 100644 --- a/WebCore/bindings/v8/V8DOMWrapper.h +++ b/WebCore/bindings/v8/V8DOMWrapper.h @@ -109,7 +109,12 @@ namespace WebCore { #endif // Sets contents of a DOM wrapper. - static void setDOMWrapper(v8::Handle<v8::Object>, int type, void* ptr); + static void setDOMWrapper(v8::Handle<v8::Object> object, int type, void* cptr) + { + ASSERT(object->InternalFieldCount() >= 2); + object->SetPointerInInternalField(V8Custom::kDOMWrapperObjectIndex, cptr); + object->SetInternalField(V8Custom::kDOMWrapperTypeIndex, v8::Integer::New(type)); + } static v8::Handle<v8::Object> lookupDOMWrapper(V8ClassIndex::V8WrapperType type, v8::Handle<v8::Object> object) { @@ -147,22 +152,7 @@ namespace WebCore { return convertNodeToV8Object(node.get()); } - static v8::Handle<v8::Value> convertNodeToV8Object(Node* node) - { - if (!node) - return v8::Null(); - - Document* document = node->document(); - if (node == document) - return convertDocumentToV8Object(document); - - DOMWrapperMap<Node>& domNodeMap = getDOMNodeMap(); - v8::Handle<v8::Object> wrapper = domNodeMap.get(node); - if (wrapper.IsEmpty()) - return convertNewNodeToV8Object(node, 0, domNodeMap); - - return wrapper; - } + static v8::Handle<v8::Value> convertNodeToV8Object(Node*); static v8::Handle<v8::Value> convertDocumentToV8Object(Document*); @@ -256,13 +246,13 @@ namespace WebCore { // TODO: upstream XPATH guard. #if ENABLE(XPATH) // XPath-related utilities - static RefPtr<XPathNSResolver> getXPathNSResolver(v8::Handle<v8::Value> value) + static RefPtr<XPathNSResolver> getXPathNSResolver(v8::Handle<v8::Value> value, V8Proxy* proxy = 0) { RefPtr<XPathNSResolver> resolver; if (V8XPathNSResolver::HasInstance(value)) resolver = convertToNativeObject<XPathNSResolver>(V8ClassIndex::XPATHNSRESOLVER, v8::Handle<v8::Object>::Cast(value)); else if (value->IsObject()) - resolver = V8CustomXPathNSResolver::create(value->ToObject()); + resolver = V8CustomXPathNSResolver::create(proxy, value->ToObject()); return resolver; } #endif @@ -284,6 +274,10 @@ namespace WebCore { // Checks whether a DOM object has a JS wrapper. static bool domObjectHasJSWrapper(void*); + // Get JS wrapper of an existing DOM object, assuming that the wrapper + // exists. + static v8::Persistent<v8::Object> jsWrapperForDOMObject(void*); + static v8::Persistent<v8::Object> jsWrapperForActiveDOMObject(void*); // Set JS wrapper of a DOM object, the caller in charge of increase ref. static void setJSWrapperForDOMObject(void*, v8::Persistent<v8::Object>); static void setJSWrapperForActiveDOMObject(void*, v8::Persistent<v8::Object>); @@ -303,12 +297,20 @@ namespace WebCore { // Returns the JS wrapper of a window object, initializes the environment // of the window frame if needed. static v8::Handle<v8::Value> convertWindowToV8Object(DOMWindow*); + static v8::Handle<v8::Value> convertNamedNodeMapToV8Object(NamedNodeMap*); #if ENABLE(SVG) static v8::Handle<v8::Value> convertSVGElementInstanceToV8Object(SVGElementInstance*); static v8::Handle<v8::Value> convertSVGObjectWithContextToV8Object(V8ClassIndex::V8WrapperType, void*); #endif +#if ENABLE(3D_CANVAS) + static void setIndexedPropertiesToExternalArray(v8::Handle<v8::Object>, + int, + void*, + int); +#endif + private: // Set hidden references in a DOMWindow object of a frame. static void setHiddenWindowReference(Frame*, const int internalIndex, v8::Handle<v8::Object>); |