Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1403)

Unified Diff: content/browser/tracing/background_tracing_manager_browsertest.cc

Issue 1148633007: Hooked the trace event argument whitelist up to the background_trace_manager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698