blob: 4e4327b5f3a4807b0650c441448b873638f7dafd [file] [log] [blame]
// Copyright 2025 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_SCENARIOS_INPUT_SCENARIO_OBSERVER_H_
#define COMPONENTS_PERFORMANCE_MANAGER_SCENARIOS_INPUT_SCENARIO_OBSERVER_H_
#include "base/sequence_checker.h"
#include "components/performance_manager/decorators/frame_input_state_decorator.h"
#include "components/performance_manager/public/graph/frame_node.h"
#include "components/performance_manager/public/graph/graph.h"
#include "components/performance_manager/public/graph/process_node.h"
namespace performance_manager {
class InputScenarioObserver : public FrameInputStateObserver,
public ProcessNodeObserver,
public GraphOwned {
public:
InputScenarioObserver();
~InputScenarioObserver() override;
InputScenarioObserver(const InputScenarioObserver&) = delete;
InputScenarioObserver& operator=(const InputScenarioObserver&) = delete;
// FrameInputStateObserver:
void OnInputScenarioChanged(const FrameNode* frame_node) override;
// ProcessNodeObserver:
void OnBeforeProcessNodeRemoved(const ProcessNode* process_node) override;
// GraphOwned:
void OnPassedToGraph(Graph* graph) override;
void OnTakenFromGraph(Graph* graph) override;
private:
std::map<const ProcessNode*, size_t> process_input_scenarios_count_;
size_t global_input_scenarios_count_ = 0;
SEQUENCE_CHECKER(sequence_checker_);
};
} // namespace performance_manager
#endif // COMPONENTS_PERFORMANCE_MANAGER_SCENARIOS_INPUT_SCENARIO_OBSERVER_H_