blob: 6acf489d0e954aac92cc59019d2d451271662b01 [file] [log] [blame]
// Copyright 2018 The Chromium OS 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 POWER_MANAGER_POWERD_SYSTEM_DARK_RESUME_H_
#define POWER_MANAGER_POWERD_SYSTEM_DARK_RESUME_H_
#include <string>
#include <base/macros.h>
#include "power_manager/common/prefs_observer.h"
#include "power_manager/powerd/system/dark_resume_interface.h"
namespace power_manager {
class PrefsInterface;
namespace system {
class WakeupSourceIdentifierInterface;
// Newer implementation of dark resume. Uses per device (peripheral) wakeup
// count to identify the wake source.
class DarkResume : public DarkResumeInterface, public PrefsObserver {
public:
DarkResume();
DarkResume(const DarkResume&) = delete;
DarkResume& operator=(const DarkResume&) = delete;
~DarkResume() override;
// Reads preferences on whether dark resume is enabled.
void Init(PrefsInterface* prefs,
WakeupSourceIdentifierInterface* wakeup_source_identifier);
// DarkResumeInterface implementation:
void HandleSuccessfulResume() override;
bool InDarkResume() override;
bool IsEnabled() override;
void ExitDarkResume() override;
// PrefsInterface::Observer implementation:
void OnPrefChanged(const std::string& pref_name) override;
private:
void ReadDarkResumePref();
// Are we currently in dark resume?
bool in_dark_resume_ = false;
// Is dark resume enabled?
bool enabled_ = false;
PrefsInterface* prefs_; // weak
WakeupSourceIdentifierInterface* wakeup_source_identifier_; // weak
};
} // namespace system
} // namespace power_manager
#endif // POWER_MANAGER_POWERD_SYSTEM_DARK_RESUME_H_