// Copyright 2020 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 BASE_POWER_MONITOR_THERMAL_STATE_OBSERVER_MAC_H_
#define BASE_POWER_MONITOR_THERMAL_STATE_OBSERVER_MAC_H_

#include <objc/objc.h>
#include <memory>

#include "base/base_export.h"
#include "base/callback.h"
#include "base/power_monitor/power_observer.h"

namespace base {

// This class is used to listen for the thermal state change notification
// NSProcessInfoThermalStateDidChangeNotification, routing it to
// PowerMonitorSource.
class BASE_EXPORT ThermalStateObserverMac {
 public:
  using StateUpdateCallback =
      base::RepeatingCallback<void(PowerObserver::DeviceThermalState)>;

  explicit ThermalStateObserverMac(StateUpdateCallback state_update_callback);
  ~ThermalStateObserverMac();

  PowerObserver::DeviceThermalState GetCurrentThermalState();

 private:
  FRIEND_TEST_ALL_PREFIXES(ThermalStateObserverMacTest, StateChange);
  PowerObserver::DeviceThermalState state_for_testing_ =
      PowerObserver::DeviceThermalState::kUnknown;

  id thermal_state_update_observer_;
};

}  // namespace base

#endif  // BASE_POWER_MONITOR_THERMAL_STATE_OBSERVER_MAC_H_
