Index: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/unique-origin.js |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/unique-origin.js b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/unique-origin.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ff1122db4de913755422f5ef5b6c4ef6efe7be8a |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/unique-origin.js |
@@ -0,0 +1,64 @@ |
+function runTest(config) { |
+ // When the sandbox attribute is present on an iframe, it will |
+ // treat the content as being from a unique origin. So try to |
+ // call createMediaKeys() inside an iframe and it should fail. |
+ |
+ function load_iframe(src, sandbox) { |
+ return new Promise(function (resolve) { |
+ var iframe = document.createElement('iframe'); |
+ iframe.onload = function () { |
+ resolve(iframe); |
+ }; |
+ iframe.sandbox = sandbox; |
+ iframe.src = src; |
+ document.documentElement.appendChild(iframe); |
+ }); |
+ } |
+ |
+ function wait_for_message() { |
+ return new Promise(function (resolve) { |
+ self.addEventListener('message', function listener(e) { |
+ resolve(e.data); |
+ self.removeEventListener('message', listener); |
+ }); |
+ }); |
+ } |
+ |
+ promise_test(function (test) { |
+ var script = 'data:text/html,' + |
+ '<script>' + |
+ ' window.onmessage = function(e) {' + |
+ ' navigator.requestMediaKeySystemAccess("' + config.keysystem + '", [{' + |
+ ' initDataTypes: [\"' + config.initDataType + '\"],' + |
+ ' audioCapabilities: [' + |
+ ' { contentType:\'' + config.audioType + '\'},' + |
+ ' ]' + |
+ ' }]).then(function(access) {' + |
+ ' return access.createMediaKeys();' + |
+ ' }).then(function(mediaKeys) {' + |
+ ' window.parent.postMessage({result: \'allowed\'}, \'*\');' + |
+ ' }, function(error) {' + |
+ ' window.parent.postMessage({result: \'failed\'}, \'*\');' + |
+ ' });' + |
+ ' };' + |
+ '<\/script>'; |
+ |
+ // Verify that this page can create a MediaKeys first. |
+ return navigator.requestMediaKeySystemAccess(config.keysystem, [{ |
+ initDataTypes: [config.initDataType], |
+ audioCapabilities: [ |
+ {contentType: config.audioType}, |
+ ] |
+ }]).then(function (access) { |
+ return access.createMediaKeys(); |
+ }).then(function (mediaKeys) { |
+ // Success, so now create the iframe and try there. |
+ return load_iframe(script, 'allow-scripts'); |
+ }).then(function (iframe) { |
+ iframe.contentWindow.postMessage({}, '*'); |
+ return wait_for_message(); |
+ }).then(function (message) { |
+ assert_equals(message.result, 'failed'); |
+ }); |
+ }, 'Unique origin is unable to create MediaKeys'); |
+} |