Chromium Code Reviews| Index: content/browser/tracing/background_tracing_manager_browsertest.cc |
| diff --git a/content/browser/tracing/background_tracing_manager_browsertest.cc b/content/browser/tracing/background_tracing_manager_browsertest.cc |
| index f353264f911aa59fb7b36d62422afce812058982..fb515a3ede4d701754b250e1f530aee90f559665 100644 |
| --- a/content/browser/tracing/background_tracing_manager_browsertest.cc |
| +++ b/content/browser/tracing/background_tracing_manager_browsertest.cc |
| @@ -3,6 +3,7 @@ |
| // found in the LICENSE file. |
| #include "base/bind.h" |
| +#include "base/trace_event/trace_event.h" |
| #include "content/public/browser/background_tracing_manager.h" |
| #include "content/public/browser/background_tracing_preemptive_config.h" |
| #include "content/public/browser/background_tracing_reactive_config.h" |
| @@ -29,9 +30,11 @@ class BackgroundTracingManagerUploadConfigWrapper { |
| base::Unretained(this)); |
| } |
| - void Upload(const base::RefCountedString* file_contents, |
| + void Upload(const scoped_refptr<base::RefCountedString>& file_contents, |
| base::Callback<void()> done_callback) { |
| receive_count_ += 1; |
| + EXPECT_TRUE(file_contents); |
| + last_file_contents_ = file_contents; |
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| base::Bind(done_callback)); |
| @@ -39,6 +42,11 @@ class BackgroundTracingManagerUploadConfigWrapper { |
| base::Bind(callback_)); |
| } |
| + bool TraceHasMatchingString(const char* str) { |
| + const std::string& json = last_file_contents_->data(); |
| + return json.find(str) != std::string::npos; |
| + } |
| + |
| int get_receive_count() const { return receive_count_; } |
| const BackgroundTracingManager::ReceiveCallback& get_receive_callback() |
| @@ -50,6 +58,7 @@ class BackgroundTracingManagerUploadConfigWrapper { |
| BackgroundTracingManager::ReceiveCallback receive_callback_; |
| base::Closure callback_; |
| int receive_count_; |
| + scoped_refptr<base::RefCountedString> last_file_contents_; |
| }; |
| void StartedFinalizingCallback(base::Closure callback, |
| @@ -81,7 +90,8 @@ void SetupBackgroundTracingManager() { |
| void DisableScenarioWhenIdle() { |
| BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - NULL, BackgroundTracingManager::ReceiveCallback(), false); |
| + NULL, BackgroundTracingManager::ReceiveCallback(), base::Closure(), |
| + false); |
| } |
| // This tests that the endpoint receives the final trace data. |
| @@ -101,7 +111,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| BackgroundTracingManager::GetInstance()->RegisterTriggerType("test"); |
| BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| BackgroundTracingManager::GetInstance()->WhenIdle( |
| base::Bind(&DisableScenarioWhenIdle)); |
| @@ -133,7 +144,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| "test"); |
| BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| BackgroundTracingManager::GetInstance()->WhenIdle( |
| base::Bind(&DisableScenarioWhenIdle)); |
| @@ -149,6 +161,51 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| } |
| } |
| +// This tests that non-whitelisted args get stripped if required. |
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| + NoWhitelistedArgsStripped) { |
|
shatch
2015/05/22 22:25:05
Should you write 2 tests, enabled and disabled. Si
oystein (OOO til 10th of July)
2015/05/27 22:13:32
Test improved now, would've caught it.
|
| + { |
| + SetupBackgroundTracingManager(); |
| + |
| + base::RunLoop upload_run_loop; |
| + BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( |
| + upload_run_loop.QuitClosure()); |
| + |
| + scoped_ptr<BackgroundTracingPreemptiveConfig> config = |
| + CreatePreemptiveConfig(); |
| + config->compress_trace = false; |
| + |
| + content::BackgroundTracingManager::TriggerHandle handle = |
| + content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( |
| + "test"); |
| + |
| + base::RunLoop enable_run_loop; |
| + BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + enable_run_loop.QuitClosure(), true); |
| + |
| + enable_run_loop.Run(); |
| + // NavigateToURL(shell(), GetTestUrl("", "title.html")); |
|
shatch
2015/05/22 22:21:37
nit: Get rid of this.
oystein (OOO til 10th of July)
2015/05/27 22:13:33
Done.
|
| + |
| + TRACE_EVENT1("__metadata", "thread_name", "my_thread_name", 1); |
| + TRACE_EVENT1("__metadata", "process_name", "my_process_name", 1); |
| + |
| + BackgroundTracingManager::GetInstance()->WhenIdle( |
| + base::Bind(&DisableScenarioWhenIdle)); |
| + |
| + BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
| + handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); |
| + |
| + upload_run_loop.Run(); |
| + |
| + EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); |
| + EXPECT_TRUE(upload_config_wrapper.TraceHasMatchingString("__metadata")); |
| + EXPECT_TRUE(upload_config_wrapper.TraceHasMatchingString("my_thread_name")); |
| + EXPECT_TRUE( |
| + !upload_config_wrapper.TraceHasMatchingString("my_process_name")); |
| + } |
| +} |
| + |
| // This tests multiple triggers still only gathers once. |
| IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| CallMultipleTriggersOnlyGatherOnce) { |
| @@ -177,7 +234,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| BackgroundTracingManager::GetInstance()->RegisterTriggerType("test2"); |
| BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| BackgroundTracingManager::GetInstance()->WhenIdle( |
| base::Bind(&DisableScenarioWhenIdle)); |
| @@ -239,7 +297,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| "does_not_exist"); |
| BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| BackgroundTracingManager::GetInstance()->WhenIdle( |
| base::Bind(&DisableScenarioWhenIdle)); |
| @@ -275,7 +334,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| ->InvalidateTriggerHandlesForTesting(); |
| BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| BackgroundTracingManager::GetInstance()->WhenIdle( |
| base::Bind(&DisableScenarioWhenIdle)); |
| @@ -310,7 +370,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| config->configs.push_back(rule); |
| bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| EXPECT_FALSE(result); |
| } |
| @@ -329,7 +390,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| new BackgroundTracingReactiveConfig()); |
| bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| - config.Pass(), upload_config_wrapper.get_receive_callback(), true); |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + base::Closure(), true); |
| EXPECT_FALSE(result); |
| } |