Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1554)

Side by Side Diff: chrome/test/data/extensions/api_test/desktop_capture/test.js

Issue 1758463002: Add browser test cases for tab and audio share, which are new functionality of desktop share. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolve comment Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 ]);
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc ('k') | content/public/browser/desktop_media_id.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698