diff options
Diffstat (limited to 'WebCore/bindings/v8/custom/V8DocumentCustom.cpp')
-rw-r--r-- | WebCore/bindings/v8/custom/V8DocumentCustom.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/WebCore/bindings/v8/custom/V8DocumentCustom.cpp b/WebCore/bindings/v8/custom/V8DocumentCustom.cpp index 3eadce7..60fc22f 100644 --- a/WebCore/bindings/v8/custom/V8DocumentCustom.cpp +++ b/WebCore/bindings/v8/custom/V8DocumentCustom.cpp @@ -32,13 +32,13 @@ #include "Document.h" #include "ExceptionCode.h" -#include "JSXPathNSResolver.h" #include "Node.h" #include "XPathNSResolver.h" #include "XPathResult.h" #include "V8Binding.h" #include "V8CustomBinding.h" +#include "V8CustomXPathNSResolver.h" #include "V8Node.h" #include "V8Proxy.h" @@ -54,52 +54,61 @@ namespace WebCore { CALLBACK_FUNC_DECL(DocumentEvaluate) { INC_STATS("DOM.Document.evaluate()"); +#ifdef MANUAL_MERGE_REQUIRED #if ENABLE(XPATH) Document* document = V8Proxy::DOMWrapperToNode<Document>(args.Holder()); +#else // MANUAL_MERGE_REQUIRED + + RefPtr<Document> document = V8DOMWrapper::convertDOMWrapperToNode<Document>(args.Holder()); +#endif // MANUAL_MERGE_REQUIRED ExceptionCode ec = 0; String expression = toWebCoreString(args[0]); - Node* contextNode = 0; + RefPtr<Node> contextNode; if (V8Node::HasInstance(args[1])) - contextNode = V8Proxy::DOMWrapperToNode<Node>(args[1]); + contextNode = V8DOMWrapper::convertDOMWrapperToNode<Node>(v8::Handle<v8::Object>::Cast(args[1])); - XPathNSResolver* resolver = 0; + RefPtr<XPathNSResolver> resolver; if (V8XPathNSResolver::HasInstance(args[2])) - resolver = V8Proxy::ToNativeObject<XPathNSResolver>(V8ClassIndex::XPATHNSRESOLVER, args[2]); + resolver = V8DOMWrapper::convertToNativeObject<XPathNSResolver>(V8ClassIndex::XPATHNSRESOLVER, v8::Handle<v8::Object>::Cast(args[2])); else if (args[2]->IsObject()) - resolver = new JSXPathNSResolver(args[2]->ToObject()); + resolver = V8CustomXPathNSResolver::create(args[2]->ToObject()); else if (!args[2]->IsNull() && !args[2]->IsUndefined()) return throwError(TYPE_MISMATCH_ERR); int type = toInt32(args[3]); - XPathResult* inResult = 0; + RefPtr<XPathResult> inResult; if (V8XPathResult::HasInstance(args[4])) - inResult = V8Proxy::ToNativeObject<XPathResult>(V8ClassIndex::XPATHRESULT, args[4]); + inResult = V8DOMWrapper::convertToNativeObject<XPathResult>(V8ClassIndex::XPATHRESULT, v8::Handle<v8::Object>::Cast(args[4])); v8::TryCatch exceptionCatcher; - RefPtr<XPathResult> result = document->evaluate(expression, contextNode, resolver, type, inResult, ec); + RefPtr<XPathResult> result = document->evaluate(expression, contextNode.get(), resolver.get(), type, inResult.get(), ec); if (exceptionCatcher.HasCaught()) return throwError(exceptionCatcher.Exception()); if (ec) return throwError(ec); +#ifdef MANUAL_MERGE_REQUIRED return V8Proxy::ToV8Object(V8ClassIndex::XPATHRESULT, result.get()); #else return throwError(NOT_SUPPORTED_ERR); #endif +#else // MANUAL_MERGE_REQUIRED + return V8DOMWrapper::convertToV8Object(V8ClassIndex::XPATHRESULT, result.release()); +#endif // MANUAL_MERGE_REQUIRED } CALLBACK_FUNC_DECL(DocumentGetCSSCanvasContext) { INC_STATS("DOM.Document.getCSSCanvasContext"); - v8::Handle<v8::Value> holder = args.Holder(); - Document* imp = V8Proxy::DOMWrapperToNode<Document>(holder); + v8::Handle<v8::Object> holder = args.Holder(); + Document* imp = V8DOMWrapper::convertDOMWrapperToNode<Document>(holder); String contextId = toWebCoreString(args[0]); String name = toWebCoreString(args[1]); int width = toInt32(args[2]); int height = toInt32(args[3]); CanvasRenderingContext2D* result = imp->getCSSCanvasContext(contextId, name, width, height); - return V8Proxy::ToV8Object(V8ClassIndex::CANVASRENDERINGCONTEXT2D, result); + return V8DOMWrapper::convertToV8Object(V8ClassIndex::CANVASRENDERINGCONTEXT2D, result); } } // namespace WebCore |