| Index: media/cast/net/rtcp/sender_rtcp_session.cc | 
| diff --git a/media/cast/net/rtcp/sender_rtcp_session.cc b/media/cast/net/rtcp/sender_rtcp_session.cc | 
| index 7a8df42f0ae7ec31005d4ca5fe203315fe9a3ea0..15c568c01fe5ac562d3af96f706dba9f22e4b72f 100644 | 
| --- a/media/cast/net/rtcp/sender_rtcp_session.cc | 
| +++ b/media/cast/net/rtcp/sender_rtcp_session.cc | 
| @@ -68,23 +68,16 @@ std::pair<uint64_t, uint64_t> GetReceiverEventKey( | 
|  | 
| }  // namespace | 
|  | 
| -SenderRtcpSession::SenderRtcpSession( | 
| -    const RtcpCastMessageCallback& cast_callback, | 
| -    const RtcpRttCallback& rtt_callback, | 
| -    const RtcpLogMessageCallback& log_callback, | 
| -    const RtcpPliCallback pli_callback, | 
| -    base::TickClock* clock, | 
| -    PacedPacketSender* packet_sender, | 
| -    uint32_t local_ssrc, | 
| -    uint32_t remote_ssrc) | 
| +SenderRtcpSession::SenderRtcpSession(base::TickClock* clock, | 
| +                                     PacedPacketSender* packet_sender, | 
| +                                     RtcpObserver* observer, | 
| +                                     uint32_t local_ssrc, | 
| +                                     uint32_t remote_ssrc) | 
| : clock_(clock), | 
| packet_sender_(packet_sender), | 
| local_ssrc_(local_ssrc), | 
| remote_ssrc_(remote_ssrc), | 
| -      cast_callback_(cast_callback), | 
| -      rtt_callback_(rtt_callback), | 
| -      log_callback_(log_callback), | 
| -      pli_callback_(pli_callback), | 
| +      rtcp_observer_(observer), | 
| largest_seen_timestamp_(base::TimeTicks::FromInternalValue( | 
| std::numeric_limits<int64_t>::min())), | 
| parser_(local_ssrc, remote_ssrc) {} | 
| @@ -115,10 +108,8 @@ bool SenderRtcpSession::IncomingRtcpPacket(const uint8_t* data, size_t length) { | 
| // Parse this packet. | 
| base::BigEndianReader reader(reinterpret_cast<const char*>(data), length); | 
| if (parser_.Parse(&reader)) { | 
| -    if (parser_.has_picture_loss_indicator()) { | 
| -      if (!pli_callback_.is_null()) | 
| -        pli_callback_.Run(); | 
| -    } | 
| +    if (parser_.has_picture_loss_indicator()) | 
| +      rtcp_observer_->OnReceivedPli(); | 
| if (parser_.has_receiver_reference_time_report()) { | 
| base::TimeTicks t = ConvertNtpToTimeTicks( | 
| parser_.receiver_reference_time_report().ntp_seconds, | 
| @@ -135,7 +126,7 @@ bool SenderRtcpSession::IncomingRtcpPacket(const uint8_t* data, size_t length) { | 
| } | 
| if (parser_.has_receiver_log()) { | 
| if (DedupeReceiverLog(parser_.mutable_receiver_log())) { | 
| -        OnReceivedReceiverLog(parser_.receiver_log()); | 
| +        rtcp_observer_->OnReceivedReceiverLog(parser_.receiver_log()); | 
| } | 
| } | 
| if (parser_.has_last_report()) { | 
| @@ -143,7 +134,7 @@ bool SenderRtcpSession::IncomingRtcpPacket(const uint8_t* data, size_t length) { | 
| parser_.delay_since_last_report()); | 
| } | 
| if (parser_.has_cast_message()) { | 
| -      OnReceivedCastFeedback(parser_.cast_message()); | 
| +      rtcp_observer_->OnReceivedCastMessage(parser_.cast_message()); | 
| } | 
| } | 
| return true; | 
| @@ -169,8 +160,7 @@ void SenderRtcpSession::OnReceivedDelaySinceLastReport( | 
| current_round_trip_time_ = | 
| std::max(current_round_trip_time_, base::TimeDelta::FromMilliseconds(1)); | 
|  | 
| -  if (!rtt_callback_.is_null()) | 
| -    rtt_callback_.Run(current_round_trip_time_); | 
| +  rtcp_observer_->OnReceivedRtt(current_round_trip_time_); | 
| } | 
|  | 
| void SenderRtcpSession::SaveLastSentNtpTime(const base::TimeTicks& now, | 
| @@ -255,19 +245,5 @@ void SenderRtcpSession::SendRtcpReport( | 
| rtcp_builder.BuildRtcpFromSender(sender_info)); | 
| } | 
|  | 
| -void SenderRtcpSession::OnReceivedCastFeedback( | 
| -    const RtcpCastMessage& cast_message) { | 
| -  if (cast_callback_.is_null()) | 
| -    return; | 
| -  cast_callback_.Run(cast_message); | 
| -} | 
| - | 
| -void SenderRtcpSession::OnReceivedReceiverLog( | 
| -    const RtcpReceiverLogMessage& receiver_log) { | 
| -  if (log_callback_.is_null()) | 
| -    return; | 
| -  log_callback_.Run(receiver_log); | 
| -} | 
| - | 
| }  // namespace cast | 
| }  // namespace media | 
|  |