blob: af1905a86d8bd97782fb1a30663d02be4261be3c [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"
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_id| and |frame_id|.
// Returns null if no such node exists.
virtual FrameNodeImpl* GetFrameNode(int render_process_id, int frame_id) = 0;
// Subscribes to receive removal notification for a frame node.
virtual void SubscribeToFrameNode(
int render_process_id,
int frame_id,
OnbeforeFrameNodeRemovedCallback
on_before_frame_node_removed_callback) = 0;
// Unsubscribes to a frame node
virtual void UnsubscribeFromFrameNode(int render_process_id,
int frame_id) = 0;
};
} // namespace performance_manager
#endif // COMPONENTS_PERFORMANCE_MANAGER_FRAME_NODE_SOURCE_H_