OLD | NEW |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/test/trace_to_file.h" | 5 #include "base/test/trace_to_file.h" |
6 | 6 |
7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 BeginTracing(path, filter); | 44 BeginTracing(path, filter); |
45 } | 45 } |
46 | 46 |
47 void TraceToFile::BeginTracing(const FilePath& path, | 47 void TraceToFile::BeginTracing(const FilePath& path, |
48 const std::string& categories) { | 48 const std::string& categories) { |
49 DCHECK(!started_); | 49 DCHECK(!started_); |
50 started_ = true; | 50 started_ = true; |
51 path_ = path; | 51 path_ = path; |
52 WriteFileHeader(); | 52 WriteFileHeader(); |
53 | 53 |
54 debug::TraceLog::GetInstance()->SetEnabled( | 54 trace_event::TraceLog::GetInstance()->SetEnabled( |
55 debug::CategoryFilter(categories), | 55 trace_event::CategoryFilter(categories), |
56 debug::TraceLog::RECORDING_MODE, | 56 trace_event::TraceLog::RECORDING_MODE, |
57 debug::TraceOptions(debug::RECORD_UNTIL_FULL)); | 57 trace_event::TraceOptions(trace_event::RECORD_UNTIL_FULL)); |
58 } | 58 } |
59 | 59 |
60 void TraceToFile::WriteFileHeader() { | 60 void TraceToFile::WriteFileHeader() { |
61 const char str[] = "{\"traceEvents\": ["; | 61 const char str[] = "{\"traceEvents\": ["; |
62 WriteFile(path_, str, static_cast<int>(strlen(str))); | 62 WriteFile(path_, str, static_cast<int>(strlen(str))); |
63 } | 63 } |
64 | 64 |
65 void TraceToFile::AppendFileFooter() { | 65 void TraceToFile::AppendFileFooter() { |
66 const char str[] = "]}"; | 66 const char str[] = "]}"; |
67 AppendToFile(path_, str, static_cast<int>(strlen(str))); | 67 AppendToFile(path_, str, static_cast<int>(strlen(str))); |
68 } | 68 } |
69 | 69 |
70 void TraceToFile::TraceOutputCallback(const std::string& data) { | 70 void TraceToFile::TraceOutputCallback(const std::string& data) { |
71 bool ret = AppendToFile(path_, data.c_str(), static_cast<int>(data.size())); | 71 bool ret = AppendToFile(path_, data.c_str(), static_cast<int>(data.size())); |
72 DCHECK(ret); | 72 DCHECK(ret); |
73 } | 73 } |
74 | 74 |
75 static void OnTraceDataCollected( | 75 static void OnTraceDataCollected( |
76 Closure quit_closure, | 76 Closure quit_closure, |
77 debug::TraceResultBuffer* buffer, | 77 trace_event::TraceResultBuffer* buffer, |
78 const scoped_refptr<RefCountedString>& json_events_str, | 78 const scoped_refptr<RefCountedString>& json_events_str, |
79 bool has_more_events) { | 79 bool has_more_events) { |
80 buffer->AddFragment(json_events_str->data()); | 80 buffer->AddFragment(json_events_str->data()); |
81 if (!has_more_events) | 81 if (!has_more_events) |
82 quit_closure.Run(); | 82 quit_closure.Run(); |
83 } | 83 } |
84 | 84 |
85 void TraceToFile::EndTracingIfNeeded() { | 85 void TraceToFile::EndTracingIfNeeded() { |
86 if (!started_) | 86 if (!started_) |
87 return; | 87 return; |
88 started_ = false; | 88 started_ = false; |
89 | 89 |
90 debug::TraceLog::GetInstance()->SetDisabled(); | 90 trace_event::TraceLog::GetInstance()->SetDisabled(); |
91 | 91 |
92 debug::TraceResultBuffer buffer; | 92 trace_event::TraceResultBuffer buffer; |
93 buffer.SetOutputCallback( | 93 buffer.SetOutputCallback( |
94 Bind(&TraceToFile::TraceOutputCallback, Unretained(this))); | 94 Bind(&TraceToFile::TraceOutputCallback, Unretained(this))); |
95 | 95 |
96 RunLoop run_loop; | 96 RunLoop run_loop; |
97 debug::TraceLog::GetInstance()->Flush( | 97 trace_event::TraceLog::GetInstance()->Flush( |
98 Bind(&OnTraceDataCollected, run_loop.QuitClosure(), Unretained(&buffer))); | 98 Bind(&OnTraceDataCollected, run_loop.QuitClosure(), Unretained(&buffer))); |
99 run_loop.Run(); | 99 run_loop.Run(); |
100 | 100 |
101 AppendFileFooter(); | 101 AppendFileFooter(); |
102 } | 102 } |
103 | 103 |
104 } // namespace test | 104 } // namespace test |
105 } // namespace base | 105 } // namespace base |
OLD | NEW |