| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_PROCESS_PROCESS_PRIORITY_DELEGATE_H_ |
| #define BASE_PROCESS_PROCESS_PRIORITY_DELEGATE_H_ |
| |
| #include "base/base_export.h" |
| #include "base/process/process.h" |
| |
| namespace base { |
| |
| // A ProcessPriorityDelegate can intercept process priority changes. This can be |
| // used to adjust process properties via another process (e.g. resourced on |
| // ChromeOS). |
| // Methods are thread-safe. |
| class BASE_EXPORT ProcessPriorityDelegate { |
| public: |
| ProcessPriorityDelegate() = default; |
| |
| ProcessPriorityDelegate(const ProcessPriorityDelegate&) = delete; |
| ProcessPriorityDelegate& operator=(const ProcessPriorityDelegate&) = delete; |
| |
| virtual ~ProcessPriorityDelegate() = default; |
| |
| // Returns true if changing the priority of processes through |
| // `base::Process::SetPriority()` is possible. |
| virtual bool CanSetProcessPriority() = 0; |
| |
| // Initialize internal state for the process priority. |
| virtual void InitializeProcessPriority(ProcessId process_id) = 0; |
| |
| // Clears internal state for the process priority. |
| virtual void ForgetProcessPriority(ProcessId process_id) = 0; |
| |
| // Set process priotiry on behalf of base::Process::SetPriority(). |
| virtual bool SetProcessPriority(ProcessId process_id, |
| Process::Priority priority) = 0; |
| |
| // Returns the process priority on behalf of base::Process::GetPriority(). |
| virtual Process::Priority GetProcessPriority(ProcessId process_id) = 0; |
| }; |
| |
| } // namespace base |
| |
| #endif // BASE_PROCESS_PROCESS_PRIORITY_DELEGATE_H_ |