chromium/components/performance_manager/public/execution_context_priority/execution_context_priority.h

// Copyright 2019 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_PUBLIC_EXECUTION_CONTEXT_PRIORITY_EXECUTION_CONTEXT_PRIORITY_H_
#define COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_EXECUTION_CONTEXT_PRIORITY_EXECUTION_CONTEXT_PRIORITY_H_

#include "base/task/task_traits.h"
#include "components/performance_manager/public/voting/optional_voting_channel.h"
#include "components/performance_manager/public/voting/voting.h"

// Specialization of a voting system used to get votes related to the
// TaskPriority of ExecutionContexts.

namespace performance_manager {

namespace execution_context {
class ExecutionContext;
}

namespace execution_context_priority {

ExecutionContext;

// Helper function equivalent to strcmp, but that is safe to use with nullptr.
int ReasonCompare(const char* reason1, const char* reason2);

// Helper class for storing a priority and a reason.
class PriorityAndReason {};

Vote;
VoterId;
VoteObserver;
VotingChannel;
VotingChannelFactory;
OptionalVotingChannel;

}  // namespace execution_context_priority
}  // namespace performance_manager

#endif  // COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_EXECUTION_CONTEXT_PRIORITY_EXECUTION_CONTEXT_PRIORITY_H_