diff options
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.cc | 14 |
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()); } |