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); |
} |