Commit d3059266 authored by Petr Smirnov's avatar Petr Smirnov Committed by Commit Bot

Add GetEolStatus to VersionUpdater

Add VersionUpdater member GetEolStatus to check if device is in end-of-life state.

Bug: 1005151
Change-Id: I23655afa42dfff744bc93b90fcd59a140d7d695d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1807229Reviewed-by: default avatarDenis Kuznetsov <antrim@chromium.org>
Reviewed-by: default avatarIvan Šandrk <isandrk@chromium.org>
Commit-Queue: Petr Smirnov <petrsmirnov@google.com>
Cr-Commit-Position: refs/heads/master@{#699691}
parent 85297c28
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <algorithm> #include <algorithm>
#include <string> #include <string>
#include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/time/default_tick_clock.h" #include "base/time/default_tick_clock.h"
...@@ -116,6 +117,20 @@ void VersionUpdater::StartExitUpdate(Result result) { ...@@ -116,6 +117,20 @@ void VersionUpdater::StartExitUpdate(Result result) {
delegate_->FinishExitUpdate(result); delegate_->FinishExitUpdate(result);
} }
void VersionUpdater::GetEolStatus(EolStatusCallback callback) {
// Request the End of Life (Auto Update Expiration) status. Bind to a weak_ptr
// bound method rather than passing |callback| directly so that |callback|
// does not outlive |this|.
DBusThreadManager::Get()->GetUpdateEngineClient()->GetEolStatus(
base::BindOnce(&VersionUpdater::OnGetEolStatus,
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
}
void VersionUpdater::OnGetEolStatus(EolStatusCallback callback,
update_engine::EndOfLifeStatus status) {
std::move(callback).Run(status);
}
base::OneShotTimer* VersionUpdater::GetRebootTimerForTesting() { base::OneShotTimer* VersionUpdater::GetRebootTimerForTesting() {
return &reboot_timer_; return &reboot_timer_;
} }
......
...@@ -95,6 +95,10 @@ class VersionUpdater : public UpdateEngineClient::Observer, ...@@ -95,6 +95,10 @@ class VersionUpdater : public UpdateEngineClient::Observer,
virtual void DelayErrorMessage() = 0; virtual void DelayErrorMessage() = 0;
}; };
// Callback type for |GetEolStatus|.
using EolStatusCallback =
base::OnceCallback<void(update_engine::EndOfLifeStatus status)>;
explicit VersionUpdater(VersionUpdater::Delegate* delegate); explicit VersionUpdater(VersionUpdater::Delegate* delegate);
~VersionUpdater() override; ~VersionUpdater() override;
...@@ -109,6 +113,9 @@ class VersionUpdater : public UpdateEngineClient::Observer, ...@@ -109,6 +113,9 @@ class VersionUpdater : public UpdateEngineClient::Observer,
const UpdateInfo& update_info() { return update_info_; } const UpdateInfo& update_info() { return update_info_; }
// Has the device already reached its End of Life (Auto Update Expiration)?
void GetEolStatus(EolStatusCallback callback);
void set_tick_clock_for_testing(const base::TickClock* tick_clock) { void set_tick_clock_for_testing(const base::TickClock* tick_clock) {
tick_clock_ = tick_clock; tick_clock_ = tick_clock;
} }
...@@ -117,6 +124,10 @@ class VersionUpdater : public UpdateEngineClient::Observer, ...@@ -117,6 +124,10 @@ class VersionUpdater : public UpdateEngineClient::Observer,
void UpdateStatusChangedForTesting(const update_engine::StatusResult& status); void UpdateStatusChangedForTesting(const update_engine::StatusResult& status);
private: private:
// Callback from UpdateEngineClient::GetEolStatus().
void OnGetEolStatus(EolStatusCallback callback,
update_engine::EndOfLifeStatus status);
void RequestUpdateCheck(); void RequestUpdateCheck();
// UpdateEngineClient::Observer implementation: // UpdateEngineClient::Observer implementation:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment