summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/mediacapture-handle
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/mediacapture-handle')
-rw-r--r--testing/web-platform/tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/testing/web-platform/tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js b/testing/web-platform/tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js
new file mode 100644
index 0000000000..6fa01ad2b9
--- /dev/null
+++ b/testing/web-platform/tests/mediacapture-handle/identity/MediaDevices-setCaptureHandleConfig.https.window.js
@@ -0,0 +1,54 @@
+'use strict';
+
+test(() => {
+ assert_true(!!navigator.mediaDevices.setCaptureHandleConfig);
+ navigator.mediaDevices.setCaptureHandleConfig({handle: 'X'.repeat(1024)});
+}, 'setCaptureHandleConfig does not throw if handle length is 1024.');
+
+test(() => {
+ assert_true(!!navigator.mediaDevices.setCaptureHandleConfig);
+ assert_throws_js(
+ TypeError,
+ () => navigator.mediaDevices.setCaptureHandleConfig(
+ {handle: 'X'.repeat(1025)}),
+ 'handle length must be 1024 characters or less');
+}, 'setCaptureHandleConfig raises TypeError if handle is invalid.');
+
+test(() => {
+ assert_true(!!navigator.mediaDevices.setCaptureHandleConfig);
+ navigator.mediaDevices.setCaptureHandleConfig({permittedOrigins: ['*']});
+}, 'setCaptureHandleConfig does not throw if asterisk character appears only once.');
+
+test(() => {
+ assert_true(!!navigator.mediaDevices.setCaptureHandleConfig);
+ assert_throws_dom(
+ 'NotSupportedError',
+ () => navigator.mediaDevices.setCaptureHandleConfig(
+ {permittedOrigins: ['*', '*']}),
+ 'two asterisk characters are not allowed');
+
+ assert_throws_dom(
+ 'NotSupportedError',
+ () => navigator.mediaDevices.setCaptureHandleConfig(
+ {permittedOrigins: ['*', 'http://example.com']}),
+ 'asterisk character is not allowed with valid origins');
+
+ assert_throws_dom(
+ 'NotSupportedError',
+ () => navigator.mediaDevices.setCaptureHandleConfig(
+ {permittedOrigins: ['about://blank']}),
+ 'origins must be valid');
+}, 'setCaptureHandleConfig raises NotSupportedError if permittedOrigins is invalid.');
+
+
+test(() => {
+ assert_true(!!navigator.mediaDevices.setCaptureHandleConfig);
+ const iframe = document.createElement('iframe');
+ document.body.appendChild(iframe);
+ const mediaDevices = iframe.contentWindow.navigator.mediaDevices;
+ const iframeDOMException = iframe.contentWindow.DOMException;
+
+ assert_throws_dom('InvalidStateError', iframeDOMException, () => {
+ mediaDevices.setCaptureHandleConfig();
+ });
+}, 'setCaptureHandleConfig raises InvalidStateError if not from top-level browsing context.');