Index: third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/iframe-sandbox-register-link-element.https.html |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/iframe-sandbox-register-link-element.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/iframe-sandbox-register-link-element.https.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1d1c54e3edc8be0fedfa461b91351da6e6fd2cac |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/iframe-sandbox-register-link-element.https.html |
@@ -0,0 +1,53 @@ |
+<!DOCTYPE html> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<script src="resources/test-helpers.sub.js"></script> |
+<title>Service worker registration from within sandboxed iframe</title> |
+<body> |
+<script> |
+'use strict'; |
+function waitForMsg(id) { |
+ return new Promise(function(resolve) { |
+ window.addEventListener('message', function onMessage(event) { |
+ if (!event.data || event.data.id !== id) { |
+ return; |
+ } |
+ window.removeEventListener('message', onMessage); |
+ resolve(event.data.result); |
+ }); |
+ }); |
+} |
+ |
+promise_test(function(t) { |
+ var iframe = document.createElement('iframe'); |
+ iframe.setAttribute('src', 'resources/iframe-register-link-element.html?subtest1'); |
+ iframe.setAttribute('sandbox', 'allow-scripts'); |
+ |
+ document.body.appendChild(iframe); |
+ t.add_cleanup(function() { |
+ iframe.remove(); |
+ }); |
+ |
+ return waitForMsg('?subtest1') |
+ .then(function(data) { |
+ assert_equals(data, 'error'); |
+ }); |
+ }, 'registration via <link> element `rel` rejected'); |
+ |
+promise_test(function(t) { |
+ var iframe = document.createElement('iframe'); |
+ iframe.setAttribute('src', 'resources/iframe-register-link-element.html?subtest2'); |
+ iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin'); |
+ |
+ document.body.appendChild(iframe); |
+ t.add_cleanup(function() { |
+ iframe.remove(); |
+ }); |
+ |
+ return waitForMsg('?subtest2') |
+ .then(function(data) { |
+ assert_equals(data, 'loaded'); |
+ }); |
+ }, 'registration via <link> element `rel` accepted in presence of `allow-same-origin` directive'); |
+</script> |
+</body> |