| 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/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "content/browser/media/webrtc_internals.h" | 9 #include "content/browser/media/webrtc_internals.h" |
| 10 #include "content/browser/web_contents/web_contents_impl.h" | 10 #include "content/browser/web_contents/web_contents_impl.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 virtual ~WebRtcBrowserTest() {} | 38 virtual ~WebRtcBrowserTest() {} |
| 39 | 39 |
| 40 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 40 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 41 WebRtcContentBrowserTest::SetUpCommandLine(command_line); | 41 WebRtcContentBrowserTest::SetUpCommandLine(command_line); |
| 42 | 42 |
| 43 bool enable_audio_track_processing = GetParam(); | 43 bool enable_audio_track_processing = GetParam(); |
| 44 if (enable_audio_track_processing) | 44 if (enable_audio_track_processing) |
| 45 command_line->AppendSwitch(switches::kEnableAudioTrackProcessing); | 45 command_line->AppendSwitch(switches::kEnableAudioTrackProcessing); |
| 46 } | 46 } |
| 47 | 47 |
| 48 // Convenience function since most peerconnection-call.html tests just load | 48 // Convenience method since most peerconnection-call.html tests just load |
| 49 // the page, kick off some javascript and wait for the title to change to OK. | 49 // the page, kick off some javascript and wait for the title to change to OK. |
| 50 void MakeTypicalPeerConnectionCall(const std::string& javascript) { | 50 void MakeTypicalPeerConnectionCall(const std::string& javascript) { |
| 51 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 51 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
| 52 | 52 |
| 53 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); | 53 GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); |
| 54 NavigateToURL(shell(), url); | 54 NavigateToURL(shell(), url); |
| 55 | 55 |
| 56 DisableOpusIfOnAndroid(); | 56 DisableOpusIfOnAndroid(); |
| 57 ExecuteJavascriptAndWaitForOk(javascript); | 57 ExecuteJavascriptAndWaitForOk(javascript); |
| 58 } | 58 } |
| 59 | 59 |
| 60 // Convenience method for making calls that detect if audio os playing (which |
| 61 // has some special prerequisites, such that there needs to be an audio output |
| 62 // device on the executing machine). |
| 63 void MakeAudioDetectingPeerConnectionCall(const std::string& javascript) { |
| 64 if (!media::AudioManager::Get()->HasAudioOutputDevices()) { |
| 65 // Bots with no output devices will force the audio code into a state |
| 66 // where it doesn't manage to set either the low or high latency path. |
| 67 // This test will compute useless values in that case, so skip running on |
| 68 // such bots (see crbug.com/326338). |
| 69 LOG(INFO) << "Missing output devices: skipping test..."; |
| 70 return; |
| 71 } |
| 72 |
| 73 ASSERT_TRUE(CommandLine::ForCurrentProcess()->HasSwitch( |
| 74 switches::kUseFakeDeviceForMediaStream)) |
| 75 << "Must run with fake devices since the test will explicitly look " |
| 76 << "for the fake device signal."; |
| 77 |
| 78 MakeTypicalPeerConnectionCall(javascript); |
| 79 } |
| 80 |
| 60 void DisableOpusIfOnAndroid() { | 81 void DisableOpusIfOnAndroid() { |
| 61 #if defined (OS_ANDROID) | 82 #if defined (OS_ANDROID) |
| 62 // Always force iSAC 16K on Android for now (Opus is broken). | 83 // Always force iSAC 16K on Android for now (Opus is broken). |
| 63 EXPECT_EQ("isac-forced", | 84 EXPECT_EQ("isac-forced", |
| 64 ExecuteJavascriptAndReturnResult("forceIsac16KInSdp();")); | 85 ExecuteJavascriptAndReturnResult("forceIsac16KInSdp();")); |
| 65 #endif | 86 #endif |
| 66 } | 87 } |
| 67 }; | 88 }; |
| 68 | 89 |
| 69 static const bool kRunTestsWithFlag[] = { false, true }; | 90 static const bool kRunTestsWithFlag[] = { false, true }; |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, MANUAL_CallAndModifyStream) { | 313 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, MANUAL_CallAndModifyStream) { |
| 293 MakeTypicalPeerConnectionCall( | 314 MakeTypicalPeerConnectionCall( |
| 294 "callWithNewVideoMediaStreamLaterSwitchToAudio();"); | 315 "callWithNewVideoMediaStreamLaterSwitchToAudio();"); |
| 295 } | 316 } |
| 296 | 317 |
| 297 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, AddTwoMediaStreamsToOnePC) { | 318 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, AddTwoMediaStreamsToOnePC) { |
| 298 MakeTypicalPeerConnectionCall("addTwoMediaStreamsToOneConnection();"); | 319 MakeTypicalPeerConnectionCall("addTwoMediaStreamsToOneConnection();"); |
| 299 } | 320 } |
| 300 | 321 |
| 301 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, | 322 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, |
| 302 EstablishAudioVideoCallAndMeasureOutputLevel) { | 323 EstablishAudioVideoCallAndEnsureSoundPlays) { |
| 303 if (!media::AudioManager::Get()->HasAudioOutputDevices()) { | 324 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
| 304 // Bots with no output devices will force the audio code into a different | 325 "callAndEnsureAudioIsPlaying(%s, {audio: true, video: true});", |
| 305 // path where it doesn't manage to set either the low or high latency path. | 326 kUseLenientAudioChecking)); |
| 306 // This test will compute useless values in that case, so skip running on | 327 } |
| 307 // such bots (see crbug.com/326338). | |
| 308 LOG(INFO) << "Missing output devices: skipping test..."; | |
| 309 return; | |
| 310 } | |
| 311 | 328 |
| 312 ASSERT_TRUE(CommandLine::ForCurrentProcess()->HasSwitch( | 329 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, |
| 313 switches::kUseFakeDeviceForMediaStream)) | 330 EstablishAudioOnlyCallAndEnsureSoundPlays) { |
| 314 << "Must run with fake devices since the test will explicitly look " | 331 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
| 315 << "for the fake device signal."; | 332 "callAndEnsureAudioIsPlaying(%s, {audio: true});", |
| 316 | 333 kUseLenientAudioChecking)); |
| 317 MakeTypicalPeerConnectionCall(base::StringPrintf( | |
| 318 "callAndEnsureAudioIsPlaying(%s);", kUseLenientAudioChecking)); | |
| 319 } | 334 } |
| 320 | 335 |
| 321 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, | 336 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, |
| 322 EstablishAudioVideoCallAndVerifyMutingWorks) { | 337 EstablishAudioVideoCallAndVerifyMutingWorks) { |
| 323 if (!media::AudioManager::Get()->HasAudioOutputDevices()) { | 338 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
| 324 // See comment on EstablishAudioVideoCallAndMeasureOutputLevel. | |
| 325 LOG(INFO) << "Missing output devices: skipping test..."; | |
| 326 return; | |
| 327 } | |
| 328 | |
| 329 ASSERT_TRUE(CommandLine::ForCurrentProcess()->HasSwitch( | |
| 330 switches::kUseFakeDeviceForMediaStream)) | |
| 331 << "Must run with fake devices since the test will explicitly look " | |
| 332 << "for the fake device signal."; | |
| 333 | |
| 334 MakeTypicalPeerConnectionCall(base::StringPrintf( | |
| 335 "callAndEnsureAudioTrackMutingWorks(%s);", kUseLenientAudioChecking)); | 339 "callAndEnsureAudioTrackMutingWorks(%s);", kUseLenientAudioChecking)); |
| 336 } | 340 } |
| 337 | 341 |
| 338 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, | 342 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, |
| 339 EstablishAudioVideoCallAndVerifyUnmutingWorks) { | 343 EstablishAudioVideoCallAndVerifyUnmutingWorks) { |
| 340 if (!media::AudioManager::Get()->HasAudioOutputDevices()) { | 344 MakeAudioDetectingPeerConnectionCall(base::StringPrintf( |
| 341 // See comment on EstablishAudioVideoCallAndMeasureOutputLevel. | |
| 342 LOG(INFO) << "Missing output devices: skipping test..."; | |
| 343 return; | |
| 344 } | |
| 345 | |
| 346 ASSERT_TRUE(CommandLine::ForCurrentProcess()->HasSwitch( | |
| 347 switches::kUseFakeDeviceForMediaStream)) | |
| 348 << "Must run with fake devices since the test will explicitly look " | |
| 349 << "for the fake device signal."; | |
| 350 | |
| 351 MakeTypicalPeerConnectionCall(base::StringPrintf( | |
| 352 "callAndEnsureAudioTrackUnmutingWorks(%s);", kUseLenientAudioChecking)); | 345 "callAndEnsureAudioTrackUnmutingWorks(%s);", kUseLenientAudioChecking)); |
| 353 } | 346 } |
| 354 | 347 |
| 355 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, CallAndVerifyVideoMutingWorks) { | 348 IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, CallAndVerifyVideoMutingWorks) { |
| 356 MakeTypicalPeerConnectionCall("callAndEnsureVideoTrackMutingWorks();"); | 349 MakeTypicalPeerConnectionCall("callAndEnsureVideoTrackMutingWorks();"); |
| 357 } | 350 } |
| 358 | 351 |
| 359 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) | 352 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
| 360 // Timing out on ARM linux bot: http://crbug.com/238490 | 353 // Timing out on ARM linux bot: http://crbug.com/238490 |
| 361 #define MAYBE_CallWithAecDump DISABLED_CallWithAecDump | 354 #define MAYBE_CallWithAecDump DISABLED_CallWithAecDump |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 | 419 |
| 427 EXPECT_TRUE(base::PathExists(dump_file)); | 420 EXPECT_TRUE(base::PathExists(dump_file)); |
| 428 int64 file_size = 0; | 421 int64 file_size = 0; |
| 429 EXPECT_TRUE(base::GetFileSize(dump_file, &file_size)); | 422 EXPECT_TRUE(base::GetFileSize(dump_file, &file_size)); |
| 430 EXPECT_EQ(0, file_size); | 423 EXPECT_EQ(0, file_size); |
| 431 | 424 |
| 432 base::DeleteFile(dump_file, false); | 425 base::DeleteFile(dump_file, false); |
| 433 } | 426 } |
| 434 | 427 |
| 435 } // namespace content | 428 } // namespace content |
| OLD | NEW |