summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander <akutsan@luxoft.com>2018-12-17 17:54:58 +0000
committerigapchuck <igapchuck@luxoft.com>2019-07-24 10:26:36 +0300
commit4f46c006c75c79adefa6071bbca8d8b3eeb6135a (patch)
tree4d0908f6e0f3fdfb3e96fc24df5f1a588b36aceb
parentcba71653afd3ee68ae97b47505391db821aaac8d (diff)
downloadsdl_core-4f46c006c75c79adefa6071bbca8d8b3eeb6135a.tar.gz
Add lock_screen_dismissal_enabled to Policy Interface
Removed redundant comments of overridden functions
-rw-r--r--src/components/application_manager/include/application_manager/policies/policy_handler.h1
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc27
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/on_driver_distraction_notification_test.cc22
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc6
-rw-r--r--src/components/include/application_manager/policies/policy_handler_interface.h5
-rw-r--r--src/components/include/policy/policy_external/policy/policy_listener.h6
-rw-r--r--src/components/include/policy/policy_external/policy/policy_manager.h10
-rw-r--r--src/components/include/policy/policy_regular/policy/policy_manager.h11
-rw-r--r--src/components/include/test/application_manager/policies/mock_policy_handler_interface.h2
-rw-r--r--src/components/include/test/policy/policy_external/policy/mock_cache_manager.h2
-rw-r--r--src/components/include/test/policy/policy_external/policy/mock_policy_manager.h2
-rw-r--r--src/components/include/test/policy/policy_regular/policy/mock_cache_manager.h2
-rw-r--r--src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h2
-rw-r--r--src/components/policy/policy_external/include/policy/cache_manager.h3
-rw-r--r--src/components/policy/policy_external/include/policy/cache_manager_interface.h10
-rw-r--r--src/components/policy/policy_external/include/policy/policy_manager_impl.h2
-rw-r--r--src/components/policy/policy_external/src/cache_manager.cc12
-rw-r--r--src/components/policy/policy_external/src/policy_manager_impl.cc6
-rw-r--r--src/components/policy/policy_regular/include/policy/cache_manager.h2
-rw-r--r--src/components/policy/policy_regular/include/policy/cache_manager_interface.h11
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_manager_impl.h13
-rw-r--r--src/components/policy/policy_regular/src/cache_manager.cc16
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc16
23 files changed, 177 insertions, 12 deletions
diff --git a/src/components/application_manager/include/application_manager/policies/policy_handler.h b/src/components/application_manager/include/application_manager/policies/policy_handler.h
index abffd3eebb..68ab57ff64 100644
--- a/src/components/application_manager/include/application_manager/policies/policy_handler.h
+++ b/src/components/application_manager/include/application_manager/policies/policy_handler.h
@@ -204,6 +204,7 @@ class PolicyHandler : public PolicyHandlerInterface,
uint32_t TimeoutExchangeMSec() const OVERRIDE;
void OnExceededTimeout() OVERRIDE;
void OnSystemReady() OVERRIDE;
+ const boost::optional<bool> LockScreenDismissalEnabledState() const OVERRIDE;
void PTUpdatedAt(Counters counter, int value) OVERRIDE;
void add_listener(PolicyHandlerObserver* listener) OVERRIDE;
void remove_listener(PolicyHandlerObserver* listener) OVERRIDE;
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc
index 8f2feed877..1653889789 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/hmi_notifications_test.cc
@@ -1797,7 +1797,14 @@ TEST_F(HMICommandsNotificationsTest, OnDriverDistractionNotificationEmptyData) {
CreateCommand<hmi::OnDriverDistractionNotification>(message);
EXPECT_CALL(app_mngr_, set_driver_distraction_state(state));
- EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+
+ ON_CALL(app_mngr_, GetPolicyHandler())
+ .WillByDefault(ReturnRef(mock_policy_handler_));
+ typedef boost::optional<bool> OptionalBool;
+ ON_CALL(mock_policy_handler_, LockScreenDismissalEnabledState())
+ .WillByDefault(Return(OptionalBool(true)));
+ ON_CALL(app_mngr_, applications()).WillByDefault(Return(applications_));
+
EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, _)).Times(0);
EXPECT_CALL(*app_ptr_, app_id()).Times(0);
command->Run();
@@ -1814,7 +1821,14 @@ TEST_F(HMICommandsNotificationsTest,
ApplicationSharedPtr invalid_app;
application_set_.insert(invalid_app);
- EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+
+ ON_CALL(app_mngr_, GetPolicyHandler())
+ .WillByDefault(ReturnRef(mock_policy_handler_));
+ typedef boost::optional<bool> OptionalBool;
+ ON_CALL(mock_policy_handler_, LockScreenDismissalEnabledState())
+ .WillByDefault(Return(OptionalBool(true)));
+ ON_CALL(app_mngr_, applications()).WillByDefault(Return(applications_));
+
EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, _)).Times(0);
EXPECT_CALL(*app_ptr_, app_id()).Times(0);
command->Run();
@@ -1829,7 +1843,14 @@ TEST_F(HMICommandsNotificationsTest, OnDriverDistractionNotificationValidApp) {
CreateCommand<hmi::OnDriverDistractionNotification>(message);
application_set_.insert(app_);
- EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(applications_));
+
+ ON_CALL(app_mngr_, GetPolicyHandler())
+ .WillByDefault(ReturnRef(mock_policy_handler_));
+ typedef boost::optional<bool> OptionalBool;
+ ON_CALL(mock_policy_handler_, LockScreenDismissalEnabledState())
+ .WillByDefault(Return(OptionalBool(true)));
+ ON_CALL(app_mngr_, applications()).WillByDefault(Return(applications_));
+
policy::CheckPermissionResult result;
result.hmi_level_permitted = policy::kRpcAllowed;
EXPECT_CALL(app_mngr_, GetPolicyHandler())
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/on_driver_distraction_notification_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/on_driver_distraction_notification_test.cc
index 802ad01d0b..52732de56d 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/on_driver_distraction_notification_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/on_driver_distraction_notification_test.cc
@@ -65,7 +65,17 @@ class HMIOnDriverDistractionNotificationTest
: public CommandsTest<CommandsTestMocks::kIsNice> {
public:
HMIOnDriverDistractionNotificationTest()
- : app_set_lock_(std::make_shared<sync_primitives::Lock>()) {}
+ : mock_app_(CreateMockApp())
+ , app_set_lock_(std::make_shared<sync_primitives::Lock>())
+ , accessor(app_set_, app_set_lock_) {
+ app_set_.insert(mock_app_);
+ InitMocksRelations();
+ }
+
+ typedef std::shared_ptr<OnDriverDistractionNotification> NotificationPtr;
+ typedef boost::optional<bool> OptionalBool;
+
+ MockAppPtr mock_app_;
std::shared_ptr<sync_primitives::Lock> app_set_lock_;
policy_test::MockPolicyHandlerInterface mock_policy_handler_interface_;
};
@@ -128,14 +138,8 @@ TEST_F(HMIOnDriverDistractionNotificationTest,
NotificationPtr command(
CreateCommand<OnDriverDistractionNotification>(commands_msg));
- EXPECT_CALL(app_mngr_, set_driver_distraction_state(Eq(state)));
-
- MockAppPtr mock_app = CreateMockApp();
- am::ApplicationSet app_set;
- app_set.insert(mock_app);
-
- DataAccessor<am::ApplicationSet> accessor(app_set, app_set_lock_);
- EXPECT_CALL(app_mngr_, applications()).WillOnce(Return(accessor));
+ ON_CALL(mock_policy_handler_interface_, LockScreenDismissalEnabledState())
+ .WillByDefault(Return(boost::optional<bool>()));
policy::CheckPermissionResult result;
result.hmi_level_permitted = policy::kRpcAllowed;
diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc
index bee88633c1..72424b74f9 100644
--- a/src/components/application_manager/src/policies/policy_handler.cc
+++ b/src/components/application_manager/src/policies/policy_handler.cc
@@ -1574,6 +1574,12 @@ void PolicyHandler::OnSystemReady() {
policy_manager_->OnSystemReady();
}
+const boost::optional<bool> PolicyHandler::LockScreenDismissalEnabledState()
+ const {
+ POLICY_LIB_CHECK(boost::optional<bool>());
+ return policy_manager_->LockScreenDismissalEnabledState();
+}
+
void PolicyHandler::PTUpdatedAt(Counters counter, int value) {
POLICY_LIB_CHECK_VOID();
policy_manager_->PTUpdatedAt(counter, value);
diff --git a/src/components/include/application_manager/policies/policy_handler_interface.h b/src/components/include/application_manager/policies/policy_handler_interface.h
index 708c4ddd32..a743b92185 100644
--- a/src/components/include/application_manager/policies/policy_handler_interface.h
+++ b/src/components/include/application_manager/policies/policy_handler_interface.h
@@ -38,6 +38,8 @@
#include <set>
#include <string>
#include <vector>
+#include "boost/optional.hpp"
+
#include "application_manager/application.h"
#include "application_manager/policies/policy_handler_observer.h"
#include "interfaces/MOBILE_API.h"
@@ -49,6 +51,7 @@
#include "smart_objects/smart_object.h"
#include "utils/callable.h"
#include "utils/custom_string.h"
+#include "utils/optional.h"
using namespace ::rpc::policy_table_interface_base;
namespace policy {
@@ -121,6 +124,8 @@ class PolicyHandlerInterface {
virtual uint32_t TimeoutExchangeMSec() const = 0;
virtual void OnExceededTimeout() = 0;
virtual void OnSystemReady() = 0;
+ virtual const boost::optional<bool> LockScreenDismissalEnabledState()
+ const = 0;
virtual void PTUpdatedAt(Counters counter, int value) = 0;
virtual void add_listener(PolicyHandlerObserver* listener) = 0;
virtual void remove_listener(PolicyHandlerObserver* listener) = 0;
diff --git a/src/components/include/policy/policy_external/policy/policy_listener.h b/src/components/include/policy/policy_external/policy/policy_listener.h
index 8299d019f5..c64a6d5496 100644
--- a/src/components/include/policy/policy_external/policy/policy_listener.h
+++ b/src/components/include/policy/policy_external/policy/policy_listener.h
@@ -175,6 +175,12 @@ class PolicyListener {
virtual void OnUpdateHMIStatus(const std::string& device_id,
const std::string& policy_app_id,
const std::string& hmi_level) = 0;
+
+ /**
+ * @brief Notify Connected mobile apps about changing state of
+ * LockScreenDismissal
+ */
+ virtual void OnLockScreenDismissalStateChanged() = 0;
};
} // namespace policy
#endif // SRC_COMPONENTS_INCLUDE_POLICY_POLICY_EXTERNAL_POLICY_POLICY_LISTENER_H_
diff --git a/src/components/include/policy/policy_external/policy/policy_manager.h b/src/components/include/policy/policy_external/policy/policy_manager.h
index 331b579365..6a80e6615e 100644
--- a/src/components/include/policy/policy_external/policy/policy_manager.h
+++ b/src/components/include/policy/policy_external/policy/policy_manager.h
@@ -36,6 +36,7 @@
#include <vector>
#include "utils/callable.h"
+#include "utils/optional.h"
#include "policy/access_remote.h"
#include "policy/cache_manager_interface.h"
@@ -165,6 +166,15 @@ class PolicyManager : public usage_statistics::StatisticsManager {
virtual void KmsChanged(int kilometers) = 0;
/**
+ * @brief Returns state of the lock screen that could be able to be dismissed
+ * while connected to SDL, allowing users the ability to interact with the
+ * app.
+ * @return bool True if lock screen can be dismissed.
+ */
+ virtual const boost::optional<bool> LockScreenDismissalEnabledState()
+ const = 0;
+
+ /**
* @brief Increments counter of ignition cycles
*/
virtual void IncrementIgnitionCycles() = 0;
diff --git a/src/components/include/policy/policy_regular/policy/policy_manager.h b/src/components/include/policy/policy_regular/policy/policy_manager.h
index f82657ef26..eee7986948 100644
--- a/src/components/include/policy/policy_regular/policy/policy_manager.h
+++ b/src/components/include/policy/policy_regular/policy/policy_manager.h
@@ -35,6 +35,7 @@
#include <cstdint>
#include <vector>
+#include "boost/optional.hpp"
#include "policy/access_remote.h"
#include "policy/cache_manager_interface.h"
@@ -43,6 +44,7 @@
#include "policy/policy_types.h"
#include "policy/usage_statistics/statistics_manager.h"
#include "utils/callable.h"
+#include "utils/optional.h"
namespace policy {
class PolicySettings;
@@ -165,6 +167,15 @@ class PolicyManager : public usage_statistics::StatisticsManager {
virtual void KmsChanged(int kilometers) = 0;
/**
+ * @brief Returns state of the lock screen that could be able to be dismissed
+ * while connected to SDL, allowing users the ability to interact with the
+ * app.
+ * @return bool True if lock screen can be dismissed.
+ */
+ virtual const boost::optional<bool> LockScreenDismissalEnabledState()
+ const = 0;
+
+ /**
* @brief Increments counter of ignition cycles
*/
virtual void IncrementIgnitionCycles() = 0;
diff --git a/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h b/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
index 059442f424..7ba29a625d 100644
--- a/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
+++ b/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
@@ -109,6 +109,8 @@ class MockPolicyHandlerInterface : public policy::PolicyHandlerInterface {
MOCK_CONST_METHOD0(TimeoutExchangeMSec, uint32_t());
MOCK_METHOD0(OnExceededTimeout, void());
MOCK_METHOD0(OnSystemReady, void());
+ MOCK_CONST_METHOD0(LockScreenDismissalEnabledState,
+ const boost::optional<bool>());
MOCK_METHOD2(PTUpdatedAt, void(policy::Counters counter, int value));
MOCK_METHOD1(add_listener, void(policy::PolicyHandlerObserver* listener));
MOCK_METHOD1(remove_listener, void(policy::PolicyHandlerObserver* listener));
diff --git a/src/components/include/test/policy/policy_external/policy/mock_cache_manager.h b/src/components/include/test/policy/policy_external/policy/mock_cache_manager.h
index 6f754ad2c9..ab5c34f91d 100644
--- a/src/components/include/test/policy/policy_external/policy/mock_cache_manager.h
+++ b/src/components/include/test/policy/policy_external/policy/mock_cache_manager.h
@@ -110,6 +110,8 @@ class MockCacheManagerInterface : public ::policy::CacheManagerInterface {
policy_table::AppServiceParameters* app_service_parameters));
MOCK_CONST_METHOD1(UnknownRPCPassthroughAllowed,
bool(const std::string& policy_app_id));
+ MOCK_CONST_METHOD0(LockScreenDismissalEnabledState,
+ const boost::optional<bool>());
MOCK_CONST_METHOD1(GetDeviceConsent,
DeviceConsent(const std::string& device_id));
MOCK_METHOD2(SetDeviceConsent,
diff --git a/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h b/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h
index 7ebf73ae54..be346c49ff 100644
--- a/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h
+++ b/src/components/include/test/policy/policy_external/policy/mock_policy_manager.h
@@ -77,6 +77,8 @@ class MockPolicyManager : public PolicyManager {
MOCK_METHOD0(ResetUserConsent, bool());
MOCK_CONST_METHOD0(GetPolicyTableStatus, std::string());
MOCK_METHOD1(KmsChanged, void(int kilometers));
+ MOCK_CONST_METHOD0(LockScreenDismissalEnabledState,
+ const boost::optional<bool>());
MOCK_METHOD0(IncrementIgnitionCycles, void());
MOCK_METHOD0(ForcePTExchange, std::string());
MOCK_METHOD0(ForcePTExchangeAtUserRequest, std::string());
diff --git a/src/components/include/test/policy/policy_regular/policy/mock_cache_manager.h b/src/components/include/test/policy/policy_regular/policy/mock_cache_manager.h
index dacdaf202f..13cc45cfe2 100644
--- a/src/components/include/test/policy/policy_regular/policy/mock_cache_manager.h
+++ b/src/components/include/test/policy/policy_regular/policy/mock_cache_manager.h
@@ -91,6 +91,8 @@ class MockCacheManagerInterface : public CacheManagerInterface {
MOCK_METHOD2(SetHybridAppPreference,
void(const std::string& policy_app_id,
const std::string& hybrid_app_preference));
+ MOCK_CONST_METHOD0(LockScreenDismissalEnabledState,
+ const boost::optional<bool>());
MOCK_METHOD1(SetVINValue, bool(const std::string& value));
MOCK_METHOD2(GetUserFriendlyMsg,
std::vector<UserFriendlyMessage>(
diff --git a/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h b/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
index 73bf2d387b..c440c26208 100644
--- a/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
+++ b/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
@@ -78,6 +78,8 @@ class MockPolicyManager : public PolicyManager {
MOCK_METHOD0(ResetUserConsent, bool());
MOCK_CONST_METHOD0(GetPolicyTableStatus, std::string());
MOCK_METHOD1(KmsChanged, void(int kilometers));
+ MOCK_CONST_METHOD0(LockScreenDismissalEnabledState,
+ const boost::optional<bool>());
MOCK_METHOD0(IncrementIgnitionCycles, void());
MOCK_METHOD0(ForcePTExchange, std::string());
MOCK_METHOD0(ForcePTExchangeAtUserRequest, std::string());
diff --git a/src/components/policy/policy_external/include/policy/cache_manager.h b/src/components/policy/policy_external/include/policy/cache_manager.h
index 15eb51565d..144061e58b 100644
--- a/src/components/policy/policy_external/include/policy/cache_manager.h
+++ b/src/components/policy/policy_external/include/policy/cache_manager.h
@@ -34,6 +34,7 @@
#define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_CACHE_MANAGER_H_
#include <map>
+#include "boost/optional.hpp"
#include "policy/cache_manager_interface.h"
#include "policy/pt_ext_representation.h"
@@ -158,6 +159,8 @@ class CacheManager : public CacheManagerInterface {
*/
virtual const VehicleInfo GetVehicleInfo() const;
+ const boost::optional<bool> LockScreenDismissalEnabledState() const OVERRIDE;
+
/**
* @brief Get a list of enabled cloud applications
* @param enabled_apps List filled with the policy app id of each enabled
diff --git a/src/components/policy/policy_external/include/policy/cache_manager_interface.h b/src/components/policy/policy_external/include/policy/cache_manager_interface.h
index 980ad42dcd..10e3ddde8e 100644
--- a/src/components/policy/policy_external/include/policy/cache_manager_interface.h
+++ b/src/components/policy/policy_external/include/policy/cache_manager_interface.h
@@ -35,6 +35,7 @@
#include <string>
#include <vector>
+#include "boost/optional.hpp"
#include "policy/policy_table/types.h"
#include "policy/pt_representation.h"
@@ -270,6 +271,15 @@ class CacheManagerInterface {
const std::string& policy_app_id) const = 0;
/**
+ * @brief Returns state of the lock screen that could be able to be dismissed
+ * while connected to SDL, allowing users the ability to interact with the
+ * app.
+ * @return bool True if lock screen can be dismissed.
+ */
+ virtual const boost::optional<bool> LockScreenDismissalEnabledState()
+ const = 0;
+
+ /**
* @brief Allows to update 'vin' field in module_meta table.
*
* @param new 'vin' value.
diff --git a/src/components/policy/policy_external/include/policy/policy_manager_impl.h b/src/components/policy/policy_external/include/policy/policy_manager_impl.h
index 2f8f6cf070..1ea85ff6d5 100644
--- a/src/components/policy/policy_external/include/policy/policy_manager_impl.h
+++ b/src/components/policy/policy_external/include/policy/policy_manager_impl.h
@@ -148,6 +148,8 @@ class PolicyManagerImpl : public PolicyManager {
*/
void KmsChanged(int kilometers) OVERRIDE;
+ const boost::optional<bool> LockScreenDismissalEnabledState() const OVERRIDE;
+
/**
* @brief Increments counter of ignition cycles
*/
diff --git a/src/components/policy/policy_external/src/cache_manager.cc b/src/components/policy/policy_external/src/cache_manager.cc
index bd38f7bf8f..6e0c868ed8 100644
--- a/src/components/policy/policy_external/src/cache_manager.cc
+++ b/src/components/policy/policy_external/src/cache_manager.cc
@@ -1561,6 +1561,18 @@ bool CacheManager::UnknownRPCPassthroughAllowed(
return false;
}
+const boost::optional<bool> CacheManager::LockScreenDismissalEnabledState()
+ const {
+ boost::optional<bool> empty;
+ CACHE_MANAGER_CHECK(empty);
+ sync_primitives::AutoLock auto_lock(cache_lock_);
+ policy_table::ModuleConfig& module_config = pt_->policy_table.module_config;
+ if (module_config.lock_screen_dismissal_enabled.is_initialized()) {
+ return boost::optional<bool>(*module_config.lock_screen_dismissal_enabled);
+ }
+ return empty;
+}
+
std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg(
const std::vector<std::string>& msg_codes,
const std::string& language,
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 15900f0187..f56758f0f8 100644
--- a/src/components/policy/policy_external/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_external/src/policy_manager_impl.cc
@@ -1738,6 +1738,12 @@ void PolicyManagerImpl::KmsChanged(int kilometers) {
}
}
+const boost::optional<bool> PolicyManagerImpl::LockScreenDismissalEnabledState()
+ const {
+ LOG4CXX_AUTO_TRACE(logger_);
+ return cache_->LockScreenDismissalEnabledState();
+}
+
void PolicyManagerImpl::IncrementIgnitionCycles() {
cache_->IncrementIgnitionCycles();
}
diff --git a/src/components/policy/policy_regular/include/policy/cache_manager.h b/src/components/policy/policy_regular/include/policy/cache_manager.h
index 30732f685c..392956c784 100644
--- a/src/components/policy/policy_regular/include/policy/cache_manager.h
+++ b/src/components/policy/policy_regular/include/policy/cache_manager.h
@@ -146,6 +146,8 @@ class CacheManager : public CacheManagerInterface {
*/
virtual const VehicleInfo GetVehicleInfo() const;
+ const boost::optional<bool> LockScreenDismissalEnabledState() const OVERRIDE;
+
/**
* @brief Get a list of enabled cloud applications
* @param enabled_apps List filled with the policy app id of each enabled
diff --git a/src/components/policy/policy_regular/include/policy/cache_manager_interface.h b/src/components/policy/policy_regular/include/policy/cache_manager_interface.h
index da15a4ecab..a59cb4522d 100644
--- a/src/components/policy/policy_regular/include/policy/cache_manager_interface.h
+++ b/src/components/policy/policy_regular/include/policy/cache_manager_interface.h
@@ -35,11 +35,13 @@
#include <string>
#include <vector>
+#include "boost/optional.hpp"
#include "policy/policy_settings.h"
#include "policy/policy_table/types.h"
#include "policy/policy_types.h"
#include "policy/usage_statistics/counter.h"
+#include "utils/optional.h"
namespace policy_table = rpc::policy_table_interface_base;
@@ -255,6 +257,15 @@ class CacheManagerInterface {
const std::string& policy_app_id) const = 0;
/**
+ * @brief Returns state of the lock screen that could be able to be dismissed
+ * while connected to SDL, allowing users the ability to interact with the
+ * app.
+ * @return bool True if lock screen can be dismissed.
+ */
+ virtual const boost::optional<bool> LockScreenDismissalEnabledState()
+ const = 0;
+
+ /**
* @brief Allows to update 'vin' field in module_meta table.
*
* @param new 'vin' value.
diff --git a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
index 1860f7e591..407b3510d6 100644
--- a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
+++ b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
@@ -162,6 +162,8 @@ class PolicyManagerImpl : public PolicyManager {
*/
void KmsChanged(int kilometers) OVERRIDE;
+ const boost::optional<bool> LockScreenDismissalEnabledState() const OVERRIDE;
+
/**
* @brief Increments counter of ignition cycles
*/
@@ -820,6 +822,17 @@ class PolicyManagerImpl : public PolicyManager {
const std::shared_ptr<policy_table::Table> snapshot);
/**
+ * @brief Compares current policies to the updated one.
+ * Trigger actions in case if certain fields after update were changed.
+ * This function should be called after PT update.
+ * Actions require already updated policy table
+ * @param update Shared pointer to policy table update
+ * @param snapshot Shared pointer to old copy of policy table
+ */
+ void CheckPermissionsChangesAfterUpdate(const policy_table::Table& update,
+ const policy_table::Table& snapshot);
+
+ /**
* @brief Fill structure to be sent with OnPermissionsChanged notification
*
* @param Policy table struct, which contains rpc functional groups data
diff --git a/src/components/policy/policy_regular/src/cache_manager.cc b/src/components/policy/policy_regular/src/cache_manager.cc
index 94ce52b6f1..ebc1e2315e 100644
--- a/src/components/policy/policy_regular/src/cache_manager.cc
+++ b/src/components/policy/policy_regular/src/cache_manager.cc
@@ -856,6 +856,22 @@ bool CacheManager::UnknownRPCPassthroughAllowed(
return false;
}
+const boost::optional<bool> CacheManager::LockScreenDismissalEnabledState()
+ const {
+ LOG4CXX_AUTO_TRACE(logger_);
+ boost::optional<bool> empty;
+ CACHE_MANAGER_CHECK(empty);
+ sync_primitives::AutoLock auto_lock(cache_lock_);
+ policy_table::ModuleConfig& module_config = pt_->policy_table.module_config;
+ if (module_config.lock_screen_dismissal_enabled.is_initialized()) {
+ LOG4CXX_TRACE(logger_,
+ "state = " << *module_config.lock_screen_dismissal_enabled);
+ return boost::optional<bool>(*module_config.lock_screen_dismissal_enabled);
+ }
+ LOG4CXX_TRACE(logger_, "state = empty");
+ return empty;
+}
+
std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg(
const std::vector<std::string>& msg_codes, const std::string& language) {
LOG4CXX_AUTO_TRACE(logger_);
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 0884fc53b6..ae32908100 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -401,6 +401,17 @@ void PolicyManagerImpl::CheckPermissionsChanges(
CheckAppPolicy(this, pt_update, snapshot));
}
+void PolicyManagerImpl::CheckPermissionsChangesAfterUpdate(
+ const policy_table::Table& update, const policy_table::Table& snapshot) {
+ const auto new_lock_screen_dismissal_enabled =
+ update.policy_table.module_config.lock_screen_dismissal_enabled;
+ const auto old_lock_screen_dismissal_enabled =
+ snapshot.policy_table.module_config.lock_screen_dismissal_enabled;
+ if (new_lock_screen_dismissal_enabled != old_lock_screen_dismissal_enabled) {
+ listener()->OnLockScreenDismissalStateChanged();
+ }
+}
+
void PolicyManagerImpl::PrepareNotificationData(
const policy_table::FunctionalGroupings& groups,
const policy_table::Strings& group_names,
@@ -1068,6 +1079,11 @@ void PolicyManagerImpl::KmsChanged(int kilometers) {
}
}
+const boost::optional<bool> PolicyManagerImpl::LockScreenDismissalEnabledState()
+ const {
+ return cache_->LockScreenDismissalEnabledState();
+}
+
void PolicyManagerImpl::IncrementIgnitionCycles() {
cache_->IncrementIgnitionCycles();
}