| Index: Source/core/xml/XPathStep.cpp
|
| diff --git a/Source/core/xml/XPathStep.cpp b/Source/core/xml/XPathStep.cpp
|
| index bf490bab10b51c75580ffcfcabfaf721046bf013..c6fdc805b483a292fc3466fcb900133f1af6dda6 100644
|
| --- a/Source/core/xml/XPathStep.cpp
|
| +++ b/Source/core/xml/XPathStep.cpp
|
| @@ -166,8 +166,10 @@ static inline Node::NodeType primaryNodeType(Step::Axis axis)
|
| static inline bool nodeMatchesBasicTest(Node* node, Step::Axis axis, const Step::NodeTest& nodeTest)
|
| {
|
| switch (nodeTest.kind()) {
|
| - case Step::NodeTest::TextNodeTest:
|
| - return node->nodeType() == Node::TEXT_NODE || node->nodeType() == Node::CDATA_SECTION_NODE;
|
| + case Step::NodeTest::TextNodeTest: {
|
| + Node::NodeType type = node->nodeType();
|
| + return type == Node::TEXT_NODE || type == Node::CDATA_SECTION_NODE;
|
| + }
|
| case Step::NodeTest::CommentNodeTest:
|
| return node->nodeType() == Node::COMMENT_NODE;
|
| case Step::NodeTest::ProcessingInstructionNodeTest: {
|
| @@ -198,21 +200,22 @@ static inline bool nodeMatchesBasicTest(Node* node, Step::Axis axis, const Step:
|
|
|
| // For other axes, the principal node type is element.
|
| ASSERT(primaryNodeType(axis) == Node::ELEMENT_NODE);
|
| - if (node->nodeType() != Node::ELEMENT_NODE)
|
| + if (!node->isElementNode())
|
| return false;
|
| + Element& element = toElement(*node);
|
|
|
| if (name == starAtom)
|
| - return namespaceURI.isEmpty() || namespaceURI == node->namespaceURI();
|
| + return namespaceURI.isEmpty() || namespaceURI == element.namespaceURI();
|
|
|
| - if (node->document().isHTMLDocument()) {
|
| - if (node->isHTMLElement()) {
|
| + if (element.document().isHTMLDocument()) {
|
| + if (element.isHTMLElement()) {
|
| // Paths without namespaces should match HTML elements in HTML documents despite those having an XHTML namespace. Names are compared case-insensitively.
|
| - return equalIgnoringCase(toElement(node)->localName(), name) && (namespaceURI.isNull() || namespaceURI == node->namespaceURI());
|
| + return equalIgnoringCase(element.localName(), name) && (namespaceURI.isNull() || namespaceURI == element.namespaceURI());
|
| }
|
| // An expression without any prefix shouldn't match no-namespace nodes (because HTML5 says so).
|
| - return toElement(node)->hasLocalName(name) && namespaceURI == node->namespaceURI() && !namespaceURI.isNull();
|
| + return element.hasLocalName(name) && namespaceURI == element.namespaceURI() && !namespaceURI.isNull();
|
| }
|
| - return toElement(node)->hasLocalName(name) && namespaceURI == node->namespaceURI();
|
| + return element.hasLocalName(name) && namespaceURI == element.namespaceURI();
|
| }
|
| }
|
| ASSERT_NOT_REACHED();
|
|
|