summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc
diff options
context:
space:
mode:
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.cc67
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,