- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / api_test / audio / test.js
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 function verifyActiveDevices(output_id, input_id) {
6   chrome.audio.getInfo(
7       chrome.test.callbackPass(function(outputInfo, inputInfo) {
8         var outputFound = false;
9         var inputFound = false;
10         for (var i = 0; i < outputInfo.length; ++i) {
11           if (outputInfo[i].isActive) {
12             chrome.test.assertTrue(outputInfo[i].id == output_id);
13             outputFound = true;
14           }
15         }
16         for (var i = 0; i < inputInfo.length; ++i) {
17           if (inputInfo[i].isActive) {
18             chrome.test.assertTrue(inputInfo[i].id == input_id);
19             inputFound = true;
20           }
21         }
22         chrome.test.assertTrue(outputFound);
23         chrome.test.assertTrue(inputFound);
24   }));
25 }
26
27
28 function verifyDeviceProperties(output_id, input_id,
29                                 output_props, input_props) {
30   chrome.audio.getInfo(
31       chrome.test.callbackPass(function(outputInfo, inputInfo) {
32         var outputFound = false;
33         var inputFound = false;
34         for (var i = 0; i < outputInfo.length; ++i) {
35           if (outputInfo[i].id == output_id) {
36             chrome.test.assertTrue(outputInfo[i].volume == output_props.volume);
37             chrome.test.assertTrue(
38                 outputInfo[i].isMuted == output_props.isMuted);
39             outputFound = true;
40           }
41         }
42         for (var i = 0; i < inputInfo.length; ++i) {
43           if (inputInfo[i].id == input_id) {
44             chrome.test.assertTrue(inputInfo[i].gain == input_props.gain);
45             chrome.test.assertTrue(inputInfo[i].isMuted == input_props.isMuted);
46             inputFound = true;
47           }
48         }
49         chrome.test.assertTrue(outputFound);
50         chrome.test.assertTrue(inputFound);
51   }));
52 }
53
54
55 function setActiveDevicesAndVerify(output_id, input_id) {
56   chrome.audio.setActiveDevices([output_id, input_id],
57       chrome.test.callbackPass(function() {
58         verifyActiveDevices(output_id, input_id);
59   }));
60 }
61
62 function setPropertiesAndVerify(outputInfo, inputInfo) {
63   var outputProps = new Object;
64   outputProps.isMuted = true;
65   outputProps.volume = 55;
66   chrome.audio.setProperties(outputInfo.id, outputProps,
67       chrome.test.callbackPass(function() {
68     // Once the output properties have been set, set input properties, then
69     // verify.
70     var inputProps = new Object;
71     inputProps.isMuted = true;
72     inputProps.gain = 35;
73     chrome.audio.setProperties(inputInfo.id, inputProps,
74         chrome.test.callbackPass(function() {
75           verifyDeviceProperties(outputInfo.id, inputInfo.id,
76                                  outputProps, inputProps);
77     }));
78   }));
79 }
80
81 chrome.test.runTests([
82   function getInfoTest() {
83     chrome.audio.getInfo(
84         chrome.test.callbackPass(function(outputInfo, inputInfo) {
85     }));
86   },
87
88   function setActiveDevicesTest() {
89     chrome.audio.getInfo(
90         chrome.test.callbackPass(function(outputInfo, inputInfo) {
91           setActiveDevicesAndVerify(outputInfo[2].id, inputInfo[1].id);
92     }));
93   },
94
95   function setPropertiesTest() {
96     chrome.audio.getInfo(
97         chrome.test.callbackPass(function(outputInfo, inputInfo) {
98           setPropertiesAndVerify(outputInfo[0], inputInfo[1]);
99     }));
100   }
101 ]);