Changeset 126621 in webkit


Ignore:
Timestamp:
Aug 24, 2012 1:51:57 PM (12 years ago)
Author:
cevans@google.com
Message:

Source/WebCore: Update comment regarding root node handling in XPath for detached trees.
https://bugs.webkit.org/show_bug.cgi?id=36427

Reviewed by Alexey Proskuryakov.

  • xml/XPathPath.cpp:

(WebCore::XPath::LocationPath::evaluate): Update XPath root node comment.

LayoutTests: Improve xpath-detached-nodes.html test.
https://bugs.webkit.org/show_bug.cgi?id=36427

Reviewed by Alexey Proskuryakov.

  • fast/xpath/xpath-detached-nodes-expected.txt:
  • fast/xpath/xpath-detached-nodes.html: Increase coverage and improve log messages.
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r126618 r126621  
     12012-08-24  Chris Evans  <cevans@google.com>
     2
     3        Improve xpath-detached-nodes.html test.
     4        https://bugs.webkit.org/show_bug.cgi?id=36427
     5
     6        Reviewed by Alexey Proskuryakov.
     7
     8        * fast/xpath/xpath-detached-nodes-expected.txt:
     9        * fast/xpath/xpath-detached-nodes.html: Increase coverage and improve log messages.
     10
    1112012-08-24  Sheriff Bot  <webkit.review.bot@gmail.com>
    212
  • trunk/LayoutTests/fast/xpath/xpath-detached-nodes-expected.txt

    r125631 r126621  
    22See https://bugs.webkit.org/show_bug.cgi?id=36427
    33
    4 PASS result.numberValue is 1
    5 PASS result.numberValue is 0
    6 PASS result.numberValue is 1
    7 PASS result.numberValue is 0
    8 PASS result.numberValue is NaN
     4PASS document.evaluate('count(/div)', child, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     5PASS document.evaluate('count(/html)', child, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
     6PASS document.evaluate('count(/)', child, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     7PASS document.evaluate('count(//html)', child, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
     8PASS document.evaluate('count(//div)', child, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     9PASS document.evaluate('count(//h2)', child, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     10PASS document.evaluate('count(/h1)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     11PASS document.evaluate('count(/html)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
     12PASS document.evaluate('count(/)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     13PASS document.evaluate('count(//html)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
     14PASS document.evaluate('count(//p)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is 0
     15PASS document.evaluate('count(//h1)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is 1
     16PASS document.evaluate('/* | *', ele, null, XPathResult.NUMBER_TYPE, null).numberValue is NaN
    917PASS successfullyParsed is true
    1018
  • trunk/LayoutTests/fast/xpath/xpath-detached-nodes.html

    r125631 r126621  
    1010
    1111<script>
    12   if (window.testRunner)
    13     testRunner.dumpAsText();
    14 
    1512  frag = document.createDocumentFragment();
    1613  child = document.createElement('div');
    1714  frag.appendChild(child);
    18   result = document.evaluate("count(/div)",
    19                              child, null, XPathResult.NUMBER_TYPE, null);
    20   shouldBe("result.numberValue", "1");
    21   result = document.evaluate("count(/html)",
    22                              child, null, XPathResult.NUMBER_TYPE, null);
    23   shouldBe("result.numberValue", "0");
     15  child.appendChild(document.createElement('h2'));
     16  shouldBe("document.evaluate('count(/div)', child, null, XPathResult.NUMBER_TYPE, null).numberValue",
     17           "1");
     18  shouldBe("document.evaluate('count(/html)', child, null, XPathResult.NUMBER_TYPE, null).numberValue",
     19           "0");
     20  shouldBe("document.evaluate('count(/)', child, null, XPathResult.NUMBER_TYPE, null).numberValue",
     21           "1");
     22  shouldBe("document.evaluate('count(//html)', child, null, XPathResult.NUMBER_TYPE, null).numberValue",
     23           "0");
     24  shouldBe("document.evaluate('count(//div)', child, null, XPathResult.NUMBER_TYPE, null).numberValue",
     25           "1");
     26  shouldBe("document.evaluate('count(//h2)', child, null, XPathResult.NUMBER_TYPE, null).numberValue",
     27           "1");
    2428
    2529  ele = document.createElement('p');
    2630  ele.appendChild(document.createElement('h1'));
    27   result = document.evaluate("count(/h1)",
    28                              ele, null, XPathResult.NUMBER_TYPE, null);
    29   shouldBe("result.numberValue", "1");
    30   result = document.evaluate("count(/html)",
    31                              ele, null, XPathResult.NUMBER_TYPE, null);
    32   shouldBe("result.numberValue", "0");
    33   result = document.evaluate("/* | *",
    34                              ele, null, XPathResult.NUMBER_TYPE, null);
    35   shouldBe("result.numberValue", "NaN");
     31  shouldBe("document.evaluate('count(/h1)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     32           "1");
     33  shouldBe("document.evaluate('count(/html)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     34           "0");
     35  shouldBe("document.evaluate('count(/)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     36           "1");
     37  shouldBe("document.evaluate('count(//html)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     38           "0");
     39  shouldBe("document.evaluate('count(//p)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     40           "0");
     41  shouldBe("document.evaluate('count(//h1)', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     42           "1");
     43  shouldBe("document.evaluate('/* | *', ele, null, XPathResult.NUMBER_TYPE, null).numberValue",
     44           "NaN");
    3645</script>
    3746<script src="../js/resources/js-test-post.js"></script>
  • trunk/Source/WebCore/ChangeLog

    r126620 r126621  
     12012-08-24  Chris Evans  <cevans@google.com>
     2
     3        Update comment regarding root node handling in XPath for detached trees.
     4        https://bugs.webkit.org/show_bug.cgi?id=36427
     5
     6        Reviewed by Alexey Proskuryakov.
     7
     8        * xml/XPathPath.cpp:
     9        (WebCore::XPath::LocationPath::evaluate): Update XPath root node comment.
     10
    1112012-08-24  Justin Novosad  <junov@chromium.org>
    212
  • trunk/Source/WebCore/xml/XPathPath.cpp

    r125631 r126621  
    9494    EvaluationContext& evaluationContext = Expression::evaluationContext();
    9595    EvaluationContext backupContext = evaluationContext;
    96     // For absolute location paths, the context node is ignored. The
    97     // document's root node is used for attached nodes, otherwise the root
    98     // node of the detached subtree is used.
     96    // http://www.w3.org/TR/xpath/
     97    // Section 2, Location Paths:
     98    // "/ selects the document root (which is always the parent of the document element)"
     99    // "A / by itself selects the root node of the document containing the context node."
     100    // In the case of a tree that is detached from the document, we violate
     101    // the spec and treat / as the root node of the detached tree.
     102    // This is for compatibility with Firefox, and also seems like a more
     103    // logical treatment of where you would expect the "root" to be.
    99104    Node* context = evaluationContext.node.get();
    100105    if (m_absolute && context->nodeType() != Node::DOCUMENT_NODE)  {
Note: See TracChangeset for help on using the changeset viewer.