Refactoring: move ownership of RtcEventLog from Call to PeerConnection

This CL is a pure refactoring which should not result in any functinal
changes. It moves ownership of the RtcEventLog from webrtc::Call to the
webrtc::PeerConnection object.

This is done so that we can add RtcEventLog support for ICE events -
which will require the TransportController to have a pointer to the
RtcEventLog. PeerConnection is the closest common owner of both Call and
TransportController (through WebRtcSession).

BUG=webrtc:6393

Review-Url: https://codereview.webrtc.org/2353033005
Cr-Commit-Position: refs/heads/master@{#14578}
diff --git a/webrtc/call/bitrate_estimator_tests.cc b/webrtc/call/bitrate_estimator_tests.cc
index 60e1d8c..80949ba 100644
--- a/webrtc/call/bitrate_estimator_tests.cc
+++ b/webrtc/call/bitrate_estimator_tests.cc
@@ -109,7 +109,7 @@
   virtual void SetUp() {
     AudioState::Config audio_state_config;
     audio_state_config.voice_engine = &mock_voice_engine_;
-    Call::Config config;
+    Call::Config config(&event_log_);
     config.audio_state = AudioState::Create(audio_state_config);
     receiver_call_.reset(Call::Create(config));
     sender_call_.reset(Call::Create(config));
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
index dd08d77..5d6bbab 100644
--- a/webrtc/call/call.cc
+++ b/webrtc/call/call.cc
@@ -109,13 +109,6 @@
   void OnAllocationLimitsChanged(uint32_t min_send_bitrate_bps,
                                  uint32_t max_padding_bitrate_bps) override;
 
-  bool StartEventLog(rtc::PlatformFile log_file,
-                     int64_t max_size_bytes) override {
-    return event_log_->StartLogging(log_file, max_size_bytes);
-  }
-
-  void StopEventLog() override { event_log_->StopLogging(); }
-
  private:
   DeliveryStatus DeliverRtcp(MediaType media_type, const uint8_t* packet,
                              size_t length);
@@ -171,8 +164,7 @@
   std::set<VideoSendStream*> video_send_streams_ GUARDED_BY(send_crit_);
 
   VideoSendStream::RtpStateMap suspended_video_send_ssrcs_;
-
-  std::unique_ptr<webrtc::RtcEventLog> event_log_;
+  webrtc::RtcEventLog* event_log_;
 
   // The following members are only accessed (exclusively) from one thread and
   // from the destructor, and therefore doesn't need any explicit
@@ -237,7 +229,7 @@
       video_network_state_(kNetworkUp),
       receive_crit_(RWLockWrapper::CreateRWLock()),
       send_crit_(RWLockWrapper::CreateRWLock()),
-      event_log_(RtcEventLog::Create(webrtc::Clock::GetRealTimeClock())),
+      event_log_(config.event_log),
       first_packet_sent_ms_(-1),
       received_bytes_per_second_counter_(clock_, nullptr, true),
       received_audio_bytes_per_second_counter_(clock_, nullptr, true),
@@ -249,11 +241,12 @@
       pacer_bitrate_kbps_counter_(clock_, nullptr, true),
       remb_(clock_),
       congestion_controller_(
-          new CongestionController(clock_, this, &remb_, event_log_.get())),
+          new CongestionController(clock_, this, &remb_, event_log_)),
       video_send_delay_stats_(new SendDelayStats(clock_)),
       start_ms_(clock_->TimeInMilliseconds()),
       worker_queue_("call_worker_queue") {
   RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
+  RTC_DCHECK(config.event_log != nullptr);
   RTC_DCHECK_GE(config.bitrate_config.min_bitrate_bps, 0);
   RTC_DCHECK_GE(config.bitrate_config.start_bitrate_bps,
                 config.bitrate_config.min_bitrate_bps);
@@ -261,7 +254,6 @@
     RTC_DCHECK_GE(config.bitrate_config.max_bitrate_bps,
                   config.bitrate_config.start_bitrate_bps);
   }
-
   Trace::CreateTrace();
   call_stats_->RegisterStatsObserver(congestion_controller_.get());
 
@@ -380,7 +372,7 @@
   RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
   AudioSendStream* send_stream = new AudioSendStream(
       config, config_.audio_state, &worker_queue_, congestion_controller_.get(),
-      bitrate_allocator_.get(), event_log_.get());
+      bitrate_allocator_.get(), event_log_);
   {
     WriteLockScoped write_lock(*send_crit_);
     RTC_DCHECK(audio_send_ssrcs_.find(config.rtp.ssrc) ==
@@ -415,9 +407,8 @@
     const webrtc::AudioReceiveStream::Config& config) {
   TRACE_EVENT0("webrtc", "Call::CreateAudioReceiveStream");
   RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
-  AudioReceiveStream* receive_stream =
-      new AudioReceiveStream(congestion_controller_.get(), config,
-                             config_.audio_state, event_log_.get());
+  AudioReceiveStream* receive_stream = new AudioReceiveStream(
+      congestion_controller_.get(), config, config_.audio_state, event_log_);
   {
     WriteLockScoped write_lock(*receive_crit_);
     RTC_DCHECK(audio_receive_ssrcs_.find(config.rtp.remote_ssrc) ==
@@ -470,9 +461,8 @@
   VideoSendStream* send_stream = new VideoSendStream(
       num_cpu_cores_, module_process_thread_.get(), &worker_queue_,
       call_stats_.get(), congestion_controller_.get(), bitrate_allocator_.get(),
-      video_send_delay_stats_.get(), &remb_, event_log_.get(),
-      std::move(config), std::move(encoder_config),
-      suspended_video_send_ssrcs_);
+      video_send_delay_stats_.get(), &remb_, event_log_, std::move(config),
+      std::move(encoder_config), suspended_video_send_ssrcs_);
 
   {
     WriteLockScoped write_lock(*send_crit_);
@@ -887,7 +877,7 @@
     }
   }
 
-  if (event_log_ && rtcp_delivered)
+  if (rtcp_delivered)
     event_log_->LogRtcpPacket(kIncomingPacket, media_type, packet, length);
 
   return rtcp_delivered ? DELIVERY_OK : DELIVERY_PACKET_ERROR;
diff --git a/webrtc/call/call_perf_tests.cc b/webrtc/call/call_perf_tests.cc
index 4324d81..43d7aa5 100644
--- a/webrtc/call/call_perf_tests.cc
+++ b/webrtc/call/call_perf_tests.cc
@@ -19,6 +19,7 @@
 #include "webrtc/call.h"
 #include "webrtc/call/transport_adapter.h"
 #include "webrtc/config.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
 #include "webrtc/modules/audio_coding/include/audio_coding_module.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
@@ -165,9 +166,9 @@
 
   AudioState::Config send_audio_state_config;
   send_audio_state_config.voice_engine = voice_engine;
-  Call::Config sender_config;
+  Call::Config sender_config(&event_log_);
   sender_config.audio_state = AudioState::Create(send_audio_state_config);
-  Call::Config receiver_config;
+  Call::Config receiver_config(&event_log_);
   receiver_config.audio_state = sender_config.audio_state;
   CreateCalls(sender_config, receiver_config);
 
@@ -685,6 +686,7 @@
 
     Call::Config GetSenderCallConfig() override {
       Call::Config config = EndToEndTest::GetSenderCallConfig();
+      config.event_log = &event_log_;
       config.bitrate_config.start_bitrate_bps = kInitialBitrateKbps * 1000;
       return config;
     }
diff --git a/webrtc/call/call_unittest.cc b/webrtc/call/call_unittest.cc
index 2fe4fde..d452927 100644
--- a/webrtc/call/call_unittest.cc
+++ b/webrtc/call/call_unittest.cc
@@ -13,6 +13,7 @@
 
 #include "webrtc/api/call/audio_state.h"
 #include "webrtc/call.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
 #include "webrtc/modules/audio_coding/codecs/mock/mock_audio_decoder_factory.h"
 #include "webrtc/test/gtest.h"
 #include "webrtc/test/mock_voice_engine.h"
@@ -25,7 +26,7 @@
       : voice_engine_(decoder_factory) {
     webrtc::AudioState::Config audio_state_config;
     audio_state_config.voice_engine = &voice_engine_;
-    webrtc::Call::Config config;
+    webrtc::Call::Config config(&event_log_);
     config.audio_state = webrtc::AudioState::Create(audio_state_config);
     call_.reset(webrtc::Call::Create(config));
   }
@@ -34,6 +35,7 @@
 
  private:
   testing::NiceMock<webrtc::test::MockVoiceEngine> voice_engine_;
+  webrtc::RtcEventLogNullImpl event_log_;
   std::unique_ptr<webrtc::Call> call_;
 };
 }  // namespace
diff --git a/webrtc/call/packet_injection_tests.cc b/webrtc/call/packet_injection_tests.cc
index 42f4fae..df19cf3 100644
--- a/webrtc/call/packet_injection_tests.cc
+++ b/webrtc/call/packet_injection_tests.cc
@@ -10,6 +10,7 @@
 
 #include <memory>
 
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
 #include "webrtc/test/call_test.h"
 #include "webrtc/test/gtest.h"
 #include "webrtc/test/null_transport.h"
@@ -37,8 +38,8 @@
                                                 uint8_t payload_type,
                                                 const uint8_t* packet,
                                                 size_t length) {
-  CreateSenderCall(Call::Config());
-  CreateReceiverCall(Call::Config());
+  CreateSenderCall(Call::Config(&event_log_));
+  CreateReceiverCall(Call::Config(&event_log_));
 
   test::NullTransport null_transport;
   CreateSendConfig(1, 0, &null_transport);
diff --git a/webrtc/call/rampup_tests.cc b/webrtc/call/rampup_tests.cc
index 0199cc8..df64f41 100644
--- a/webrtc/call/rampup_tests.cc
+++ b/webrtc/call/rampup_tests.cc
@@ -68,7 +68,7 @@
 }
 
 Call::Config RampUpTester::GetSenderCallConfig() {
-  Call::Config call_config;
+  Call::Config call_config(&event_log_);
   if (start_bitrate_bps_ != 0) {
     call_config.bitrate_config.start_bitrate_bps = start_bitrate_bps_;
   }
@@ -382,7 +382,7 @@
 }
 
 Call::Config RampUpDownUpTester::GetReceiverCallConfig() {
-  Call::Config config;
+  Call::Config config(&event_log_);
   config.bitrate_config.min_bitrate_bps = 10000;
   return config;
 }
diff --git a/webrtc/call/rampup_tests.h b/webrtc/call/rampup_tests.h
index f3779e2..da1ca74 100644
--- a/webrtc/call/rampup_tests.h
+++ b/webrtc/call/rampup_tests.h
@@ -17,6 +17,7 @@
 
 #include "webrtc/base/event.h"
 #include "webrtc/call.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
 #include "webrtc/test/call_test.h"
 
 namespace webrtc {
@@ -57,6 +58,7 @@
                     const std::string& units) const;
   void TriggerTestDone();
 
+  webrtc::RtcEventLogNullImpl event_log_;
   rtc::Event event_;
   Clock* const clock_;
   FakeNetworkPipe::Config forward_transport_config_;