Source/WebCore/ChangeLog

 12013-08-01 Christophe Dumez <ch.dumez@sisa.samsung.com>
 2
 3 compareDocumentPosition() should report PRECEDING or FOLLOWING information even if nodes are disconnected
 4 https://bugs.webkit.org/show_bug.cgi?id=119316
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 As per the latest specification, compareDocumentPosition() should report PRECEDING or FOLLOWING
 9 information even if nodes are disconnected:
 10 - http://dom.spec.whatwg.org/#dom-node-comparedocumentposition
 11
 12 This behavior is consistent with both IE10, Firefox 22 and since recently Blink.
 13
 14 No new tests, covered by existing tests.
 15
 16 * dom/Node.cpp:
 17 (WebCore::computeDisconnectedElementsPosition):
 18 (WebCore::Node::compareDocumentPosition):
 19
1202013-08-01 Commit Queue <commit-queue@webkit.org>
221
322 Unreviewed, rolling out r153608.

Source/WebCore/dom/Node.cpp

@@bool Node::offsetInCharacters() const
16211621 return false;
16221622}
16231623
 1624static inline unsigned short computeDisconnectedElementsPosition(Node* firstNode, Node* secondNode)
 1625{
 1626 // If the 2 nodes are not in the same tree, return the result of adding DOCUMENT_POSITION_DISCONNECTED,
 1627 // DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, and either DOCUMENT_POSITION_PRECEDING or
 1628 // DOCUMENT_POSITION_FOLLOWING, with the constraint that this is to be consistent. Whether to return
 1629 // DOCUMENT_POSITION_PRECEDING or DOCUMENT_POSITION_FOLLOWING is implemented here via pointer
 1630 // comparison.
 1631 // See step 3 in http://www.w3.org/TR/2012/WD-dom-20121206/#dom-node-comparedocumentposition
 1632 unsigned short direction = (firstNode > secondNode) ? Node::DOCUMENT_POSITION_PRECEDING : Node::DOCUMENT_POSITION_FOLLOWING;
 1633 return Node::DOCUMENT_POSITION_DISCONNECTED | Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | direction;
 1634}
 1635
16241636unsigned short Node::compareDocumentPosition(Node* otherNode)
16251637{
16261638 // It is not clear what should be done if |otherNode| is 0.

@@unsigned short Node::compareDocumentPosition(Node* otherNode)
16391651 // If either of start1 or start2 is null, then we are disconnected, since one of the nodes is
16401652 // an orphaned attribute node.
16411653 if (!start1 || !start2)
1642  return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
 1654 return computeDisconnectedElementsPosition(this, otherNode);
16431655
16441656 Vector<Node*, 16> chain1;
16451657 Vector<Node*, 16> chain2;

@@unsigned short Node::compareDocumentPosition(Node* otherNode)
16751687 // comparing Attr nodes here, since they return false from inDocument() all the time (which seems like a bug).
16761688 if (start1->inDocument() != start2->inDocument() ||
16771689 start1->treeScope() != start2->treeScope())
1678  return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
 1690 return computeDisconnectedElementsPosition(this, otherNode);
16791691
16801692 // We need to find a common ancestor container, and then compare the indices of the two immediate children.
16811693 Node* current;

@@unsigned short Node::compareDocumentPosition(Node* otherNode)
16881700 unsigned index2 = chain2.size();
16891701
16901702 // If the two elements don't have a common root, they're not in the same tree.
1691  if (chain1[index1 - 1] != chain2[index2 - 1]) {
1692  unsigned short direction = (start1 > start2) ? DOCUMENT_POSITION_PRECEDING : DOCUMENT_POSITION_FOLLOWING;
1693  return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | direction;
1694  }
 1703 if (chain1[index1 - 1] != chain2[index2 - 1])
 1704 return computeDisconnectedElementsPosition(this, otherNode);
16951705
16961706 // Walk the two chains backwards and look for the first difference.
16971707 for (unsigned i = min(index1, index2); i; --i) {

LayoutTests/ChangeLog

 12013-08-01 Christophe Dumez <ch.dumez@sisa.samsung.com>
 2
 3 compareDocumentPosition() should report PRECEDING or FOLLOWING information even if nodes are disconnected
 4 https://bugs.webkit.org/show_bug.cgi?id=119316
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Update fast/dom/compare-document-position-disconnected-nodes.html to check that compareDocumentPosition()
 9 now returns one of the following values for disconnected nodes:
 10 - DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_PRECEDING
 11 - DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_FOLLOWING
 12
 13 Several dom/xhtml/level3 are skipped and marked as WonfFix because they are outdated and no longer match
 14 the DOM4 specification. They expect compareDocumentPosition() not to return PRECEDING / FOLLOWING
 15 information for disconnected nodes.
 16
 17 * dom/xhtml/level3/core/nodecomparedocumentposition38-expected.txt:
 18 * fast/dom/compare-document-position-disconnected-nodes-expected.txt:
 19 * fast/dom/compare-document-position-disconnected-nodes.html:
 20 * fast/dom/shadow/compare-document-position-expected.txt:
 21 * fast/dom/shadow/compare-document-position.html:
 22 * platform/efl/TestExpectations:
 23 * platform/gtk/TestExpectations:
 24 * platform/mac/TestExpectations:
 25 * platform/qt/TestExpectations:
 26
1272013-08-01 Commit Queue <commit-queue@webkit.org>
228
329 Unreviewed, rolling out r153608.

LayoutTests/dom/xhtml/level3/core/nodecomparedocumentposition38-expected.txt

11Test http://www.w3.org/2001/DOM-Test-Suite/level3/core/nodecomparedocumentposition38
2 Status failure
3 Message nodecomparedocumentpositionIsContainsFollowing38: assertEquals failed, actual 33, expected 20.
 2Status Success

LayoutTests/fast/dom/compare-document-position-disconnected-nodes-expected.txt

 1* Test with 2 disconnected elements
12PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
23PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
34PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
45PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
56PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
67PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING
 8PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING || a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 9PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING || b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 10PASS a.compareDocumentPosition(b) is a.compareDocumentPosition(b)
 11PASS b.compareDocumentPosition(a) is b.compareDocumentPosition(a)
 12* Test with document and a disconnected element
 13PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 14PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 15PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 16PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 17PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
 18PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING
 19PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING || a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 20PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING || b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 21PASS a.compareDocumentPosition(b) is a.compareDocumentPosition(b)
 22PASS b.compareDocumentPosition(a) is b.compareDocumentPosition(a)
 23* Test with document and a disconnected attribute
 24PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 25PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 26PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 27PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 28PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
 29PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING
 30PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING || a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 31PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING || b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 32PASS a.compareDocumentPosition(b) is a.compareDocumentPosition(b)
 33PASS b.compareDocumentPosition(a) is b.compareDocumentPosition(a)
 34* Test with 2 disconnected attributes
 35PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 36PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 37PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 38PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 39PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
 40PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING
 41PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING || a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 42PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING || b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 43PASS a.compareDocumentPosition(b) is a.compareDocumentPosition(b)
 44PASS b.compareDocumentPosition(a) is b.compareDocumentPosition(a)
 45* Test with disconnected attribute and element
 46PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 47PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 48PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 49PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 50PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING
 51PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is not b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING
 52PASS a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING || a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 53PASS b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING || b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 54PASS a.compareDocumentPosition(b) is a.compareDocumentPosition(b)
 55PASS b.compareDocumentPosition(a) is b.compareDocumentPosition(a)
756PASS successfullyParsed is true
857
958TEST COMPLETE

LayoutTests/fast/dom/compare-document-position-disconnected-nodes.html

33<head>
44 <script src="../js/resources/js-test-pre.js"></script>
55 <script>
6  window.a = document.createElement('a');
7  window.b = document.createElement('b');
 6 var a;
 7 var b;
88
9  shouldBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED', 'Node.DOCUMENT_POSITION_DISCONNECTED');
10  shouldBe('b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED', 'Node.DOCUMENT_POSITION_DISCONNECTED');
11  shouldBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC', 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
12  shouldBe('b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC', 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
13  shouldNotBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING', 'b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING');
14  shouldNotBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING', 'b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING');
 9 function testElements(_a, _b) {
 10 a = _a;
 11 b = _b;
 12
 13 shouldBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_DISCONNECTED', 'Node.DOCUMENT_POSITION_DISCONNECTED');
 14 shouldBe('b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_DISCONNECTED', 'Node.DOCUMENT_POSITION_DISCONNECTED');
 15 shouldBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC', 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
 16 shouldBe('b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC', 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
 17 shouldNotBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING', 'b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING');
 18 shouldNotBe('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING', 'b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING');
 19 shouldBeNonZero('a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_PRECEDING || a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING');
 20 shouldBeNonZero('b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING || b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_FOLLOWING');
 21 // Make sure the returned result is consistent.
 22 shouldBe('a.compareDocumentPosition(b)', 'a.compareDocumentPosition(b)');
 23 shouldBe('b.compareDocumentPosition(a)', 'b.compareDocumentPosition(a)');
 24 }
 25
 26 debug("* Test with 2 disconnected elements");
 27 testElements(document.createElement('a'), document.createElement('b'));
 28 debug("* Test with document and a disconnected element");
 29 testElements(document, document.createElement('b'));
 30 debug("* Test with document and a disconnected attribute");
 31 testElements(document, document.createAttribute('b'));
 32 debug("* Test with 2 disconnected attributes");
 33 testElements(document.createAttribute("a"), document.createAttribute("b"));
 34 debug("* Test with disconnected attribute and element");
 35 testElements(document.createAttribute("a"), document.createElement("b"));
1536 </script>
1637 <script src="../js/resources/js-test-post.js"></script>
1738</head>

LayoutTests/fast/dom/shadow/compare-document-position-expected.txt

@@PASS a2.compareDocumentPosition(a3) is Node.DOCUMENT_POSITION_FOLLOWING
99PASS b1.compareDocumentPosition(b2) is Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING
1010PASS b2.compareDocumentPosition(b1) is Node.DOCUMENT_POSITION_CONTAINS | Node.DOCUMENT_POSITION_PRECEDING
1111PASS b2.compareDocumentPosition(b3) is Node.DOCUMENT_POSITION_FOLLOWING
12 PASS a1.compareDocumentPosition(b1) is Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
13 PASS b1.compareDocumentPosition(c1) is Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 12PASS a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_PRECEDING || a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 13PASS a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 14PASS a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 15PASS a1.compareDocumentPosition(b1) is a1.compareDocumentPosition(b1)
 16PASS b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_PRECEDING || b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_FOLLOWING is non-zero.
 17PASS b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_DISCONNECTED is Node.DOCUMENT_POSITION_DISCONNECTED
 18PASS b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
 19PASS b1.compareDocumentPosition(c1) is b1.compareDocumentPosition(c1)
1420PASS successfullyParsed is true
1521
1622TEST COMPLETE

LayoutTests/fast/dom/shadow/compare-document-position.html

@@function testCompareDocumentPosition()
4545 shouldBe('b2.compareDocumentPosition(b1)', 'Node.DOCUMENT_POSITION_CONTAINS | Node.DOCUMENT_POSITION_PRECEDING');
4646 shouldBe('b2.compareDocumentPosition(b3)', 'Node.DOCUMENT_POSITION_FOLLOWING');
4747
48  // The current implementation does not return FOLLOWING OR PRECEDING flag.
49  // We need a stable implementation which decides the total order between nodes in different shadow trees.
50  shouldBe('a1.compareDocumentPosition(b1)', 'Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
51  shouldBe('b1.compareDocumentPosition(c1)', 'Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
 48 // Nodes in different shadow trees.
 49 shouldBeNonZero('a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_PRECEDING || a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_FOLLOWING');
 50 shouldBe('a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_DISCONNECTED', 'Node.DOCUMENT_POSITION_DISCONNECTED');
 51 shouldBe('a1.compareDocumentPosition(b1) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC', 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
 52 shouldBe('a1.compareDocumentPosition(b1)', 'a1.compareDocumentPosition(b1)');
 53 shouldBeNonZero('b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_PRECEDING || b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_FOLLOWING');
 54 shouldBe('b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_DISCONNECTED', 'Node.DOCUMENT_POSITION_DISCONNECTED');
 55 shouldBe('b1.compareDocumentPosition(c1) & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC', 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC');
 56 shouldBe('b1.compareDocumentPosition(c1)', 'b1.compareDocumentPosition(c1)');
5257}
5358
5459testCompareDocumentPosition();

LayoutTests/platform/efl/TestExpectations

@@Bug(EFL) fast/forms/input-text-click-outside.html
340340webkit.org/b/85465 css3/filters [ Skip ]
341341webkit.org/b/85465 compositing/filters [ Skip ]
342342
 343# These conformace tests are no longer in sync with the latest specification
 344# and expect compareDocumentPosition() to return:
 345# DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_DISCONNECTED
 346# for disconnected nodes (missing PRECEDING / FOLLOWING information).
 347dom/xhtml/level3/core/nodecomparedocumentposition03.xhtml [ WontFix ]
 348dom/xhtml/level3/core/nodecomparedocumentposition05.xhtml [ WontFix ]
 349dom/xhtml/level3/core/nodecomparedocumentposition16.xhtml [ WontFix ]
 350dom/xhtml/level3/core/nodecomparedocumentposition33.xhtml [ WontFix ]
 351
343352# CSS image-resolution is not yet enabled.
344353webkit.org/b/85262 fast/css/image-resolution
345354

@@webkit.org/b/116022 http/tests/security/contentSecurityPolicy/media-src-allowed.
17111720webkit.org/b/101400 svg/css/shadow-changes.svg [ Failure ]
17121721webkit.org/b/101400 svg/css/composite-shadow-text.svg [ Failure ]
17131722
 1723# Node::compareDocumentPosition() wrongly reports an attribute and its content as disconnected.
 1724webkit.org/b/119325 dom/xhtml/level3/core/nodecomparedocumentposition38.xhtml [ Failure ]
 1725
17141726# Regression (r148032 - r148103).
17151727webkit.org/b/114919 fast/multicol/shadow-breaking.html [ Failure ]
17161728webkit.org/b/114920 fast/repaint/moving-shadow-on-container.html [ Failure ]

LayoutTests/platform/gtk/TestExpectations

@@inspector/styles/vendor-prefixes.html [ WontFix Pass ]
7272fast/dom/Window/slow-unload-handler.html [ WontFix Timeout Failure ]
7373fast/dom/Window/slow-unload-handler-only-frame-is-stopped.html [ WontFix Timeout Failure ]
7474
 75# These conformace tests are no longer in sync with the latest specification
 76# and expect compareDocumentPosition() to return:
 77# DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_DISCONNECTED
 78# for disconnected nodes (missing PRECEDING / FOLLOWING information).
 79dom/xhtml/level3/core/nodecomparedocumentposition03.xhtml [ WontFix ]
 80dom/xhtml/level3/core/nodecomparedocumentposition05.xhtml [ WontFix ]
 81dom/xhtml/level3/core/nodecomparedocumentposition16.xhtml [ WontFix ]
 82dom/xhtml/level3/core/nodecomparedocumentposition33.xhtml [ WontFix ]
 83
7584# Accessibility tests that should never be run for GTK due to be
7685# written in a platform-specific way. They should either be moved to
7786# the right platform or re-written in a more platform-agnostic way.

@@webkit.org/b/115437 css3/flexbox/auto-margins.html [ ImageOnlyFailure ]
13951404webkit.org/b/115437 fast/css/sticky/sticky-writing-mode-vertical-lr.html [ ImageOnlyFailure ]
13961405webkit.org/b/115437 fast/regions/region-content-flown-into-region.html [ ImageOnlyFailure ]
13971406
 1407# Node::compareDocumentPosition() wrongly reports an attribute and its content as disconnected.
 1408webkit.org/b/119325 dom/xhtml/level3/core/nodecomparedocumentposition38.xhtml [ Failure ]
 1409
13981410webkit.org/b/115437 fast/text/complex-initial-advance.html [ ImageOnlyFailure ]
13991411
14001412webkit.org/b/115440 svg/stroke/animated-non-scaling-stroke.html [ ImageOnlyFailure ]

LayoutTests/platform/mac/TestExpectations

@@fast/events/constructors/media-key-event-constructor.html
469469# Font feature settings is not implemented.
470470css3/font-feature-settings-rendering.html
471471
 472# These conformace tests are no longer in sync with the latest specification
 473# and expect compareDocumentPosition() to return:
 474# DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_DISCONNECTED
 475# for disconnected nodes (missing PRECEDING / FOLLOWING information).
 476dom/xhtml/level3/core/nodecomparedocumentposition03.xhtml [ WontFix ]
 477dom/xhtml/level3/core/nodecomparedocumentposition05.xhtml [ WontFix ]
 478dom/xhtml/level3/core/nodecomparedocumentposition16.xhtml [ WontFix ]
 479dom/xhtml/level3/core/nodecomparedocumentposition33.xhtml [ WontFix ]
 480
472481# This test verifies that a mismatch reftest will fail as intended if both results are same.
473482fast/harness/sample-fail-mismatch-reftest.html [ WontFix ImageOnlyFailure ]
474483

@@webkit.org/b/113227 transitions/svg-text-shadow-transition.html [ Pass Failure ]
12511260# Color input is not yet enabled on Mac WK1.
12521261fast/forms/color/input-color-onchange-event.html [ Skip ]
12531262
 1263# Node::compareDocumentPosition() wrongly reports an attribute and its content as disconnected.
 1264webkit.org/b/119325 dom/xhtml/level3/core/nodecomparedocumentposition38.xhtml [ Failure ]
 1265
12541266# New test failing, needs investigation.
12551267webkit.org/b/103857 fast/events/mouse-cursor-change.html
12561268

LayoutTests/platform/qt/TestExpectations

@@fast/loader/stop-provisional-loads.html
7070# exceptions that were previously expected
7171canvas/philip/tests/2d.drawImage.outsidesource.html
7272
 73# These conformace tests are no longer in sync with the latest specification
 74# and expect compareDocumentPosition() to return:
 75# DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_DISCONNECTED
 76# for disconnected nodes (missing PRECEDING / FOLLOWING information).
 77dom/xhtml/level3/core/nodecomparedocumentposition03.xhtml [ WontFix ]
 78dom/xhtml/level3/core/nodecomparedocumentposition05.xhtml [ WontFix ]
 79dom/xhtml/level3/core/nodecomparedocumentposition16.xhtml [ WontFix ]
 80dom/xhtml/level3/core/nodecomparedocumentposition33.xhtml [ WontFix ]
 81
7382# =========================================================================== #
7483# Disabled features. #
7584# =========================================================================== #

@@inspector/editor/text-editor-word-jumps.html
26092618inspector/editor/text-editor-home-button.html
26102619inspector/editor/text-editor-smart-braces.html
26112620
 2621# Node::compareDocumentPosition() wrongly reports an attribute and its content as disconnected.
 2622webkit.org/b/119325 dom/xhtml/level3/core/nodecomparedocumentposition38.xhtml [ Failure ]
 2623
26122624# [Qt] different result from other platforms
26132625webkit.org/b/108676 svg/custom/svg-fonts-in-text-controls.html [ Skip ]
26142626