blob: 213dbf3149f42084ace7d8a4046695aff6281bd6 [file] [log] [blame]
// 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.
#include "chromeos/lacros/system_idle_cache.h"
#include "chromeos/lacros/lacros_service.h"
namespace chromeos {
SystemIdleCache::SystemIdleCache() : is_fallback_(true) {}
SystemIdleCache::SystemIdleCache(const crosapi::mojom::IdleInfo& info)
: is_fallback_(false), info_(info.Clone()) {}
SystemIdleCache::~SystemIdleCache() = default;
void SystemIdleCache::Start() {
DCHECK(!is_fallback_);
auto* lacros_service = chromeos::LacrosService::Get();
CHECK(lacros_service->IsAvailable<crosapi::mojom::IdleService>());
lacros_service->GetRemote<crosapi::mojom::IdleService>()->AddIdleInfoObserver(
receiver_.BindNewPipeAndPassRemoteWithVersion());
}
base::TimeDelta SystemIdleCache::auto_lock_delay() const {
return is_fallback_ ? base::TimeDelta() : info_->auto_lock_delay;
}
base::TimeTicks SystemIdleCache::last_activity_time() const {
return is_fallback_ ? base::TimeTicks::Now() : info_->last_activity_time;
}
bool SystemIdleCache::is_locked() const {
return is_fallback_ ? false : info_->is_locked;
}
void SystemIdleCache::OnIdleInfoChanged(crosapi::mojom::IdleInfoPtr info) {
info_ = std::move(info);
}
} // namespace chromeos