123456789101112131415161718192021222324252627282930313233343536373839 |
- // Copyright 2021 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_POWER_SCHEDULER_TRACED_POWER_MODE_H_
- #define COMPONENTS_POWER_SCHEDULER_TRACED_POWER_MODE_H_
- #include <atomic>
- #include "base/memory/raw_ptr.h"
- #include "components/power_scheduler/power_mode.h"
- namespace power_scheduler {
- // Keeps track of a PowerMode and traces its value transitions. Not thread-safe.
- class TracedPowerMode {
- public:
- TracedPowerMode(const char* name, const void* trace_id);
- ~TracedPowerMode();
- TracedPowerMode(const TracedPowerMode&) = delete;
- TracedPowerMode(TracedPowerMode&&);
- void OnTraceLogEnabled();
- void OnIncrementalStateCleared();
- void SetMode(PowerMode);
- PowerMode mode() const { return mode_; }
- private:
- const char* name_;
- raw_ptr<const void> trace_id_;
- PowerMode mode_;
- bool incremental_state_cleared_ = false;
- };
- } // namespace power_scheduler
- #endif // COMPONENTS_POWER_SCHEDULER_TRACED_POWER_MODE_H_
|