summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html-imports
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html-imports')
-rw-r--r--testing/web-platform/tests/html-imports/OWNERS1
-rw-r--r--testing/web-platform/tests/html-imports/document/document-method-changes.html22
-rw-r--r--testing/web-platform/tests/html-imports/document/resources/body-only.html4
-rw-r--r--testing/web-platform/tests/html-imports/document/resources/test-in-import.html13
-rw-r--r--testing/web-platform/tests/html-imports/fetching/already-in-import-map.html26
-rw-r--r--testing/web-platform/tests/html-imports/fetching/loading-attempt.html76
-rw-r--r--testing/web-platform/tests/html-imports/fetching/resources/async.html2
-rw-r--r--testing/web-platform/tests/html-imports/fetching/resources/dynamic.html2
-rw-r--r--testing/web-platform/tests/html-imports/fetching/resources/hello.html2
-rw-r--r--testing/web-platform/tests/html-imports/fetching/resources/parent-of-hello.html2
-rw-r--r--testing/web-platform/tests/html-imports/html-link-element/import-attribute.html43
-rw-r--r--testing/web-platform/tests/html-imports/html-link-element/resources/body-only-0.html4
-rw-r--r--testing/web-platform/tests/html-imports/html-link-element/resources/body-only-1.html4
-rw-r--r--testing/web-platform/tests/html-imports/html-link-element/resources/body-only-2.html4
-rw-r--r--testing/web-platform/tests/html-imports/html-link-element/resources/hello.css3
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