diff --git a/services/aams/include/accessibility_account_data.h b/services/aams/include/accessibility_account_data.h index 48677189..0be37bc6 100644 --- a/services/aams/include/accessibility_account_data.h +++ b/services/aams/include/accessibility_account_data.h @@ -237,6 +237,7 @@ public: void AddConfigCallback(const sptr& callback); void RemoveConfigCallback(const wptr& callback); const std::vector> &GetConfigCallbacks() const; + void SetConfigCallbacks(std::vector>& observer); void GetImportantEnabledAbilities(std::map &importantEnabledAbilities) const; void UpdateImportantEnabledAbilities(std::map &importantEnabledAbilities); diff --git a/services/aams/src/accessibility_account_data.cpp b/services/aams/src/accessibility_account_data.cpp index 52d62578..5fe54885 100644 --- a/services/aams/src/accessibility_account_data.cpp +++ b/services/aams/src/accessibility_account_data.cpp @@ -541,6 +541,12 @@ const std::vector> &AccessibilityA return configCallbacks_; } +void AccessibilityAccountData::SetConfigCallbacks(std::vector>& observer) +{ + HILOG_DEBUG("start."); + configCallbacks_ = observer; +} + void AccessibilityAccountData::RemoveConfigCallback(const wptr& callback) { HILOG_DEBUG("start."); diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index b83c16b2..b350982f 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -1102,6 +1102,7 @@ void AccessibleAbilityManagerService::SwitchedUser(int32_t accountId) } std::map importantEnabledAbilities; + std::vector> tmpObserver; // Clear last account's data if (currentAccountId_ != -1) { HILOG_DEBUG("current account id: %{public}d", currentAccountId_); @@ -1110,6 +1111,7 @@ void AccessibleAbilityManagerService::SwitchedUser(int32_t accountId) HILOG_ERROR("Current account data is null"); return; } + tmpObserver = accountData->GetConfigCallbacks(); accountData->GetImportantEnabledAbilities(importantEnabledAbilities); accountData->OnAccountSwitched(); UpdateAccessibilityManagerService(); @@ -1125,6 +1127,7 @@ void AccessibleAbilityManagerService::SwitchedUser(int32_t accountId) return; } accountData->Init(); + accountData->SetConfigCallbacks(tmpObserver); float discount = accountData->GetConfig()->GetBrightnessDiscount(); auto& displayPowerMgrClient = DisplayPowerMgr::DisplayPowerMgrClient::GetInstance(); if (!displayPowerMgrClient.DiscountBrightness(discount)) { diff --git a/services/aams/test/mock/src/mock_accessibility_account_data.cpp b/services/aams/test/mock/src/mock_accessibility_account_data.cpp index fdd1d332..b72ea64e 100644 --- a/services/aams/test/mock/src/mock_accessibility_account_data.cpp +++ b/services/aams/test/mock/src/mock_accessibility_account_data.cpp @@ -320,6 +320,12 @@ const std::vector> &AccessibilityA return configCallbacks_; } +void AccessibilityAccountData::SetConfigCallbacks(std::vector>& observer) +{ + HILOG_DEBUG("start."); + configCallbacks_ = observer; +} + void AccessibilityAccountData::RemoveConfigCallback(const wptr& callback) { HILOG_DEBUG("start.");