| 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 "content/public/browser/tracing_controller.h" | 5 #include "content/public/browser/tracing_controller.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 } | 52 } |
| 53 return false; | 53 return false; |
| 54 } | 54 } |
| 55 | 55 |
| 56 } // namespace | 56 } // namespace |
| 57 | 57 |
| 58 class TracingControllerTestEndpoint | 58 class TracingControllerTestEndpoint |
| 59 : public TracingController::TraceDataEndpoint { | 59 : public TracingController::TraceDataEndpoint { |
| 60 public: | 60 public: |
| 61 TracingControllerTestEndpoint( | 61 TracingControllerTestEndpoint( |
| 62 base::Callback<void(scoped_ptr<const base::DictionaryValue>, | 62 base::Callback<void(std::unique_ptr<const base::DictionaryValue>, |
| 63 base::RefCountedString*)> done_callback) | 63 base::RefCountedString*)> done_callback) |
| 64 : done_callback_(done_callback) {} | 64 : done_callback_(done_callback) {} |
| 65 | 65 |
| 66 void ReceiveTraceChunk(const std::string& chunk) override { | 66 void ReceiveTraceChunk(const std::string& chunk) override { |
| 67 EXPECT_FALSE(chunk.empty()); | 67 EXPECT_FALSE(chunk.empty()); |
| 68 trace_ += chunk; | 68 trace_ += chunk; |
| 69 } | 69 } |
| 70 | 70 |
| 71 void ReceiveTraceFinalContents( | 71 void ReceiveTraceFinalContents( |
| 72 scoped_ptr<const base::DictionaryValue> metadata, | 72 std::unique_ptr<const base::DictionaryValue> metadata, |
| 73 const std::string& contents) override { | 73 const std::string& contents) override { |
| 74 EXPECT_EQ(trace_, contents); | 74 EXPECT_EQ(trace_, contents); |
| 75 | 75 |
| 76 std::string tmp = contents; | 76 std::string tmp = contents; |
| 77 scoped_refptr<base::RefCountedString> chunk_ptr = | 77 scoped_refptr<base::RefCountedString> chunk_ptr = |
| 78 base::RefCountedString::TakeString(&tmp); | 78 base::RefCountedString::TakeString(&tmp); |
| 79 | 79 |
| 80 BrowserThread::PostTask( | 80 BrowserThread::PostTask( |
| 81 BrowserThread::UI, FROM_HERE, | 81 BrowserThread::UI, FROM_HERE, |
| 82 base::Bind(done_callback_, base::Passed(std::move(metadata)), | 82 base::Bind(done_callback_, base::Passed(std::move(metadata)), |
| 83 base::RetainedRef(chunk_ptr))); | 83 base::RetainedRef(chunk_ptr))); |
| 84 } | 84 } |
| 85 | 85 |
| 86 protected: | 86 protected: |
| 87 ~TracingControllerTestEndpoint() override {} | 87 ~TracingControllerTestEndpoint() override {} |
| 88 | 88 |
| 89 std::string trace_; | 89 std::string trace_; |
| 90 base::Callback<void(scoped_ptr<const base::DictionaryValue>, | 90 base::Callback<void(std::unique_ptr<const base::DictionaryValue>, |
| 91 base::RefCountedString*)> done_callback_; | 91 base::RefCountedString*)> |
| 92 done_callback_; |
| 92 }; | 93 }; |
| 93 | 94 |
| 94 class TracingControllerTest : public ContentBrowserTest { | 95 class TracingControllerTest : public ContentBrowserTest { |
| 95 public: | 96 public: |
| 96 TracingControllerTest() {} | 97 TracingControllerTest() {} |
| 97 | 98 |
| 98 void SetUp() override { | 99 void SetUp() override { |
| 99 get_categories_done_callback_count_ = 0; | 100 get_categories_done_callback_count_ = 0; |
| 100 enable_recording_done_callback_count_ = 0; | 101 enable_recording_done_callback_count_ = 0; |
| 101 disable_recording_done_callback_count_ = 0; | 102 disable_recording_done_callback_count_ = 0; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 115 quit_callback.Run(); | 116 quit_callback.Run(); |
| 116 } | 117 } |
| 117 | 118 |
| 118 void StartTracingDoneCallbackTest(base::Closure quit_callback) { | 119 void StartTracingDoneCallbackTest(base::Closure quit_callback) { |
| 119 enable_recording_done_callback_count_++; | 120 enable_recording_done_callback_count_++; |
| 120 quit_callback.Run(); | 121 quit_callback.Run(); |
| 121 } | 122 } |
| 122 | 123 |
| 123 void StopTracingStringDoneCallbackTest( | 124 void StopTracingStringDoneCallbackTest( |
| 124 base::Closure quit_callback, | 125 base::Closure quit_callback, |
| 125 scoped_ptr<const base::DictionaryValue> metadata, | 126 std::unique_ptr<const base::DictionaryValue> metadata, |
| 126 base::RefCountedString* data) { | 127 base::RefCountedString* data) { |
| 127 disable_recording_done_callback_count_++; | 128 disable_recording_done_callback_count_++; |
| 128 last_metadata_.reset(metadata.release()); | 129 last_metadata_.reset(metadata.release()); |
| 129 last_data_ = data->data(); | 130 last_data_ = data->data(); |
| 130 EXPECT_TRUE(data->size() > 0); | 131 EXPECT_TRUE(data->size() > 0); |
| 131 quit_callback.Run(); | 132 quit_callback.Run(); |
| 132 } | 133 } |
| 133 | 134 |
| 134 void StopTracingFileDoneCallbackTest(base::Closure quit_callback, | 135 void StopTracingFileDoneCallbackTest(base::Closure quit_callback, |
| 135 const base::FilePath& file_path) { | 136 const base::FilePath& file_path) { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 run_loop.QuitClosure()); | 180 run_loop.QuitClosure()); |
| 180 bool result = controller->StartTracing( | 181 bool result = controller->StartTracing( |
| 181 TraceConfig(), callback); | 182 TraceConfig(), callback); |
| 182 ASSERT_TRUE(result); | 183 ASSERT_TRUE(result); |
| 183 run_loop.Run(); | 184 run_loop.Run(); |
| 184 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 185 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 185 } | 186 } |
| 186 | 187 |
| 187 { | 188 { |
| 188 base::RunLoop run_loop; | 189 base::RunLoop run_loop; |
| 189 base::Callback<void(scoped_ptr<const base::DictionaryValue>, | 190 base::Callback<void(std::unique_ptr<const base::DictionaryValue>, |
| 190 base::RefCountedString*)> callback = base::Bind( | 191 base::RefCountedString*)> |
| 191 &TracingControllerTest::StopTracingStringDoneCallbackTest, | 192 callback = base::Bind( |
| 192 base::Unretained(this), | 193 &TracingControllerTest::StopTracingStringDoneCallbackTest, |
| 193 run_loop.QuitClosure()); | 194 base::Unretained(this), run_loop.QuitClosure()); |
| 194 bool result = controller->StopTracing( | 195 bool result = controller->StopTracing( |
| 195 TracingController::CreateStringSink(callback)); | 196 TracingController::CreateStringSink(callback)); |
| 196 ASSERT_TRUE(result); | 197 ASSERT_TRUE(result); |
| 197 run_loop.Run(); | 198 run_loop.Run(); |
| 198 EXPECT_EQ(disable_recording_done_callback_count(), 1); | 199 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 199 } | 200 } |
| 200 } | 201 } |
| 201 | 202 |
| 202 void TestStartAndStopTracingStringWithFilter() { | 203 void TestStartAndStopTracingStringWithFilter() { |
| 203 Navigate(shell()); | 204 Navigate(shell()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 217 config.EnableArgumentFilter(); | 218 config.EnableArgumentFilter(); |
| 218 | 219 |
| 219 bool result = controller->StartTracing(config, callback); | 220 bool result = controller->StartTracing(config, callback); |
| 220 ASSERT_TRUE(result); | 221 ASSERT_TRUE(result); |
| 221 run_loop.Run(); | 222 run_loop.Run(); |
| 222 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 223 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 223 } | 224 } |
| 224 | 225 |
| 225 { | 226 { |
| 226 base::RunLoop run_loop; | 227 base::RunLoop run_loop; |
| 227 base::Callback<void(scoped_ptr<const base::DictionaryValue>, | 228 base::Callback<void(std::unique_ptr<const base::DictionaryValue>, |
| 228 base::RefCountedString*)> callback = base::Bind( | 229 base::RefCountedString*)> |
| 229 &TracingControllerTest::StopTracingStringDoneCallbackTest, | 230 callback = base::Bind( |
| 230 base::Unretained(this), | 231 &TracingControllerTest::StopTracingStringDoneCallbackTest, |
| 231 run_loop.QuitClosure()); | 232 base::Unretained(this), run_loop.QuitClosure()); |
| 232 | 233 |
| 233 scoped_refptr<TracingController::TraceDataSink> trace_data_sink = | 234 scoped_refptr<TracingController::TraceDataSink> trace_data_sink = |
| 234 TracingController::CreateStringSink(callback); | 235 TracingController::CreateStringSink(callback); |
| 235 | 236 |
| 236 trace_data_sink->SetMetadataFilterPredicate( | 237 trace_data_sink->SetMetadataFilterPredicate( |
| 237 base::Bind(&IsMetadataWhitelisted)); | 238 base::Bind(&IsMetadataWhitelisted)); |
| 238 base::DictionaryValue metadata; | 239 base::DictionaryValue metadata; |
| 239 metadata.SetString("not-whitelisted", "this_not_found"); | 240 metadata.SetString("not-whitelisted", "this_not_found"); |
| 240 trace_data_sink->AddMetadata(metadata); | 241 trace_data_sink->AddMetadata(metadata); |
| 241 | 242 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 257 base::Bind(&TracingControllerTest::StartTracingDoneCallbackTest, | 258 base::Bind(&TracingControllerTest::StartTracingDoneCallbackTest, |
| 258 base::Unretained(this), run_loop.QuitClosure()); | 259 base::Unretained(this), run_loop.QuitClosure()); |
| 259 bool result = controller->StartTracing(TraceConfig(), callback); | 260 bool result = controller->StartTracing(TraceConfig(), callback); |
| 260 ASSERT_TRUE(result); | 261 ASSERT_TRUE(result); |
| 261 run_loop.Run(); | 262 run_loop.Run(); |
| 262 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 263 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 263 } | 264 } |
| 264 | 265 |
| 265 { | 266 { |
| 266 base::RunLoop run_loop; | 267 base::RunLoop run_loop; |
| 267 base::Callback<void(scoped_ptr<const base::DictionaryValue>, | 268 base::Callback<void(std::unique_ptr<const base::DictionaryValue>, |
| 268 base::RefCountedString*)> callback = base::Bind( | 269 base::RefCountedString*)> |
| 269 &TracingControllerTest::StopTracingStringDoneCallbackTest, | 270 callback = base::Bind( |
| 270 base::Unretained(this), run_loop.QuitClosure()); | 271 &TracingControllerTest::StopTracingStringDoneCallbackTest, |
| 272 base::Unretained(this), run_loop.QuitClosure()); |
| 271 bool result = controller->StopTracing( | 273 bool result = controller->StopTracing( |
| 272 TracingController::CreateCompressedStringSink( | 274 TracingController::CreateCompressedStringSink( |
| 273 new TracingControllerTestEndpoint(callback))); | 275 new TracingControllerTestEndpoint(callback))); |
| 274 ASSERT_TRUE(result); | 276 ASSERT_TRUE(result); |
| 275 run_loop.Run(); | 277 run_loop.Run(); |
| 276 EXPECT_EQ(disable_recording_done_callback_count(), 1); | 278 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 277 } | 279 } |
| 278 } | 280 } |
| 279 | 281 |
| 280 void TestStartAndStopTracingCompressedFile( | 282 void TestStartAndStopTracingCompressedFile( |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 run_loop.Run(); | 342 run_loop.Run(); |
| 341 EXPECT_EQ(disable_recording_done_callback_count(), 1); | 343 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 342 } | 344 } |
| 343 } | 345 } |
| 344 | 346 |
| 345 private: | 347 private: |
| 346 int get_categories_done_callback_count_; | 348 int get_categories_done_callback_count_; |
| 347 int enable_recording_done_callback_count_; | 349 int enable_recording_done_callback_count_; |
| 348 int disable_recording_done_callback_count_; | 350 int disable_recording_done_callback_count_; |
| 349 base::FilePath last_actual_recording_file_path_; | 351 base::FilePath last_actual_recording_file_path_; |
| 350 scoped_ptr<const base::DictionaryValue> last_metadata_; | 352 std::unique_ptr<const base::DictionaryValue> last_metadata_; |
| 351 std::string last_data_; | 353 std::string last_data_; |
| 352 }; | 354 }; |
| 353 | 355 |
| 354 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { | 356 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { |
| 355 Navigate(shell()); | 357 Navigate(shell()); |
| 356 | 358 |
| 357 TracingController* controller = TracingController::GetInstance(); | 359 TracingController* controller = TracingController::GetInstance(); |
| 358 | 360 |
| 359 base::RunLoop run_loop; | 361 base::RunLoop run_loop; |
| 360 TracingController::GetCategoriesDoneCallback callback = | 362 TracingController::GetCategoriesDoneCallback callback = |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 | 456 |
| 455 TracingController* controller = TracingController::GetInstance(); | 457 TracingController* controller = TracingController::GetInstance(); |
| 456 EXPECT_TRUE(controller->StartTracing( | 458 EXPECT_TRUE(controller->StartTracing( |
| 457 TraceConfig(), | 459 TraceConfig(), |
| 458 TracingController::StartTracingDoneCallback())); | 460 TracingController::StartTracingDoneCallback())); |
| 459 EXPECT_TRUE(controller->StopTracing(NULL)); | 461 EXPECT_TRUE(controller->StopTracing(NULL)); |
| 460 base::RunLoop().RunUntilIdle(); | 462 base::RunLoop().RunUntilIdle(); |
| 461 } | 463 } |
| 462 | 464 |
| 463 } // namespace content | 465 } // namespace content |
| OLD | NEW |