| Index: talk/app/webrtc/webrtcsession_unittest.cc | 
| diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc | 
| index f0558eee3d45c7c25fe9b755960b7030f9ca9a22..f998ca8848c513c3c402170a393aaed3fc906fca 100644 | 
| --- a/talk/app/webrtc/webrtcsession_unittest.cc | 
| +++ b/talk/app/webrtc/webrtcsession_unittest.cc | 
| @@ -70,7 +70,6 @@ | 
| return;                                         \ | 
| } | 
|  | 
| -using cricket::BaseSession; | 
| using cricket::DF_PLAY; | 
| using cricket::DF_SEND; | 
| using cricket::FakeVoiceMediaChannel; | 
| @@ -92,6 +91,7 @@ using webrtc::JsepSessionDescription; | 
| using webrtc::PeerConnectionFactoryInterface; | 
| using webrtc::PeerConnectionInterface; | 
| using webrtc::SessionDescriptionInterface; | 
| +using webrtc::SessionStats; | 
| using webrtc::StreamCollection; | 
| using webrtc::WebRtcSession; | 
| using webrtc::kBundleWithoutRtcpMux; | 
| @@ -857,7 +857,7 @@ class WebRtcSessionTest | 
| session_->MaybeStartGathering(); | 
| } | 
| void SetLocalDescriptionExpectState(SessionDescriptionInterface* desc, | 
| -                                      BaseSession::State expected_state) { | 
| +                                      WebRtcSession::State expected_state) { | 
| SetLocalDescriptionWithoutError(desc); | 
| EXPECT_EQ(expected_state, session_->state()); | 
| } | 
| @@ -885,7 +885,7 @@ class WebRtcSessionTest | 
| EXPECT_TRUE(session_->SetRemoteDescription(desc, NULL)); | 
| } | 
| void SetRemoteDescriptionExpectState(SessionDescriptionInterface* desc, | 
| -                                       BaseSession::State expected_state) { | 
| +                                       WebRtcSession::State expected_state) { | 
| SetRemoteDescriptionWithoutError(desc); | 
| EXPECT_EQ(expected_state, session_->state()); | 
| } | 
| @@ -1946,8 +1946,8 @@ TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteOffer) { | 
| SessionDescriptionInterface* offer = CreateOffer(); | 
| SetLocalDescriptionWithoutError(offer); | 
| offer = CreateOffer(); | 
| -  SetRemoteDescriptionOfferExpectError( | 
| -      "Called in wrong state: STATE_SENTINITIATE", offer); | 
| +  SetRemoteDescriptionOfferExpectError("Called in wrong state: STATE_SENTOFFER", | 
| +                                       offer); | 
| } | 
|  | 
| TEST_F(WebRtcSessionTest, TestSetRemoteAndLocalOffer) { | 
| @@ -1957,44 +1957,44 @@ TEST_F(WebRtcSessionTest, TestSetRemoteAndLocalOffer) { | 
| SetRemoteDescriptionWithoutError(offer); | 
| offer = CreateOffer(); | 
| SetLocalDescriptionOfferExpectError( | 
| -      "Called in wrong state: STATE_RECEIVEDINITIATE", offer); | 
| +      "Called in wrong state: STATE_RECEIVEDOFFER", offer); | 
| } | 
|  | 
| TEST_F(WebRtcSessionTest, TestSetLocalPrAnswer) { | 
| Init(); | 
| SendNothing(); | 
| SessionDescriptionInterface* offer = CreateRemoteOffer(); | 
| -  SetRemoteDescriptionExpectState(offer, BaseSession::STATE_RECEIVEDINITIATE); | 
| +  SetRemoteDescriptionExpectState(offer, WebRtcSession::STATE_RECEIVEDOFFER); | 
|  | 
| JsepSessionDescription* pranswer = static_cast<JsepSessionDescription*>( | 
| CreateAnswer(NULL)); | 
| pranswer->set_type(SessionDescriptionInterface::kPrAnswer); | 
| -  SetLocalDescriptionExpectState(pranswer, BaseSession::STATE_SENTPRACCEPT); | 
| +  SetLocalDescriptionExpectState(pranswer, WebRtcSession::STATE_SENTPRANSWER); | 
|  | 
| SendAudioVideoStream1(); | 
| JsepSessionDescription* pranswer2 = static_cast<JsepSessionDescription*>( | 
| CreateAnswer(NULL)); | 
| pranswer2->set_type(SessionDescriptionInterface::kPrAnswer); | 
|  | 
| -  SetLocalDescriptionExpectState(pranswer2, BaseSession::STATE_SENTPRACCEPT); | 
| +  SetLocalDescriptionExpectState(pranswer2, WebRtcSession::STATE_SENTPRANSWER); | 
|  | 
| SendAudioVideoStream2(); | 
| SessionDescriptionInterface* answer = CreateAnswer(NULL); | 
| -  SetLocalDescriptionExpectState(answer, BaseSession::STATE_SENTACCEPT); | 
| +  SetLocalDescriptionExpectState(answer, WebRtcSession::STATE_INPROGRESS); | 
| } | 
|  | 
| TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { | 
| Init(); | 
| SendNothing(); | 
| SessionDescriptionInterface* offer = CreateOffer(); | 
| -  SetLocalDescriptionExpectState(offer, BaseSession::STATE_SENTINITIATE); | 
| +  SetLocalDescriptionExpectState(offer, WebRtcSession::STATE_SENTOFFER); | 
|  | 
| JsepSessionDescription* pranswer = | 
| CreateRemoteAnswer(session_->local_description()); | 
| pranswer->set_type(SessionDescriptionInterface::kPrAnswer); | 
|  | 
| SetRemoteDescriptionExpectState(pranswer, | 
| -                                  BaseSession::STATE_RECEIVEDPRACCEPT); | 
| +                                  WebRtcSession::STATE_RECEIVEDPRANSWER); | 
|  | 
| SendAudioVideoStream1(); | 
| JsepSessionDescription* pranswer2 = | 
| @@ -2002,12 +2002,12 @@ TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { | 
| pranswer2->set_type(SessionDescriptionInterface::kPrAnswer); | 
|  | 
| SetRemoteDescriptionExpectState(pranswer2, | 
| -                                  BaseSession::STATE_RECEIVEDPRACCEPT); | 
| +                                  WebRtcSession::STATE_RECEIVEDPRANSWER); | 
|  | 
| SendAudioVideoStream2(); | 
| SessionDescriptionInterface* answer = | 
| CreateRemoteAnswer(session_->local_description()); | 
| -  SetRemoteDescriptionExpectState(answer, BaseSession::STATE_RECEIVEDACCEPT); | 
| +  SetRemoteDescriptionExpectState(answer, WebRtcSession::STATE_INPROGRESS); | 
| } | 
|  | 
| TEST_F(WebRtcSessionTest, TestSetLocalAnswerWithoutOffer) { | 
| @@ -2040,21 +2040,24 @@ TEST_F(WebRtcSessionTest, TestAddRemoteCandidate) { | 
| candidate.set_component(1); | 
| JsepIceCandidate ice_candidate1(kMediaContentName0, 0, candidate); | 
|  | 
| -  // Fail since we have not set a offer description. | 
| +  // Fail since we have not set a remote description. | 
| EXPECT_FALSE(session_->ProcessIceMessage(&ice_candidate1)); | 
|  | 
| SessionDescriptionInterface* offer = CreateOffer(); | 
| SetLocalDescriptionWithoutError(offer); | 
| -  // Candidate should be allowed to add before remote description. | 
| -  EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate1)); | 
| -  candidate.set_component(2); | 
| -  JsepIceCandidate ice_candidate2(kMediaContentName0, 0, candidate); | 
| -  EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate2)); | 
| + | 
| +  // Fail since we have not set a remote description. | 
| +  EXPECT_FALSE(session_->ProcessIceMessage(&ice_candidate1)); | 
|  | 
| SessionDescriptionInterface* answer = CreateRemoteAnswer( | 
| session_->local_description()); | 
| SetRemoteDescriptionWithoutError(answer); | 
|  | 
| +  EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate1)); | 
| +  candidate.set_component(2); | 
| +  JsepIceCandidate ice_candidate2(kMediaContentName0, 0, candidate); | 
| +  EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate2)); | 
| + | 
| // Verifying the candidates are copied properly from internal vector. | 
| const SessionDescriptionInterface* remote_desc = | 
| session_->remote_description(); | 
| @@ -2231,8 +2234,9 @@ TEST_F(WebRtcSessionTest, TestChannelCreationsWithContentNames) { | 
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); | 
|  | 
| // CreateOffer creates session description with the content names "audio" and | 
| -  // "video". Goal is to modify these content names and verify transport channel | 
| -  // proxy in the BaseSession, as proxies are created with the content names | 
| +  // "video". Goal is to modify these content names and verify transport | 
| +  // channels | 
| +  // in the WebRtcSession, as channels are created with the content names | 
| // present in SDP. | 
| std::string sdp; | 
| EXPECT_TRUE(offer->ToString(&sdp)); | 
| @@ -2812,7 +2816,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteDescriptionWithIceRestart) { | 
| } | 
|  | 
| // Test that candidates sent to the "video" transport do not get pushed down to | 
| -// the "audio" transport channel when bundling using TransportProxy. | 
| +// the "audio" transport channel when bundling. | 
| TEST_F(WebRtcSessionTest, TestIgnoreCandidatesForUnusedTransportWhenBundling) { | 
| AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); | 
|  | 
| @@ -2837,7 +2841,7 @@ TEST_F(WebRtcSessionTest, TestIgnoreCandidatesForUnusedTransportWhenBundling) { | 
| // Checks if one of the transport channels contains a connection using a given | 
| // port. | 
| auto connection_with_remote_port = [this, voice_channel](int port) { | 
| -    cricket::SessionStats stats; | 
| +    SessionStats stats; | 
| session_->GetChannelTransportStats(voice_channel, &stats); | 
| for (auto& kv : stats.transport_stats) { | 
| for (auto& chan_stat : kv.second.channel_stats) { | 
| @@ -2996,14 +3000,14 @@ TEST_F(WebRtcSessionTest, TestMaxBundleRejectAudio) { | 
| CreateRemoteAnswer(session_->local_description(), recv_options); | 
| SetRemoteDescriptionWithoutError(answer); | 
|  | 
| -  EXPECT_TRUE(NULL == session_->voice_channel()); | 
| -  EXPECT_TRUE(NULL != session_->video_rtp_transport_channel()); | 
| +  EXPECT_TRUE(nullptr == session_->voice_channel()); | 
| +  EXPECT_TRUE(nullptr != session_->video_rtp_transport_channel()); | 
|  | 
| -  session_->Terminate(); | 
| -  EXPECT_TRUE(NULL == session_->voice_rtp_transport_channel()); | 
| -  EXPECT_TRUE(NULL == session_->voice_rtcp_transport_channel()); | 
| -  EXPECT_TRUE(NULL == session_->video_rtp_transport_channel()); | 
| -  EXPECT_TRUE(NULL == session_->video_rtcp_transport_channel()); | 
| +  session_->Close(); | 
| +  EXPECT_TRUE(nullptr == session_->voice_rtp_transport_channel()); | 
| +  EXPECT_TRUE(nullptr == session_->voice_rtcp_transport_channel()); | 
| +  EXPECT_TRUE(nullptr == session_->video_rtp_transport_channel()); | 
| +  EXPECT_TRUE(nullptr == session_->video_rtcp_transport_channel()); | 
| } | 
|  | 
| // kBundlePolicyMaxBundle policy but no BUNDLE in the answer. | 
| @@ -3349,29 +3353,30 @@ TEST_F(WebRtcSessionTest, InsertDtmf) { | 
| expected_duration, expected_flags)); | 
| } | 
|  | 
| -// This test verifies the |initiator| flag when session initiates the call. | 
| +// This test verifies the |initial_offerer| flag when session initiates the | 
| +// call. | 
| TEST_F(WebRtcSessionTest, TestInitiatorFlagAsOriginator) { | 
| Init(); | 
| -  EXPECT_FALSE(session_->initiator()); | 
| +  EXPECT_FALSE(session_->initial_offerer()); | 
| SessionDescriptionInterface* offer = CreateOffer(); | 
| SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); | 
| SetLocalDescriptionWithoutError(offer); | 
| -  EXPECT_TRUE(session_->initiator()); | 
| +  EXPECT_TRUE(session_->initial_offerer()); | 
| SetRemoteDescriptionWithoutError(answer); | 
| -  EXPECT_TRUE(session_->initiator()); | 
| +  EXPECT_TRUE(session_->initial_offerer()); | 
| } | 
|  | 
| -// This test verifies the |initiator| flag when session receives the call. | 
| +// This test verifies the |initial_offerer| flag when session receives the call. | 
| TEST_F(WebRtcSessionTest, TestInitiatorFlagAsReceiver) { | 
| Init(); | 
| -  EXPECT_FALSE(session_->initiator()); | 
| +  EXPECT_FALSE(session_->initial_offerer()); | 
| SessionDescriptionInterface* offer = CreateRemoteOffer(); | 
| SetRemoteDescriptionWithoutError(offer); | 
| SessionDescriptionInterface* answer = CreateAnswer(NULL); | 
|  | 
| -  EXPECT_FALSE(session_->initiator()); | 
| +  EXPECT_FALSE(session_->initial_offerer()); | 
| SetLocalDescriptionWithoutError(answer); | 
| -  EXPECT_FALSE(session_->initiator()); | 
| +  EXPECT_FALSE(session_->initial_offerer()); | 
| } | 
|  | 
| // Verifing local offer and remote answer have matching m-lines as per RFC 3264. | 
| @@ -3583,10 +3588,17 @@ TEST_F(WebRtcSessionTest, TestSessionContentError) { | 
| video_channel_ = media_engine_->GetVideoChannel(0); | 
| video_channel_->set_fail_set_send_codecs(true); | 
|  | 
| -  SendAudioVideoStream2(); | 
| SessionDescriptionInterface* answer = | 
| CreateRemoteAnswer(session_->local_description()); | 
| SetRemoteDescriptionAnswerExpectError("ERROR_CONTENT", answer); | 
| + | 
| +  // Test that after a content error, setting any description will | 
| +  // result in an error. | 
| +  video_channel_->set_fail_set_send_codecs(false); | 
| +  answer = CreateRemoteAnswer(session_->local_description()); | 
| +  SetRemoteDescriptionExpectError("", "ERROR_CONTENT", answer); | 
| +  offer = CreateRemoteOffer(); | 
| +  SetLocalDescriptionExpectError("", "ERROR_CONTENT", offer); | 
| } | 
|  | 
| // Runs the loopback call test with BUNDLE and STUN disabled. | 
| @@ -3620,28 +3632,6 @@ TEST_F(WebRtcSessionTest, TestIceStatesBundle) { | 
| TestLoopbackCall(); | 
| } | 
|  | 
| -TEST_F(WebRtcSessionTest, SetSdpFailedOnSessionError) { | 
| -  Init(); | 
| -  cricket::MediaSessionOptions options; | 
| -  options.recv_video = true; | 
| - | 
| -  cricket::BaseSession::Error error_code = cricket::BaseSession::ERROR_CONTENT; | 
| -  std::string error_code_str = "ERROR_CONTENT"; | 
| -  std::string error_desc = "Fake session error description."; | 
| -  session_->SetError(error_code, error_desc); | 
| - | 
| -  SessionDescriptionInterface* offer = CreateRemoteOffer(options); | 
| -  SessionDescriptionInterface* answer = | 
| -      CreateRemoteAnswer(offer, options); | 
| - | 
| -  std::string action; | 
| -  std::ostringstream session_error_msg; | 
| -  session_error_msg << kSessionError << error_code_str << ". "; | 
| -  session_error_msg << kSessionErrorDesc << error_desc << "."; | 
| -  SetRemoteDescriptionExpectError(action, session_error_msg.str(), offer); | 
| -  SetLocalDescriptionExpectError(action, session_error_msg.str(), answer); | 
| -} | 
| - | 
| TEST_F(WebRtcSessionTest, TestRtpDataChannel) { | 
| constraints_.reset(new FakeConstraints()); | 
| constraints_->AddOptional( | 
|  |