// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_PERFORMANCE_MANAGER_TEST_SUPPORT_PERFORMANCE_MANAGER_TEST_HARNESS_H_ #define COMPONENTS_PERFORMANCE_MANAGER_TEST_SUPPORT_PERFORMANCE_MANAGER_TEST_HARNESS_H_ #include <memory> #include <utility> #include "components/performance_manager/embedder/graph_features.h" #include "components/performance_manager/test_support/test_harness_helper.h" #include "content/public/test/test_renderer_host.h" namespace content { class WebContents; } namespace performance_manager { class GraphImpl; // A test harness that initializes PerformanceManagerImpl, plus the entire // RenderViewHost harness. Allows for creating full WebContents, and their // accompanying structures in the graph. The task environment is accessed // via content::RenderViewHostTestHarness::task_environment(). // // Meant to be used from components_unittests, but not from unit_tests or // browser tests. unit_tests should use PerformanceManagerTestHarnessHelper. // // To set the active WebContents for the test use: // // SetContents(CreateTestWebContents()); // // This will create a PageNode, but nothing else. To create FrameNodes and // ProcessNodes for the test WebContents, simulate a committed navigation with: // // content::NavigationSimulator::NavigateAndCommitFromBrowser(web_contents(), // GURL("https://www.foo.com/")); // // This will create nodes backed by thin test stubs (TestWebContents, // TestRenderFrameHost, etc). If you want full process trees and live // RenderFrameHosts, use PerformanceManagerBrowserTestHarness. // // If you just want to test how code interacts with the graph it's better to // use GraphTestHarness, which has a rich set of methods for directly creating // graph nodes. class PerformanceManagerTestHarness : public content::RenderViewHostTestHarness { … }; } // namespace performance_manager #endif // COMPONENTS_PERFORMANCE_MANAGER_TEST_SUPPORT_PERFORMANCE_MANAGER_TEST_HARNESS_H_