chromium/components/performance_manager/test_support/test_browser_child_process.h

// Copyright 2023 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_TEST_BROWSER_CHILD_PROCESS_H_
#define COMPONENTS_PERFORMANCE_MANAGER_TEST_SUPPORT_TEST_BROWSER_CHILD_PROCESS_H_

#include <memory>

#include "base/process/process.h"
#include "components/performance_manager/public/browser_child_process_host_id.h"
#include "components/performance_manager/public/browser_child_process_host_proxy.h"
#include "content/public/browser/browser_child_process_host.h"
#include "content/public/browser/browser_child_process_host_delegate.h"

namespace performance_manager {

// A wrapper that owns a BrowserChildProcessHost and acts as a no-op
// BrowserChildProcessHostDelegate.
//
// In production, a process and associated ProcessNode is created for
// this by calling host()->Launch(), but in unit tests this has unsatisfied
// dependencies so a ProcessNode can be created by calling
//
//   PerformanceManagerRegistryImpl::GetInstance()
//       ->CreateBrowserChildProcessNodeForTesting(host());
class TestBrowserChildProcess final
    : public content::BrowserChildProcessHostDelegate {};

// Helper function for tests to delete the browser process node, which is
// created by default in BrowserChildProcessWatcher::Initialize(). Must not be
// called again if the node was already deleted.
void DeleteBrowserProcessNodeForTesting();

}  // namespace performance_manager

#endif  // COMPONENTS_PERFORMANCE_MANAGER_TEST_SUPPORT_TEST_BROWSER_CHILD_PROCESS_H_