diff options
Diffstat (limited to 'testing/web-platform/tests/html-imports')
15 files changed, 208 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html-imports/OWNERS b/testing/web-platform/tests/html-imports/OWNERS new file mode 100644 index 000000000..edda46755 --- /dev/null +++ b/testing/web-platform/tests/html-imports/OWNERS @@ -0,0 +1 @@ +@omo diff --git a/testing/web-platform/tests/html-imports/document/document-method-changes.html b/testing/web-platform/tests/html-imports/document/document-method-changes.html new file mode 100644 index 000000000..c71012ff5 --- /dev/null +++ b/testing/web-platform/tests/html-imports/document/document-method-changes.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> +<head> +<title>The import attribute</title> +<link rel="help" href="http://w3c.github.io/webcomponents/spec/imports/#interface-import"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<link id="importLink" rel="import" href="resources/body-only.html"> +<link rel="import" href="resources/test-in-import.html"> +</head> +<body> +<div id="log"></div> +<script> +test(function() { + assert_throws('INVALID_STATE_ERR', function() { importLink.import.open(); }, 'document.open()'); + assert_throws('INVALID_STATE_ERR', function() { importLink.import.write('Hello'); }, 'document.write()'); + assert_throws('INVALID_STATE_ERR', function() { importLink.import.open(); }, 'document.close()'); +}, 'Throws an InvalidStateError exception if the Document is an import: From the master document'); +</script> +</body> +</html> diff --git a/testing/web-platform/tests/html-imports/document/resources/body-only.html b/testing/web-platform/tests/html-imports/document/resources/body-only.html new file mode 100644 index 000000000..0ed2a55bb --- /dev/null +++ b/testing/web-platform/tests/html-imports/document/resources/body-only.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<html> +<body id="body-only">Hello</body> +</html> diff --git a/testing/web-platform/tests/html-imports/document/resources/test-in-import.html b/testing/web-platform/tests/html-imports/document/resources/test-in-import.html new file mode 100644 index 000000000..fc25e85a4 --- /dev/null +++ b/testing/web-platform/tests/html-imports/document/resources/test-in-import.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> +<body> +<script> +test(function() { + var doc = document.currentScript.ownerDocument; + assert_throws('INVALID_STATE_ERR', function() { doc.open(); }, 'document.open()'); + assert_throws('INVALID_STATE_ERR', function() { doc.write('Hello'); }, 'document.write()'); + assert_throws('INVALID_STATE_ERR', function() { doc.open(); }, 'document.close()'); +}, 'Throws an InvalidStateError exception if the Document is an import: From an import'); +</script> +</body> +</html> diff --git a/testing/web-platform/tests/html-imports/fetching/already-in-import-map.html b/testing/web-platform/tests/html-imports/fetching/already-in-import-map.html new file mode 100644 index 000000000..a5b006500 --- /dev/null +++ b/testing/web-platform/tests/html-imports/fetching/already-in-import-map.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> +<head> +<title>Fetching import</title> +<link rel="help" href="http://w3c.github.io/webcomponents/spec/imports/#fetching-import"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<link id="first" rel="import" href="resources/hello.html"> +<link id="shouldBeInImportMap" rel="import" href="resources/hello.html"> +<link id="parentOfFirst" rel="import" href="resources/parent-of-hello.html"> + +</head> +<body> +<div id="log"></div> +<script> +test(function() { + assert_true(window.first.import === window.shouldBeInImportMap.import); +}, 'If LOCATION is already in the import map, let IMPORT be the imported document for LOCATION and stop. (1)'); + +test(function() { + assert_true(window.first.import === window.parentOfFirst.import.getElementById('child').import); +}, 'If LOCATION is already in the import map, let IMPORT be the imported document for LOCATION and stop. (2)'); +</script> +</body> +</html> diff --git a/testing/web-platform/tests/html-imports/fetching/loading-attempt.html b/testing/web-platform/tests/html-imports/fetching/loading-attempt.html new file mode 100644 index 000000000..7c1b442b1 --- /dev/null +++ b/testing/web-platform/tests/html-imports/fetching/loading-attempt.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<html> +<head> +<title>Fetching import</title> +<link rel="help" href="http://w3c.github.io/webcomponents/spec/imports/#fetching-import"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +var onloadWasCalledOnSuccess = false; +var onerrorWasCalledOnSuccess = false; +function helloLoadHandler() { onloadWasCalledOnSuccess = true; } +function helloErrorHandler() { onerrorWasCalledOnSuccess = true; } + +var onloadWasCalledOnFail = false; +var onerrorWasCalledOnFail = false; +function nosuchLoadHandler() { onloadWasCalledOnFail = true; } +function nosuchErrorHandler() { onerrorWasCalledOnFail = true; } +</script> + +<link rel="import" href="resources/hello.html" onload="helloLoadHandler()" onerror="helloLoadHandler()"> +<link rel="import" href="resources/no-such.html" onload="nosuchLoadHandler()" onerror="nosuchErrorHandler()"> + +<script> +test(function() { + assert_true(onloadWasCalledOnSuccess); + assert_false(onerrorWasCalledOnSuccess); +}, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (1)'); + +test(function() { + assert_false(onloadWasCalledOnFail); + assert_true(onerrorWasCalledOnFail); +}, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (2)'); + +t1 = async_test('The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (3)') +t1.step(function() { + var importElement = document.createElement('link'); + importElement.setAttribute('rel', 'import'); + importElement.setAttribute('href', 'resources/dynamic.html'); + importElement.addEventListener("error", assert_unreached); + importElement.addEventListener("load", function() { + t1.done(); + }); + + document.head.appendChild(importElement); +}); + +var onloadWasCalledOnAsync = false; +var onerrorWasCalledOnAsync = false; +var asyncAttemptDone = function() { assert_unreached(); }; + +function asyncLoadHandler() { + onloadWasCalledOnAsync = true; + asyncAttemptDone(); +} +function asyncErrorHandler() { + onerrorWasCalledOnAsync = true; + asyncAttemptDone(); +} + +t2 = async_test('Every import that is not marked as async delays the load event in the Document.'); +asyncAttemptDone = function() { + t2.step(function() { + assert_true(onloadWasCalledOnAsync); + assert_false(onerrorWasCalledOnAsync); + t2.done(); + }); +}; + +</script> +<link rel="import" href="resources/async.html" onload="asyncLoadHandler()" onerror="asyncErrorHandler()" async> +</head> +<body> +<div id="log"></div> +</body> +</html> diff --git a/testing/web-platform/tests/html-imports/fetching/resources/async.html b/testing/web-platform/tests/html-imports/fetching/resources/async.html new file mode 100644 index 000000000..18de08618 --- /dev/null +++ b/testing/web-platform/tests/html-imports/fetching/resources/async.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<body>Async</body> diff --git a/testing/web-platform/tests/html-imports/fetching/resources/dynamic.html b/testing/web-platform/tests/html-imports/fetching/resources/dynamic.html new file mode 100644 index 000000000..bf17a13ba --- /dev/null +++ b/testing/web-platform/tests/html-imports/fetching/resources/dynamic.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<body>Dyamic</body> diff --git a/testing/web-platform/tests/html-imports/fetching/resources/hello.html b/testing/web-platform/tests/html-imports/fetching/resources/hello.html new file mode 100644 index 000000000..949f6c66a --- /dev/null +++ b/testing/web-platform/tests/html-imports/fetching/resources/hello.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<body>Hello</body> diff --git a/testing/web-platform/tests/html-imports/fetching/resources/parent-of-hello.html b/testing/web-platform/tests/html-imports/fetching/resources/parent-of-hello.html new file mode 100644 index 000000000..195e37add --- /dev/null +++ b/testing/web-platform/tests/html-imports/fetching/resources/parent-of-hello.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<link id="child" rel="import" href="hello.html"> diff --git a/testing/web-platform/tests/html-imports/html-link-element/import-attribute.html b/testing/web-platform/tests/html-imports/html-link-element/import-attribute.html new file mode 100644 index 000000000..41b63751f --- /dev/null +++ b/testing/web-platform/tests/html-imports/html-link-element/import-attribute.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> +<title>The import attribute</title> +<link rel="help" href="http://w3c.github.io/webcomponents/spec/imports/#interface-import"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<link id="nonImportLink" rel="stylesheet" href="resources/hello.css"> +<link id="goOutFromDocument" rel="import" href="resources/body-only-0.html"> +<link id="importLink" rel="import" href="resources/body-only-1.html"> +<link id="anotherImportLink" rel="import" href="resources/body-only-2.html"> + +</head> +<body> +<div id="log"></div> +<script> +test(function() { + assert_equals(nonImportLink.import, null); +}, 'The import attribute must return null if the link does not represent an import.'); + +test(function() { + var link = goOutFromDocument; + assert_true(link.import != null); + document.head.removeChild(link); + assert_equals(link.import, null); +}, 'The import attribute must return null if the link element is not in a Document.'); + +test(function() { + assert_equals(importLink.import.body.id, 'body-only-1'); +}, 'The attribute must return the imported document for the import.'); + +test(function() { + var importA = importLink.import; + var importB = document.querySelector('#importLink').import; + var anotherImport = document.querySelector('#anotherImportLink').import; + assert_true(importA === importB); + assert_true(importA !== anotherImport); +}, 'The same object must be returned each time.'); +</script> +</body> +</html> + diff --git a/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-0.html b/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-0.html new file mode 100644 index 000000000..cac33c7a3 --- /dev/null +++ b/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-0.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<html> +<body id="body-only-0">Hello</body> +</html> diff --git a/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-1.html b/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-1.html new file mode 100644 index 000000000..c0eedf4e4 --- /dev/null +++ b/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-1.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<html> +<body id="body-only-1">Hello</body> +</html> diff --git a/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-2.html b/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-2.html new file mode 100644 index 000000000..9a6a1e438 --- /dev/null +++ b/testing/web-platform/tests/html-imports/html-link-element/resources/body-only-2.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<html> +<body id="body-only-2">Hello</body> +</html> diff --git a/testing/web-platform/tests/html-imports/html-link-element/resources/hello.css b/testing/web-platform/tests/html-imports/html-link-element/resources/hello.css new file mode 100644 index 000000000..9054080ff --- /dev/null +++ b/testing/web-platform/tests/html-imports/html-link-element/resources/hello.css @@ -0,0 +1,3 @@ +h1 { + color: red; +}
\ No newline at end of file |