Adds new DisableAndEnableAudioRecording integration test to Peerconnection.

Follow-up on https://webrtc-review.googlesource.com/c/src/+/17784.
Adds a new PC integration test using the newly added StartRecording API.

Bug: webrtc:7313
Change-Id: Ibd59910ca5d8f8ac96cfb891f41039759a18b6f6
Reviewed-on: https://webrtc-review.googlesource.com/17940
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20549}
diff --git a/pc/peerconnection_integrationtest.cc b/pc/peerconnection_integrationtest.cc
index 305ed94..c10186a 100644
--- a/pc/peerconnection_integrationtest.cc
+++ b/pc/peerconnection_integrationtest.cc
@@ -3634,6 +3634,37 @@
   EXPECT_TRUE_WAIT(GetAudioEnergyStat(caller()) > 0, kMaxWaitForFramesMs);
 }
 
+// Test that SetAudioRecording can be used to disable audio recording from the
+// start, then later enable it. This may be useful, for example, if the caller
+// wants to ensure that no audio resources are active before a certain state
+// is reached.
+TEST_F(PeerConnectionIntegrationTest, DisableAndEnableAudioRecording) {
+  ASSERT_TRUE(CreatePeerConnectionWrappers());
+  ConnectFakeSignaling();
+
+  // Set up audio-only call where audio recording is disabled on caller's side.
+  caller()->pc()->SetAudioRecording(false);
+  caller()->AddAudioOnlyMediaStream();
+  callee()->AddAudioOnlyMediaStream();
+  caller()->CreateAndSetAndSignalOffer();
+  ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
+
+  // Pump messages for a second.
+  WAIT(false, 1000);
+  // Since caller has disabled audio recording, the callee shouldn't have
+  // received anything.
+  EXPECT_EQ(0, callee()->audio_frames_received());
+  // As a sanity check, make sure the caller did still see frames on its
+  // audio level since audio recording is enabled on the calle side.
+  ASSERT_GT(caller()->audio_frames_received(), 0);
+
+  // Enable audio recording again, and ensure audio starts flowing.
+  caller()->pc()->SetAudioRecording(true);
+  ExpectNewFramesReceivedWithWait(kDefaultExpectedAudioFrameCount, 0,
+                                  kDefaultExpectedAudioFrameCount, 0,
+                                  kMaxWaitForFramesMs);
+}
+
 }  // namespace
 
 #endif  // if !defined(THREAD_SANITIZER)