diff options
7 files changed, 40 insertions, 5 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h index 53d98456c2..de4319acb7 100644 --- a/src/components/application_manager/include/application_manager/application.h +++ b/src/components/application_manager/include/application_manager/application.h @@ -564,6 +564,20 @@ class Application : public virtual InitialApplicationData, */ virtual void set_is_application_data_changed(bool state_application_data) = 0; + /** + * @brief Checks if application data is allowed to be resumed + * @return TRUE if data of application is allowed to be resumed, otherwise + * return FALSE + */ + virtual bool is_app_data_resumption_allowed() const = 0; + + /** + * @brief Sets resumption allowance for application data + * @param allowed - true if app data allowed to be resumed, + * false value means that app data is disallowed for resumption + */ + virtual void set_app_data_resumption_allowance(const bool allowed) = 0; + virtual void CloseActiveMessage() = 0; virtual bool IsFullscreen() const = 0; virtual void ChangeSupportingAppHMIType() = 0; diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h index 1d8f582012..40bb58c009 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -283,6 +283,9 @@ class ApplicationImpl : public virtual Application, virtual bool is_application_data_changed() const; + bool is_app_data_resumption_allowed() const OVERRIDE; + void set_app_data_resumption_allowance(const bool allowed) OVERRIDE; + virtual void set_is_application_data_changed(bool state_application_data); /** @@ -568,6 +571,7 @@ class ApplicationImpl : public virtual Application, sync_primitives::Lock streaming_stop_lock_; bool is_app_allowed_; + bool is_app_data_resumption_allowed_; bool has_been_activated_; bool tts_properties_in_none_; bool tts_properties_in_full_; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc index 472d6dc264..6077425c07 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc @@ -87,7 +87,7 @@ OnBCSystemCapabilityUpdatedNotificationFromHMI:: (*message_)[strings::params][strings::connection_key] = (*message_)[strings::msg_params][strings::app_id]; (*message_)[strings::msg_params].erase(strings::app_id); - if (app->is_resuming()) { + if (app->is_resuming() && app->is_app_data_resumption_allowed()) { LOG4CXX_DEBUG(logger_, "Application is resuming"); app->display_capabilities_builder().UpdateDisplayCapabilities( display_capabilities); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_capability_updated_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_capability_updated_notification.cc index 8c2c6d1aff..cc6ab7b65b 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_capability_updated_notification.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_capability_updated_notification.cc @@ -208,7 +208,7 @@ void OnSystemCapabilityUpdatedNotification::Run() { if (mobile_apis::SystemCapabilityType::DISPLAYS == system_capability_type) { LOG4CXX_DEBUG(logger_, "Using common display capabilities"); auto capabilities = hmi_capabilities_.system_display_capabilities(); - if (app->is_resuming()) { + if (app->is_resuming() && app->is_app_data_resumption_allowed()) { LOG4CXX_DEBUG(logger_, "Application " << app->app_id() diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc index 1f0267b986..bb505e2498 100644 --- a/src/components/application_manager/src/application_impl.cc +++ b/src/components/application_manager/src/application_impl.cc @@ -113,6 +113,7 @@ ApplicationImpl::ApplicationImpl( , video_streaming_suspended_(true) , audio_streaming_suspended_(true) , is_app_allowed_(true) + , is_app_data_resumption_allowed_(false) , has_been_activated_(false) , tts_properties_in_none_(false) , tts_properties_in_full_(false) @@ -720,6 +721,14 @@ void ApplicationImpl::set_app_allowed(const bool allowed) { is_app_allowed_ = allowed; } +bool ApplicationImpl::is_app_data_resumption_allowed() const { + return is_app_data_resumption_allowed_; +} + +void ApplicationImpl::set_app_data_resumption_allowance(const bool allowed) { + is_app_data_resumption_allowed_ = allowed; +} + void ApplicationImpl::set_secondary_device( connection_handler::DeviceHandle secondary_device) { secondary_device_id_ = secondary_device; diff --git a/src/components/application_manager/src/resumption/resume_ctrl_impl.cc b/src/components/application_manager/src/resumption/resume_ctrl_impl.cc index dfa2976114..957075150f 100644 --- a/src/components/application_manager/src/resumption/resume_ctrl_impl.cc +++ b/src/components/application_manager/src/resumption/resume_ctrl_impl.cc @@ -217,7 +217,8 @@ bool ResumeCtrlImpl::RestoreAppHMIState(ApplicationSharedPtr application) { const bool app_hmi_state_is_set = SetAppHMIState(application, saved_hmi_level, true); - if (app_hmi_state_is_set) { + if (app_hmi_state_is_set && + application->is_app_data_resumption_allowed()) { RestoreAppWidgets(application, saved_app); } } else { @@ -681,9 +682,14 @@ bool ResumeCtrlImpl::CheckApplicationHash(ApplicationSharedPtr application, "app_id : " << application->app_id() << " hash : " << hash); smart_objects::SmartObject saved_app; const std::string& device_mac = application->mac_address(); - bool result = resumption_storage_->GetSavedApplication( + const bool get_app_result = resumption_storage_->GetSavedApplication( application->policy_app_id(), device_mac, saved_app); - return result ? saved_app[strings::hash_id].asString() == hash : false; + const bool check_result = + get_app_result ? saved_app[strings::hash_id].asString() == hash : false; + if (check_result) { + application->set_app_data_resumption_allowance(true); + } + return check_result; } void ResumeCtrlImpl::SaveDataOnTimer() { diff --git a/src/components/application_manager/test/include/application_manager/mock_application.h b/src/components/application_manager/test/include/application_manager/mock_application.h index e0f00f7b3a..29e1c1cf9f 100644 --- a/src/components/application_manager/test/include/application_manager/mock_application.h +++ b/src/components/application_manager/test/include/application_manager/mock_application.h @@ -58,6 +58,8 @@ class MockApplication : public ::application_manager::Application { MOCK_CONST_METHOD0(is_application_data_changed, bool()); MOCK_METHOD1(set_is_application_data_changed, void(bool state_application_data)); + MOCK_CONST_METHOD0(is_app_data_resumption_allowed, bool()); + MOCK_METHOD1(set_app_data_resumption_allowance, void(bool allowed)); MOCK_METHOD0(CloseActiveMessage, void()); MOCK_CONST_METHOD0(IsFullscreen, bool()); MOCK_METHOD0(ChangeSupportingAppHMIType, void()); |