blob: 16bf44b7e6c6411d403716ed59c3b30d9e6eb7c0 [file] [log] [blame]
// Copyright 2020 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.
#ifndef COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_DATA_DESCRIBER_H_
#define COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_DATA_DESCRIBER_H_
#include "base/values.h"
namespace performance_manager {
class FrameNode;
class PageNode;
class ProcessNode;
class SystemNode;
class WorkerNode;
// An interface for decoding node-private data for ultimate display as
// human-comprehensible text to allow diagnosis of node private data.
class NodeDataDescriber {
public:
virtual ~NodeDataDescriber() = default;
virtual base::Value DescribeFrameNodeData(const FrameNode* node) const = 0;
virtual base::Value DescribePageNodeData(const PageNode* node) const = 0;
virtual base::Value DescribeProcessNodeData(
const ProcessNode* node) const = 0;
virtual base::Value DescribeSystemNodeData(const SystemNode* node) const = 0;
virtual base::Value DescribeWorkerNodeData(const WorkerNode* node) const = 0;
};
// A convenience do-nothing implementation of the interface above. Returns
// an is_none() value for all nodes.
class NodeDataDescriberDefaultImpl : public NodeDataDescriber {
public:
base::Value DescribeFrameNodeData(const FrameNode* node) const override;
base::Value DescribePageNodeData(const PageNode* node) const override;
base::Value DescribeProcessNodeData(const ProcessNode* node) const override;
base::Value DescribeSystemNodeData(const SystemNode* node) const override;
base::Value DescribeWorkerNodeData(const WorkerNode* node) const override;
};
} // namespace performance_manager
#endif // COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_DATA_DESCRIBER_H_