summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Keeler <jacob.keeler@livioradio.com>2017-09-07 12:47:53 -0400
committerGitHub <noreply@github.com>2017-09-07 12:47:53 -0400
commit3f003d6bbb301725218a8dbacfcf92e04fb874d7 (patch)
treeedd5aa1bdc50955fac47d6e8d71396623faab538
parent90339816ea1078f822889fd33e8a94738a4f0f07 (diff)
parent038ac30079f202885895bebc1f229df918b6929f (diff)
downloadsdl_core-3f003d6bbb301725218a8dbacfcf92e04fb874d7.tar.gz
Merge pull request #1620 from AByzhynar/fix/FixFactoryDefaults
Clear persistent data of all registered applications after FACTORY_DEFAULTS and MASTER_RESET
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h5
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc51
-rw-r--r--src/components/application_manager/src/commands/hmi/on_exit_all_applications_notification.cc1
-rw-r--r--src/components/config_profile/include/config_profile/profile.h2
-rw-r--r--src/components/include/application_manager/application_manager_settings.h1
-rw-r--r--src/components/include/test/application_manager/mock_application_manager_settings.h1
-rw-r--r--src/components/policy/policy_external/src/policy_manager_impl.cc5
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc4
8 files changed, 57 insertions, 13 deletions
diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h
index 6d5c365a99..7a26501afc 100644
--- a/src/components/application_manager/include/application_manager/application_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/application_manager_impl.h
@@ -1218,6 +1218,11 @@ class ApplicationManagerImpl
return is_stopping_;
}
+ /**
+ * @brief Clears all applications' persistent data
+ */
+ void ClearAppsPersistentData();
+
StateController& state_controller() OVERRIDE;
const ApplicationManagerSettings& get_settings() const OVERRIDE;
virtual event_engine::EventDispatcher& event_dispatcher() OVERRIDE;
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index d6c2aa6d7a..ab20222fcf 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -2712,32 +2712,38 @@ void ApplicationManagerImpl::RemovePolicyObserver(
void ApplicationManagerImpl::SetUnregisterAllApplicationsReason(
mobile_api::AppInterfaceUnregisteredReason::eType reason) {
+ LOG4CXX_AUTO_TRACE(logger_);
LOG4CXX_TRACE(logger_, "reason = " << reason);
unregister_reason_ = reason;
}
void ApplicationManagerImpl::HeadUnitReset(
mobile_api::AppInterfaceUnregisteredReason::eType reason) {
+ LOG4CXX_AUTO_TRACE(logger_);
stopping_application_mng_lock_.Acquire();
is_stopping_ = true;
stopping_application_mng_lock_.Release();
switch (reason) {
case mobile_api::AppInterfaceUnregisteredReason::MASTER_RESET: {
+ LOG4CXX_TRACE(logger_, "Performing MASTER_RESET");
UnregisterAllApplications();
GetPolicyHandler().ResetPolicyTable();
GetPolicyHandler().UnloadPolicyLibrary();
resume_controller().StopSavePersistentDataTimer();
- file_system::remove_directory_content(
- get_settings().app_storage_folder());
+
+ const std::string storage_folder = get_settings().app_storage_folder();
+ file_system::RemoveDirectory(storage_folder, true);
+ ClearAppsPersistentData();
break;
}
case mobile_api::AppInterfaceUnregisteredReason::FACTORY_DEFAULTS: {
+ LOG4CXX_TRACE(logger_, "Performing FACTORY_DEFAULTS");
GetPolicyHandler().ClearUserConsent();
resume_controller().StopSavePersistentDataTimer();
- file_system::remove_directory_content(
- get_settings().app_storage_folder());
+
+ ClearAppsPersistentData();
break;
}
default: {
@@ -2747,6 +2753,43 @@ void ApplicationManagerImpl::HeadUnitReset(
}
}
+void ApplicationManagerImpl::ClearAppsPersistentData() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ typedef std::vector<std::string> FilesList;
+ const std::string apps_info_storage_file = get_settings().app_info_storage();
+ file_system::DeleteFile(apps_info_storage_file);
+
+ const std::string storage_folder = get_settings().app_storage_folder();
+
+ FilesList files = file_system::ListFiles(storage_folder);
+ FilesList::iterator element_to_skip =
+ std::find(files.begin(), files.end(), "policy.sqlite");
+ if (element_to_skip != files.end()) {
+ files.erase(element_to_skip);
+ }
+
+ FilesList::iterator it = files.begin();
+ for (; it != files.end(); ++it) {
+ const std::string path_to_item = storage_folder + "/";
+ const std::string item_to_remove = path_to_item + (*it);
+ LOG4CXX_TRACE(logger_, "Removing : " << item_to_remove);
+ if (file_system::IsDirectory(item_to_remove)) {
+ LOG4CXX_TRACE(logger_,
+ "Removal result : " << file_system::RemoveDirectory(
+ item_to_remove, true));
+ } else {
+ LOG4CXX_TRACE(
+ logger_,
+ "Removal result : " << file_system::DeleteFile(item_to_remove));
+ }
+ }
+
+ const std::string apps_icons_folder = get_settings().app_icons_folder();
+ if (storage_folder != apps_icons_folder) {
+ file_system::RemoveDirectory(apps_icons_folder, true);
+ }
+}
+
void ApplicationManagerImpl::SendOnSDLClose() {
LOG4CXX_AUTO_TRACE(logger_);
diff --git a/src/components/application_manager/src/commands/hmi/on_exit_all_applications_notification.cc b/src/components/application_manager/src/commands/hmi/on_exit_all_applications_notification.cc
index 682093cef9..07a95adcea 100644
--- a/src/components/application_manager/src/commands/hmi/on_exit_all_applications_notification.cc
+++ b/src/components/application_manager/src/commands/hmi/on_exit_all_applications_notification.cc
@@ -110,5 +110,4 @@ void OnExitAllApplicationsNotification::SendOnSDLPersistenceComplete() {
}
} // namespace commands
-
} // namespace application_manager
diff --git a/src/components/config_profile/include/config_profile/profile.h b/src/components/config_profile/include/config_profile/profile.h
index ea1b3764ac..ac4950220e 100644
--- a/src/components/config_profile/include/config_profile/profile.h
+++ b/src/components/config_profile/include/config_profile/profile.h
@@ -349,7 +349,7 @@ class Profile : public protocol_handler::ProtocolHandlerSettings,
/*
* @brief Returns file name for storing applications data
*/
- const std::string& app_info_storage() const;
+ const std::string& app_info_storage() const OVERRIDE;
/*
* @brief Path to preloaded policy file
diff --git a/src/components/include/application_manager/application_manager_settings.h b/src/components/include/application_manager/application_manager_settings.h
index 415cc57d17..e745a831c6 100644
--- a/src/components/include/application_manager/application_manager_settings.h
+++ b/src/components/include/application_manager/application_manager_settings.h
@@ -63,6 +63,7 @@ class ApplicationManagerSettings : public RequestControlerSettings,
virtual bool launch_hmi() const = 0;
virtual const uint32_t& delete_file_in_none() const = 0;
virtual const std::vector<uint32_t>& supported_diag_modes() const = 0;
+ virtual const std::string& app_info_storage() const = 0;
virtual const uint32_t& list_files_in_none() const = 0;
virtual const std::string& tts_delimiter() const = 0;
virtual const uint32_t& put_file_in_none() const = 0;
diff --git a/src/components/include/test/application_manager/mock_application_manager_settings.h b/src/components/include/test/application_manager/mock_application_manager_settings.h
index c09e79a52f..25cf994566 100644
--- a/src/components/include/test/application_manager/mock_application_manager_settings.h
+++ b/src/components/include/test/application_manager/mock_application_manager_settings.h
@@ -57,6 +57,7 @@ class MockApplicationManagerSettings
const std::pair<uint32_t, int32_t>&());
MOCK_CONST_METHOD0(hash_string_size, uint32_t());
MOCK_CONST_METHOD0(app_storage_folder, const std::string&());
+ MOCK_CONST_METHOD0(app_info_storage, const std::string&());
MOCK_CONST_METHOD0(app_dir_quota, const uint32_t&());
MOCK_CONST_METHOD0(stop_streaming_timeout, uint32_t());
MOCK_CONST_METHOD0(application_list_update_timeout, uint32_t());
diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc
index db858cd2e4..8a80e7755b 100644
--- a/src/components/policy/policy_external/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_external/src/policy_manager_impl.cc
@@ -737,10 +737,7 @@ void PolicyManagerImpl::CheckPermissions(const PTString& app_id,
}
bool PolicyManagerImpl::ResetUserConsent() {
- bool result = true;
- result = cache_->ResetUserConsent();
-
- return result;
+ return cache_->ResetUserConsent();
}
policy_table::Strings PolicyManagerImpl::GetGroupsNames(
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc
index 93e831acda..640b9c1457 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -414,9 +414,7 @@ void PolicyManagerImpl::CheckPermissions(const PTString& device_id,
}
bool PolicyManagerImpl::ResetUserConsent() {
- bool result = true;
-
- return result;
+ return cache_->ResetUserConsent();
}
void PolicyManagerImpl::SendNotificationOnPermissionsUpdated(