| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f539fa94d577d3e0ffa0e4a32bc83c2d2fb0609a
|
| --- /dev/null
|
| +++ b/content/browser/tracing/background_tracing_manager_browsertest.cc
|
| @@ -0,0 +1,160 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "base/bind.h"
|
| +#include "content/browser/tracing/background_tracing_endpoint.h"
|
| +#include "content/browser/tracing/background_tracing_manager.h"
|
| +#include "content/browser/tracing/background_tracing_scenario.h"
|
| +#include "content/public/test/content_browser_test.h"
|
| +#include "content/public/test/content_browser_test_utils.h"
|
| +#include "content/public/test/test_utils.h"
|
| +
|
| +namespace content {
|
| +
|
| +class BackgroundTracingManagerBrowserTest : public ContentBrowserTest {
|
| + public:
|
| + BackgroundTracingManagerBrowserTest() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest);
|
| +};
|
| +
|
| +class BackgroundTracingManagerBrowserTestEndpoint
|
| + : public BackgroundTracingEndpoint {
|
| + public:
|
| + BackgroundTracingManagerBrowserTestEndpoint(const base::Closure& callback)
|
| + : callback_(callback), receive_count_(0) {}
|
| +
|
| + void ReceiveTraceFinalContents(const std::string& file_contents) override {
|
| + receive_count_ += 1;
|
| + done_callback_.Run();
|
| + callback_.Run();
|
| + }
|
| +
|
| + int get_receive_count() const { return receive_count_; }
|
| +
|
| + private:
|
| + ~BackgroundTracingManagerBrowserTestEndpoint() override {}
|
| +
|
| + base::Closure callback_;
|
| + int receive_count_;
|
| +};
|
| +
|
| +class BackgroundTracingManagerBrowserTestScenario
|
| + : public BackgroundTracingScenario {
|
| + public:
|
| + BackgroundTracingManagerBrowserTestScenario(
|
| + scoped_refptr<BackgroundTracingManagerBrowserTestEndpoint> e)
|
| + : BackgroundTracingScenario(e) {}
|
| +
|
| + protected:
|
| + ~BackgroundTracingManagerBrowserTestScenario() override {}
|
| +};
|
| +
|
| +void StartedFinalizingCallback(base::Closure callback,
|
| + bool expected,
|
| + bool value) {
|
| + EXPECT_EQ(expected, value);
|
| + if (!callback.is_null())
|
| + callback.Run();
|
| +}
|
| +
|
| +// This tests that the endpoint receives the final trace data.
|
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
|
| + ReceiveTraceFinalContentsOnTrigger) {
|
| + {
|
| + base::RunLoop run_loop;
|
| + scoped_refptr<BackgroundTracingManagerBrowserTestEndpoint> endpoint =
|
| + new BackgroundTracingManagerBrowserTestEndpoint(run_loop.QuitClosure());
|
| + scoped_refptr<BackgroundTracingManagerBrowserTestScenario> scenario =
|
| + new BackgroundTracingManagerBrowserTestScenario(endpoint);
|
| +
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_recording_for_testing());
|
| +
|
| + BackgroundTracingManager::GetInstance()->SetActiveScenario(scenario);
|
| +
|
| + EXPECT_TRUE(
|
| + BackgroundTracingManager::GetInstance()->is_recording_for_testing());
|
| +
|
| + BackgroundTracingManager::GetInstance()->TryFinalizingBackgroundTracing(
|
| + base::Bind(&StartedFinalizingCallback, base::Closure(), true));
|
| +
|
| + EXPECT_TRUE(
|
| + BackgroundTracingManager::GetInstance()->is_gathering_for_testing());
|
| +
|
| + run_loop.Run();
|
| +
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_gathering_for_testing());
|
| + EXPECT_TRUE(endpoint->get_receive_count() == 1);
|
| + }
|
| +}
|
| +
|
| +// This tests trigger more than once still only gathers once.
|
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
|
| + MultipleTriggersOnlyGatherOnce) {
|
| + {
|
| + base::RunLoop run_loop;
|
| + scoped_refptr<BackgroundTracingManagerBrowserTestEndpoint> endpoint =
|
| + new BackgroundTracingManagerBrowserTestEndpoint(run_loop.QuitClosure());
|
| + scoped_refptr<BackgroundTracingManagerBrowserTestScenario> scenario =
|
| + new BackgroundTracingManagerBrowserTestScenario(endpoint);
|
| +
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_recording_for_testing());
|
| +
|
| + BackgroundTracingManager::GetInstance()->SetActiveScenario(scenario);
|
| +
|
| + EXPECT_TRUE(
|
| + BackgroundTracingManager::GetInstance()->is_recording_for_testing());
|
| +
|
| + BackgroundTracingManager::GetInstance()->TryFinalizingBackgroundTracing(
|
| + base::Bind(&StartedFinalizingCallback, base::Closure(), true));
|
| +
|
| + EXPECT_TRUE(
|
| + BackgroundTracingManager::GetInstance()->is_gathering_for_testing());
|
| +
|
| + BackgroundTracingManager::GetInstance()->TryFinalizingBackgroundTracing(
|
| + base::Bind(&StartedFinalizingCallback, base::Closure(), false));
|
| +
|
| + run_loop.Run();
|
| +
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_gathering_for_testing());
|
| + EXPECT_TRUE(endpoint->get_receive_count() == 1);
|
| + }
|
| +}
|
| +
|
| +// This tests that you can't trigger without a scenario set.
|
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
|
| + CannotTriggerWithoutScenarioSet) {
|
| + {
|
| + base::RunLoop run_loop;
|
| +
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_recording_for_testing());
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_gathering_for_testing());
|
| +
|
| + BackgroundTracingManager::GetInstance()->TryFinalizingBackgroundTracing(
|
| + base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false));
|
| +
|
| + run_loop.Run();
|
| +
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_recording_for_testing());
|
| + EXPECT_FALSE(
|
| + BackgroundTracingManager::GetInstance()->is_gathering_for_testing());
|
| + }
|
| +}
|
| +
|
| +// This tests triggering with a null callback.
|
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
|
| + TriggerWithNullCallback) {
|
| + BackgroundTracingManager::GetInstance()->TryFinalizingBackgroundTracing(
|
| + BackgroundTracingManager::StartedFinalizingCallback());
|
| +}
|
| +
|
| +} // namespace content
|
|
|