
The methodology used to generate this CL is documented in https://crbug.com/1098010#c21. No-Try: true No-Presubmit: true Bug: 1098010 Change-Id: I1d041830fce905cf3682306ab435f4356d528c0e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3879644 Reviewed-by: Mark Mentovai <mark@chromium.org> Auto-Submit: Avi Drissman <avi@chromium.org> Commit-Queue: Avi Drissman <avi@chromium.org> Owners-Override: Avi Drissman <avi@chromium.org> Cr-Commit-Position: refs/heads/main@{#1044133}
54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
// Copyright 2016 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef ASH_SHUTDOWN_CONTROLLER_IMPL_H_
|
|
#define ASH_SHUTDOWN_CONTROLLER_IMPL_H_
|
|
|
|
#include "ash/ash_export.h"
|
|
#include "ash/public/cpp/shutdown_controller.h"
|
|
#include "base/observer_list.h"
|
|
|
|
namespace ash {
|
|
|
|
enum class ShutdownReason;
|
|
|
|
// Handles actual device shutdown by making requests to powerd over D-Bus.
|
|
// Caches the DeviceRebootOnShutdown device policy sent from Chrome.
|
|
class ASH_EXPORT ShutdownControllerImpl : public ShutdownController {
|
|
public:
|
|
class Observer {
|
|
public:
|
|
virtual ~Observer() {}
|
|
|
|
// Called when shutdown policy changes.
|
|
virtual void OnShutdownPolicyChanged(bool reboot_on_shutdown) = 0;
|
|
};
|
|
|
|
ShutdownControllerImpl();
|
|
|
|
ShutdownControllerImpl(const ShutdownControllerImpl&) = delete;
|
|
ShutdownControllerImpl& operator=(const ShutdownControllerImpl&) = delete;
|
|
|
|
~ShutdownControllerImpl() override;
|
|
|
|
void AddObserver(Observer* observer);
|
|
void RemoveObserver(Observer* observer);
|
|
|
|
bool reboot_on_shutdown() const { return reboot_on_shutdown_; }
|
|
|
|
// ShutdownController:
|
|
void SetRebootOnShutdown(bool reboot_on_shutdown) override;
|
|
void ShutDownOrReboot(ShutdownReason reason) override;
|
|
|
|
private:
|
|
// Cached copy of the DeviceRebootOnShutdown policy from chrome.
|
|
bool reboot_on_shutdown_ = false;
|
|
|
|
base::ObserverList<Observer>::Unchecked observers_;
|
|
};
|
|
|
|
} // namespace ash
|
|
|
|
#endif // ASH_SHUTDOWN_CONTROLLER_IMPL_H_
|