Home | History | Annotate | Download | only in media
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <string>
      6 
      7 #include "base/bind.h"
      8 #include "base/message_loop/message_loop.h"
      9 #include "chrome/renderer/media/chrome_webrtc_log_message_delegate.h"
     10 #include "chrome/renderer/media/mock_webrtc_logging_message_filter.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 
     13 TEST(ChromeWebRtcLogMessageDelegateTest, Basic) {
     14   const char kTestString[] = "abcdefghijklmnopqrstuvwxyz";
     15   base::MessageLoopForIO message_loop;
     16   scoped_refptr<MockWebRtcLoggingMessageFilter> log_message_filter(
     17       new MockWebRtcLoggingMessageFilter(message_loop.message_loop_proxy()));
     18   // Run message loop to initialize delegate.
     19   // TODO(vrk): Fix this so that we can construct a delegate without needing to
     20   // construct a message filter.
     21   message_loop.RunUntilIdle();
     22 
     23   ChromeWebRtcLogMessageDelegate* log_message_delegate =
     24       log_message_filter->log_message_delegate();
     25 
     26   // Start logging on the IO loop.
     27   message_loop.message_loop_proxy()->PostTask(
     28       FROM_HERE, base::Bind(
     29           &ChromeWebRtcLogMessageDelegate::OnStartLogging,
     30           base::Unretained(log_message_delegate)));
     31 
     32   // These log messages should be added to the log buffer outside of the IO
     33   // loop.
     34   log_message_delegate->LogMessage(kTestString);
     35   log_message_delegate->LogMessage(kTestString);
     36 
     37   // Stop logging on IO loop.
     38   message_loop.message_loop_proxy()->PostTask(
     39       FROM_HERE, base::Bind(
     40           &ChromeWebRtcLogMessageDelegate::OnStopLogging,
     41           base::Unretained(log_message_delegate)));
     42 
     43   // This log message should not be added to the log buffer.
     44   log_message_delegate->LogMessage(kTestString);
     45 
     46   message_loop.RunUntilIdle();
     47 
     48   // Size is calculated as (sizeof(kTestString) - 1 for terminating null
     49   // + 1 for eol added for each log message in LogMessage) * 2.
     50   const uint32 kExpectedSize = sizeof(kTestString) * 2;
     51   EXPECT_EQ(kExpectedSize, log_message_filter->log_buffer_.size());
     52 
     53   std::string ref_output = kTestString;
     54   ref_output.append("\n");
     55   ref_output.append(kTestString);
     56   ref_output.append("\n");
     57   EXPECT_STREQ(ref_output.c_str(), log_message_filter->log_buffer_.c_str());
     58 }
     59