summaryrefslogtreecommitdiff
path: root/src/components/policy/policy_external/src/update_status_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/policy/policy_external/src/update_status_manager.cc')
-rw-r--r--src/components/policy/policy_external/src/update_status_manager.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/components/policy/policy_external/src/update_status_manager.cc b/src/components/policy/policy_external/src/update_status_manager.cc
index 050908f3a0..bf20f9dd55 100644
--- a/src/components/policy/policy_external/src/update_status_manager.cc
+++ b/src/components/policy/policy_external/src/update_status_manager.cc
@@ -61,6 +61,7 @@ UpdateStatusManager::~UpdateStatusManager() {
}
void UpdateStatusManager::ProcessEvent(UpdateEvent event) {
+ LOG4CXX_AUTO_TRACE(logger_);
sync_primitives::AutoLock lock(status_lock_);
current_status_->ProcessEvent(this, event);
last_processed_event_ = event;
@@ -164,10 +165,17 @@ bool UpdateStatusManager::IsUpdatePending() const {
}
void UpdateStatusManager::ScheduleUpdate() {
+ LOG4CXX_AUTO_TRACE(logger_);
ProcessEvent(kScheduleUpdate);
}
+void UpdateStatusManager::PendingUpdate() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ ProcessEvent(kPendingUpdate);
+}
+
void UpdateStatusManager::ScheduleManualUpdate() {
+ LOG4CXX_AUTO_TRACE(logger_);
ProcessEvent(kScheduleManualUpdate);
}
@@ -202,7 +210,11 @@ void UpdateStatusManager::DoTransition() {
current_status_ = next_status_;
next_status_.reset();
- if (last_processed_event_ != kScheduleManualUpdate) {
+ const bool is_update_pending =
+ (policy::kUpdateNeeded == current_status_->get_status_string() &&
+ policy::StatusUpdatePending == current_status_->get_status());
+
+ if (last_processed_event_ != kScheduleManualUpdate && !is_update_pending) {
listener_->OnUpdateStatusChanged(current_status_->get_status_string());
}