OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var tabCapture = chrome.tabCapture; | 5 var tabCapture = chrome.tabCapture; |
6 | 6 |
7 chrome.test.runTests([ | 7 chrome.test.runTests([ |
8 | |
8 function captureTabAndVerifyStateTransitions() { | 9 function captureTabAndVerifyStateTransitions() { |
9 // Tab capture events in the order they happen. | 10 // Tab capture events in the order they happen. |
10 var tabCaptureEvents = []; | 11 var tabCaptureEvents = []; |
11 | 12 |
12 var tabCaptureListener = function(info) { | 13 var tabCaptureListener = function(info) { |
13 console.log(info.status); | 14 console.log(info.status); |
14 if (info.status == 'stopped') { | 15 if (info.status == 'stopped') { |
15 chrome.test.assertEq('active', tabCaptureEvents.pop()); | 16 chrome.test.assertEq('active', tabCaptureEvents.pop()); |
16 chrome.test.assertEq('pending', tabCaptureEvents.pop()); | 17 chrome.test.assertEq('pending', tabCaptureEvents.pop()); |
17 tabCapture.onStatusChanged.removeListener(tabCaptureListener); | 18 tabCapture.onStatusChanged.removeListener(tabCaptureListener); |
18 chrome.test.succeed(); | 19 chrome.test.succeed(); |
19 return; | 20 return; |
20 } | 21 } |
21 tabCaptureEvents.push(info.status); | 22 tabCaptureEvents.push(info.status); |
22 }; | 23 }; |
23 tabCapture.onStatusChanged.addListener(tabCaptureListener); | 24 tabCapture.onStatusChanged.addListener(tabCaptureListener); |
24 | 25 |
25 tabCapture.capture({audio: true, video: true}, function(stream) { | 26 tabCapture.capture({audio: true, video: true}, function(stream) { |
26 chrome.test.assertTrue(!!stream); | 27 chrome.test.assertTrue(!!stream); |
27 stream.stop(); | 28 stream.stop(); |
28 }); | 29 }); |
29 }, | 30 }, |
30 | 31 |
31 function getCapturedTabs() { | 32 function getCapturedTabs() { |
32 chrome.tabs.create({active:true}, function(secondTab) { | 33 chrome.tabs.create({active: true}, function(secondTab) { |
33 // chrome.tabCapture.capture() will only capture the active tab. | 34 // chrome.tabCapture.capture() will only capture the active tab. |
34 chrome.test.assertTrue(secondTab.active); | 35 chrome.test.assertTrue(secondTab.active); |
35 | 36 |
36 function checkInfoForSecondTabHasStatus(infos, status) { | 37 function checkInfoForSecondTabHasStatus(infos, status) { |
37 for (var i = 0; i < infos.length; ++i) { | 38 for (var i = 0; i < infos.length; ++i) { |
38 if (infos[i].tabId == secondTab) { | 39 if (infos[i].tabId == secondTab) { |
39 chrome.test.assertNe(null, status); | 40 chrome.test.assertNe(null, status); |
40 chrome.test.assertEq(status, infos[i].status); | 41 chrome.test.assertEq(status, infos[i].status); |
41 chrome.test.assertEq(false, infos[i].fullscreen); | 42 chrome.test.assertEq(false, infos[i].fullscreen); |
42 return; | 43 return; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
90 chrome.test.succeed(); | 91 chrome.test.succeed(); |
91 }; | 92 }; |
92 | 93 |
93 tabCapture.capture({audio: true, video: true}, function(stream) { | 94 tabCapture.capture({audio: true, video: true}, function(stream) { |
94 chrome.test.assertTrue(!!stream); | 95 chrome.test.assertTrue(!!stream); |
95 stream1 = stream; | 96 stream1 = stream; |
96 tabCapture.capture({audio: true, video: true}, tabMediaRequestCallback2); | 97 tabCapture.capture({audio: true, video: true}, tabMediaRequestCallback2); |
97 }); | 98 }); |
98 }, | 99 }, |
99 | 100 |
101 function tabisUnmutedWhenTabCaptured() { | |
miu
2015/05/26 21:28:46
nit: Capitalize the 'i' in 'is'.
Jared Sohn
2015/05/27 14:52:02
done
| |
102 var stream1 = null; | |
103 | |
104 chrome.tabs.getCurrent(function(tab) { | |
105 chrome.test.listenForever(chrome.tabs.onUpdated, | |
106 function(tabId, changeInfo, updatedTab) { | |
107 var expectedMutedCause = "capture"; | |
108 var expectedMuted = false; | |
109 | |
110 if ((typeof changeInfo.mutedCause !== "undefined") && | |
not at google - send to devlin
2015/05/26 23:09:46
can also use changeInfo.hasOwnProperty('mutedCause
Jared Sohn
2015/05/27 14:52:02
done
| |
111 (changeInfo["mutedCause"] === expectedMutedCause) && | |
miu
2015/05/26 21:28:46
nit: This line and the next should be two more spa
Jared Sohn
2015/05/27 14:52:02
done
| |
112 (changeInfo["muted"] == expectedMuted)) | |
not at google - send to devlin
2015/05/26 23:09:46
Also to the above: not much point using === when c
Jared Sohn
2015/05/27 14:52:02
done
| |
113 { | |
114 chrome.test.assertEq(expectedMutedCause, updatedTab.mutedCause); | |
115 chrome.test.assertEq(expectedMuted, updatedTab.muted); | |
116 stream1.stop(); | |
117 chrome.test.succeed(); | |
118 } | |
119 }); | |
120 | |
121 chrome.tabs.update(tab.id, {muted: true}, function(newTab) { | |
122 setTimeout(function() { | |
123 tabCapture.capture({audio: true}, function(stream) { | |
124 stream1 = stream; | |
125 }); | |
126 }, 200); | |
not at google - send to devlin
2015/05/26 23:09:46
Ideally you wouldn't need any timeout and the call
Jared Sohn
2015/05/27 14:52:02
Right; the test fails without the timeout. In prio
not at google - send to devlin
2015/05/28 23:04:42
Mm this is problematic then. Timeout is just going
miu
2015/05/28 23:36:59
Explanation: The content API events propagate thro
not at google - send to devlin
2015/06/01 20:33:56
Ok, thanks for the explanation. Would my suggestio
Jared Sohn
2015/06/02 08:54:38
miu: Are you saying that there is a delay before t
not at google - send to devlin
2015/06/02 18:26:43
Ok: should we just forget about this portion of th
| |
127 }); | |
128 }); | |
129 }, | |
130 | |
100 function onlyVideo() { | 131 function onlyVideo() { |
101 tabCapture.capture({video: true}, function(stream) { | 132 tabCapture.capture({video: true}, function(stream) { |
102 chrome.test.assertTrue(!!stream); | 133 chrome.test.assertTrue(!!stream); |
103 stream.stop(); | 134 stream.stop(); |
104 chrome.test.succeed(); | 135 chrome.test.succeed(); |
105 }); | 136 }); |
106 }, | 137 }, |
107 | 138 |
108 function onlyAudio() { | 139 function onlyAudio() { |
109 tabCapture.capture({audio: true}, function(stream) { | 140 tabCapture.capture({audio: true}, function(stream) { |
110 chrome.test.assertTrue(!!stream); | 141 chrome.test.assertTrue(!!stream); |
111 stream.stop(); | 142 stream.stop(); |
112 chrome.test.succeed(); | 143 chrome.test.succeed(); |
113 }); | 144 }); |
114 }, | 145 }, |
115 | 146 |
116 function noAudioOrVideoRequested() { | 147 function noAudioOrVideoRequested() { |
117 // If not specified, video is not requested. | 148 // If not specified, video is not requested. |
118 tabCapture.capture({audio: false}, function(stream) { | 149 tabCapture.capture({audio: false}, function(stream) { |
119 chrome.test.assertTrue(!stream); | 150 chrome.test.assertTrue(!stream); |
120 chrome.test.succeed(); | 151 chrome.test.succeed(); |
121 }); | 152 }); |
122 } | 153 } |
123 ]); | 154 ]); |
OLD | NEW |