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 13TEST(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