OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
7 #include "content/browser/tracing/tracing_controller_impl.h" | 7 #include "content/browser/tracing/tracing_controller_impl.h" |
8 #include "content/public/test/browser_test_utils.h" | 8 #include "content/public/test/browser_test_utils.h" |
9 #include "content/shell/browser/shell.h" | 9 #include "content/shell/browser/shell.h" |
10 #include "content/test/content_browser_test.h" | 10 #include "content/test/content_browser_test.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 EXPECT_TRUE(categories.size() > 0); | 40 EXPECT_TRUE(categories.size() > 0); |
41 quit_callback.Run(); | 41 quit_callback.Run(); |
42 } | 42 } |
43 | 43 |
44 void EnableRecordingDoneCallbackTest(base::Closure quit_callback) { | 44 void EnableRecordingDoneCallbackTest(base::Closure quit_callback) { |
45 enable_recording_done_callback_count_++; | 45 enable_recording_done_callback_count_++; |
46 quit_callback.Run(); | 46 quit_callback.Run(); |
47 } | 47 } |
48 | 48 |
49 void DisableRecordingDoneCallbackTest(base::Closure quit_callback, | 49 void DisableRecordingDoneCallbackTest(base::Closure quit_callback, |
50 scoped_ptr<base::FilePath> file_path) { | 50 const base::FilePath& file_path) { |
51 disable_recording_done_callback_count_++; | 51 disable_recording_done_callback_count_++; |
52 EXPECT_TRUE(PathExists(*file_path)); | 52 EXPECT_TRUE(PathExists(file_path)); |
53 int64 file_size; | 53 int64 file_size; |
54 file_util::GetFileSize(*file_path, &file_size); | 54 file_util::GetFileSize(file_path, &file_size); |
55 EXPECT_TRUE(file_size > 0); | 55 EXPECT_TRUE(file_size > 0); |
56 quit_callback.Run(); | 56 quit_callback.Run(); |
| 57 last_actual_recording_file_path_ = file_path; |
57 } | 58 } |
58 | 59 |
59 void EnableMonitoringDoneCallbackTest(base::Closure quit_callback) { | 60 void EnableMonitoringDoneCallbackTest(base::Closure quit_callback) { |
60 enable_monitoring_done_callback_count_++; | 61 enable_monitoring_done_callback_count_++; |
61 quit_callback.Run(); | 62 quit_callback.Run(); |
62 } | 63 } |
63 | 64 |
64 void DisableMonitoringDoneCallbackTest(base::Closure quit_callback) { | 65 void DisableMonitoringDoneCallbackTest(base::Closure quit_callback) { |
65 disable_monitoring_done_callback_count_++; | 66 disable_monitoring_done_callback_count_++; |
66 quit_callback.Run(); | 67 quit_callback.Run(); |
67 } | 68 } |
68 | 69 |
69 void CaptureMonitoringSnapshotDoneCallbackTest( | 70 void CaptureMonitoringSnapshotDoneCallbackTest( |
70 base::Closure quit_callback, scoped_ptr<base::FilePath> file_path) { | 71 base::Closure quit_callback, const base::FilePath& file_path) { |
71 capture_monitoring_snapshot_done_callback_count_++; | 72 capture_monitoring_snapshot_done_callback_count_++; |
72 EXPECT_TRUE(PathExists(*file_path)); | 73 EXPECT_TRUE(PathExists(file_path)); |
73 int64 file_size; | 74 int64 file_size; |
74 file_util::GetFileSize(*file_path, &file_size); | 75 file_util::GetFileSize(file_path, &file_size); |
75 EXPECT_TRUE(file_size > 0); | 76 EXPECT_TRUE(file_size > 0); |
76 quit_callback.Run(); | 77 quit_callback.Run(); |
| 78 last_actual_monitoring_file_path_ = file_path; |
77 } | 79 } |
78 | 80 |
79 int get_categories_done_callback_count() const { | 81 int get_categories_done_callback_count() const { |
80 return get_categories_done_callback_count_; | 82 return get_categories_done_callback_count_; |
81 } | 83 } |
82 | 84 |
83 int enable_recording_done_callback_count() const { | 85 int enable_recording_done_callback_count() const { |
84 return enable_recording_done_callback_count_; | 86 return enable_recording_done_callback_count_; |
85 } | 87 } |
86 | 88 |
87 int disable_recording_done_callback_count() const { | 89 int disable_recording_done_callback_count() const { |
88 return disable_recording_done_callback_count_; | 90 return disable_recording_done_callback_count_; |
89 } | 91 } |
90 | 92 |
91 int enable_monitoring_done_callback_count() const { | 93 int enable_monitoring_done_callback_count() const { |
92 return enable_monitoring_done_callback_count_; | 94 return enable_monitoring_done_callback_count_; |
93 } | 95 } |
94 | 96 |
95 int disable_monitoring_done_callback_count() const { | 97 int disable_monitoring_done_callback_count() const { |
96 return disable_monitoring_done_callback_count_; | 98 return disable_monitoring_done_callback_count_; |
97 } | 99 } |
98 | 100 |
99 int capture_monitoring_snapshot_done_callback_count() const { | 101 int capture_monitoring_snapshot_done_callback_count() const { |
100 return capture_monitoring_snapshot_done_callback_count_; | 102 return capture_monitoring_snapshot_done_callback_count_; |
101 } | 103 } |
102 | 104 |
| 105 base::FilePath last_actual_recording_file_path() const { |
| 106 return last_actual_recording_file_path_; |
| 107 } |
| 108 |
| 109 base::FilePath last_actual_monitoring_file_path() const { |
| 110 return last_actual_monitoring_file_path_; |
| 111 } |
| 112 |
| 113 void TestEnableAndDisableRecording(const base::FilePath& result_file_path) { |
| 114 Navigate(shell()); |
| 115 |
| 116 TracingController* controller = TracingController::GetInstance(); |
| 117 |
| 118 { |
| 119 base::RunLoop run_loop; |
| 120 TracingController::EnableRecordingDoneCallback callback = |
| 121 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 122 base::Unretained(this), |
| 123 run_loop.QuitClosure()); |
| 124 bool result = controller->EnableRecording( |
| 125 base::debug::CategoryFilter(""), TracingController::Options(), |
| 126 callback); |
| 127 EXPECT_TRUE(result); |
| 128 run_loop.Run(); |
| 129 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 130 } |
| 131 |
| 132 { |
| 133 base::RunLoop run_loop; |
| 134 TracingController::TracingFileResultCallback callback = |
| 135 base::Bind(&TracingControllerTest::DisableRecordingDoneCallbackTest, |
| 136 base::Unretained(this), |
| 137 run_loop.QuitClosure()); |
| 138 bool result = controller->DisableRecording(result_file_path, callback); |
| 139 EXPECT_TRUE(result); |
| 140 run_loop.Run(); |
| 141 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 142 } |
| 143 } |
| 144 |
| 145 void TestEnableCaptureAndDisableMonitoring( |
| 146 const base::FilePath& result_file_path) { |
| 147 Navigate(shell()); |
| 148 |
| 149 TracingController* controller = TracingController::GetInstance(); |
| 150 |
| 151 { |
| 152 base::RunLoop run_loop; |
| 153 TracingController::EnableMonitoringDoneCallback callback = |
| 154 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, |
| 155 base::Unretained(this), |
| 156 run_loop.QuitClosure()); |
| 157 bool result = controller->EnableMonitoring( |
| 158 base::debug::CategoryFilter(""), TracingController::ENABLE_SAMPLING, |
| 159 callback); |
| 160 EXPECT_TRUE(result); |
| 161 run_loop.Run(); |
| 162 EXPECT_EQ(enable_monitoring_done_callback_count(), 1); |
| 163 } |
| 164 |
| 165 { |
| 166 base::RunLoop run_loop; |
| 167 TracingController::TracingFileResultCallback callback = |
| 168 base::Bind(&TracingControllerTest:: |
| 169 CaptureMonitoringSnapshotDoneCallbackTest, |
| 170 base::Unretained(this), |
| 171 run_loop.QuitClosure()); |
| 172 controller->CaptureMonitoringSnapshot(result_file_path, callback); |
| 173 run_loop.Run(); |
| 174 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1); |
| 175 } |
| 176 |
| 177 { |
| 178 base::RunLoop run_loop; |
| 179 TracingController::DisableMonitoringDoneCallback callback = |
| 180 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest, |
| 181 base::Unretained(this), |
| 182 run_loop.QuitClosure()); |
| 183 bool result = controller->DisableMonitoring(callback); |
| 184 EXPECT_TRUE(result); |
| 185 run_loop.Run(); |
| 186 EXPECT_EQ(disable_monitoring_done_callback_count(), 1); |
| 187 } |
| 188 } |
| 189 |
103 private: | 190 private: |
104 int get_categories_done_callback_count_; | 191 int get_categories_done_callback_count_; |
105 int enable_recording_done_callback_count_; | 192 int enable_recording_done_callback_count_; |
106 int disable_recording_done_callback_count_; | 193 int disable_recording_done_callback_count_; |
107 int enable_monitoring_done_callback_count_; | 194 int enable_monitoring_done_callback_count_; |
108 int disable_monitoring_done_callback_count_; | 195 int disable_monitoring_done_callback_count_; |
109 int capture_monitoring_snapshot_done_callback_count_; | 196 int capture_monitoring_snapshot_done_callback_count_; |
| 197 base::FilePath last_actual_recording_file_path_; |
| 198 base::FilePath last_actual_monitoring_file_path_; |
110 }; | 199 }; |
111 | 200 |
112 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { | 201 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { |
113 Navigate(shell()); | 202 Navigate(shell()); |
114 | 203 |
115 TracingController* controller = TracingController::GetInstance(); | 204 TracingController* controller = TracingController::GetInstance(); |
116 | 205 |
117 base::RunLoop run_loop; | 206 base::RunLoop run_loop; |
118 TracingController::GetCategoriesDoneCallback callback = | 207 TracingController::GetCategoriesDoneCallback callback = |
119 base::Bind(&TracingControllerTest::GetCategoriesDoneCallbackTest, | 208 base::Bind(&TracingControllerTest::GetCategoriesDoneCallbackTest, |
120 base::Unretained(this), | 209 base::Unretained(this), |
121 run_loop.QuitClosure()); | 210 run_loop.QuitClosure()); |
122 controller->GetCategories(callback); | 211 controller->GetCategories(callback); |
123 run_loop.Run(); | 212 run_loop.Run(); |
124 EXPECT_EQ(get_categories_done_callback_count(), 1); | 213 EXPECT_EQ(get_categories_done_callback_count(), 1); |
125 } | 214 } |
126 | 215 |
127 IN_PROC_BROWSER_TEST_F(TracingControllerTest, EnableAndDisableRecording) { | 216 IN_PROC_BROWSER_TEST_F(TracingControllerTest, EnableAndDisableRecording) { |
| 217 TestEnableAndDisableRecording(base::FilePath()); |
| 218 } |
| 219 |
| 220 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 221 EnableAndDisableRecordingWithFilePath) { |
| 222 base::FilePath file_path; |
| 223 file_util::CreateTemporaryFile(&file_path); |
| 224 TestEnableAndDisableRecording(file_path); |
| 225 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value()); |
| 226 } |
| 227 |
| 228 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 229 EnableAndDisableRecordingWithEmptyFileAndNullCallback) { |
128 Navigate(shell()); | 230 Navigate(shell()); |
129 | 231 |
130 TracingController* controller = TracingController::GetInstance(); | 232 TracingController* controller = TracingController::GetInstance(); |
131 | 233 EXPECT_TRUE(controller->EnableRecording( |
132 { | 234 base::debug::CategoryFilter(""), TracingController::Options(), |
133 base::RunLoop run_loop; | 235 TracingController::EnableRecordingDoneCallback())); |
134 TracingController::EnableRecordingDoneCallback callback = | 236 EXPECT_TRUE(controller->DisableRecording( |
135 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 237 base::FilePath(), TracingController::TracingFileResultCallback())); |
136 base::Unretained(this), | 238 base::RunLoop().RunUntilIdle(); |
137 run_loop.QuitClosure()); | |
138 bool result = controller->EnableRecording(base::debug::CategoryFilter("*"), | |
139 TracingController::Options(), callback); | |
140 EXPECT_TRUE(result); | |
141 run_loop.Run(); | |
142 EXPECT_EQ(enable_recording_done_callback_count(), 1); | |
143 } | |
144 | |
145 { | |
146 base::RunLoop run_loop; | |
147 TracingController::TracingFileResultCallback callback = | |
148 base::Bind(&TracingControllerTest::DisableRecordingDoneCallbackTest, | |
149 base::Unretained(this), | |
150 run_loop.QuitClosure()); | |
151 bool result = controller->DisableRecording(callback); | |
152 EXPECT_TRUE(result); | |
153 run_loop.Run(); | |
154 EXPECT_EQ(disable_recording_done_callback_count(), 1); | |
155 } | |
156 } | 239 } |
157 | 240 |
158 IN_PROC_BROWSER_TEST_F(TracingControllerTest, | 241 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
159 EnableCaptureAndDisableMonitoring) { | 242 EnableCaptureAndDisableMonitoring) { |
| 243 TestEnableCaptureAndDisableMonitoring(base::FilePath()); |
| 244 } |
| 245 |
| 246 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 247 EnableCaptureAndDisableMonitoringWithFilePath) { |
| 248 base::FilePath file_path; |
| 249 file_util::CreateTemporaryFile(&file_path); |
| 250 TestEnableCaptureAndDisableMonitoring(file_path); |
| 251 EXPECT_EQ(file_path.value(), last_actual_monitoring_file_path().value()); |
| 252 } |
| 253 |
| 254 IN_PROC_BROWSER_TEST_F( |
| 255 TracingControllerTest, |
| 256 EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback) { |
160 Navigate(shell()); | 257 Navigate(shell()); |
161 | 258 |
162 TracingController* controller = TracingController::GetInstance(); | 259 TracingController* controller = TracingController::GetInstance(); |
163 | 260 EXPECT_TRUE(controller->EnableMonitoring( |
164 { | 261 base::debug::CategoryFilter(""), TracingController::ENABLE_SAMPLING, |
165 base::RunLoop run_loop; | 262 TracingController::EnableMonitoringDoneCallback())); |
166 TracingController::EnableMonitoringDoneCallback callback = | 263 controller->CaptureMonitoringSnapshot( |
167 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, | 264 base::FilePath(), TracingController::TracingFileResultCallback()); |
168 base::Unretained(this), | 265 base::RunLoop().RunUntilIdle(); |
169 run_loop.QuitClosure()); | 266 EXPECT_TRUE(controller->DisableMonitoring( |
170 bool result = controller->EnableMonitoring(base::debug::CategoryFilter("*"), | 267 TracingController::DisableMonitoringDoneCallback())); |
171 TracingController::ENABLE_SAMPLING, callback); | 268 base::RunLoop().RunUntilIdle(); |
172 EXPECT_TRUE(result); | |
173 run_loop.Run(); | |
174 EXPECT_EQ(enable_monitoring_done_callback_count(), 1); | |
175 } | |
176 | |
177 { | |
178 base::RunLoop run_loop; | |
179 TracingController::TracingFileResultCallback callback = | |
180 base::Bind(&TracingControllerTest:: | |
181 CaptureMonitoringSnapshotDoneCallbackTest, | |
182 base::Unretained(this), | |
183 run_loop.QuitClosure()); | |
184 controller->CaptureMonitoringSnapshot(callback); | |
185 run_loop.Run(); | |
186 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1); | |
187 } | |
188 | |
189 { | |
190 base::RunLoop run_loop; | |
191 TracingController::DisableMonitoringDoneCallback callback = | |
192 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest, | |
193 base::Unretained(this), | |
194 run_loop.QuitClosure()); | |
195 bool result = controller->DisableMonitoring(callback); | |
196 EXPECT_TRUE(result); | |
197 run_loop.Run(); | |
198 EXPECT_EQ(disable_monitoring_done_callback_count(), 1); | |
199 } | |
200 } | 269 } |
201 | 270 |
202 } // namespace content | 271 } // namespace content |
OLD | NEW |