blob: 32b33c0ef48f72c33e2e1994d53044b7082e758a [file] [log] [blame]
// Copyright 2019 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_FRAME_NODE_SOURCE_H_
#define COMPONENTS_PERFORMANCE_MANAGER_FRAME_NODE_SOURCE_H_
#include "base/callback.h"
#include "base/observer_list_types.h"
#include "content/public/browser/global_routing_id.h"
namespace performance_manager {
class FrameNodeImpl;
// Represents a source of existing frame nodes that lives on the main thread.
// In practice, this is used by the worker watchers as an abstraction over the
// PerformanceManagerTabHelper to make testing easier.
class FrameNodeSource {
public:
virtual ~FrameNodeSource() = default;
using OnbeforeFrameNodeRemovedCallback =
base::OnceCallback<void(FrameNodeImpl*)>;
// Returns the frame node associated with |render_process_host_id|. Returns
// null if no such node exists.
virtual FrameNodeImpl* GetFrameNode(
content::GlobalFrameRoutingId render_process_host_id) = 0;
// Subscribes to receive removal notification for a frame node.
virtual void SubscribeToFrameNode(
content::GlobalFrameRoutingId render_process_host_id,
OnbeforeFrameNodeRemovedCallback
on_before_frame_node_removed_callback) = 0;
// Unsubscribes to a frame node
virtual void UnsubscribeFromFrameNode(
content::GlobalFrameRoutingId render_process_host_id) = 0;
};
} // namespace performance_manager
#endif // COMPONENTS_PERFORMANCE_MANAGER_FRAME_NODE_SOURCE_H_