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/files/file_util.h" | 5 #include "base/files/file_util.h" |
6 #include "base/memory/ref_counted_memory.h" | 6 #include "base/memory/ref_counted_memory.h" |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "content/public/browser/browser_thread.h" |
8 #include "content/public/browser/tracing_controller.h" | 9 #include "content/public/browser/tracing_controller.h" |
9 #include "content/public/test/browser_test_utils.h" | 10 #include "content/public/test/browser_test_utils.h" |
10 #include "content/public/test/content_browser_test.h" | 11 #include "content/public/test/content_browser_test.h" |
11 #include "content/public/test/content_browser_test_utils.h" | 12 #include "content/public/test/content_browser_test_utils.h" |
12 #include "content/shell/browser/shell.h" | 13 #include "content/shell/browser/shell.h" |
13 | 14 |
14 using base::trace_event::CategoryFilter; | 15 using base::trace_event::CategoryFilter; |
15 using base::trace_event::TraceOptions; | 16 using base::trace_event::TraceOptions; |
16 using base::trace_event::RECORD_CONTINUOUSLY; | 17 using base::trace_event::RECORD_CONTINUOUSLY; |
17 using base::trace_event::RECORD_UNTIL_FULL; | 18 using base::trace_event::RECORD_UNTIL_FULL; |
18 | 19 |
19 namespace content { | 20 namespace content { |
20 | 21 |
| 22 class TracingControllerTestEndpoint |
| 23 : public TracingController::TraceDataEndpoint { |
| 24 public: |
| 25 TracingControllerTestEndpoint( |
| 26 base::Callback<void(base::RefCountedString*)> done_callback) |
| 27 : done_callback_(done_callback) {} |
| 28 |
| 29 void ReceiveTraceChunk(const std::string& chunk) override { |
| 30 EXPECT_FALSE(chunk.empty()); |
| 31 trace_ += chunk; |
| 32 } |
| 33 |
| 34 void ReceiveTraceFinalContents(const std::string& contents) override { |
| 35 EXPECT_EQ(trace_, contents); |
| 36 |
| 37 std::string tmp = contents; |
| 38 scoped_refptr<base::RefCountedString> chunk_ptr = |
| 39 base::RefCountedString::TakeString(&tmp); |
| 40 |
| 41 BrowserThread::PostTask( |
| 42 BrowserThread::UI, FROM_HERE, |
| 43 base::Bind(done_callback_, chunk_ptr)); |
| 44 } |
| 45 |
| 46 protected: |
| 47 ~TracingControllerTestEndpoint() override {} |
| 48 |
| 49 std::string trace_; |
| 50 base::Callback<void(base::RefCountedString*)> done_callback_; |
| 51 }; |
| 52 |
21 class TracingControllerTest : public ContentBrowserTest { | 53 class TracingControllerTest : public ContentBrowserTest { |
22 public: | 54 public: |
23 TracingControllerTest() {} | 55 TracingControllerTest() {} |
24 | 56 |
25 void SetUp() override { | 57 void SetUp() override { |
26 get_categories_done_callback_count_ = 0; | 58 get_categories_done_callback_count_ = 0; |
27 enable_recording_done_callback_count_ = 0; | 59 enable_recording_done_callback_count_ = 0; |
28 disable_recording_done_callback_count_ = 0; | 60 disable_recording_done_callback_count_ = 0; |
29 enable_monitoring_done_callback_count_ = 0; | 61 enable_monitoring_done_callback_count_ = 0; |
30 disable_monitoring_done_callback_count_ = 0; | 62 disable_monitoring_done_callback_count_ = 0; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 base::Unretained(this), | 178 base::Unretained(this), |
147 run_loop.QuitClosure()); | 179 run_loop.QuitClosure()); |
148 bool result = controller->DisableRecording( | 180 bool result = controller->DisableRecording( |
149 TracingController::CreateStringSink(callback)); | 181 TracingController::CreateStringSink(callback)); |
150 ASSERT_TRUE(result); | 182 ASSERT_TRUE(result); |
151 run_loop.Run(); | 183 run_loop.Run(); |
152 EXPECT_EQ(disable_recording_done_callback_count(), 1); | 184 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
153 } | 185 } |
154 } | 186 } |
155 | 187 |
| 188 void TestEnableAndDisableRecordingCompressed() { |
| 189 Navigate(shell()); |
| 190 |
| 191 TracingController* controller = TracingController::GetInstance(); |
| 192 |
| 193 { |
| 194 base::RunLoop run_loop; |
| 195 TracingController::EnableRecordingDoneCallback callback = |
| 196 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 197 base::Unretained(this), run_loop.QuitClosure()); |
| 198 bool result = controller->EnableRecording(CategoryFilter(), |
| 199 TraceOptions(), callback); |
| 200 ASSERT_TRUE(result); |
| 201 run_loop.Run(); |
| 202 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 203 } |
| 204 |
| 205 { |
| 206 base::RunLoop run_loop; |
| 207 base::Callback<void(base::RefCountedString*)> callback = base::Bind( |
| 208 &TracingControllerTest::DisableRecordingStringDoneCallbackTest, |
| 209 base::Unretained(this), run_loop.QuitClosure()); |
| 210 bool result = controller->DisableRecording( |
| 211 TracingController::CreateCompressedStringSink( |
| 212 new TracingControllerTestEndpoint(callback))); |
| 213 ASSERT_TRUE(result); |
| 214 run_loop.Run(); |
| 215 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 216 } |
| 217 } |
| 218 |
156 void TestEnableAndDisableRecordingFile( | 219 void TestEnableAndDisableRecordingFile( |
157 const base::FilePath& result_file_path) { | 220 const base::FilePath& result_file_path) { |
158 Navigate(shell()); | 221 Navigate(shell()); |
159 | 222 |
160 TracingController* controller = TracingController::GetInstance(); | 223 TracingController* controller = TracingController::GetInstance(); |
161 | 224 |
162 { | 225 { |
163 base::RunLoop run_loop; | 226 base::RunLoop run_loop; |
164 TracingController::EnableRecordingDoneCallback callback = | 227 TracingController::EnableRecordingDoneCallback callback = |
165 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 228 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 | 373 |
311 IN_PROC_BROWSER_TEST_F(TracingControllerTest, | 374 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
312 EnableAndDisableRecordingWithFilePath) { | 375 EnableAndDisableRecordingWithFilePath) { |
313 base::FilePath file_path; | 376 base::FilePath file_path; |
314 base::CreateTemporaryFile(&file_path); | 377 base::CreateTemporaryFile(&file_path); |
315 TestEnableAndDisableRecordingFile(file_path); | 378 TestEnableAndDisableRecordingFile(file_path); |
316 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value()); | 379 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value()); |
317 } | 380 } |
318 | 381 |
319 IN_PROC_BROWSER_TEST_F(TracingControllerTest, | 382 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 383 EnableAndDisableRecordingWithCompression) { |
| 384 TestEnableAndDisableRecordingCompressed(); |
| 385 } |
| 386 |
| 387 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
320 EnableAndDisableRecordingWithEmptyFileAndNullCallback) { | 388 EnableAndDisableRecordingWithEmptyFileAndNullCallback) { |
321 Navigate(shell()); | 389 Navigate(shell()); |
322 | 390 |
323 TracingController* controller = TracingController::GetInstance(); | 391 TracingController* controller = TracingController::GetInstance(); |
324 EXPECT_TRUE(controller->EnableRecording( | 392 EXPECT_TRUE(controller->EnableRecording( |
325 CategoryFilter(), | 393 CategoryFilter(), |
326 TraceOptions(), | 394 TraceOptions(), |
327 TracingController::EnableRecordingDoneCallback())); | 395 TracingController::EnableRecordingDoneCallback())); |
328 EXPECT_TRUE(controller->DisableRecording(NULL)); | 396 EXPECT_TRUE(controller->DisableRecording(NULL)); |
329 base::RunLoop().RunUntilIdle(); | 397 base::RunLoop().RunUntilIdle(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 trace_options, | 433 trace_options, |
366 TracingController::EnableMonitoringDoneCallback())); | 434 TracingController::EnableMonitoringDoneCallback())); |
367 controller->CaptureMonitoringSnapshot(NULL); | 435 controller->CaptureMonitoringSnapshot(NULL); |
368 base::RunLoop().RunUntilIdle(); | 436 base::RunLoop().RunUntilIdle(); |
369 EXPECT_TRUE(controller->DisableMonitoring( | 437 EXPECT_TRUE(controller->DisableMonitoring( |
370 TracingController::DisableMonitoringDoneCallback())); | 438 TracingController::DisableMonitoringDoneCallback())); |
371 base::RunLoop().RunUntilIdle(); | 439 base::RunLoop().RunUntilIdle(); |
372 } | 440 } |
373 | 441 |
374 } // namespace content | 442 } // namespace content |
OLD | NEW |