Home | History | Annotate | Download | only in media
      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
      3 // found in the LICENSE file.
      4 
      5 #include "base/command_line.h"
      6 #include "base/files/file_util.h"
      7 #include "base/strings/stringprintf.h"
      8 #include "base/threading/platform_thread.h"
      9 #include "content/browser/web_contents/web_contents_impl.h"
     10 #include "content/public/common/content_switches.h"
     11 #include "content/public/test/browser_test_utils.h"
     12 #include "content/public/test/content_browser_test_utils.h"
     13 #include "content/public/test/test_utils.h"
     14 #include "content/test/webrtc_content_browsertest_base.h"
     15 #include "media/audio/audio_manager.h"
     16 #include "media/base/media_switches.h"
     17 #include "net/test/embedded_test_server/embedded_test_server.h"
     18 
     19 namespace {
     20 
     21 #if defined (OS_ANDROID) || defined(THREAD_SANITIZER)
     22 // Just do the bare minimum of audio checking on Android and under TSAN since
     23 // it's a bit sensitive to device performance.
     24 const char kUseLenientAudioChecking[] = "true";
     25 #else
     26 const char kUseLenientAudioChecking[] = "false";
     27 #endif
     28 
     29 }  // namespace
     30 
     31 namespace content {
     32 
     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 #elif defined(OS_ANDROID) && defined(__aarch64__)
     37 // Failures on ARM64 Android: http://crbug.com/408179.
     38 #define MAYBE_WebRtcBrowserTest DISABLED_WebRtcBrowserTest
     39 #else
     40 #define MAYBE_WebRtcBrowserTest WebRtcBrowserTest
     41 #endif
     42 
     43 class MAYBE_WebRtcBrowserTest : public WebRtcContentBrowserTest {
     44  public:
     45   MAYBE_WebRtcBrowserTest() {}
     46   virtual ~MAYBE_WebRtcBrowserTest() {}
     47 
     48   // Convenience function since most peerconnection-call.html tests just load
     49   // the page, kick off some javascript and wait for the title to change to OK.
     50   void MakeTypicalPeerConnectionCall(const std::string& javascript) {
     51     ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
     52 
     53     GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html"));
     54     NavigateToURL(shell(), url);
     55 
     56     DisableOpusIfOnAndroid();
     57     ExecuteJavascriptAndWaitForOk(javascript);
     58   }
     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(base::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 };
     81 
     82 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
     83 // Timing out on ARM linux bot: http://crbug.com/238490
     84 #define MAYBE_CanSetupDefaultVideoCall DISABLED_CanSetupDefaultVideoCall
     85 // Flaky on TSAN v2. http://crbug.com/408006
     86 #elif defined(THREAD_SANITIZER)
     87 #define MAYBE_CanSetupDefaultVideoCall DISABLED_CanSetupDefaultVideoCall
     88 #else
     89 #define MAYBE_CanSetupDefaultVideoCall CanSetupDefaultVideoCall
     90 #endif
     91 
     92 // These tests will make a complete PeerConnection-based call and verify that
     93 // video is playing for the call.
     94 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
     95                        MAYBE_CanSetupDefaultVideoCall) {
     96   MakeTypicalPeerConnectionCall(
     97       "callAndExpectResolution({video: true}, 640, 480);");
     98 }
     99 
    100 // Flaky on TSAN v2. http://crbug.com/408006
    101 #if defined(THREAD_SANITIZER)
    102 #define MAYBE_CanSetupVideoCallWith1To1AspectRatio \
    103   DISABLED_CanSetupVideoCallWith1To1AspectRatio
    104 #else
    105 #define MAYBE_CanSetupVideoCallWith1To1AspectRatio \
    106   CanSetupVideoCallWith1To1AspectRatio
    107 #endif
    108 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    109                        MAYBE_CanSetupVideoCallWith1To1AspectRatio) {
    110   const std::string javascript =
    111       "callAndExpectResolution({video: {mandatory: {minWidth: 320,"
    112       " maxWidth: 320, minHeight: 320, maxHeight: 320}}}, 320, 320);";
    113   MakeTypicalPeerConnectionCall(javascript);
    114 }
    115 
    116 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARM64)
    117 // Failing on ARM64 Android bot: http://crbug.com/408179
    118 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \
    119   DISABLED_CanSetupVideoCallWith16To9AspectRatio
    120 // Flaky on TSAN v2. http://crbug.com/408006
    121 #elif defined(THREAD_SANITIZER)
    122 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \
    123   DISABLED_CanSetupVideoCallWith16To9AspectRatio
    124 #else
    125 #define MAYBE_CanSetupVideoCallWith16To9AspectRatio \
    126   CanSetupVideoCallWith16To9AspectRatio
    127 #endif
    128 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    129                        MAYBE_CanSetupVideoCallWith16To9AspectRatio) {
    130   const std::string javascript =
    131       "callAndExpectResolution({video: {mandatory: {minWidth: 640,"
    132       " maxWidth: 640, minAspectRatio: 1.777}}}, 640, 360);";
    133   MakeTypicalPeerConnectionCall(javascript);
    134 }
    135 
    136 // Flaky on TSAN v2. http://crbug.com/408006
    137 #if defined(THREAD_SANITIZER)
    138 #define MAYBE_CanSetupVideoCallWith4To3AspectRatio \
    139   DISABLED_CanSetupVideoCallWith4To3AspectRatio
    140 #else
    141 #define MAYBE_CanSetupVideoCallWith4To3AspectRatio \
    142   CanSetupVideoCallWith4To3AspectRatio
    143 #endif
    144 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    145                        MAYBE_CanSetupVideoCallWith4To3AspectRatio) {
    146   const std::string javascript =
    147       "callAndExpectResolution({video: {mandatory: {minWidth: 960,"
    148       "maxAspectRatio: 1.333}}}, 960, 720);";
    149   MakeTypicalPeerConnectionCall(javascript);
    150 }
    151 
    152 // Flaky on TSAN v2. http://crbug.com/408006
    153 #if defined(THREAD_SANITIZER)
    154 #define MAYBE_CanSetupVideoCallAndDisableLocalVideo \
    155   DISABLED_CanSetupVideoCallAndDisableLocalVideo
    156 #else
    157 #define MAYBE_CanSetupVideoCallAndDisableLocalVideo \
    158   CanSetupVideoCallAndDisableLocalVideo
    159 #endif
    160 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    161                        MAYBE_CanSetupVideoCallAndDisableLocalVideo) {
    162   const std::string javascript =
    163       "callAndDisableLocalVideo({video: true});";
    164   MakeTypicalPeerConnectionCall(javascript);
    165 }
    166 
    167 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
    168 // Timing out on ARM linux, see http://crbug.com/240376
    169 #define MAYBE_CanSetupAudioAndVideoCall DISABLED_CanSetupAudioAndVideoCall
    170 #else
    171 #define MAYBE_CanSetupAudioAndVideoCall CanSetupAudioAndVideoCall
    172 #endif
    173 
    174 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    175                        MAYBE_CanSetupAudioAndVideoCall) {
    176   MakeTypicalPeerConnectionCall("call({video: true, audio: true});");
    177 }
    178 
    179 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    180                        MANUAL_CanSetupCallAndSendDtmf) {
    181   MakeTypicalPeerConnectionCall("callAndSendDtmf(\'123,abc\');");
    182 }
    183 
    184 // TODO(phoglund): this test fails because the peer connection state will be
    185 // stable in the second negotiation round rather than have-local-offer.
    186 // http://crbug.com/293125.
    187 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    188                        DISABLED_CanMakeEmptyCallThenAddStreamsAndRenegotiate) {
    189   const char* kJavascript =
    190       "callEmptyThenAddOneStreamAndRenegotiate({video: true, audio: true});";
    191   MakeTypicalPeerConnectionCall(kJavascript);
    192 }
    193 
    194 // Below 2 test will make a complete PeerConnection-based call between pc1 and
    195 // pc2, and then use the remote stream to setup a call between pc3 and pc4, and
    196 // then verify that video is received on pc3 and pc4.
    197 // The stream sent from pc3 to pc4 is the stream received on pc1.
    198 // The stream sent from pc4 to pc3 is cloned from stream the stream received
    199 // on pc2.
    200 // Flaky on win xp. http://crbug.com/304775
    201 #if defined(OS_WIN)
    202 #define MAYBE_CanForwardRemoteStream DISABLED_CanForwardRemoteStream
    203 #define MAYBE_CanForwardRemoteStream720p DISABLED_CanForwardRemoteStream720p
    204 #else
    205 #define MAYBE_CanForwardRemoteStream CanForwardRemoteStream
    206 // Flaky on TSAN v2. http://crbug.com/373637
    207 #if defined(THREAD_SANITIZER)
    208 #define MAYBE_CanForwardRemoteStream720p DISABLED_CanForwardRemoteStream720p
    209 #else
    210 #define MAYBE_CanForwardRemoteStream720p CanForwardRemoteStream720p
    211 #endif
    212 #endif
    213 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MAYBE_CanForwardRemoteStream) {
    214 #if defined (OS_ANDROID)
    215   // This test fails on Nexus 5 devices.
    216   // TODO(henrika): see http://crbug.com/362437 and http://crbug.com/359389
    217   // for details.
    218   base::CommandLine::ForCurrentProcess()->AppendSwitch(
    219       switches::kDisableWebRtcHWDecoding);
    220 #endif
    221   MakeTypicalPeerConnectionCall(
    222       "callAndForwardRemoteStream({video: true, audio: false});");
    223 }
    224 
    225 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    226                        MAYBE_CanForwardRemoteStream720p) {
    227 #if defined (OS_ANDROID)
    228   // This test fails on Nexus 5 devices.
    229   // TODO(henrika): see http://crbug.com/362437 and http://crbug.com/359389
    230   // for details.
    231   base::CommandLine::ForCurrentProcess()->AppendSwitch(
    232       switches::kDisableWebRtcHWDecoding);
    233 #endif
    234   const std::string javascript = GenerateGetUserMediaCall(
    235       "callAndForwardRemoteStream", 1280, 1280, 720, 720, 10, 30);
    236   MakeTypicalPeerConnectionCall(javascript);
    237 }
    238 
    239 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    240                        NoCrashWhenConnectChromiumSinkToRemoteTrack) {
    241   MakeTypicalPeerConnectionCall("ConnectChromiumSinkToRemoteAudioTrack();");
    242 }
    243 
    244 // This test will make a complete PeerConnection-based call but remove the
    245 // MSID and bundle attribute from the initial offer to verify that
    246 // video is playing for the call even if the initiating client don't support
    247 // MSID. http://tools.ietf.org/html/draft-alvestrand-rtcweb-msid-02
    248 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
    249 // Timing out on ARM linux, see http://crbug.com/240373
    250 #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\
    251         DISABLED_CanSetupAudioAndVideoCallWithoutMsidAndBundle
    252 #else
    253 #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\
    254         CanSetupAudioAndVideoCallWithoutMsidAndBundle
    255 #endif
    256 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    257                        MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle) {
    258   MakeTypicalPeerConnectionCall("callWithoutMsidAndBundle();");
    259 }
    260 
    261 // This test will modify the SDP offer to an unsupported codec, which should
    262 // cause SetLocalDescription to fail.
    263 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    264                        NegotiateUnsupportedVideoCodec) {
    265   MakeTypicalPeerConnectionCall("negotiateUnsupportedVideoCodec();");
    266 }
    267 
    268 // This test will modify the SDP offer to use no encryption, which should
    269 // cause SetLocalDescription to fail.
    270 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, NegotiateNonCryptoCall) {
    271   MakeTypicalPeerConnectionCall("negotiateNonCryptoCall();");
    272 }
    273 
    274 // This test can negotiate an SDP offer that includes a b=AS:xx to control
    275 // the bandwidth for audio and video
    276 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, NegotiateOfferWithBLine) {
    277   MakeTypicalPeerConnectionCall("negotiateOfferWithBLine();");
    278 }
    279 
    280 // This test will make a complete PeerConnection-based call using legacy SDP
    281 // settings: GIce, external SDES, and no BUNDLE.
    282 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
    283 // Timing out on ARM linux, see http://crbug.com/240373
    284 #define MAYBE_CanSetupLegacyCall DISABLED_CanSetupLegacyCall
    285 #else
    286 #define MAYBE_CanSetupLegacyCall CanSetupLegacyCall
    287 #endif
    288 
    289 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MAYBE_CanSetupLegacyCall) {
    290   MakeTypicalPeerConnectionCall("callWithLegacySdp();");
    291 }
    292 
    293 // This test will make a PeerConnection-based call and test an unreliable text
    294 // dataChannel.
    295 // TODO(mallinath) - Remove this test after rtp based data channel is disabled.
    296 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, CallWithDataOnly) {
    297   MakeTypicalPeerConnectionCall("callWithDataOnly();");
    298 }
    299 
    300 #if defined(MEMORY_SANITIZER)
    301 // Fails under MemorySanitizer: http://crbug.com/405951
    302 #define MAYBE_CallWithSctpDataOnly DISABLED_CallWithSctpDataOnly
    303 #else
    304 #define MAYBE_CallWithSctpDataOnly CallWithSctpDataOnly
    305 #endif
    306 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MAYBE_CallWithSctpDataOnly) {
    307   MakeTypicalPeerConnectionCall("callWithSctpDataOnly();");
    308 }
    309 
    310 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
    311 // Timing out on ARM linux bot: http://crbug.com/238490
    312 #define MAYBE_CallWithDataAndMedia DISABLED_CallWithDataAndMedia
    313 #else
    314 #define MAYBE_CallWithDataAndMedia CallWithDataAndMedia
    315 #endif
    316 
    317 // This test will make a PeerConnection-based call and test an unreliable text
    318 // dataChannel and audio and video tracks.
    319 // TODO(mallinath) - Remove this test after rtp based data channel is disabled.
    320 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, DISABLED_CallWithDataAndMedia) {
    321   MakeTypicalPeerConnectionCall("callWithDataAndMedia();");
    322 }
    323 
    324 
    325 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && \
    326      defined(ARCH_CPU_ARM_FAMILY)) || defined(MEMORY_SANITIZER)
    327 // Timing out on ARM linux bot: http://crbug.com/238490
    328 // Fails under MemorySanitizer: http://crbug.com/405951
    329 #define MAYBE_CallWithSctpDataAndMedia DISABLED_CallWithSctpDataAndMedia
    330 #else
    331 #define MAYBE_CallWithSctpDataAndMedia CallWithSctpDataAndMedia
    332 #endif
    333 
    334 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    335                        MAYBE_CallWithSctpDataAndMedia) {
    336   MakeTypicalPeerConnectionCall("callWithSctpDataAndMedia();");
    337 }
    338 
    339 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
    340 // Timing out on ARM linux bot: http://crbug.com/238490
    341 #define MAYBE_CallWithDataAndLaterAddMedia DISABLED_CallWithDataAndLaterAddMedia
    342 #else
    343 // Temporarily disable the test on all platforms. http://crbug.com/293252
    344 #define MAYBE_CallWithDataAndLaterAddMedia DISABLED_CallWithDataAndLaterAddMedia
    345 #endif
    346 
    347 // This test will make a PeerConnection-based call and test an unreliable text
    348 // dataChannel and later add an audio and video track.
    349 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    350                        MAYBE_CallWithDataAndLaterAddMedia) {
    351   MakeTypicalPeerConnectionCall("callWithDataAndLaterAddMedia();");
    352 }
    353 
    354 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
    355 // Timing out on ARM linux bot: http://crbug.com/238490
    356 #define MAYBE_CallWithNewVideoMediaStream DISABLED_CallWithNewVideoMediaStream
    357 #else
    358 #define MAYBE_CallWithNewVideoMediaStream CallWithNewVideoMediaStream
    359 #endif
    360 
    361 // This test will make a PeerConnection-based call and send a new Video
    362 // MediaStream that has been created based on a MediaStream created with
    363 // getUserMedia.
    364 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    365                        MAYBE_CallWithNewVideoMediaStream) {
    366   MakeTypicalPeerConnectionCall("callWithNewVideoMediaStream();");
    367 }
    368 
    369 // This test will make a PeerConnection-based call and send a new Video
    370 // MediaStream that has been created based on a MediaStream created with
    371 // getUserMedia. When video is flowing, the VideoTrack is removed and an
    372 // AudioTrack is added instead.
    373 // TODO(phoglund): This test is manual since not all buildbots has an audio
    374 // input.
    375 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, MANUAL_CallAndModifyStream) {
    376   MakeTypicalPeerConnectionCall(
    377       "callWithNewVideoMediaStreamLaterSwitchToAudio();");
    378 }
    379 
    380 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, AddTwoMediaStreamsToOnePC) {
    381   MakeTypicalPeerConnectionCall("addTwoMediaStreamsToOneConnection();");
    382 }
    383 
    384 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    385                        EstablishAudioVideoCallAndEnsureAudioIsPlaying) {
    386   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    387       "callAndEnsureAudioIsPlaying(%s, {audio:true, video:true});",
    388       kUseLenientAudioChecking));
    389 }
    390 
    391 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    392                        EstablishAudioOnlyCallAndEnsureAudioIsPlaying) {
    393   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    394       "callAndEnsureAudioIsPlaying(%s, {audio:true});",
    395       kUseLenientAudioChecking));
    396 }
    397 
    398 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    399                        EstablishAudioVideoCallAndVerifyRemoteMutingWorks) {
    400   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    401       "callAndEnsureRemoteAudioTrackMutingWorks(%s);",
    402       kUseLenientAudioChecking));
    403 }
    404 
    405 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    406                        EstablishAudioVideoCallAndVerifyLocalMutingWorks) {
    407   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    408       "callAndEnsureLocalAudioTrackMutingWorks(%s);",
    409       kUseLenientAudioChecking));
    410 }
    411 
    412 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    413                        EnsureLocalVideoMuteDoesntMuteAudio) {
    414   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    415       "callAndEnsureLocalVideoMutingDoesntMuteAudio(%s);",
    416       kUseLenientAudioChecking));
    417 }
    418 
    419 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    420                        EnsureRemoteVideoMuteDoesntMuteAudio) {
    421   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    422       "callAndEnsureRemoteVideoMutingDoesntMuteAudio(%s);",
    423       kUseLenientAudioChecking));
    424 }
    425 
    426 // Flaky on TSAN v2: http://crbug.com/373637
    427 #if defined(THREAD_SANITIZER)
    428 #define MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks\
    429         DISABLED_EstablishAudioVideoCallAndVerifyUnmutingWorks
    430 #else
    431 #define MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks\
    432         EstablishAudioVideoCallAndVerifyUnmutingWorks
    433 #endif
    434 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest,
    435                        MAYBE_EstablishAudioVideoCallAndVerifyUnmutingWorks) {
    436   MakeAudioDetectingPeerConnectionCall(base::StringPrintf(
    437       "callAndEnsureAudioTrackUnmutingWorks(%s);", kUseLenientAudioChecking));
    438 }
    439 
    440 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, CallAndVerifyVideoMutingWorks) {
    441   MakeTypicalPeerConnectionCall("callAndEnsureVideoTrackMutingWorks();");
    442 }
    443 
    444 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcBrowserTest, CreateOfferWithOfferOptions) {
    445   MakeTypicalPeerConnectionCall("testCreateOfferOptions();");
    446 }
    447 
    448 }  // namespace content
    449