| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <video id="video" width=320></video> |
| <script> |
| promise_test(async (test) => { |
| test.add_cleanup(() => { |
| video.srcObject.getVideoTracks()[0].stop(); |
| }); |
| |
| video.srcObject = await navigator.mediaDevices.getUserMedia({ video: { powerEfficient: true, facingMode: "user" } }); |
| const track = video.srcObject.getVideoTracks()[0]; |
| |
| assert_array_equals(track.getCapabilities().powerEfficient, [false]); |
| assert_false(track.getSettings().powerEfficient); |
| }, "Selecting a non power efficient source"); |
| |
| promise_test(async (test) => { |
| test.add_cleanup(() => { |
| video.srcObject.getVideoTracks()[0].stop(); |
| }); |
| |
| video.srcObject = await navigator.mediaDevices.getUserMedia({ video: { powerEfficient: false, facingMode: "environment" } }); |
| const track = video.srcObject.getVideoTracks()[0]; |
| |
| assert_equals(track.getSettings().width, 640); |
| assert_equals(track.getSettings().height, 480); |
| |
| assert_array_equals(track.getCapabilities().powerEfficient, [false, true]); |
| assert_false(track.getSettings().powerEfficient); |
| }, "Selecting a non power efficient preset"); |
| |
| promise_test(async (test) => { |
| test.add_cleanup(() => { |
| video.srcObject.getVideoTracks()[0].stop(); |
| }); |
| |
| video.srcObject = await navigator.mediaDevices.getUserMedia({ video: { powerEfficient: true, facingMode: "environment" } }); |
| const track = video.srcObject.getVideoTracks()[0]; |
| |
| assert_equals(track.getSettings().width, 640); |
| assert_equals(track.getSettings().height, 360); |
| await video.play(); |
| |
| assert_array_equals(track.getCapabilities().powerEfficient, [false, true]); |
| assert_equals(true, track.getSettings().powerEfficient); |
| }, "Selecting a power efficient preset"); |
| |
| promise_test(async (test) => { |
| test.add_cleanup(() => { |
| video.srcObject.getVideoTracks()[0].stop(); |
| stream.getVideoTracks()[0].stop(); |
| stream2.getVideoTracks()[0].stop(); |
| }); |
| |
| const stream = await navigator.mediaDevices.getUserMedia({ video: { powerEfficient: true, facingMode: "environment" } }); |
| |
| const stream2 = stream.clone(); |
| await stream2.getVideoTracks()[0].applyConstraints({ width: 1000 }); |
| |
| video.srcObject = stream.clone(); |
| await video.srcObject.getVideoTracks()[0].applyConstraints({ width: 1920 }); |
| await video.play(); |
| |
| assert_array_equals(stream.getVideoTracks()[0].getCapabilities().powerEfficient, [false, true]); |
| assert_true(stream.getVideoTracks()[0].getSettings().powerEfficient, "first track"); |
| assert_true(stream2.getVideoTracks()[0].getSettings().powerEfficient, "second track"); |
| assert_true(video.srcObject.getVideoTracks()[0].getSettings().powerEfficient); |
| }, "Selecting a power efficient preset and check clones"); |
| </script> |
| </body> |
| </html> |