summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorigapchuck <igapchuck@luxoft.com>2018-08-28 15:34:34 +0300
committerigapchuck <igapchuck@luxoft.com>2018-10-03 13:58:52 +0300
commit11a8d92fd97be696261297a3699a76488d12c434 (patch)
tree6757d701f8ae4a6b8629c98315ff804861e741cb
parent721fcfec20f26ff86dcbd652d12e7cc26e355b7f (diff)
downloadsdl_core-fix/app_revoked_app_still_be_resumed_as_FULL.tar.gz
Fix defect: revoked app still be resumed as FULL.fix/app_revoked_app_still_be_resumed_as_FULL
App was resumed with Full HMI Level when it has been flagged as revoked in the policy table. This PR adds a check that app is not revoked to continue with HMI Level resumption.
-rw-r--r--src/components/application_manager/src/resumption/resume_ctrl_impl.cc10
-rw-r--r--src/components/application_manager/test/include/application_manager/resumption_data_test.h3
-rw-r--r--src/components/application_manager/test/include/application_manager/test_resumption_data_db.h5
-rw-r--r--src/components/application_manager/test/resumption/resume_ctrl_test.cc41
4 files changed, 51 insertions, 8 deletions
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 3e77078ee5..9a43578aa3 100644
--- a/src/components/application_manager/src/resumption/resume_ctrl_impl.cc
+++ b/src/components/application_manager/src/resumption/resume_ctrl_impl.cc
@@ -482,15 +482,19 @@ void ResumeCtrlImpl::StartAppHmiStateResumption(
LOG4CXX_DEBUG(logger_, "No applicable HMI level found for resuming");
return;
}
-
const bool is_resume_allowed_by_low_voltage =
CheckLowVoltageRestrictions(saved_app);
const bool is_hmi_level_allowed_by_ign_cycle =
CheckIgnCycleRestrictions(saved_app);
- const bool restore_hmi_level_allowed =
- is_resume_allowed_by_low_voltage && is_hmi_level_allowed_by_ign_cycle;
+ const bool is_app_revoked =
+ application_manager_.GetPolicyHandler().IsApplicationRevoked(
+ application->policy_app_id());
+
+ const bool restore_hmi_level_allowed = is_resume_allowed_by_low_voltage &&
+ is_hmi_level_allowed_by_ign_cycle &&
+ !is_app_revoked;
if (restore_hmi_level_allowed) {
LOG4CXX_INFO(logger_,
diff --git a/src/components/application_manager/test/include/application_manager/resumption_data_test.h b/src/components/application_manager/test/include/application_manager/resumption_data_test.h
index 4f8c9fd25e..654256cc37 100644
--- a/src/components/application_manager/test/include/application_manager/resumption_data_test.h
+++ b/src/components/application_manager/test/include/application_manager/resumption_data_test.h
@@ -151,7 +151,8 @@ class ResumptionDataTest : public ::testing::Test {
std::shared_ptr<sync_primitives::Lock> ivilock_ptr_;
application_manager_test::MockApplicationManagerSettings
mock_application_manager_settings_;
- application_manager_test::MockApplicationManager mock_application_manager_;
+ NiceMock<application_manager_test::MockApplicationManager>
+ mock_application_manager_;
std::shared_ptr<NiceMock<application_manager_test::MockAppExtension> >
mock_app_extension_;
std::list<application_manager::AppExtensionPtr> extensions_;
diff --git a/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h b/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h
index e10f60afac..afd4e99d9d 100644
--- a/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h
+++ b/src/components/application_manager/test/include/application_manager/test_resumption_data_db.h
@@ -44,13 +44,16 @@ namespace test {
namespace components {
namespace resumption_test {
+using ::testing::NiceMock;
+
class TestResumptionDataDB : public ResumptionDataDB {
public:
utils::dbms::SQLDatabase* get_db_handle() {
return db();
}
- application_manager_test::MockApplicationManager mock_application_manager_;
+ NiceMock<application_manager_test::MockApplicationManager>
+ mock_application_manager_;
TestResumptionDataDB(DbStorage db_storage)
: ResumptionDataDB(db_storage, mock_application_manager_) {}
};
diff --git a/src/components/application_manager/test/resumption/resume_ctrl_test.cc b/src/components/application_manager/test/resumption/resume_ctrl_test.cc
index 1c2339096c..35032587bf 100644
--- a/src/components/application_manager/test/resumption/resume_ctrl_test.cc
+++ b/src/components/application_manager/test/resumption/resume_ctrl_test.cc
@@ -51,6 +51,7 @@
#include "application_manager/mock_application_manager_settings.h"
#include "application_manager/mock_event_dispatcher.h"
#include "application_manager/mock_state_controller.h"
+#include "application_manager/policies/mock_policy_handler_interface.h"
namespace test {
namespace components {
@@ -155,17 +156,25 @@ class ResumeCtrlTest : public ::testing::Test {
ON_CALL(*mock_app_, app_id()).WillByDefault(Return(kTestAppId_));
}
+ void SetupIsAppRevoked(const bool is_app_revoked) {
+ EXPECT_CALL(mock_app_mngr_, GetPolicyHandler())
+ .WillOnce(ReturnRef(mock_policy_handler_));
+ EXPECT_CALL(mock_policy_handler_, IsApplicationRevoked(_))
+ .WillOnce(Return(is_app_revoked));
+ }
+
NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher_;
- application_manager_test::MockApplicationManagerSettings
+ NiceMock<application_manager_test::MockApplicationManagerSettings>
mock_application_manager_settings_;
NiceMock<application_manager_test::MockApplicationManager> mock_app_mngr_;
std::shared_ptr<NiceMock<application_manager_test::MockAppExtension> >
mock_app_extension_;
- MockStateController mock_state_controller_;
+ NiceMock<MockStateController> mock_state_controller_;
std::shared_ptr<ResumeCtrl> res_ctrl_;
std::shared_ptr<NiceMock<resumption_test::MockResumptionData> > mock_storage_;
std::shared_ptr<NiceMock<MockApplication> > mock_app_;
std::shared_ptr<MockHelpPromptManager> mock_help_prompt_manager_;
+ policy_test::MockPolicyHandlerInterface mock_policy_handler_;
application_manager::ApplicationConstSharedPtr const_app_;
const uint32_t kTestAppId_;
const std::string kTestPolicyAppId_;
@@ -197,7 +206,6 @@ TEST_F(ResumeCtrlTest, StartResumption_AppWithGrammarId) {
// Check RestoreApplicationData
GetInfoFromApp();
-
ON_CALL(mock_app_mngr_, GetDefaultHmiLevel(const_app_))
.WillByDefault(Return(kDefaultTestLevel_));
ON_CALL(*mock_storage_,
@@ -640,6 +648,9 @@ TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppInFull) {
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
EXPECT_CALL(*mock_storage_,
RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
.WillOnce(Return(true));
@@ -686,6 +697,9 @@ TEST_F(ResumeCtrlTest, StartAppHmiStateResumption_AppHasDeferredResumption) {
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
mobile_apis::HMILevel::eType app_deferred_level = deferred_level;
EXPECT_CALL(*mock_app_, deferred_resumption_hmi_level())
.WillRepeatedly(ReturnPointee(&app_deferred_level));
@@ -721,6 +735,9 @@ TEST_F(ResumeCtrlTest,
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
EXPECT_CALL(mock_app_mngr_, CheckResumptionRequiredTransportAvailable(_))
.WillOnce(Return(false));
@@ -765,6 +782,9 @@ TEST_F(
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
EXPECT_CALL(mock_app_mngr_, CheckResumptionRequiredTransportAvailable(_))
.WillOnce(Return(false));
@@ -911,6 +931,9 @@ TEST_F(ResumeCtrlTest, ApplicationResumptiOnTimer_AppInFull) {
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
EXPECT_CALL(*mock_storage_,
RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
.WillOnce(Return(true));
@@ -1254,6 +1277,9 @@ TEST_F(
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
EXPECT_CALL(*mock_storage_,
RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
.WillOnce(Return(true));
@@ -1296,6 +1322,9 @@ TEST_F(
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
ON_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
.WillByDefault(Return(policy::kDeviceAllowed));
@@ -1361,6 +1390,9 @@ TEST_F(
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
EXPECT_CALL(*mock_storage_,
RemoveApplicationFromSaved(kTestPolicyAppId_, kMacAddress_))
.WillOnce(Return(true));
@@ -1403,6 +1435,9 @@ TEST_F(
GetSavedApplication(kTestPolicyAppId_, kMacAddress_, _))
.WillByDefault(DoAll(SetArgReferee<2>(saved_app), Return(true)));
+ const bool is_app_revoked = false;
+ SetupIsAppRevoked(is_app_revoked);
+
ON_CALL(mock_app_mngr_, GetUserConsentForDevice("12345"))
.WillByDefault(Return(policy::kDeviceAllowed));