OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2005 Frerich Raabe <raabe@kde.org> | 2 * Copyright 2005 Frerich Raabe <raabe@kde.org> |
3 * Copyright (C) 2006 Apple Computer, Inc. | 3 * Copyright (C) 2006 Apple Computer, Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
11 * 2. Redistributions in binary form must reproduce the above copyright | 11 * 2. Redistributions in binary form must reproduce the above copyright |
12 * notice, this list of conditions and the following disclaimer in the | 12 * notice, this list of conditions and the following disclaimer in the |
13 * documentation and/or other materials provided with the distribution. | 13 * documentation and/or other materials provided with the distribution. |
14 * | 14 * |
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #include "config.h" | 27 #include "config.h" |
28 #include "core/xml/XPathEvaluator.h" | 28 #include "core/xml/XPathEvaluator.h" |
29 | 29 |
30 #include "bindings/v8/ExceptionMessages.h" | |
31 #include "bindings/v8/ExceptionState.h" | 30 #include "bindings/v8/ExceptionState.h" |
32 #include "core/dom/ExceptionCode.h" | 31 #include "core/dom/ExceptionCode.h" |
33 #include "core/dom/Node.h" | 32 #include "core/dom/Node.h" |
34 #include "core/xml/NativeXPathNSResolver.h" | 33 #include "core/xml/NativeXPathNSResolver.h" |
35 #include "core/xml/XPathExpression.h" | 34 #include "core/xml/XPathExpression.h" |
36 #include "core/xml/XPathResult.h" | 35 #include "core/xml/XPathResult.h" |
37 #include "core/xml/XPathUtil.h" | 36 #include "core/xml/XPathUtil.h" |
38 | 37 |
39 namespace WebCore { | 38 namespace WebCore { |
40 | 39 |
41 using namespace XPath; | 40 using namespace XPath; |
42 | 41 |
43 PassRefPtr<XPathExpression> XPathEvaluator::createExpression(const String& expre
ssion, PassRefPtr<XPathNSResolver> resolver, ExceptionState& exceptionState) | 42 PassRefPtr<XPathExpression> XPathEvaluator::createExpression(const String& expre
ssion, PassRefPtr<XPathNSResolver> resolver, ExceptionState& exceptionState) |
44 { | 43 { |
45 return XPathExpression::createExpression(expression, resolver, exceptionStat
e); | 44 return XPathExpression::createExpression(expression, resolver, exceptionStat
e); |
46 } | 45 } |
47 | 46 |
48 PassRefPtr<XPathNSResolver> XPathEvaluator::createNSResolver(Node* nodeResolver) | 47 PassRefPtr<XPathNSResolver> XPathEvaluator::createNSResolver(Node* nodeResolver) |
49 { | 48 { |
50 return NativeXPathNSResolver::create(nodeResolver); | 49 return NativeXPathNSResolver::create(nodeResolver); |
51 } | 50 } |
52 | 51 |
53 PassRefPtr<XPathResult> XPathEvaluator::evaluate(const String& expression, Node*
contextNode, | 52 PassRefPtr<XPathResult> XPathEvaluator::evaluate(const String& expression, Node*
contextNode, |
54 PassRefPtr<XPathNSResolver> resolver, unsigned short type, XPathResult* resu
lt, ExceptionState& exceptionState) | 53 PassRefPtr<XPathNSResolver> resolver, unsigned short type, XPathResult* resu
lt, ExceptionState& exceptionState) |
55 { | 54 { |
56 if (!contextNode) { | 55 if (!contextNode) { |
57 exceptionState.throwDOMException(NotSupportedError, ExceptionMessages::f
ailedToExecute("evaluate", "XPathEvaluator", "The context node provided is null.
")); | 56 exceptionState.throwDOMException(NotSupportedError, "The context node pr
ovided is null."); |
58 return 0; | 57 return 0; |
59 } | 58 } |
60 | 59 |
61 if (!isValidContextNode(contextNode)) { | 60 if (!isValidContextNode(contextNode)) { |
62 exceptionState.throwDOMException(NotSupportedError, ExceptionMessages::f
ailedToExecute("evaluate", "XPathEvaluator", "The node provided is '" + contextN
ode->nodeName() + "', which is not a valid context node type.")); | 61 exceptionState.throwDOMException(NotSupportedError, "The node provided i
s '" + contextNode->nodeName() + "', which is not a valid context node type."); |
63 return 0; | 62 return 0; |
64 } | 63 } |
65 | 64 |
66 RefPtr<XPathExpression> expr = createExpression(expression, resolver, except
ionState); | 65 RefPtr<XPathExpression> expr = createExpression(expression, resolver, except
ionState); |
67 if (exceptionState.hadException()) | 66 if (exceptionState.hadException()) |
68 return 0; | 67 return 0; |
69 | 68 |
70 return expr->evaluate(contextNode, type, result, exceptionState); | 69 return expr->evaluate(contextNode, type, result, exceptionState); |
71 } | 70 } |
72 | 71 |
73 } | 72 } |
OLD | NEW |