diff options
author | Steve Block <steveblock@google.com> | 2010-02-02 14:57:50 +0000 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-02-04 15:06:55 +0000 |
commit | d0825bca7fe65beaee391d30da42e937db621564 (patch) | |
tree | 7461c49eb5844ffd1f35d1ba2c8b7584c1620823 /WebCore/bindings/v8/V8DOMWrapper.h | |
parent | 3db770bd97c5a59b6c7574ca80a39e5a51c1defd (diff) | |
download | external_webkit-d0825bca7fe65beaee391d30da42e937db621564.zip external_webkit-d0825bca7fe65beaee391d30da42e937db621564.tar.gz external_webkit-d0825bca7fe65beaee391d30da42e937db621564.tar.bz2 |
Merge webkit.org at r54127 : Initial merge by git
Change-Id: Ib661abb595522f50ea406f72d3a0ce17f7193c82
Diffstat (limited to 'WebCore/bindings/v8/V8DOMWrapper.h')
-rw-r--r-- | WebCore/bindings/v8/V8DOMWrapper.h | 70 |
1 files changed, 10 insertions, 60 deletions
diff --git a/WebCore/bindings/v8/V8DOMWrapper.h b/WebCore/bindings/v8/V8DOMWrapper.h index b00915e..3cff691 100644 --- a/WebCore/bindings/v8/V8DOMWrapper.h +++ b/WebCore/bindings/v8/V8DOMWrapper.h @@ -39,6 +39,7 @@ #include "V8CustomBinding.h" #include "V8CustomXPathNSResolver.h" #include "V8DOMMap.h" +#include "V8Event.h" #include "V8Index.h" #include "V8Utilities.h" #include "V8XPathNSResolver.h" @@ -91,6 +92,7 @@ namespace WebCore { class StyleSheetList; class V8EventListener; class V8ObjectEventListener; + class V8Proxy; #if ENABLE(WEB_SOCKETS) class WebSocket; #endif @@ -112,8 +114,8 @@ namespace WebCore { 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)); + object->SetPointerInInternalField(v8DOMWrapperObjectIndex, cptr); + object->SetInternalField(v8DOMWrapperTypeIndex, v8::Integer::New(type)); } static v8::Handle<v8::Object> lookupDOMWrapper(V8ClassIndex::V8WrapperType type, v8::Handle<v8::Object> object) @@ -121,23 +123,6 @@ namespace WebCore { return object.IsEmpty() ? object : object->FindInstanceInPrototypeChain(getTemplate(type)); } - // A helper function extract native object pointer from a DOM wrapper - // and cast to the specified type. - template <class C> - static C* convertDOMWrapperToNative(v8::Handle<v8::Object> object) - { - ASSERT(maybeDOMWrapper(object)); - return reinterpret_cast<C*>(object->GetPointerFromInternalField(V8Custom::kDOMWrapperObjectIndex)); - } - - template <class C> - static C* convertDOMWrapperToNode(v8::Handle<v8::Object> object) - { - ASSERT(maybeDOMWrapper(object)); - ASSERT(domWrapperType(object) == V8ClassIndex::NODE); - return convertDOMWrapperToNative<C>(object); - } - template<typename T> static v8::Handle<v8::Value> convertToV8Object(V8ClassIndex::V8WrapperType type, PassRefPtr<T> imp) { @@ -166,31 +151,7 @@ namespace WebCore { return convertNewNodeToV8Object(node, 0, getDOMNodeMap()); } - static v8::Handle<v8::Value> convertNewNodeToV8Object(Node*, V8Proxy*, DOMWrapperMap<Node>&); - - template <class C> - static C* convertToNativeObject(V8ClassIndex::V8WrapperType type, v8::Handle<v8::Object> object) - { - // Native event listener is per frame, it cannot be handled by this generic function. - ASSERT(type != V8ClassIndex::EVENTLISTENER); - ASSERT(type != V8ClassIndex::EVENTTARGET); - - ASSERT(maybeDOMWrapper(object)); - -#ifndef NDEBUG - const bool typeIsValid = -#define MAKE_CASE(TYPE, NAME) (type != V8ClassIndex::TYPE) && - DOM_NODE_TYPES(MAKE_CASE) -#if ENABLE(SVG) - SVG_NODE_TYPES(MAKE_CASE) -#endif -#undef MAKE_CASE - true; - ASSERT(typeIsValid); -#endif - - return convertDOMWrapperToNative<C>(object); - } + static v8::Handle<v8::Value> convertNewNodeToV8Object(Node*, V8Proxy*, DOMNodeMapping&); static V8ClassIndex::V8WrapperType domWrapperType(v8::Handle<v8::Object>); @@ -201,13 +162,6 @@ namespace WebCore { static v8::Handle<v8::Value> convertEventToV8Object(Event*); - static Event* convertToNativeEvent(v8::Handle<v8::Value> jsEvent) - { - if (!isDOMEventWrapper(jsEvent)) - return 0; - return convertDOMWrapperToNative<Event>(v8::Handle<v8::Object>::Cast(jsEvent)); - } - static v8::Handle<v8::Value> convertEventTargetToV8Object(PassRefPtr<EventTarget> eventTarget) { return convertEventTargetToV8Object(eventTarget.get()); @@ -237,6 +191,10 @@ namespace WebCore { static PassRefPtr<EventListener> getEventListener(XMLHttpRequestUpload* upload, v8::Local<v8::Value> value, bool isAttribute, ListenerLookupType lookup); +#if ENABLE(EVENTSOURCE) + static PassRefPtr<EventListener> getEventListener(EventSource* eventTarget, v8::Local<v8::Value> value, bool isAttribute, ListenerLookupType lookup); +#endif + static PassRefPtr<EventListener> getEventListener(EventTarget* eventTarget, v8::Local<v8::Value> value, bool isAttribute, ListenerLookupType lookup); static PassRefPtr<EventListener> getEventListener(V8Proxy* proxy, v8::Local<v8::Value> value, bool isAttribute, ListenerLookupType lookup); @@ -247,7 +205,7 @@ namespace WebCore { { RefPtr<XPathNSResolver> resolver; if (V8XPathNSResolver::HasInstance(value)) - resolver = convertToNativeObject<XPathNSResolver>(V8ClassIndex::XPATHNSRESOLVER, v8::Handle<v8::Object>::Cast(value)); + resolver = V8XPathNSResolver::toNative(v8::Handle<v8::Object>::Cast(value)); else if (value->IsObject()) resolver = V8CustomXPathNSResolver::create(proxy, value->ToObject()); return resolver; @@ -267,12 +225,6 @@ namespace WebCore { static v8::Local<v8::Function> getConstructor(V8ClassIndex::V8WrapperType, DOMWindow*); static v8::Local<v8::Function> getConstructor(V8ClassIndex::V8WrapperType, WorkerContext*); - // 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>); @@ -281,8 +233,6 @@ namespace WebCore { // Check whether a V8 value is a wrapper of type |classType|. static bool isWrapperOfType(v8::Handle<v8::Value>, V8ClassIndex::V8WrapperType); - static void* convertToSVGPODTypeImpl(V8ClassIndex::V8WrapperType, v8::Handle<v8::Value>); - // Check whether a V8 value is a DOM Event wrapper. static bool isDOMEventWrapper(v8::Handle<v8::Value>); |