#include "components/metrics/content/subprocess_metrics_provider.h"
#include <utility>
#include "base/debug/leak_annotations.h"
#include "base/logging.h"
#include "base/memory/scoped_refptr.h"
#include "base/metrics/histogram_base.h"
#include "base/metrics/persistent_histogram_allocator.h"
#include "base/metrics/persistent_memory_allocator.h"
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
#include "components/metrics/metrics_features.h"
#include "content/public/browser/browser_child_process_host.h"
#include "content/public/browser/browser_child_process_host_iterator.h"
#include "content/public/browser/child_process_data.h"
namespace metrics {
namespace {
SubprocessMetricsProvider* g_subprocess_metrics_provider = …;
scoped_refptr<base::TaskRunner> CreateTaskRunner() { … }
}
bool SubprocessMetricsProvider::CreateInstance() { … }
SubprocessMetricsProvider* SubprocessMetricsProvider::GetInstance() { … }
void SubprocessMetricsProvider::MergeHistogramDeltasForTesting(
bool async,
base::OnceClosure done_callback) { … }
SubprocessMetricsProvider::RefCountedAllocator::RefCountedAllocator(
std::unique_ptr<base::PersistentHistogramAllocator> allocator)
: … { … }
SubprocessMetricsProvider::RefCountedAllocator::~RefCountedAllocator() =
default;
SubprocessMetricsProvider::SubprocessMetricsProvider()
: … { … }
SubprocessMetricsProvider::~SubprocessMetricsProvider() { … }
void SubprocessMetricsProvider::RegisterSubprocessAllocator(
int id,
std::unique_ptr<base::PersistentHistogramAllocator> allocator) { … }
void SubprocessMetricsProvider::DeregisterSubprocessAllocator(int id) { … }
void SubprocessMetricsProvider::MergeHistogramDeltas(
bool async,
base::OnceClosure done_callback) { … }
void SubprocessMetricsProvider::BrowserChildProcessLaunchedAndConnected(
const content::ChildProcessData& data) { … }
void SubprocessMetricsProvider::BrowserChildProcessHostDisconnected(
const content::ChildProcessData& data) { … }
void SubprocessMetricsProvider::BrowserChildProcessCrashed(
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) { … }
void SubprocessMetricsProvider::BrowserChildProcessKilled(
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) { … }
void SubprocessMetricsProvider::OnRenderProcessHostCreated(
content::RenderProcessHost* host) { … }
void SubprocessMetricsProvider::RenderProcessReady(
content::RenderProcessHost* host) { … }
void SubprocessMetricsProvider::RenderProcessExited(
content::RenderProcessHost* host,
const content::ChildProcessTerminationInfo& info) { … }
void SubprocessMetricsProvider::RenderProcessHostDestroyed(
content::RenderProcessHost* host) { … }
void SubprocessMetricsProvider::RecreateTaskRunnerForTesting() { … }
void SubprocessMetricsProvider::MergeHistogramDeltasFromAllocator(
int id,
RefCountedAllocator* allocator) { … }
void SubprocessMetricsProvider::MergeHistogramDeltasFromAllocators(
AllocatorByIdMap* allocators) { … }
void SubprocessMetricsProvider::OnMergeHistogramDeltasFromAllocator(
scoped_refptr<RefCountedAllocator> allocator) { … }
void SubprocessMetricsProvider::OnMergeHistogramDeltasFromAllocators(
std::unique_ptr<AllocatorByIdMap> allocators,
base::OnceClosure done_callback) { … }
}