| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 function onPickerResult(request_audio, audio_track_num, id) { |
| 6 chrome.test.assertEq("string", typeof id); |
| 7 chrome.test.assertTrue(id != ""); |
| 8 var video_constraint = { mandatory: { chromeMediaSource: "desktop", |
| 9 chromeMediaSourceId: id } }; |
| 10 var audio_constraint = request_audio ? video_constraint : false; |
| 11 navigator.webkitGetUserMedia({ |
| 12 audio: audio_constraint, |
| 13 video: video_constraint |
| 14 }, |
| 15 function(stream) { |
| 16 if (audio_track_num != null) |
| 17 chrome.test.assertEq(audio_track_num, stream.getAudioTracks().length); |
| 18 chrome.test.succeed(); |
| 19 }, chrome.test.fail); |
| 20 } |
| 21 |
| 22 // We can support audio for screen share on Windows. For ChromeOS, it depends |
| 23 // on whether USE_CRAS is on or not, thus we disable the check here. We cannot |
| 24 // support audio on other platforms. |
| 25 var expected_audio_tracks_for_screen_share = 0; |
| 26 if (navigator.appVersion.indexOf("Windows") != -1) |
| 27 expected_audio_tracks_for_screen_share = 1; |
| 28 else if (navigator.appVersion.indexOf("CrOS") != -1) |
| 29 expected_audio_tracks_for_screen_share = null; |
| 30 |
| 5 chrome.test.runTests([ | 31 chrome.test.runTests([ |
| 6 function emptySourceList() { | 32 function emptySourceList() { |
| 7 chrome.desktopCapture.chooseDesktopMedia( | 33 chrome.desktopCapture.chooseDesktopMedia( |
| 8 [], | 34 [], |
| 9 chrome.test.callback(function(id) { | 35 chrome.test.callback(function(id) { |
| 10 chrome.test.assertEq("undefined", typeof id); | 36 chrome.test.assertEq("undefined", typeof id); |
| 11 }, "At least one source type must be specified.")); | 37 }, "At least one source type must be specified.")); |
| 12 }, | 38 }, |
| 13 | 39 |
| 14 // The prompt is canceled. | 40 // The prompt is canceled. |
| 15 function pickerUiCanceled() { | 41 function pickerUiCanceled() { |
| 16 chrome.desktopCapture.chooseDesktopMedia( | 42 chrome.desktopCapture.chooseDesktopMedia( |
| 17 ["screen", "window"], | 43 ["screen", "window"], |
| 18 chrome.test.callbackPass(function(id) { | 44 chrome.test.callbackPass(function(id) { |
| 19 chrome.test.assertEq("string", typeof id); | 45 chrome.test.assertEq("string", typeof id); |
| 20 chrome.test.assertTrue(id == ""); | 46 chrome.test.assertTrue(id == ""); |
| 21 })); | 47 })); |
| 22 }, | 48 }, |
| 23 | 49 |
| 24 // A source is chosen. | 50 // A source is chosen. |
| 25 function chooseMedia() { | 51 function chooseMedia() { |
| 26 chrome.desktopCapture.chooseDesktopMedia( | 52 chrome.desktopCapture.chooseDesktopMedia( |
| 27 ["screen", "window"], | 53 ["screen", "window"], |
| 28 chrome.test.callbackPass(function(id) { | 54 chrome.test.callbackPass(function(id) { |
| 29 chrome.test.assertEq("string", typeof id); | 55 chrome.test.assertEq("string", typeof id); |
| 30 chrome.test.assertTrue(id != ""); | 56 chrome.test.assertTrue(id != ""); |
| 31 })); | 57 })); |
| 32 }, | 58 }, |
| 33 | 59 |
| 34 // For the following two tests FakeDestkopPickerFactory will verify that | 60 // For the following four tests FakeDestkopPickerFactory will verify that |
| 35 // the right set of sources is selected when creating picker model. | 61 // the right set of sources is selected when creating picker model. |
| 36 function screensOnly() { | 62 function screensOnly() { |
| 37 chrome.desktopCapture.chooseDesktopMedia( | 63 chrome.desktopCapture.chooseDesktopMedia( |
| 38 ["screen"], chrome.test.callbackPass(function(id) {})); | 64 ["screen"], chrome.test.callbackPass(function(id) {})); |
| 39 }, | 65 }, |
| 40 | 66 |
| 41 function windowsOnly() { | 67 function windowsOnly() { |
| 42 chrome.desktopCapture.chooseDesktopMedia( | 68 chrome.desktopCapture.chooseDesktopMedia( |
| 43 ["window"], chrome.test.callbackPass(function(id) {})); | 69 ["window"], chrome.test.callbackPass(function(id) {})); |
| 44 }, | 70 }, |
| 45 | 71 |
| 72 function tabOnly() { |
| 73 chrome.desktopCapture.chooseDesktopMedia( |
| 74 ["tab"], |
| 75 chrome.test.succeed); |
| 76 }, |
| 77 |
| 78 function audioShare() { |
| 79 chrome.desktopCapture.chooseDesktopMedia( |
| 80 ["screen", "window", "tab", "audio"], |
| 81 chrome.test.succeed); |
| 82 }, |
| 83 |
| 46 // Show window picker and then get the selected stream using | 84 // Show window picker and then get the selected stream using |
| 47 // getUserMedia(). | 85 // getUserMedia(). |
| 48 function chooseMediaAndGetStream() { | 86 function chooseMediaAndGetStream() { |
| 49 function onPickerResult(id) { | |
| 50 chrome.test.assertEq("string", typeof id); | |
| 51 chrome.test.assertTrue(id != ""); | |
| 52 navigator.webkitGetUserMedia({ | |
| 53 audio: false, | |
| 54 video: { mandatory: { chromeMediaSource: "desktop", | |
| 55 chromeMediaSourceId: id } } | |
| 56 }, chrome.test.succeed, chrome.test.fail); | |
| 57 } | |
| 58 | |
| 59 chrome.desktopCapture.chooseDesktopMedia( | 87 chrome.desktopCapture.chooseDesktopMedia( |
| 60 ["screen", "window"], onPickerResult); | 88 ["screen", "window"], onPickerResult.bind(undefined, false, 0)); |
| 61 }, | 89 }, |
| 62 | 90 |
| 63 // Same as above but attempts to specify invalid source id. | 91 // Same as above but attempts to specify invalid source id. |
| 64 function chooseMediaAndTryGetStreamWithInvalidId() { | 92 function chooseMediaAndTryGetStreamWithInvalidId() { |
| 65 function onPickerResult(id) { | 93 function onPickerResult(id) { |
| 66 navigator.webkitGetUserMedia({ | 94 navigator.webkitGetUserMedia({ |
| 67 audio: false, | 95 audio: false, |
| 68 video: { mandatory: { chromeMediaSource: "desktop", | 96 video: { mandatory: { chromeMediaSource: "desktop", |
| 69 chromeMediaSourceId: id + "x" } } | 97 chromeMediaSourceId: id + "x" } } |
| 70 }, chrome.test.fail, chrome.test.succeed); | 98 }, chrome.test.fail, chrome.test.succeed); |
| 71 } | 99 } |
| 72 | 100 |
| 73 chrome.desktopCapture.chooseDesktopMedia( | 101 chrome.desktopCapture.chooseDesktopMedia( |
| 74 ["screen", "window"], onPickerResult); | 102 ["screen", "window"], onPickerResult); |
| 75 }, | 103 }, |
| 76 | 104 |
| 77 function cancelDialog() { | 105 function cancelDialog() { |
| 78 var requestId = chrome.desktopCapture.chooseDesktopMedia( | 106 var requestId = chrome.desktopCapture.chooseDesktopMedia( |
| 79 ["screen", "window"], | 107 ["screen", "window"], |
| 80 chrome.test.fail); | 108 chrome.test.fail); |
| 81 chrome.test.assertEq("number", typeof requestId); | 109 chrome.test.assertEq("number", typeof requestId); |
| 82 chrome.desktopCapture.cancelChooseDesktopMedia(requestId); | 110 chrome.desktopCapture.cancelChooseDesktopMedia(requestId); |
| 83 chrome.test.succeed(); | 111 chrome.test.succeed(); |
| 112 }, |
| 113 |
| 114 // For the following six, they all request audio track. Based on user's |
| 115 // permission and the source type, it may or may not actually get the audio |
| 116 // track. |
| 117 // In detail: |
| 118 // 1. We cannot support audio for Window share; |
| 119 // 2. We can support audio for Tab share; |
| 120 // 3. We can support audio for Screen share on Windows; |
| 121 // 4. We can support audio for Screen Share on ChromeOS if USE_CRAS is on; |
| 122 // 5. To actually get audio track, user permission is always necessary; |
| 123 // 6. To actually get audio track, getUserMedia() should set audio |
| 124 // constraint. |
| 125 function tabShareWithAudioPermissionGetStream() { |
| 126 chrome.desktopCapture.chooseDesktopMedia( |
| 127 ["tab", "audio"], onPickerResult.bind(undefined, true, 1)); |
| 128 }, |
| 129 |
| 130 function windowShareWithAudioPermissionGetStream() { |
| 131 chrome.desktopCapture.chooseDesktopMedia( |
| 132 ["window", "audio"], onPickerResult.bind(undefined, true, 0)); |
| 133 }, |
| 134 |
| 135 function screenShareWithAudioPermissionGetStream() { |
| 136 chrome.desktopCapture.chooseDesktopMedia( |
| 137 ["screen", "audio"], |
| 138 onPickerResult.bind(undefined, true, |
| 139 expected_audio_tracks_for_screen_share)); |
| 140 }, |
| 141 |
| 142 function tabShareWithoutAudioPermissionGetStream() { |
| 143 chrome.desktopCapture.chooseDesktopMedia( |
| 144 ["tab", "audio"], onPickerResult.bind(undefined, true, 0)); |
| 145 }, |
| 146 |
| 147 function windowShareWithoutAudioPermissionGetStream() { |
| 148 chrome.desktopCapture.chooseDesktopMedia( |
| 149 ["window", "audio"], onPickerResult.bind(undefined, true, 0)); |
| 150 }, |
| 151 |
| 152 function screenShareWithoutAudioPermissionGetStream() { |
| 153 chrome.desktopCapture.chooseDesktopMedia( |
| 154 ["screen", "audio"], onPickerResult.bind(undefined, true, 0)); |
| 84 } | 155 } |
| 85 ]); | 156 ]); |
| OLD | NEW |