Add test automation privilege operation
[platform/core/security/privacy-manager.git] / server / src / PrivacyManagerServer.cpp
index 7a729dd..3887f88 100644 (file)
  */\r
 \r
 #include <sstream>\r
-#include <PrivacyManagerServer.h>\r
 #include <dlog.h>\r
 #include <Utils.h>\r
+#include <PrivacyManagerServer.h>\r
 #include <PrivacyManagerTypes.h>\r
-#include <sqlite3.h>\r
+#include <PrivacyDb.h>\r
 \r
 std::mutex PrivacyManagerServer::m_singletonMutex;\r
 PrivacyManagerServer* PrivacyManagerServer::m_pInstance = NULL;\r
@@ -33,213 +33,56 @@ PrivacyManagerServer::createDB(void)
 int\r
 PrivacyManagerServer::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool enabled)\r
 {\r
-       LOGI("enter");\r
-\r
-       static const std::string query = std::string("UPDATE PrivacyInfo set IS_ENABLED =? where PKG_ID=? and PRIVACY_ID=?");\r
-\r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, query.c_str(), pStmt);\r
+       int res = PrivacyDb::getInstance()->setPrivacySetting(pkgId, privacyId, enabled);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "privacyDb::setPrivacySetting : %d", res);\r
 \r
-       int res = sqlite3_bind_int(pStmt.get(), 1, enabled);\r
-       TryReturn(res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
+       res = m_notificationServer.notifySettingChanged(pkgId, privacyId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "NotificationServer::notifySettingChanged : %d", res);\r
 \r
-       res = sqlite3_bind_text(pStmt.get(), 2, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn(res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-       res = sqlite3_bind_text(pStmt.get(), 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-       \r
-       res = sqlite3_step(pStmt.get());\r
-       TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-       res = m_notificationServer.notify(pkgId, privacyId);\r
-       TryReturn( res == 0, res, , "m_notificationServer.notify : %d", res);\r
-\r
-       LOGI("leave");\r
-\r
-       return 0;\r
+       return res;\r
 }\r
 \r
 int\r
 PrivacyManagerServer::getPrivacyAppPackages(std::list <std::string>& list)\r
 {\r
-       LOGI("enter");\r
-\r
-       std::string query = "SELECT PKG_ID from PackageInfo";\r
-\r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, query.c_str(), pStmt);\r
-\r
-       while ( sqlite3_step(pStmt.get()) == SQLITE_ROW )\r
-       {\r
-               const char* pValue =  reinterpret_cast < const char* > (sqlite3_column_text(pStmt.get(), 0));\r
-\r
-               LOGD("AppId found : %s ", pValue);\r
-               list.push_back(std::string(pValue));\r
-       }\r
-\r
-       LOGI("leave");\r
-\r
-       return 0;\r
+       return PrivacyDb::getInstance()->getPrivacyAppPackages(list);\r
 }\r
 \r
 int\r
 PrivacyManagerServer::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > >& privacyInfoList)\r
 {\r
-       LOGI("enter");\r
-\r
-       static const std::string query = "SELECT PRIVACY_ID, IS_ENABLED from PrivacyInfo where PKG_ID=?";\r
-\r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, query.c_str(), pStmt);\r
-\r
-       int res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-       LOGI("start");\r
-\r
-       while ( (res= sqlite3_step(pStmt.get())) == SQLITE_ROW )\r
-       {\r
-               const char* privacyId =  reinterpret_cast < const char* > (sqlite3_column_text(pStmt.get(), 0));\r
-               bool privacyEnabled = sqlite3_column_int(pStmt.get(), 1) > 0 ? true : false;\r
-\r
-               privacyInfoList.push_back( std::pair <std::string, bool> (std::string(privacyId), privacyEnabled) );\r
-\r
-               LOGD("Privacy found : %s %d", privacyId, privacyEnabled);\r
-       }\r
-\r
-       LOGI("leave");\r
-\r
-       return 0;\r
+       return PrivacyDb::getInstance()->getAppPackagePrivacyInfo(pkgId, privacyInfoList);\r
 }\r
 \r
 \r
 int\r
-PrivacyManagerServer::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string > privilegeList)\r
+PrivacyManagerServer::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string > privilegeList, bool privacyPopupRequired)\r
 {\r
-       LOGI("enter");\r
-\r
-       static const std::string pkgInfoQuery("INSERT INTO PackageInfo(PKG_ID, IS_SET) VALUES(?, ?)");\r
-       static const std::string privacyQuery("INSERT INTO PrivacyInfo(PKG_ID, PRIVACY_ID, IS_ENABLED) VALUES(?, ?, ?)");\r
-       \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, pkgInfoQuery.c_str(), pPkgInfoStmt);\r
-\r
-       int res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-       \r
-       res = sqlite3_bind_int(pPkgInfoStmt.get(), 2, 0);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-       res = sqlite3_step(pPkgInfoStmt.get());\r
-       TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-       \r
-       for ( std::list <std::string>::const_iterator iter = privilegeList.begin(); iter != privilegeList.end(); ++iter)\r
-       {\r
-               LOGD(" install privacy: %s", iter->c_str());\r
-               prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);\r
-               \r
-               res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-               TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-               res = sqlite3_bind_text(pPrivacyStmt.get(), 2, iter->c_str(), -1, SQLITE_TRANSIENT);\r
-               TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-               \r
-               // Before setting app and popup is ready, default value is true\r
-               res = sqlite3_bind_int(pPrivacyStmt.get(), 3, 1);\r
-               TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-               res = sqlite3_step(pPrivacyStmt.get());\r
-               TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-               sqlite3_reset(pPrivacyStmt.get());\r
-       }\r
-\r
-       return 0;\r
+       return PrivacyDb::getInstance()->addAppPackagePrivacyInfo(pkgId, privilegeList, privacyPopupRequired);\r
 }\r
 \r
 int\r
 PrivacyManagerServer::removeAppPackagePrivacyInfo(const std::string pkgId)\r
 {\r
-       LOGI("enter");\r
+       int res = PrivacyDb::getInstance()->removeAppPackagePrivacyInfo(pkgId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "privacyDb::removeAppPackagePrivacyInfo : %d", res);\r
 \r
-       static const std::string pkgInfoQuery("DELETE FROM PackageInfo WHERE PKG_ID=?");\r
-       static const std::string privacyQuery("DELETE FROM PrivacyInfo WHERE PKG_ID=?");\r
+       res = m_notificationServer.notifyPkgRemoved(pkgId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "NotificationServer::notifyPkgRemoved : %d", res);\r
 \r
-       int res;\r
-\r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, pkgInfoQuery.c_str(), pPkgInfoStmt);\r
-\r
-       res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-\r
-       res = sqlite3_step(pPkgInfoStmt.get());\r
-       TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-       prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);\r
-\r
-       res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res); \r
-\r
-       res = sqlite3_step(pPrivacyStmt.get());\r
-       TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-       return 0;\r
+       return res;\r
 }\r
 \r
 int\r
 PrivacyManagerServer::isUserPrompted(const std::string pkgId, bool& isPrompted)\r
 {\r
-       LOGI("enter");\r
-\r
-       static const std::string query = "SELECT IS_SET from PackageInfo where PKG_ID=?";\r
-\r
-       isPrompted = true;\r
-\r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, query.c_str(), pStmt);\r
-\r
-       int res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-\r
-       std::unique_ptr < std::list < std::pair < std:: string, bool > > > pList ( new std::list < std::pair < std:: string, bool > >);\r
-\r
-       if ((res = sqlite3_step(pStmt.get())) == SQLITE_ROW)\r
-       {\r
-               isPrompted = sqlite3_column_int(pStmt.get(), 0) > 0 ? true : false;\r
-       }\r
-       else\r
-       {\r
-               LOGE("The package[%s] doesnt access privacy", pkgId.c_str());\r
-               return PRIV_MGR_ERROR_DB_ERROR;\r
-       }\r
-\r
-       return 0;\r
+       return PrivacyDb::getInstance()->isUserPrompted(pkgId, isPrompted);\r
 }\r
 \r
 int\r
 PrivacyManagerServer::setUserPrompted(const std::string pkgId, bool prompted)\r
 {\r
-       LOGI("enter :%s - %d", pkgId.c_str(), prompted);\r
-\r
-       std::string query = std::string("UPDATE PackageInfo set IS_SET =? where PKG_ID=?");\r
-\r
-       int res;\r
-\r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, query.c_str(), pStmt);\r
-\r
-       res = sqlite3_bind_int(pStmt.get(), 1, prompted? 1 : 0);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-       res = sqlite3_bind_text(pStmt.get(), 2, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-\r
-       res = sqlite3_step(pStmt.get());\r
-       TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-       return 0;\r
+       return PrivacyDb::getInstance()->setUserPrompted(pkgId, prompted);\r
 }\r
 \r
 PrivacyManagerServer::PrivacyManagerServer(void)\r