#ifndef CHROME_BROWSER_ASH_POWER_IDLE_ACTION_WARNING_OBSERVER_H_
#define CHROME_BROWSER_ASH_POWER_IDLE_ACTION_WARNING_OBSERVER_H_
#include <memory>
#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
#include "chromeos/dbus/power_manager/power_supply_properties.pb.h"
namespace views {
class Widget;
}
namespace ash {
class IdleActionWarningDialogView;
class IdleActionWarningObserver {
public:
IdleActionWarningObserver();
IdleActionWarningObserver(const IdleActionWarningObserver&) = delete;
IdleActionWarningObserver& operator=(const IdleActionWarningObserver&) =
delete;
~IdleActionWarningObserver();
private:
class PowerManagerObserver;
class WidgetObserver;
void IdleActionImminent(base::TimeDelta time_until_idle_action);
void IdleActionDeferred();
void PowerChanged(const power_manager::PowerSupplyProperties& proto);
void OnWidgetDestroying(views::Widget* widget);
void HideDialogIfPresent();
std::unique_ptr<PowerManagerObserver> power_manager_observer_;
std::unique_ptr<WidgetObserver> widged_observer_;
raw_ptr<IdleActionWarningDialogView> warning_dialog_ = nullptr;
bool on_battery_power_ = false;
};
}
#endif