| Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c423810fbd36a06c39fc25fbbe547b4f305ee73c
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html
|
| @@ -0,0 +1,156 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<!--
|
| +Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/acceptNode-filter.js
|
| + -->
|
| +<head>
|
| +<title>TreeWalker: acceptNode-filter</title>
|
| +<script src="../../../../resources/testharness.js"></script>
|
| +<script src="../../../../resources/testharnessreport.js"></script>
|
| +<script src="traversal-support.js"></script>
|
| +<link rel="stylesheet" href="../../../../resources/testharness.css">
|
| +<div id=log></div>
|
| +</head>
|
| +<body>
|
| +<p>Test JS objects as NodeFilters</p>
|
| +<script>
|
| +var testElement;
|
| +setup(function() {
|
| + testElement = document.createElement("div");
|
| + testElement.id = 'root';
|
| + //testElement.innerHTML='<div id="A1"><div id="B1"></div><div id="B2"></div></div>';
|
| +
|
| + // XXX for Servo, build the tree without using innerHTML
|
| + var a1 = document.createElement("div");
|
| + a1.id = "A1";
|
| + var b1 = document.createElement("div");
|
| + b1.id = "B1";
|
| + var b2 = document.createElement("div");
|
| + b2.id = "B2";
|
| + testElement.appendChild(a1);
|
| + a1.appendChild(b1);
|
| + a1.appendChild(b2);
|
| +});
|
| +
|
| +test(function()
|
| +{
|
| + function filter(node)
|
| + {
|
| + if (node.id == "B1")
|
| + return NodeFilter.FILTER_SKIP;
|
| + return NodeFilter.FILTER_ACCEPT;
|
| + }
|
| +
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'A1' });
|
| + assert_node(walker.nextNode(), { type: Element, id: 'B2' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'B2' });
|
| +}, 'Testing with raw function filter');
|
| +
|
| +test(function()
|
| +{
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {
|
| + acceptNode : function(node) {
|
| + if (node.id == "B1")
|
| + return NodeFilter.FILTER_SKIP;
|
| + return NodeFilter.FILTER_ACCEPT;
|
| + }
|
| + });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'A1' });
|
| + assert_node(walker.nextNode(), { type: Element, id: 'B2' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'B2' });
|
| +}, 'Testing with object filter');
|
| +
|
| +test(function()
|
| +{
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, null);
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'A1' });
|
| + assert_node(walker.nextNode(), { type: Element, id: 'B1' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'B1' });
|
| +}, 'Testing with null filter');
|
| +
|
| +test(function()
|
| +{
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, undefined);
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'A1' });
|
| + assert_node(walker.nextNode(), { type: Element, id: 'B1' });
|
| + assert_node(walker.currentNode, { type: Element, id: 'B1' });
|
| +}, 'Testing with undefined filter');
|
| +
|
| +test(function()
|
| +{
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {});
|
| + assert_throws(new TypeError(), function () { walker.firstChild(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_throws(new TypeError(), function () { walker.nextNode(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| +}, 'Testing with object lacking acceptNode property');
|
| +
|
| +test(function()
|
| +{
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, { acceptNode: "foo" });
|
| + assert_throws(new TypeError(), function () { walker.firstChild(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_throws(new TypeError(), function () { walker.nextNode(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| +}, 'Testing with object with non-function acceptNode property');
|
| +
|
| +test(function()
|
| +{
|
| + var filter = function() { return NodeFilter.FILTER_ACCEPT; };
|
| + filter.acceptNode = function(node) { return NodeFilter.FILTER_SKIP; };
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
|
| + assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
| + assert_node(walker.nextNode(), { type: Element, id: 'B1' });
|
| +}, 'Testing with function having acceptNode function');
|
| +
|
| +test(function()
|
| +{
|
| + var filter = {
|
| + acceptNode: function(node) {
|
| + return NodeFilter.FILTER_ACCEPT;
|
| + }
|
| + };
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
|
| + assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
| +}, 'Testing acceptNode callee');
|
| +
|
| +test(function()
|
| +{
|
| + var test_error = { name: "test" };
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
|
| + function(node) {
|
| + throw test_error;
|
| + });
|
| + assert_throws(test_error, function () { walker.firstChild(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_throws(test_error, function () { walker.nextNode(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| +}, 'Testing with filter function that throws');
|
| +
|
| +test(function()
|
| +{
|
| + var test_error = { name: "test" };
|
| + var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
|
| + {
|
| + acceptNode : function(node) {
|
| + throw test_error;
|
| + }
|
| + });
|
| + assert_throws(test_error, function () { walker.firstChild(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| + assert_throws(test_error, function () { walker.nextNode(); });
|
| + assert_node(walker.currentNode, { type: Element, id: 'root' });
|
| +}, 'Testing with filter object that throws');
|
| +
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|