blob: 9e34f2389cc4e446767df2aa4991cb43b8c95c7a [file] [log] [blame]
Rijubrata Bhaumikebd787772018-08-29 16:34:381<!DOCTYPE html>
2<script src="/resources/testharness.js"></script>
3<script src="/resources/testharnessreport.js"></script>
4<script src="/mediacapture-image/resources/imagecapture-helpers.js"></script>
5<body>
6<canvas id='canvas' width=10 height=10/>
7</body>
8<script>
9
10const meteringModeNames = ['none', 'manual', 'single-shot', 'continuous'];
11
12// This test verifies that MediaTrackCapabilities are returned upon
13// MediaStreamTrack.getCapabilities(), with a mock Mojo service implementation.
14
15image_capture_test(async (t, imageCaptureTest) => {
16 let canvas = document.getElementById('canvas');
17 let context = canvas.getContext('2d');
18 context.fillStyle = 'red';
19 context.fillRect(0, 0, 10, 10);
20
21 let mockCapabilities = imageCaptureTest.mockImageCapture().state();
22
23 // |stream| must be created _after_ |mock| is constructed to give the
24 // latter time to override the bindings.
25 let stream = canvas.captureStream();
26 assert_equals(stream.getAudioTracks().length, 0);
27 assert_equals(stream.getVideoTracks().length, 1);
28
29 let videoTrack = stream.getVideoTracks()[0];
30 assert_equals(typeof videoTrack.getCapabilities, 'function');
31
32 // |videoTrack|'s capabilities gathering, just like the actual capture, is
33 // a process kicked off right after creation, we introduce a small delay
34 // to allow for those to be collected.
35 // TODO(mcasas): this shouldn't be needed, https://crbug.com/711524.
36 await new Promise(resolve => step_timeout(resolve, 100));
37
38 let capabilities = videoTrack.getCapabilities();
39 assert_equals(typeof capabilities, 'object');
40
41 assert_equals(capabilities.whiteBalanceMode.length,
42 mockCapabilities.supportedWhiteBalanceModes.length,
43 'whiteBalanceMode');
44 for (i = 0; i < capabilities.whiteBalanceMode.length; ++i) {
45 assert_equals(
46 capabilities.whiteBalanceMode[i],
47 meteringModeNames[mockCapabilities
48 .supportedWhiteBalanceModes[i]],
49 'whiteBalanceMode');
50 }
51
52 assert_equals(capabilities.exposureMode.length,
53 mockCapabilities.supportedExposureModes.length,
54 'exposureMode');
55 for (i = 0; i < capabilities.exposureMode.length; ++i) {
56 assert_equals(
57 capabilities.exposureMode[i],
58 meteringModeNames[mockCapabilities.supportedExposureModes[i]],
59 'exposureMode');
60 }
61
62 assert_equals(capabilities.focusMode.length,
63 mockCapabilities.supportedFocusModes.length,
64 'focusMode');
65 for (i = 0; i < capabilities.focusMode.length; ++i) {
66 assert_equals(
67 capabilities.focusMode[i],
68 meteringModeNames[mockCapabilities.supportedFocusModes[i]],
69 'focusMode');
70 }
71
72 assert_true(capabilities.exposureCompensation instanceof
73 MediaSettingsRange);
74 assert_equals(capabilities.exposureCompensation.max,
75 mockCapabilities.exposureCompensation.max);
76 assert_equals(capabilities.exposureCompensation.min,
77 mockCapabilities.exposureCompensation.min);
78 assert_equals(capabilities.exposureCompensation.step,
79 mockCapabilities.exposureCompensation.step);
80
Rijubrata Bhaumik397f3e32018-09-18 05:35:2181 assert_true(capabilities.exposureTime instanceof
82 MediaSettingsRange);
83 assert_equals(capabilities.exposureTime.max,
84 mockCapabilities.exposureTime.max);
85 assert_equals(capabilities.exposureTime.min,
86 mockCapabilities.exposureTime.min);
87 assert_equals(capabilities.exposureTime.step,
88 mockCapabilities.exposureTime.step);
89
Rijubrata Bhaumikebd787772018-08-29 16:34:3890 assert_true(capabilities.colorTemperature instanceof
91 MediaSettingsRange);
92 assert_equals(capabilities.colorTemperature.max,
93 mockCapabilities.colorTemperature.max);
94 assert_equals(capabilities.colorTemperature.min,
95 mockCapabilities.colorTemperature.min);
96 assert_equals(capabilities.colorTemperature.step,
97 mockCapabilities.colorTemperature.step);
98
99 assert_true(capabilities.iso instanceof MediaSettingsRange);
100 assert_equals(capabilities.iso.max, mockCapabilities.iso.max);
101 assert_equals(capabilities.iso.min, mockCapabilities.iso.min);
102 assert_equals(capabilities.iso.step, mockCapabilities.iso.step);
103
104 assert_true(capabilities.brightness instanceof MediaSettingsRange);
105 assert_equals(capabilities.brightness.max,
106 mockCapabilities.brightness.max);
107 assert_equals(capabilities.brightness.min,
108 mockCapabilities.brightness.min);
109 assert_equals(capabilities.brightness.step,
110 mockCapabilities.brightness.step);
111
112 assert_true(capabilities.contrast instanceof MediaSettingsRange);
113 assert_equals(capabilities.contrast.max,
114 mockCapabilities.contrast.max);
115 assert_equals(capabilities.contrast.min,
116 mockCapabilities.contrast.min);
117 assert_equals(capabilities.contrast.step,
118 mockCapabilities.contrast.step);
119
120 assert_true(capabilities.saturation instanceof MediaSettingsRange);
121 assert_equals(capabilities.saturation.max,
122 mockCapabilities.saturation.max);
123 assert_equals(capabilities.saturation.min,
124 mockCapabilities.saturation.min);
125 assert_equals(capabilities.saturation.step,
126 mockCapabilities.saturation.step);
127
128 assert_true(capabilities.sharpness instanceof MediaSettingsRange);
129 assert_equals(capabilities.sharpness.max,
130 mockCapabilities.sharpness.max);
131 assert_equals(capabilities.sharpness.min,
132 mockCapabilities.sharpness.min);
133 assert_equals(capabilities.sharpness.step,
134 mockCapabilities.sharpness.step);
135
Rijubrata Bhaumik0313d9f2018-09-03 01:13:06136 assert_true(capabilities.focusDistance instanceof MediaSettingsRange);
137 assert_equals(capabilities.focusDistance.max,
138 mockCapabilities.focusDistance.max);
139 assert_equals(capabilities.focusDistance.min,
140 mockCapabilities.focusDistance.min);
141 assert_equals(capabilities.focusDistance.step,
142 mockCapabilities.focusDistance.step);
143
Rijubrata Bhaumikebd787772018-08-29 16:34:38144 assert_true(capabilities.zoom instanceof MediaSettingsRange);
145 assert_equals(capabilities.zoom.max, mockCapabilities.zoom.max);
146 assert_equals(capabilities.zoom.min, mockCapabilities.zoom.min);
147 assert_equals(capabilities.zoom.step, mockCapabilities.zoom.step);
148
149 assert_equals(capabilities.torch, mockCapabilities.supportsTorch,
150 'torch');
151
152}, 'exercises MediaStreamTrack.getCapabilities()');
153
154</script>