Automatic update from web-platform-tests [CE]: Add more checks for usermedia element activation Adds NonSecureContext and MissingTransientUserActivation to the Audits protocol to facilitate reporting of these security failures. Intercepts DOMActivate events in HTMLUserMediaElement to validate these checks before proceeding, reporting issues and skipping the default event handling if these conditions are not met. Bug: 528210688 Change-Id: Idf5d600783fef3b5f0e229372e518c5360b4bc3b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8011086 Reviewed-by: Dave Tapuska <dtapuska@chromium.org> Commit-Queue: Thomas Nguyen <tungnh@chromium.org> Cr-Commit-Position: refs/heads/main@{#1654053} -- wpt-commits: a55f728c588015ae10163b6deb1ba732f57ba31c wpt-pr: 60966
42 lines
1.2 KiB
HTML
42 lines
1.2 KiB
HTML
<!doctype html>
|
|
<meta charset="utf-8" />
|
|
<title>HTMLUserMediaElement: Untrusted Click Handling</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<body>
|
|
<usermedia id="el"></usermedia>
|
|
<script>
|
|
promise_test(async (t) => {
|
|
const element = document.getElementById("el");
|
|
element.setConstraints({ video: {} });
|
|
|
|
let stream_fired = false;
|
|
let cancel_fired = false;
|
|
|
|
element.onstream = () => {
|
|
stream_fired = true;
|
|
};
|
|
|
|
element.oncancel = () => {
|
|
cancel_fired = true;
|
|
};
|
|
|
|
const error_promise = new Promise((resolve) => {
|
|
element.onerror = resolve;
|
|
});
|
|
|
|
element.click();
|
|
|
|
await error_promise;
|
|
assert_not_equals(element.error, null, "error attribute should not be null");
|
|
assert_equals(element.error.name, "InvalidStateError", "error should be InvalidStateError");
|
|
|
|
// Wait a bit to ensure others don't fire
|
|
await new Promise(resolve => t.step_timeout(resolve, 100));
|
|
|
|
assert_false(stream_fired, "stream should not have fired");
|
|
assert_false(cancel_fired, "cancel should not have fired");
|
|
}, "Untrusted click on usermedia element should fail with InvalidStateError");
|
|
</script>
|
|
</body>
|