| Index: webrtc/pc/statscollector_unittest.cc | 
| diff --git a/webrtc/pc/statscollector_unittest.cc b/webrtc/pc/statscollector_unittest.cc | 
| index e9a2c5c9d56deddf7dc48b563ce391b0b688a6a8..165457c9c82493b1e181c4f36958e5c724f969a8 100644 | 
| --- a/webrtc/pc/statscollector_unittest.cc | 
| +++ b/webrtc/pc/statscollector_unittest.cc | 
| @@ -900,8 +900,75 @@ TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { | 
| EXPECT_EQ(kBytesSentString, result); | 
| } | 
|  | 
| -// Test that BWE information is reported via stats. | 
| -TEST_F(StatsCollectorTest, BandwidthEstimationInfoIsReported) { | 
| +// Test that audio BWE information is reported via stats. | 
| +TEST_F(StatsCollectorTest, AudioBandwidthEstimationInfoIsReported) { | 
| +  StatsCollectorForTest stats(&pc_); | 
| + | 
| +  EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 
| +      .WillRepeatedly(Return(false)); | 
| +  EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 
| +      .WillRepeatedly(Return(nullptr)); | 
| + | 
| +  const char kAudioChannelName[] = "audio"; | 
| + | 
| +  InitSessionStats(kAudioChannelName); | 
| +  EXPECT_CALL(session_, GetStats(_)) | 
| +      .WillRepeatedly(Invoke([this](const ChannelNamePairs&) { | 
| +        return std::unique_ptr<SessionStats>(new SessionStats(session_stats_)); | 
| +      })); | 
| + | 
| +  MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 
| +  cricket::VoiceChannel voice_channel( | 
| +      worker_thread_, network_thread_, nullptr, nullptr, media_channel, | 
| +      kAudioChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); | 
| + | 
| +  StatsReports reports;  // returned values. | 
| +  cricket::VoiceSenderInfo voice_sender_info; | 
| +  cricket::VoiceMediaInfo stats_read; | 
| +  // Set up an SSRC just to test that we get both kinds of stats back: SSRC and | 
| +  // BWE. | 
| +  const int64_t kBytesSent = 12345678901234LL; | 
| +  const std::string kBytesSentString("12345678901234"); | 
| + | 
| +  AddOutgoingAudioTrackStats(); | 
| +  stats.AddStream(stream_); | 
| + | 
| +  // Construct a stats value to read. | 
| +  voice_sender_info.add_ssrc(1234); | 
| +  voice_sender_info.bytes_sent = kBytesSent; | 
| +  stats_read.senders.push_back(voice_sender_info); | 
| + | 
| +  webrtc::Call::Stats call_stats; | 
| +  const int kSendBandwidth = 1234567; | 
| +  const int kRecvBandwidth = 12345678; | 
| +  const int kPacerDelay = 123; | 
| +  call_stats.send_bandwidth_bps = kSendBandwidth; | 
| +  call_stats.recv_bandwidth_bps = kRecvBandwidth; | 
| +  call_stats.pacer_delay_ms = kPacerDelay; | 
| +  EXPECT_CALL(session_, GetCallStats()).WillRepeatedly(Return(call_stats)); | 
| +  EXPECT_CALL(session_, voice_channel()).WillRepeatedly(Return(&voice_channel)); | 
| +  EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); | 
| +  EXPECT_CALL(*media_channel, GetStats(_)) | 
| +      .WillOnce(DoAll(SetArgPointee<0>(stats_read), Return(true))); | 
| + | 
| +  stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 
| +  stats.GetStats(NULL, &reports); | 
| +  std::string result = | 
| +      ExtractSsrcStatsValue(reports, StatsReport::kStatsValueNameBytesSent); | 
| +  EXPECT_EQ(kBytesSentString, result); | 
| +  result = ExtractBweStatsValue( | 
| +      reports, StatsReport::kStatsValueNameAvailableSendBandwidth); | 
| +  EXPECT_EQ(rtc::ToString(kSendBandwidth), result); | 
| +  result = ExtractBweStatsValue( | 
| +      reports, StatsReport::kStatsValueNameAvailableReceiveBandwidth); | 
| +  EXPECT_EQ(rtc::ToString(kRecvBandwidth), result); | 
| +  result = | 
| +      ExtractBweStatsValue(reports, StatsReport::kStatsValueNameBucketDelay); | 
| +  EXPECT_EQ(rtc::ToString(kPacerDelay), result); | 
| +} | 
| + | 
| +// Test that video BWE information is reported via stats. | 
| +TEST_F(StatsCollectorTest, VideoBandwidthEstimationInfoIsReported) { | 
| StatsCollectorForTest stats(&pc_); | 
|  | 
| EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 
|  |