diff options
Diffstat (limited to 'src/components/application_manager/src/resumption/resumption_data_processor_impl.cc')
-rw-r--r-- | src/components/application_manager/src/resumption/resumption_data_processor_impl.cc | 67 |
1 files changed, 42 insertions, 25 deletions
diff --git a/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc b/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc index 18b1f8a2a3..598b7a6ccb 100644 --- a/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc +++ b/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc @@ -162,6 +162,11 @@ void ResumptionDataProcessorImpl::ProcessResumptionStatus( CheckVehicleDataResponse(found_request.message, response, status); } + if (hmi_apis::FunctionID::Buttons_SubscribeButton == + found_request.request_id.function_id) { + ProcessSubscribeButtonResponse(app_id, found_request.message, response); + } + if (hmi_apis::FunctionID::UI_CreateWindow == found_request.request_id.function_id) { CheckCreateWindowResponse(found_request.message, response); @@ -857,6 +862,7 @@ void ResumptionDataProcessorImpl::AddButtonsSubscriptions( const smart_objects::SmartObject& subscriptions = saved_app[strings::application_subscriptions]; + ButtonSubscriptions button_subscriptions; if (subscriptions.keyExists(strings::application_buttons)) { const smart_objects::SmartObject& subscriptions_buttons = subscriptions[strings::application_buttons]; @@ -864,31 +870,20 @@ void ResumptionDataProcessorImpl::AddButtonsSubscriptions( for (size_t i = 0; i < subscriptions_buttons.length(); ++i) { btn = static_cast<mobile_apis::ButtonName::eType>( (subscriptions_buttons[i]).asInt()); - application->SubscribeToButton(btn); + if (mobile_apis::ButtonName::CUSTOM_BUTTON != btn) { + button_subscriptions.insert(btn); + } } - ButtonSubscriptions button_subscriptions = - GetButtonSubscriptionsToResume(application); - ProcessMessagesToHMI( - MessageHelper::CreateOnButtonSubscriptionNotificationsForApp( - application, application_manager_, button_subscriptions)); + MessageHelper::CreateButtonSubscriptionsHandlingRequestsList( + application, + button_subscriptions, + hmi_apis::FunctionID::Buttons_SubscribeButton, + application_manager_)); } } -ButtonSubscriptions ResumptionDataProcessorImpl::GetButtonSubscriptionsToResume( - ApplicationSharedPtr application) const { - ButtonSubscriptions button_subscriptions = - application->SubscribedButtons().GetData(); - auto it = button_subscriptions.find(mobile_apis::ButtonName::CUSTOM_BUTTON); - - if (it != button_subscriptions.end()) { - button_subscriptions.erase(it); - } - - return button_subscriptions; -} - void ResumptionDataProcessorImpl::AddPluginsSubscriptions( ApplicationSharedPtr application, const smart_objects::SmartObject& saved_app) { @@ -916,11 +911,13 @@ void ResumptionDataProcessorImpl::DeleteButtonsSubscriptions( if (hmi_apis::Common_ButtonName::CUSTOM_BUTTON == hmi_btn) { continue; } - auto notification = MessageHelper::CreateOnButtonSubscriptionNotification( - application->hmi_app_id(), hmi_btn, false); - // is_subscribed = false - ProcessMessageToHMI(notification, false); - application->UnsubscribeFromButton(btn); + smart_objects::SmartObjectSPtr unsubscribe_request = + MessageHelper::CreateButtonSubscriptionHandlingRequestToHmi( + application->app_id(), + hmi_btn, + hmi_apis::FunctionID::Buttons_UnsubscribeButton, + application_manager_); + ProcessMessageToHMI(unsubscribe_request, false); } } @@ -1007,7 +1004,7 @@ bool IsResponseSuccessful(const smart_objects::SmartObject& response) { response[strings::params][application_manager::hmi_response::code] .asInt()); - return commands::CommandRequestImpl::IsHMIResultSuccess(result_code) || + return commands::IsHMIResultSuccess(result_code) || hmi_apis::Common_Result::UNSUPPORTED_RESOURCE == result_code; } @@ -1046,6 +1043,26 @@ void ResumptionDataProcessorImpl::CheckVehicleDataResponse( } } +void ResumptionDataProcessorImpl::ProcessSubscribeButtonResponse( + const uint32_t app_id, + const smart_objects::SmartObject& request, + const smart_objects::SmartObject& response) { + SDL_LOG_AUTO_TRACE(); + if (!IsResponseSuccessful(response)) { + return; + } + + ApplicationSharedPtr app = application_manager_.application(app_id); + if (!app) { + SDL_LOG_ERROR("NULL pointer."); + return; + } + const mobile_apis::ButtonName::eType btn_id = + static_cast<mobile_apis::ButtonName::eType>( + request[strings::msg_params][strings::button_name].asInt()); + app->SubscribeToButton(btn_id); +} + void ResumptionDataProcessorImpl::CheckModuleDataSubscription( const ns_smart_device_link::ns_smart_objects::SmartObject& request, const ns_smart_device_link::ns_smart_objects::SmartObject& response, |