OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
7 #include "base/process/process_handle.h" | |
8 #include "base/strings/string_number_conversions.h" | |
9 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
10 #include "base/threading/platform_thread.h" | 8 #include "base/threading/platform_thread.h" |
11 #include "base/values.h" | |
12 #include "content/browser/media/webrtc_internals.h" | |
13 #include "content/browser/web_contents/web_contents_impl.h" | 9 #include "content/browser/web_contents/web_contents_impl.h" |
14 #include "content/public/common/content_switches.h" | 10 #include "content/public/common/content_switches.h" |
15 #include "content/public/test/browser_test_utils.h" | 11 #include "content/public/test/browser_test_utils.h" |
16 #include "content/public/test/content_browser_test_utils.h" | 12 #include "content/public/test/content_browser_test_utils.h" |
17 #include "content/public/test/test_utils.h" | 13 #include "content/public/test/test_utils.h" |
18 #include "content/shell/browser/shell.h" | |
19 #include "content/test/webrtc_content_browsertest_base.h" | 14 #include "content/test/webrtc_content_browsertest_base.h" |
20 #include "media/audio/audio_manager.h" | 15 #include "media/audio/audio_manager.h" |
21 #include "media/base/media_switches.h" | 16 #include "media/base/media_switches.h" |
22 #include "net/test/embedded_test_server/embedded_test_server.h" | 17 #include "net/test/embedded_test_server/embedded_test_server.h" |
23 | 18 |
24 #if defined(OS_WIN) | |
25 #include "base/win/windows_version.h" | |
26 #endif | |
27 | |
28 namespace { | 19 namespace { |
29 | 20 |
30 #if defined (OS_ANDROID) || defined(THREAD_SANITIZER) | 21 #if defined (OS_ANDROID) || defined(THREAD_SANITIZER) |
31 // Just do the bare minimum of audio checking on Android and under TSAN since | 22 // Just do the bare minimum of audio checking on Android and under TSAN since |
32 // it's a bit sensitive to device performance. | 23 // it's a bit sensitive to device performance. |
33 const char kUseLenientAudioChecking[] = "true"; | 24 const char kUseLenientAudioChecking[] = "true"; |
34 #else | 25 #else |
35 const char kUseLenientAudioChecking[] = "false"; | 26 const char kUseLenientAudioChecking[] = "false"; |
36 #endif | 27 #endif |
37 | 28 |
38 const int kExpectedConsumerId = 0; | |
39 | |
40 // Get the ID for the render process host when there should only be one. | |
41 bool GetRenderProcessHostId(base::ProcessId* id) { | |
42 content::RenderProcessHost::iterator it( | |
43 content::RenderProcessHost::AllHostsIterator()); | |
44 *id = base::GetProcId(it.GetCurrentValue()->GetHandle()); | |
45 EXPECT_NE(base::kNullProcessId, *id); | |
46 if (*id == base::kNullProcessId) | |
47 return false; | |
48 it.Advance(); | |
49 EXPECT_TRUE(it.IsAtEnd()); | |
50 return it.IsAtEnd(); | |
51 } | |
52 | |
53 } // namespace | 29 } // namespace |
54 | 30 |
55 namespace content { | 31 namespace content { |
56 | 32 |
57 class WebRtcBrowserTest : public WebRtcContentBrowserTest { | 33 #if defined(OS_ANDROID) && defined(ADDRESS_SANITIZER) |
| 34 // Renderer crashes under Android ASAN: https://crbug.com/408496. |
| 35 #define MAYBE_WebRtcBrowserTest DISABLED_WebRtcBrowserTest |
| 36 #else |
| 37 #define MAYBE_WebRtcBrowserTest WebRtcBrowserTest |
| 38 #endif |
| 39 |
| 40 class MAYBE_WebRtcBrowserTest : public WebRtcContentBrowserTest { |
58 public: | 41 public: |
59 WebRtcBrowserTest() {} | 42 MAYBE_WebRtcBrowserTest() {} |
60 virtual ~WebRtcBrowserTest() {} | 43 virtual ~MAYBE_WebRtcBrowserTest() {} |
61 | 44 |
62 // Convenience function since most peerconnection-call.html tests just load | 45 // Convenience function since most peerconnection-call.html tests just load |
63 // the page, kick off some javascript and wait for the title to change to OK. | 46 // the page, kick off some javascript and wait for the title to change to OK. |
64 void MakeTypicalPeerConnectionCall(const std::string& javascript) { | 47 void MakeTypicalPeerConnectionCall(const std::string& javascript) { |
65 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 48 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
66 | 49 |
67 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); | 50 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); |
68 NavigateToURL(shell(), url); | 51 NavigateToURL(shell(), url); |
69 | 52 |
70 DisableOpusIfOnAndroid(); | 53 DisableOpusIfOnAndroid(); |
(...skipping 13 matching lines...) Expand all Loading... |
84 return; | 67 return; |
85 } | 68 } |
86 | 69 |
87 ASSERT_TRUE(base::CommandLine::ForCurrentProcess()->HasSwitch( | 70 ASSERT_TRUE(base::CommandLine::ForCurrentProcess()->HasSwitch( |
88 switches::kUseFakeDeviceForMediaStream)) | 71 switches::kUseFakeDeviceForMediaStream)) |
89 << "Must run with fake devices since the test will explicitly look " | 72 << "Must run with fake devices since the test will explicitly look " |
90 << "for the fake device signal."; | 73 << "for the fake device signal."; |
91 | 74 |
92 MakeTypicalPeerConnectionCall(javascript); | 75 MakeTypicalPeerConnectionCall(javascript); |
93 } | 76 } |
94 | |
95 void DisableOpusIfOnAndroid() { | |
96 #if defined(OS_ANDROID) | |
97 // Always force iSAC 16K on Android for now (Opus is broken). | |
98 EXPECT_EQ("isac-forced", | |
99 ExecuteJavascriptAndReturnResult("forceIsac16KInSdp();")); | |
100 #endif | |
101 } | |
102 }; | 77 }; |
103 | 78 |
104 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 79 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
105 // Timing out on ARM linux bot: http://crbug.com/238490 | 80 // Timing out on ARM linux bot: http://crbug.com/238490 |
106 #define MAYBE_CanSetupDefaultVideoCall DISABLED_CanSetupDefaultVideoCall | 81 #define MAYBE_CanSetupDefaultVideoCall DISABLED_CanSetupDefaultVideoCall |
107 // Flaky on TSAN v2. http://crbug.com/408006 | 82 // Flaky on TSAN v2. http://crbug.com/408006 |
108 #elif defined(THREAD_SANITIZER) | 83 #elif defined(THREAD_SANITIZER) |
109 #define MAYBE_CanSetupDefaultVideoCall DISABLED_CanSetupDefaultVideoCall | 84 #define MAYBE_CanSetupDefaultVideoCall DISABLED_CanSetupDefaultVideoCall |
110 #else | 85 #else |
111 #define MAYBE_CanSetupDefaultVideoCall CanSetupDefaultVideoCall | 86 #define MAYBE_CanSetupDefaultVideoCall CanSetupDefaultVideoCall |
112 #endif | 87 #endif |
113 | 88 |
114 // These tests will make a complete PeerConnection-based call and verify that | 89 // These tests will make a complete PeerConnection-based call and verify that |
115 // video is playing for the call. | 90 // video is playing for the call. |
116 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanSetupDefaultVideoCall) { | 91 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 92 MAYBE_CanSetupDefaultVideoCall) { |
117 MakeTypicalPeerConnectionCall( | 93 MakeTypicalPeerConnectionCall( |
118 "callAndExpectResolution({video: true}, 640, 480);"); | 94 "callAndExpectResolution({video: true}, 640, 480);"); |
119 } | 95 } |
120 | 96 |
121 // Flaky on TSAN v2. http://crbug.com/408006 | 97 // Flaky on TSAN v2. http://crbug.com/408006 |
122 #if defined(THREAD_SANITIZER) | 98 #if defined(THREAD_SANITIZER) |
123 #define MAYBE_CanSetupVideoCallWith1To1AspectRatio \ | 99 #define MAYBE_CanSetupVideoCallWith1To1AspectRatio \ |
124 DISABLED_CanSetupVideoCallWith1To1AspectRatio | 100 DISABLED_CanSetupVideoCallWith1To1AspectRatio |
125 #else | 101 #else |
126 #define MAYBE_CanSetupVideoCallWith1To1AspectRatio \ | 102 #define MAYBE_CanSetupVideoCallWith1To1AspectRatio \ |
127 CanSetupVideoCallWith1To1AspectRatio | 103 CanSetupVideoCallWith1To1AspectRatio |
128 #endif | 104 #endif |
129 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 105 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
130 MAYBE_CanSetupVideoCallWith1To1AspectRatio) { | 106 MAYBE_CanSetupVideoCallWith1To1AspectRatio) { |
131 const std::string javascript = | 107 const std::string javascript = |
132 "callAndExpectResolution({video: {mandatory: {minWidth: 320," | 108 "callAndExpectResolution({video: {mandatory: {minWidth: 320," |
133 " maxWidth: 320, minHeight: 320, maxHeight: 320}}}, 320, 320);"; | 109 " maxWidth: 320, minHeight: 320, maxHeight: 320}}}, 320, 320);"; |
134 MakeTypicalPeerConnectionCall(javascript); | 110 MakeTypicalPeerConnectionCall(javascript); |
135 } | 111 } |
136 | 112 |
137 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARM64) | 113 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARM64) |
138 // Failing on ARM64 Android bot: http://crbug.com/408179 | 114 // Failing on ARM64 Android bot: http://crbug.com/408179 |
139 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \ | 115 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \ |
140 DISABLED_CanSetupVideoCallWith16To9AspectRatio | 116 DISABLED_CanSetupVideoCallWith16To9AspectRatio |
141 // Flaky on TSAN v2. http://crbug.com/408006 | 117 // Flaky on TSAN v2. http://crbug.com/408006 |
142 #elif defined(THREAD_SANITIZER) | 118 #elif defined(THREAD_SANITIZER) |
143 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \ | 119 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \ |
144 DISABLED_CanSetupVideoCallWith16To9AspectRatio | 120 DISABLED_CanSetupVideoCallWith16To9AspectRatio |
145 #else | 121 #else |
146 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \ | 122 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \ |
147 CanSetupVideoCallWith16To9AspectRatio | 123 CanSetupVideoCallWith16To9AspectRatio |
148 #endif | 124 #endif |
149 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 125 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
150 MAYBE_CanSetupVideoCallWith16To9AspectRatio) { | 126 MAYBE_CanSetupVideoCallWith16To9AspectRatio) { |
151 const std::string javascript = | 127 const std::string javascript = |
152 "callAndExpectResolution({video: {mandatory: {minWidth: 640," | 128 "callAndExpectResolution({video: {mandatory: {minWidth: 640," |
153 " maxWidth: 640, minAspectRatio: 1.777}}}, 640, 360);"; | 129 " maxWidth: 640, minAspectRatio: 1.777}}}, 640, 360);"; |
154 MakeTypicalPeerConnectionCall(javascript); | 130 MakeTypicalPeerConnectionCall(javascript); |
155 } | 131 } |
156 | 132 |
157 // Flaky on TSAN v2. http://crbug.com/408006 | 133 // Flaky on TSAN v2. http://crbug.com/408006 |
158 #if defined(THREAD_SANITIZER) | 134 #if defined(THREAD_SANITIZER) |
159 #define MAYBE_CanSetupVideoCallWith4To3AspectRatio \ | 135 #define MAYBE_CanSetupVideoCallWith4To3AspectRatio \ |
160 DISABLED_CanSetupVideoCallWith4To3AspectRatio | 136 DISABLED_CanSetupVideoCallWith4To3AspectRatio |
161 #else | 137 #else |
162 #define MAYBE_CanSetupVideoCallWith4To3AspectRatio \ | 138 #define MAYBE_CanSetupVideoCallWith4To3AspectRatio \ |
163 CanSetupVideoCallWith4To3AspectRatio | 139 CanSetupVideoCallWith4To3AspectRatio |
164 #endif | 140 #endif |
165 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 141 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
166 MAYBE_CanSetupVideoCallWith4To3AspectRatio) { | 142 MAYBE_CanSetupVideoCallWith4To3AspectRatio) { |
167 const std::string javascript = | 143 const std::string javascript = |
168 "callAndExpectResolution({video: {mandatory: {minWidth: 960," | 144 "callAndExpectResolution({video: {mandatory: {minWidth: 960," |
169 "maxAspectRatio: 1.333}}}, 960, 720);"; | 145 "maxAspectRatio: 1.333}}}, 960, 720);"; |
170 MakeTypicalPeerConnectionCall(javascript); | 146 MakeTypicalPeerConnectionCall(javascript); |
171 } | 147 } |
172 | 148 |
173 // Flaky on TSAN v2. http://crbug.com/408006 | 149 // Flaky on TSAN v2. http://crbug.com/408006 |
174 #if defined(THREAD_SANITIZER) | 150 #if defined(THREAD_SANITIZER) |
175 #define MAYBE_CanSetupVideoCallAndDisableLocalVideo \ | 151 #define MAYBE_CanSetupVideoCallAndDisableLocalVideo \ |
176 DISABLED_CanSetupVideoCallAndDisableLocalVideo | 152 DISABLED_CanSetupVideoCallAndDisableLocalVideo |
177 #else | 153 #else |
178 #define MAYBE_CanSetupVideoCallAndDisableLocalVideo \ | 154 #define MAYBE_CanSetupVideoCallAndDisableLocalVideo \ |
179 CanSetupVideoCallAndDisableLocalVideo | 155 CanSetupVideoCallAndDisableLocalVideo |
180 #endif | 156 #endif |
181 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 157 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
182 MAYBE_CanSetupVideoCallAndDisableLocalVideo) { | 158 MAYBE_CanSetupVideoCallAndDisableLocalVideo) { |
183 const std::string javascript = | 159 const std::string javascript = |
184 "callAndDisableLocalVideo({video: true});"; | 160 "callAndDisableLocalVideo({video: true});"; |
185 MakeTypicalPeerConnectionCall(javascript); | 161 MakeTypicalPeerConnectionCall(javascript); |
186 } | 162 } |
187 | 163 |
188 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 164 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
189 // Timing out on ARM linux, see http://crbug.com/240376 | 165 // Timing out on ARM linux, see http://crbug.com/240376 |
190 #define MAYBE_CanSetupAudioAndVideoCall DISABLED_CanSetupAudioAndVideoCall | 166 #define MAYBE_CanSetupAudioAndVideoCall DISABLED_CanSetupAudioAndVideoCall |
191 #else | 167 #else |
192 #define MAYBE_CanSetupAudioAndVideoCall CanSetupAudioAndVideoCall | 168 #define MAYBE_CanSetupAudioAndVideoCall CanSetupAudioAndVideoCall |
193 #endif | 169 #endif |
194 | 170 |
195 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanSetupAudioAndVideoCall) { | 171 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 172 MAYBE_CanSetupAudioAndVideoCall) { |
196 MakeTypicalPeerConnectionCall("call({video: true, audio: true});"); | 173 MakeTypicalPeerConnectionCall("call({video: true, audio: true});"); |
197 } | 174 } |
198 | 175 |
199 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MANUAL_CanSetupCallAndSendDtmf) { | 176 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 177 MANUAL_CanSetupCallAndSendDtmf) { |
200 MakeTypicalPeerConnectionCall("callAndSendDtmf(\'123,abc\');"); | 178 MakeTypicalPeerConnectionCall("callAndSendDtmf(\'123,abc\');"); |
201 } | 179 } |
202 | 180 |
203 // TODO(phoglund): this test fails because the peer connection state will be | 181 // TODO(phoglund): this test fails because the peer connection state will be |
204 // stable in the second negotiation round rather than have-local-offer. | 182 // stable in the second negotiation round rather than have-local-offer. |
205 // http://crbug.com/293125. | 183 // http://crbug.com/293125. |
206 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 184 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
207 DISABLED_CanMakeEmptyCallThenAddStreamsAndRenegotiate) { | 185 DISABLED_CanMakeEmptyCallThenAddStreamsAndRenegotiate) { |
208 const char* kJavascript = | 186 const char* kJavascript = |
209 "callEmptyThenAddOneStreamAndRenegotiate({video: true, audio: true});"; | 187 "callEmptyThenAddOneStreamAndRenegotiate({video: true, audio: true});"; |
210 MakeTypicalPeerConnectionCall(kJavascript); | 188 MakeTypicalPeerConnectionCall(kJavascript); |
211 } | 189 } |
212 | 190 |
213 // Below 2 test will make a complete PeerConnection-based call between pc1 and | 191 // Below 2 test will make a complete PeerConnection-based call between pc1 and |
214 // pc2, and then use the remote stream to setup a call between pc3 and pc4, and | 192 // pc2, and then use the remote stream to setup a call between pc3 and pc4, and |
215 // then verify that video is received on pc3 and pc4. | 193 // then verify that video is received on pc3 and pc4. |
216 // The stream sent from pc3 to pc4 is the stream received on pc1. | 194 // The stream sent from pc3 to pc4 is the stream received on pc1. |
217 // The stream sent from pc4 to pc3 is cloned from stream the stream received | 195 // The stream sent from pc4 to pc3 is cloned from stream the stream received |
218 // on pc2. | 196 // on pc2. |
219 // Flaky on win xp. http://crbug.com/304775 | 197 // Flaky on win xp. http://crbug.com/304775 |
220 #if defined(OS_WIN) | 198 #if defined(OS_WIN) |
221 #define MAYBE_CanForwardRemoteStream DISABLED_CanForwardRemoteStream | 199 #define MAYBE_CanForwardRemoteStream DISABLED_CanForwardRemoteStream |
222 #define MAYBE_CanForwardRemoteStream720p DISABLED_CanForwardRemoteStream720p | 200 #define MAYBE_CanForwardRemoteStream720p DISABLED_CanForwardRemoteStream720p |
223 #else | 201 #else |
224 #define MAYBE_CanForwardRemoteStream CanForwardRemoteStream | 202 #define MAYBE_CanForwardRemoteStream CanForwardRemoteStream |
225 // Flaky on TSAN v2. http://crbug.com/373637 | 203 // Flaky on TSAN v2. http://crbug.com/373637 |
226 #if defined(THREAD_SANITIZER) | 204 #if defined(THREAD_SANITIZER) |
227 #define MAYBE_CanForwardRemoteStream720p DISABLED_CanForwardRemoteStream720p | 205 #define MAYBE_CanForwardRemoteStream720p DISABLED_CanForwardRemoteStream720p |
228 #else | 206 #else |
229 #define MAYBE_CanForwardRemoteStream720p CanForwardRemoteStream720p | 207 #define MAYBE_CanForwardRemoteStream720p CanForwardRemoteStream720p |
230 #endif | 208 #endif |
231 #endif | 209 #endif |
232 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanForwardRemoteStream) { | 210 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MAYBE_CanForwardRemoteStream) { |
233 #if defined (OS_ANDROID) | 211 #if defined (OS_ANDROID) |
234 // This test fails on Nexus 5 devices. | 212 // This test fails on Nexus 5 devices. |
235 // TODO(henrika): see http://crbug.com/362437 and http://crbug.com/359389 | 213 // TODO(henrika): see http://crbug.com/362437 and http://crbug.com/359389 |
236 // for details. | 214 // for details. |
237 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 215 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
238 switches::kDisableWebRtcHWDecoding); | 216 switches::kDisableWebRtcHWDecoding); |
239 #endif | 217 #endif |
240 MakeTypicalPeerConnectionCall( | 218 MakeTypicalPeerConnectionCall( |
241 "callAndForwardRemoteStream({video: true, audio: false});"); | 219 "callAndForwardRemoteStream({video: true, audio: false});"); |
242 } | 220 } |
243 | 221 |
244 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanForwardRemoteStream720p) { | 222 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 223 MAYBE_CanForwardRemoteStream720p) { |
245 #if defined (OS_ANDROID) | 224 #if defined (OS_ANDROID) |
246 // This test fails on Nexus 5 devices. | 225 // This test fails on Nexus 5 devices. |
247 // TODO(henrika): see http://crbug.com/362437 and http://crbug.com/359389 | 226 // TODO(henrika): see http://crbug.com/362437 and http://crbug.com/359389 |
248 // for details. | 227 // for details. |
249 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 228 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
250 switches::kDisableWebRtcHWDecoding); | 229 switches::kDisableWebRtcHWDecoding); |
251 #endif | 230 #endif |
252 const std::string javascript = GenerateGetUserMediaCall( | 231 const std::string javascript = GenerateGetUserMediaCall( |
253 "callAndForwardRemoteStream", 1280, 1280, 720, 720, 10, 30); | 232 "callAndForwardRemoteStream", 1280, 1280, 720, 720, 10, 30); |
254 MakeTypicalPeerConnectionCall(javascript); | 233 MakeTypicalPeerConnectionCall(javascript); |
255 } | 234 } |
256 | 235 |
257 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 236 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
258 NoCrashWhenConnectChromiumSinkToRemoteTrack) { | 237 NoCrashWhenConnectChromiumSinkToRemoteTrack) { |
259 MakeTypicalPeerConnectionCall("ConnectChromiumSinkToRemoteAudioTrack();"); | 238 MakeTypicalPeerConnectionCall("ConnectChromiumSinkToRemoteAudioTrack();"); |
260 } | 239 } |
261 | 240 |
262 // This test will make a complete PeerConnection-based call but remove the | 241 // This test will make a complete PeerConnection-based call but remove the |
263 // MSID and bundle attribute from the initial offer to verify that | 242 // MSID and bundle attribute from the initial offer to verify that |
264 // video is playing for the call even if the initiating client don't support | 243 // video is playing for the call even if the initiating client don't support |
265 // MSID. http://tools.ietf.org/html/draft-alvestrand-rtcweb-msid-02 | 244 // MSID. http://tools.ietf.org/html/draft-alvestrand-rtcweb-msid-02 |
266 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 245 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
267 // Timing out on ARM linux, see http://crbug.com/240373 | 246 // Timing out on ARM linux, see http://crbug.com/240373 |
268 #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\ | 247 #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\ |
269 DISABLED_CanSetupAudioAndVideoCallWithoutMsidAndBundle | 248 DISABLED_CanSetupAudioAndVideoCallWithoutMsidAndBundle |
270 #else | 249 #else |
271 #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\ | 250 #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\ |
272 CanSetupAudioAndVideoCallWithoutMsidAndBundle | 251 CanSetupAudioAndVideoCallWithoutMsidAndBundle |
273 #endif | 252 #endif |
274 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 253 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
275 MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle) { | 254 MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle) { |
276 MakeTypicalPeerConnectionCall("callWithoutMsidAndBundle();"); | 255 MakeTypicalPeerConnectionCall("callWithoutMsidAndBundle();"); |
277 } | 256 } |
278 | 257 |
279 // This test will modify the SDP offer to an unsupported codec, which should | 258 // This test will modify the SDP offer to an unsupported codec, which should |
280 // cause SetLocalDescription to fail. | 259 // cause SetLocalDescription to fail. |
281 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, NegotiateUnsupportedVideoCodec) { | 260 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 261 NegotiateUnsupportedVideoCodec) { |
282 MakeTypicalPeerConnectionCall("negotiateUnsupportedVideoCodec();"); | 262 MakeTypicalPeerConnectionCall("negotiateUnsupportedVideoCodec();"); |
283 } | 263 } |
284 | 264 |
285 // This test will modify the SDP offer to use no encryption, which should | 265 // This test will modify the SDP offer to use no encryption, which should |
286 // cause SetLocalDescription to fail. | 266 // cause SetLocalDescription to fail. |
287 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, NegotiateNonCryptoCall) { | 267 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, NegotiateNonCryptoCall) { |
288 MakeTypicalPeerConnectionCall("negotiateNonCryptoCall();"); | 268 MakeTypicalPeerConnectionCall("negotiateNonCryptoCall();"); |
289 } | 269 } |
290 | 270 |
291 // This test can negotiate an SDP offer that includes a b=AS:xx to control | 271 // This test can negotiate an SDP offer that includes a b=AS:xx to control |
292 // the bandwidth for audio and video | 272 // the bandwidth for audio and video |
293 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, NegotiateOfferWithBLine) { | 273 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, NegotiateOfferWithBLine) { |
294 MakeTypicalPeerConnectionCall("negotiateOfferWithBLine();"); | 274 MakeTypicalPeerConnectionCall("negotiateOfferWithBLine();"); |
295 } | 275 } |
296 | 276 |
297 // This test will make a complete PeerConnection-based call using legacy SDP | 277 // This test will make a complete PeerConnection-based call using legacy SDP |
298 // settings: GIce, external SDES, and no BUNDLE. | 278 // settings: GIce, external SDES, and no BUNDLE. |
299 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 279 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
300 // Timing out on ARM linux, see http://crbug.com/240373 | 280 // Timing out on ARM linux, see http://crbug.com/240373 |
301 #define MAYBE_CanSetupLegacyCall DISABLED_CanSetupLegacyCall | 281 #define MAYBE_CanSetupLegacyCall DISABLED_CanSetupLegacyCall |
302 #else | 282 #else |
303 #define MAYBE_CanSetupLegacyCall CanSetupLegacyCall | 283 #define MAYBE_CanSetupLegacyCall CanSetupLegacyCall |
304 #endif | 284 #endif |
305 | 285 |
306 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanSetupLegacyCall) { | 286 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MAYBE_CanSetupLegacyCall) { |
307 MakeTypicalPeerConnectionCall("callWithLegacySdp();"); | 287 MakeTypicalPeerConnectionCall("callWithLegacySdp();"); |
308 } | 288 } |
309 | 289 |
310 // This test will make a PeerConnection-based call and test an unreliable text | 290 // This test will make a PeerConnection-based call and test an unreliable text |
311 // dataChannel. | 291 // dataChannel. |
312 // TODO(mallinath) - Remove this test after rtp based data channel is disabled. | 292 // TODO(mallinath) - Remove this test after rtp based data channel is disabled. |
313 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, CallWithDataOnly) { | 293 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, CallWithDataOnly) { |
314 MakeTypicalPeerConnectionCall("callWithDataOnly();"); | 294 MakeTypicalPeerConnectionCall("callWithDataOnly();"); |
315 } | 295 } |
316 | 296 |
317 #if defined(MEMORY_SANITIZER) | 297 #if defined(MEMORY_SANITIZER) |
318 // Fails under MemorySanitizer: http://crbug.com/405951 | 298 // Fails under MemorySanitizer: http://crbug.com/405951 |
319 #define MAYBE_CallWithSctpDataOnly DISABLED_CallWithSctpDataOnly | 299 #define MAYBE_CallWithSctpDataOnly DISABLED_CallWithSctpDataOnly |
320 #else | 300 #else |
321 #define MAYBE_CallWithSctpDataOnly CallWithSctpDataOnly | 301 #define MAYBE_CallWithSctpDataOnly CallWithSctpDataOnly |
322 #endif | 302 #endif |
323 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithSctpDataOnly) { | 303 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MAYBE_CallWithSctpDataOnly) { |
324 MakeTypicalPeerConnectionCall("callWithSctpDataOnly();"); | 304 MakeTypicalPeerConnectionCall("callWithSctpDataOnly();"); |
325 } | 305 } |
326 | 306 |
327 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 307 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
328 // Timing out on ARM linux bot: http://crbug.com/238490 | 308 // Timing out on ARM linux bot: http://crbug.com/238490 |
329 #define MAYBE_CallWithDataAndMedia DISABLED_CallWithDataAndMedia | 309 #define MAYBE_CallWithDataAndMedia DISABLED_CallWithDataAndMedia |
330 #else | 310 #else |
331 #define MAYBE_CallWithDataAndMedia CallWithDataAndMedia | 311 #define MAYBE_CallWithDataAndMedia CallWithDataAndMedia |
332 #endif | 312 #endif |
333 | 313 |
334 // This test will make a PeerConnection-based call and test an unreliable text | 314 // This test will make a PeerConnection-based call and test an unreliable text |
335 // dataChannel and audio and video tracks. | 315 // dataChannel and audio and video tracks. |
336 // TODO(mallinath) - Remove this test after rtp based data channel is disabled. | 316 // TODO(mallinath) - Remove this test after rtp based data channel is disabled. |
337 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, DISABLED_CallWithDataAndMedia) { | 317 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, DISABLED_CallWithDataAndMedia) { |
338 MakeTypicalPeerConnectionCall("callWithDataAndMedia();"); | 318 MakeTypicalPeerConnectionCall("callWithDataAndMedia();"); |
339 } | 319 } |
340 | 320 |
341 | 321 |
342 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && \ | 322 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && \ |
343 defined(ARCH_CPU_ARM_FAMILY)) || defined(MEMORY_SANITIZER) | 323 defined(ARCH_CPU_ARM_FAMILY)) || defined(MEMORY_SANITIZER) |
344 // Timing out on ARM linux bot: http://crbug.com/238490 | 324 // Timing out on ARM linux bot: http://crbug.com/238490 |
345 // Fails under MemorySanitizer: http://crbug.com/405951 | 325 // Fails under MemorySanitizer: http://crbug.com/405951 |
346 #define MAYBE_CallWithSctpDataAndMedia DISABLED_CallWithSctpDataAndMedia | 326 #define MAYBE_CallWithSctpDataAndMedia DISABLED_CallWithSctpDataAndMedia |
347 #else | 327 #else |
348 #define MAYBE_CallWithSctpDataAndMedia CallWithSctpDataAndMedia | 328 #define MAYBE_CallWithSctpDataAndMedia CallWithSctpDataAndMedia |
349 #endif | 329 #endif |
350 | 330 |
351 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 331 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
352 MAYBE_CallWithSctpDataAndMedia) { | 332 MAYBE_CallWithSctpDataAndMedia) { |
353 MakeTypicalPeerConnectionCall("callWithSctpDataAndMedia();"); | 333 MakeTypicalPeerConnectionCall("callWithSctpDataAndMedia();"); |
354 } | 334 } |
355 | 335 |
356 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 336 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
357 // Timing out on ARM linux bot: http://crbug.com/238490 | 337 // Timing out on ARM linux bot: http://crbug.com/238490 |
358 #define MAYBE_CallWithDataAndLaterAddMedia DISABLED_CallWithDataAndLaterAddMedia | 338 #define MAYBE_CallWithDataAndLaterAddMedia DISABLED_CallWithDataAndLaterAddMedia |
359 #else | 339 #else |
360 // Temporarily disable the test on all platforms. http://crbug.com/293252 | 340 // Temporarily disable the test on all platforms. http://crbug.com/293252 |
361 #define MAYBE_CallWithDataAndLaterAddMedia DISABLED_CallWithDataAndLaterAddMedia | 341 #define MAYBE_CallWithDataAndLaterAddMedia DISABLED_CallWithDataAndLaterAddMedia |
362 #endif | 342 #endif |
363 | 343 |
364 // This test will make a PeerConnection-based call and test an unreliable text | 344 // This test will make a PeerConnection-based call and test an unreliable text |
365 // dataChannel and later add an audio and video track. | 345 // dataChannel and later add an audio and video track. |
366 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithDataAndLaterAddMedia) { | 346 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 347 MAYBE_CallWithDataAndLaterAddMedia) { |
367 MakeTypicalPeerConnectionCall("callWithDataAndLaterAddMedia();"); | 348 MakeTypicalPeerConnectionCall("callWithDataAndLaterAddMedia();"); |
368 } | 349 } |
369 | 350 |
370 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 351 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
371 // Timing out on ARM linux bot: http://crbug.com/238490 | 352 // Timing out on ARM linux bot: http://crbug.com/238490 |
372 #define MAYBE_CallWithNewVideoMediaStream DISABLED_CallWithNewVideoMediaStream | 353 #define MAYBE_CallWithNewVideoMediaStream DISABLED_CallWithNewVideoMediaStream |
373 #else | 354 #else |
374 #define MAYBE_CallWithNewVideoMediaStream CallWithNewVideoMediaStream | 355 #define MAYBE_CallWithNewVideoMediaStream CallWithNewVideoMediaStream |
375 #endif | 356 #endif |
376 | 357 |
377 // This test will make a PeerConnection-based call and send a new Video | 358 // This test will make a PeerConnection-based call and send a new Video |
378 // MediaStream that has been created based on a MediaStream created with | 359 // MediaStream that has been created based on a MediaStream created with |
379 // getUserMedia. | 360 // getUserMedia. |
380 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithNewVideoMediaStream) { | 361 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
| 362 MAYBE_CallWithNewVideoMediaStream) { |
381 MakeTypicalPeerConnectionCall("callWithNewVideoMediaStream();"); | 363 MakeTypicalPeerConnectionCall("callWithNewVideoMediaStream();"); |
382 } | 364 } |
383 | 365 |
384 // This test will make a PeerConnection-based call and send a new Video | 366 // This test will make a PeerConnection-based call and send a new Video |
385 // MediaStream that has been created based on a MediaStream created with | 367 // MediaStream that has been created based on a MediaStream created with |
386 // getUserMedia. When video is flowing, the VideoTrack is removed and an | 368 // getUserMedia. When video is flowing, the VideoTrack is removed and an |
387 // AudioTrack is added instead. | 369 // AudioTrack is added instead. |
388 // TODO(phoglund): This test is manual since not all buildbots has an audio | 370 // TODO(phoglund): This test is manual since not all buildbots has an audio |
389 // input. | 371 // input. |
390 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MANUAL_CallAndModifyStream) { | 372 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MANUAL_CallAndModifyStream) { |
391 MakeTypicalPeerConnectionCall( | 373 MakeTypicalPeerConnectionCall( |
392 "callWithNewVideoMediaStreamLaterSwitchToAudio();"); | 374 "callWithNewVideoMediaStreamLaterSwitchToAudio();"); |
393 } | 375 } |
394 | 376 |
395 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, AddTwoMediaStreamsToOnePC) { | 377 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, AddTwoMediaStreamsToOnePC) { |
396 MakeTypicalPeerConnectionCall("addTwoMediaStreamsToOneConnection();"); | 378 MakeTypicalPeerConnectionCall("addTwoMediaStreamsToOneConnection();"); |
397 } | 379 } |
398 | 380 |
399 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 381 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
400 EstablishAudioVideoCallAndEnsureAudioIsPlaying) { | 382 EstablishAudioVideoCallAndEnsureAudioIsPlaying) { |
401 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 383 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
402 "callAndEnsureAudioIsPlaying(%s, {audio:true, video:true});", | 384 "callAndEnsureAudioIsPlaying(%s, {audio:true, video:true});", |
403 kUseLenientAudioChecking)); | 385 kUseLenientAudioChecking)); |
404 } | 386 } |
405 | 387 |
406 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 388 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
407 EstablishAudioOnlyCallAndEnsureAudioIsPlaying) { | 389 EstablishAudioOnlyCallAndEnsureAudioIsPlaying) { |
408 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 390 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
409 "callAndEnsureAudioIsPlaying(%s, {audio:true});", | 391 "callAndEnsureAudioIsPlaying(%s, {audio:true});", |
410 kUseLenientAudioChecking)); | 392 kUseLenientAudioChecking)); |
411 } | 393 } |
412 | 394 |
413 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 395 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
414 EstablishAudioVideoCallAndVerifyRemoteMutingWorks) { | 396 EstablishAudioVideoCallAndVerifyRemoteMutingWorks) { |
415 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 397 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
416 "callAndEnsureRemoteAudioTrackMutingWorks(%s);", | 398 "callAndEnsureRemoteAudioTrackMutingWorks(%s);", |
417 kUseLenientAudioChecking)); | 399 kUseLenientAudioChecking)); |
418 } | 400 } |
419 | 401 |
420 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 402 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
421 EstablishAudioVideoCallAndVerifyLocalMutingWorks) { | 403 EstablishAudioVideoCallAndVerifyLocalMutingWorks) { |
422 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 404 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
423 "callAndEnsureLocalAudioTrackMutingWorks(%s);", | 405 "callAndEnsureLocalAudioTrackMutingWorks(%s);", |
424 kUseLenientAudioChecking)); | 406 kUseLenientAudioChecking)); |
425 } | 407 } |
426 | 408 |
427 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 409 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
428 EnsureLocalVideoMuteDoesntMuteAudio) { | 410 EnsureLocalVideoMuteDoesntMuteAudio) { |
429 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 411 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
430 "callAndEnsureLocalVideoMutingDoesntMuteAudio(%s);", | 412 "callAndEnsureLocalVideoMutingDoesntMuteAudio(%s);", |
431 kUseLenientAudioChecking)); | 413 kUseLenientAudioChecking)); |
432 } | 414 } |
433 | 415 |
434 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 416 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
435 EnsureRemoteVideoMuteDoesntMuteAudio) { | 417 EnsureRemoteVideoMuteDoesntMuteAudio) { |
436 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 418 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
437 "callAndEnsureRemoteVideoMutingDoesntMuteAudio(%s);", | 419 "callAndEnsureRemoteVideoMutingDoesntMuteAudio(%s);", |
438 kUseLenientAudioChecking)); | 420 kUseLenientAudioChecking)); |
439 } | 421 } |
440 | 422 |
441 // Flaky on TSAN v2: http://crbug.com/373637 | 423 // Flaky on TSAN v2: http://crbug.com/373637 |
442 #if defined(THREAD_SANITIZER) | 424 #if defined(THREAD_SANITIZER) |
443 #define MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks\ | 425 #define MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks\ |
444 DISABLED_EstablishAudioVideoCallAndVerifyUnmutingWorks | 426 DISABLED_EstablishAudioVideoCallAndVerifyUnmutingWorks |
445 #else | 427 #else |
446 #define MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks\ | 428 #define MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks\ |
447 EstablishAudioVideoCallAndVerifyUnmutingWorks | 429 EstablishAudioVideoCallAndVerifyUnmutingWorks |
448 #endif | 430 #endif |
449 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | 431 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, |
450 MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks) { | 432 MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks) { |
451 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( | 433 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
452 "callAndEnsureAudioTrackUnmutingWorks(%s);", kUseLenientAudioChecking)); | 434 "callAndEnsureAudioTrackUnmutingWorks(%s);", kUseLenientAudioChecking)); |
453 } | 435 } |
454 | 436 |
455 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, CallAndVerifyVideoMutingWorks) { | 437 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, CallAndVerifyVideoMutingWorks) { |
456 MakeTypicalPeerConnectionCall("callAndEnsureVideoTrackMutingWorks();"); | 438 MakeTypicalPeerConnectionCall("callAndEnsureVideoTrackMutingWorks();"); |
457 } | 439 } |
458 | 440 |
459 #if defined(OS_WIN) | 441 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, CreateOfferWithOfferOptions) { |
460 #define IntToStringType base::IntToString16 | |
461 #else | |
462 #define IntToStringType base::IntToString | |
463 #endif | |
464 | |
465 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | |
466 // Timing out on ARM linux bot: http://crbug.com/238490 | |
467 #define MAYBE_CallWithAecDump DISABLED_CallWithAecDump | |
468 #else | |
469 #define MAYBE_CallWithAecDump CallWithAecDump | |
470 #endif | |
471 | |
472 // This tests will make a complete PeerConnection-based call, verify that | |
473 // video is playing for the call, and verify that a non-empty AEC dump file | |
474 // exists. The AEC dump is enabled through webrtc-internals. The HTML and | |
475 // Javascript is bypassed since it would trigger a file picker dialog. Instead, | |
476 // the dialog callback FileSelected() is invoked directly. In fact, there's | |
477 // never a webrtc-internals page opened at all since that's not needed. | |
478 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithAecDump) { | |
479 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | |
480 | |
481 // We must navigate somewhere first so that the render process is created. | |
482 NavigateToURL(shell(), GURL("")); | |
483 | |
484 base::FilePath dump_file; | |
485 ASSERT_TRUE(CreateTemporaryFile(&dump_file)); | |
486 base::DeleteFile(dump_file, false); | |
487 | |
488 // This fakes the behavior of another open tab with webrtc-internals, and | |
489 // enabling AEC dump in that tab. | |
490 WebRTCInternals::GetInstance()->FileSelected(dump_file, -1, NULL); | |
491 | |
492 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); | |
493 NavigateToURL(shell(), url); | |
494 DisableOpusIfOnAndroid(); | |
495 ExecuteJavascriptAndWaitForOk("call({video: true, audio: true});"); | |
496 | |
497 EXPECT_FALSE(base::PathExists(dump_file)); | |
498 | |
499 // Add file extensions that we expect to be added. The dump name will be | |
500 // <temporary path>.<render process id>.<consumer id>, for example | |
501 // "/tmp/.com.google.Chrome.Z6UC3P.12345.0". | |
502 base::ProcessId render_process_id = base::kNullProcessId; | |
503 EXPECT_TRUE(GetRenderProcessHostId(&render_process_id)); | |
504 dump_file = dump_file.AddExtension(IntToStringType(render_process_id)) | |
505 .AddExtension(IntToStringType(kExpectedConsumerId)); | |
506 | |
507 EXPECT_TRUE(base::PathExists(dump_file)); | |
508 int64 file_size = 0; | |
509 EXPECT_TRUE(base::GetFileSize(dump_file, &file_size)); | |
510 EXPECT_GT(file_size, 0); | |
511 | |
512 base::DeleteFile(dump_file, false); | |
513 } | |
514 | |
515 // TODO(grunell): Add test for multiple dumps when re-use of | |
516 // MediaStreamAudioProcessor in AudioCapturer has been removed. | |
517 | |
518 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | |
519 // Timing out on ARM linux bot: http://crbug.com/238490 | |
520 #define MAYBE_CallWithAecDumpEnabledThenDisabled DISABLED_CallWithAecDumpEnabled
ThenDisabled | |
521 #else | |
522 #define MAYBE_CallWithAecDumpEnabledThenDisabled CallWithAecDumpEnabledThenDisab
led | |
523 #endif | |
524 | |
525 // As above, but enable and disable dump before starting a call. The file should | |
526 // be created, but should be empty. | |
527 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, | |
528 MAYBE_CallWithAecDumpEnabledThenDisabled) { | |
529 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | |
530 | |
531 // We must navigate somewhere first so that the render process is created. | |
532 NavigateToURL(shell(), GURL("")); | |
533 | |
534 base::FilePath dump_file; | |
535 ASSERT_TRUE(CreateTemporaryFile(&dump_file)); | |
536 base::DeleteFile(dump_file, false); | |
537 | |
538 // This fakes the behavior of another open tab with webrtc-internals, and | |
539 // enabling AEC dump in that tab, then disabling it. | |
540 WebRTCInternals::GetInstance()->FileSelected(dump_file, -1, NULL); | |
541 WebRTCInternals::GetInstance()->DisableAecDump(); | |
542 | |
543 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); | |
544 NavigateToURL(shell(), url); | |
545 DisableOpusIfOnAndroid(); | |
546 ExecuteJavascriptAndWaitForOk("call({video: true, audio: true});"); | |
547 | |
548 // Add file extensions that we expect to be added. | |
549 base::ProcessId render_process_id = base::kNullProcessId; | |
550 EXPECT_TRUE(GetRenderProcessHostId(&render_process_id)); | |
551 dump_file = dump_file.AddExtension(IntToStringType(render_process_id)) | |
552 .AddExtension(IntToStringType(kExpectedConsumerId)); | |
553 | |
554 EXPECT_FALSE(base::PathExists(dump_file)); | |
555 | |
556 base::DeleteFile(dump_file, false); | |
557 } | |
558 | |
559 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | |
560 // Timing out on ARM linux bot: http://crbug.com/238490 | |
561 #define MAYBE_TwoCallsWithAecDump DISABLED_TwoCallsWithAecDump | |
562 #else | |
563 #define MAYBE_TwoCallsWithAecDump TwoCallsWithAecDump | |
564 #endif | |
565 | |
566 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_TwoCallsWithAecDump) { | |
567 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | |
568 | |
569 // We must navigate somewhere first so that the render process is created. | |
570 NavigateToURL(shell(), GURL("")); | |
571 | |
572 // Create a second window. | |
573 Shell* shell2 = CreateBrowser(); | |
574 NavigateToURL(shell2, GURL("")); | |
575 | |
576 base::FilePath dump_file; | |
577 ASSERT_TRUE(CreateTemporaryFile(&dump_file)); | |
578 base::DeleteFile(dump_file, false); | |
579 | |
580 // This fakes the behavior of another open tab with webrtc-internals, and | |
581 // enabling AEC dump in that tab. | |
582 WebRTCInternals::GetInstance()->FileSelected(dump_file, -1, NULL); | |
583 | |
584 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); | |
585 | |
586 NavigateToURL(shell(), url); | |
587 NavigateToURL(shell2, url); | |
588 ExecuteJavascriptAndWaitForOk("call({video: true, audio: true});"); | |
589 std::string result; | |
590 EXPECT_TRUE(ExecuteScriptAndExtractString( | |
591 shell2->web_contents(), | |
592 "call({video: true, audio: true});", | |
593 &result)); | |
594 ASSERT_STREQ("OK", result.c_str()); | |
595 | |
596 EXPECT_FALSE(base::PathExists(dump_file)); | |
597 | |
598 RenderProcessHost::iterator it = | |
599 content::RenderProcessHost::AllHostsIterator(); | |
600 for (; !it.IsAtEnd(); it.Advance()) { | |
601 base::ProcessId render_process_id = | |
602 base::GetProcId(it.GetCurrentValue()->GetHandle()); | |
603 EXPECT_NE(base::kNullProcessId, render_process_id); | |
604 | |
605 // Add file extensions that we expect to be added. | |
606 base::FilePath unique_dump_file = | |
607 dump_file.AddExtension(IntToStringType(render_process_id)) | |
608 .AddExtension(IntToStringType(kExpectedConsumerId)); | |
609 | |
610 EXPECT_TRUE(base::PathExists(unique_dump_file)); | |
611 int64 file_size = 0; | |
612 EXPECT_TRUE(base::GetFileSize(unique_dump_file, &file_size)); | |
613 EXPECT_GT(file_size, 0); | |
614 | |
615 base::DeleteFile(unique_dump_file, false); | |
616 } | |
617 } | |
618 | |
619 IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, CreateOfferWithOfferOptions) { | |
620 MakeTypicalPeerConnectionCall("testCreateOfferOptions();"); | 442 MakeTypicalPeerConnectionCall("testCreateOfferOptions();"); |
621 } | 443 } |
622 | 444 |
623 } // namespace content | 445 } // namespace content |
OLD | NEW |