| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // META script=resources/controlled_frame_helpers.js |
| |
| promise_setup(async () => { |
| await test_driver.set_permission({ name: "camera" }, "granted"); |
| }); |
| |
| promise_test(async (test) => { |
| const controlledFrame = await createControlledFrame('/simple.html'); |
| let permissionRequestHandled = false; |
| controlledFrame.addEventListener('permissionrequest', (e) => { |
| if (e.permission === 'media') { |
| permissionRequestHandled = true; |
| e.request.allow(); |
| } else { |
| e.request.deny(); |
| } |
| }); |
| |
| const testScript = `(async () => { |
| const mediaStream = |
| await navigator.mediaDevices.getUserMedia({video: true}); |
| return mediaStream.getVideoTracks().length > 0; |
| })()`; |
| const hasVideo = await executeAsyncScript(controlledFrame, testScript); |
| |
| assert_true(permissionRequestHandled); |
| assert_true(hasVideo); |
| }, 'Camera permission'); |