From ddd85783bd58bcc9cbc831354eb83444460f74e3 Mon Sep 17 00:00:00 2001 From: Jihoon Chung Date: Mon, 19 Nov 2012 13:22:41 +0900 Subject: [PATCH] Implement security origin dao for setting menu [Issue#] N/A [Problem] N/A [Cause] N/A [Solution] For supporting setting menu, security origin dao is needed to change API and additional type define [SCMRequest] N/A Change-Id: I615c3c56fa1d3bc4a4a564687bddb84afc861774 --- .../dao/security_origin_dao.cpp | 42 +++++++++++++++++++ .../security-origin-dao/security_origin_dao.h | 4 ++ .../security_origin_dao_types.h | 19 ++++++--- 3 files changed, 59 insertions(+), 6 deletions(-) diff --git a/modules/security_origin_dao/dao/security_origin_dao.cpp b/modules/security_origin_dao/dao/security_origin_dao.cpp index 34ed369..c3b24c6 100644 --- a/modules/security_origin_dao/dao/security_origin_dao.cpp +++ b/modules/security_origin_dao/dao/security_origin_dao.cpp @@ -126,6 +126,27 @@ SecurityOriginDAO::~SecurityOriginDAO() m_securityOriginDBInterface.DetachFromThread(); } +SecurityOriginDataList SecurityOriginDAO::getSecurityOriginDataList(void) +{ + SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN + { + SecurityOriginDataList list; + SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_securityOriginDBInterface); + typedef std::list RowList; + RowList rowList = select->GetRowList(); + + FOREACH(it, rowList) { + Origin origin(it->Get_scheme(), it->Get_host(), it->Get_port()); + list.push_back( + SecurityOriginDataPtr( + new SecurityOriginData( + static_cast(it->Get_feature()), origin))); + } + return list; + } + SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get data list") +} + Result SecurityOriginDAO::getResult(const SecurityOriginData &securityOriginData) { SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN @@ -179,6 +200,27 @@ void SecurityOriginDAO::setSecurityOriginData(const SecurityOriginData &security SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to set security origin data") } +void SecurityOriginDAO::removeSecurityOriginData( + const SecurityOriginData &securityOriginData) +{ + SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN + { + ScopedTransaction transaction(&m_securityOriginDBInterface); + + if (true == hasResult(securityOriginData)) { + SECURITY_ORIGIN_DB_DELETE(del, SecurityOriginInfo, &m_securityOriginDBInterface) + del->Where( + And(And(And(Equals(securityOriginData.feature), + Equals(securityOriginData.origin.scheme)), + Equals(securityOriginData.origin.host)), + Equals(securityOriginData.origin.port))); + del->Execute(); + transaction.Commit(); + } + } + SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to set security origin data") +} + bool SecurityOriginDAO::hasResult(const SecurityOriginData &securityOriginData) { SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN diff --git a/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h index a1e649e..e27c02e 100644 --- a/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h +++ b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h @@ -40,15 +40,19 @@ class SecurityOriginDAO explicit SecurityOriginDAO(int handle); virtual ~SecurityOriginDAO(); + SecurityOriginDataList getSecurityOriginDataList(); Result getResult(const SecurityOriginData &securityOriginData); void setSecurityOriginData(const SecurityOriginData &securityOriginData, const Result result); + void removeSecurityOriginData(const SecurityOriginData &securityOriginData); private: std::string m_securityOriginDBPath; DPL::DB::ThreadDatabaseSupport m_securityOriginDBInterface; bool hasResult(const SecurityOriginData &securityOriginData); }; +typedef std::shared_ptr SecurityOriginDAOPtr; + } // namespace SecurityOriginDB #endif // _SECURITY_ORIGIN_DAO_H_ diff --git a/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h index 90e355b..35081ca 100644 --- a/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h +++ b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h @@ -25,24 +25,28 @@ #define _SECURITY_ORIGIN_DAO_TYPES_H_ #include +#include #include namespace SecurityOriginDB { enum Feature { + FEATURE_START = 0, FEATURE_GEOLOCATION = 0, - FEATURE_FILESYSTEM, - FEATURE_WEB_NOTIFICATION + FEATURE_WEB_NOTIFICATION, + FEATURE_WEB_DATABASE, + FEATURE_FILE_SYSTEM_ACCESS, + FEATURE_END = FEATURE_FILE_SYSTEM_ACCESS }; enum Result { RESULT_UNKNOWN = 0, - RESULT_USER_ALLOWED, - RESULT_USER_DENIED, - RESULT_EXCEPTION_ALLOWED, - RESULT_EXCEPTION_DENIED + RESULT_ALLOW_ONCE, + RESULT_DENY_ONCE, + RESULT_ALLOW_ALWAYS, + RESULT_DENY_ALWAYS }; struct Origin @@ -96,6 +100,9 @@ struct SecurityOriginData } }; +typedef std::shared_ptr SecurityOriginDataPtr; +typedef std::list SecurityOriginDataList; + } // namespace SecurityOriginDB #endif // _SECURITY_ORIGIN_DAO_TYPES_H_ -- 2.34.1