summaryrefslogtreecommitdiffstats
path: root/webkit/port
diff options
context:
space:
mode:
authormbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-04 00:38:59 +0000
committermbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-04 00:38:59 +0000
commit0ff03ae3f1bf6f877a4aa32263f6418f2c5797d2 (patch)
treed617e74942b96732377eea966d146309743b1c3d /webkit/port
parent3fbfa3fb89128ea61adf02c63f2cf4e1121c7933 (diff)
downloadchromium_src-0ff03ae3f1bf6f877a4aa32263f6418f2c5797d2.zip
chromium_src-0ff03ae3f1bf6f877a4aa32263f6418f2c5797d2.tar.gz
chromium_src-0ff03ae3f1bf6f877a4aa32263f6418f2c5797d2.tar.bz2
Rollback 10840.
Review URL: http://codereview.chromium.org/40075 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10846 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/port')
-rw-r--r--webkit/port/bindings/v8/v8_custom.cpp39
-rw-r--r--webkit/port/bindings/v8/v8_custom.h8
2 files changed, 43 insertions, 4 deletions
diff --git a/webkit/port/bindings/v8/v8_custom.cpp b/webkit/port/bindings/v8/v8_custom.cpp
index 7b4ccdd..ecbe1b8 100644
--- a/webkit/port/bindings/v8/v8_custom.cpp
+++ b/webkit/port/bindings/v8/v8_custom.cpp
@@ -970,8 +970,47 @@ CALLBACK_FUNC_DECL(HTMLDocumentOpen) {
return args.Holder();
}
+// Document --------------------------------------------------------------------
+CALLBACK_FUNC_DECL(DocumentEvaluate) {
+ INC_STATS("DOM.Document.evaluate()");
+ Document* imp = V8Proxy::DOMWrapperToNode<Document>(args.Holder());
+ ExceptionCode ec = 0;
+ String expression = ToWebCoreString(args[0]);
+ Node* contextNode = NULL;
+ if (V8Node::HasInstance(args[1])) {
+ contextNode = V8Proxy::DOMWrapperToNode<Node>(args[1]);
+ }
+ // Find the XPath
+ XPathNSResolver* resolver = NULL;
+ if (V8XPathNSResolver::HasInstance(args[2])) {
+ resolver = V8Proxy::ToNativeObject<XPathNSResolver>(
+ V8ClassIndex::XPATHNSRESOLVER, args[2]);
+ } else if (args[2]->IsObject()) {
+ v8::Handle<v8::Object> obj = args[2]->ToObject();
+ resolver = new JSXPathNSResolver(obj);
+ } else if (!args[2]->IsNull() && !args[2]->IsUndefined()) {
+ V8Proxy::SetDOMException(TYPE_MISMATCH_ERR);
+ return v8::Handle<v8::Value>();
+ }
+ int type = ToInt32(args[3]);
+ XPathResult* inResult = NULL;
+ if (V8XPathResult::HasInstance(args[4])) {
+ inResult = V8Proxy::ToNativeObject<XPathResult>(
+ V8ClassIndex::XPATHRESULT, args[4]);
+ }
+
+ v8::TryCatch try_catch;
+ RefPtr<XPathResult> result =
+ imp->evaluate(expression, contextNode, resolver, type, inResult, ec);
+ if (try_catch.HasCaught() || ec != 0) {
+ if (!try_catch.HasCaught())
+ V8Proxy::SetDOMException(ec);
+ return v8::Handle<v8::Value>();
+ }
+ return V8Proxy::ToV8Object(V8ClassIndex::XPATHRESULT, result.get());
+}
// DOMWindow -------------------------------------------------------------------
diff --git a/webkit/port/bindings/v8/v8_custom.h b/webkit/port/bindings/v8/v8_custom.h
index 16e9359..2afbfc8 100644
--- a/webkit/port/bindings/v8/v8_custom.h
+++ b/webkit/port/bindings/v8/v8_custom.h
@@ -228,9 +228,6 @@ DECLARE_PROPERTY_ACCESSOR(DOMWindowEventHandler)
// Getter/Setter for Element event handlers
DECLARE_PROPERTY_ACCESSOR(ElementEventHandler)
-// HTMLCanvasElement
-DECLARE_CALLBACK(HTMLCanvasElementGetContext)
-
// Customized setter of src and location on HTMLFrameElement
DECLARE_PROPERTY_ACCESSOR_SETTER(HTMLFrameElementSrc)
DECLARE_PROPERTY_ACCESSOR_SETTER(HTMLFrameElementLocation)
@@ -274,7 +271,10 @@ DECLARE_CALLBACK(HTMLDocumentOpen)
// Document customized functions
DECLARE_CALLBACK(DocumentEvaluate)
-DECLARE_CALLBACK(DocumentGetCSSCanvasContext)
+DECLARE_CALLBACK(DocumentQuerySelector)
+DECLARE_CALLBACK(DocumentQuerySelectorAll)
+DECLARE_CALLBACK(DocumentFragmentQuerySelector)
+DECLARE_CALLBACK(DocumentFragmentQuerySelectorAll)
// Window customized functions
DECLARE_CALLBACK(DOMWindowAddEventListener)