Reland "Rewrite WebRtcSession BUNDLE tests as PeerConnection tests"

This is a reland of b49b66109ea8a0a33a3192ebccf91366af2e49ae.

Original change's description:
> Rewrite WebRtcSession BUNDLE tests as PeerConnection tests
> 
> Bug: webrtc:8222
> Change-Id: Id47e4544dc073564ad7e63d02865ca80dd5a85ff
> Reviewed-on: https://webrtc-review.googlesource.com/8280
> Commit-Queue: Steve Anton <steveanton@webrtc.org>
> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20365}

Bug: webrtc:8222
Change-Id: If3dcd8090875c641881e2b9e92fc1db387ba1de5
Reviewed-on: https://webrtc-review.googlesource.com/14400
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20397}
diff --git a/pc/peerconnection_integrationtest.cc b/pc/peerconnection_integrationtest.cc
index 9453567..d38433c 100644
--- a/pc/peerconnection_integrationtest.cc
+++ b/pc/peerconnection_integrationtest.cc
@@ -291,6 +291,9 @@
   ice_connection_state_history() const {
     return ice_connection_state_history_;
   }
+  void clear_ice_connection_state_history() {
+    ice_connection_state_history_.clear();
+  }
 
   // Every ICE gathering state in order that has been seen by the observer.
   std::vector<PeerConnectionInterface::IceGatheringState>
@@ -3082,6 +3085,31 @@
       kMaxWaitForFramesMs);
 }
 
+// With a max bundle policy and RTCP muxing, adding a new media description to
+// the connection should not affect ICE at all because the new media will use
+// the existing connection.
+TEST_F(PeerConnectionIntegrationTest,
+       AddMediaToConnectedBundleDoesNotRestartIce) {
+  PeerConnectionInterface::RTCConfiguration config;
+  config.bundle_policy = PeerConnectionInterface::kBundlePolicyMaxBundle;
+  config.rtcp_mux_policy = PeerConnectionInterface::kRtcpMuxPolicyRequire;
+  ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(
+      config, PeerConnectionInterface::RTCConfiguration()));
+  ConnectFakeSignaling();
+
+  caller()->AddAudioOnlyMediaStream();
+  caller()->CreateAndSetAndSignalOffer();
+  ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
+
+  caller()->clear_ice_connection_state_history();
+
+  caller()->AddVideoOnlyMediaStream();
+  caller()->CreateAndSetAndSignalOffer();
+  ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
+
+  EXPECT_EQ(0u, caller()->ice_connection_state_history().size());
+}
+
 // This test sets up a call between two parties with audio and video. It then
 // renegotiates setting the video m-line to "port 0", then later renegotiates
 // again, enabling video.