OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 "net/test/scoped_mock_log.h" | |
6 | |
7 #include "base/logging.h" | |
8 | |
9 namespace net { | |
10 namespace test { | |
11 | |
12 // static | |
13 ScopedMockLog* ScopedMockLog::g_instance_ = NULL; | |
14 | |
15 ScopedMockLog::ScopedMockLog() : is_capturing_logs_(false) {} | |
16 | |
17 ScopedMockLog::~ScopedMockLog() { | |
18 if (is_capturing_logs_) { | |
19 StopCapturingLogs(); | |
20 } | |
21 } | |
22 | |
23 void ScopedMockLog::StartCapturingLogs() { | |
24 // We don't use CHECK(), which can generate a new LOG message, and | |
25 // thus can confuse ScopedMockLog objects or other registered | |
26 // LogSinks. | |
27 RAW_CHECK(!is_capturing_logs_); | |
28 RAW_CHECK(!g_instance_); | |
29 | |
30 is_capturing_logs_ = true; | |
31 g_instance_ = this; | |
32 previous_handler_ = logging::GetLogMessageHandler(); | |
33 logging::SetLogMessageHandler(LogMessageHandler); | |
34 } | |
35 | |
36 void ScopedMockLog::StopCapturingLogs() { | |
37 // We don't use CHECK(), which can generate a new LOG message, and | |
38 // thus can confuse ScopedMockLog objects or other registered | |
39 // LogSinks. | |
40 RAW_CHECK(is_capturing_logs_); | |
41 RAW_CHECK(g_instance_ == this); | |
42 | |
43 is_capturing_logs_ = false; | |
44 logging::SetLogMessageHandler(previous_handler_); | |
45 g_instance_ = NULL; | |
46 } | |
47 | |
48 // static | |
49 bool ScopedMockLog::LogMessageHandler(int severity, | |
50 const char* file, | |
51 int line, | |
52 size_t message_start, | |
53 const std::string& str) { | |
54 return g_instance_->Log(severity, file, line, message_start, str); | |
55 } | |
56 | |
57 } // namespace test | |
58 } // namespace net | |
OLD | NEW |