Add new CAPIs
authorHyunwoo Kim <hwlove.kim@samsung.com>
Mon, 1 Apr 2013 15:35:39 +0000 (00:35 +0900)
committerHyunwoo Kim <hwlove.kim@samsung.com>
Thu, 4 Apr 2013 10:56:54 +0000 (19:56 +0900)
Change-Id: Id4f35d927d2b7a91d6d6eeb04193010dfc507389
Signed-off-by: Hyunwoo Kim <hwlove.kim@samsung.com>
16 files changed:
capi/include/privacy_info.h
capi/include/privacy_manager.h
capi/src/privacy_info.c
capi/src/privacy_manager.c
client/inc/PrivacyManagerClient.h
client/inc/privacy_manager_client.h
client/src/PrivacyChecker.cpp
client/src/PrivacyManagerClient.cpp
client/src/privacy_manager_client.cpp
common/inc/PrivacyDb.h
common/inc/PrivacyIdInfo.h
common/src/PrivacyDb.cpp
common/src/PrivacyIdInfo.cpp
packaging/privacy-manager.spec
pkgmgr_plugin/privileges.cpp
server/src/SocketService.cpp

index f3cee7eb7ead558e17b577dccf44f1c10cce2c67..4d9ee851cd3305886e3e750ecbea97874c468a35 100644 (file)
@@ -86,6 +86,20 @@ EXPORT_API int privacy_info_get_privacy_description(privacy_info_h privacy_info,
  */
 EXPORT_API int privacy_info_is_enabled(privacy_info_h privacy_info, bool *enabled);
 
+/**\r
+ * @brief Creates and returns a copy of the given privacy info handle.\r
+ *\r
+ * @remarks A newly created service should be destroyed by calling privacy_info_destroy() if it is no longer needed.\r
+ *\r
+ * @param [out] clone If successful, a newly created privacy info handle will be returned.\r
+ * @param [in] privacy_info The privacy info handle\r
+ * @return 0 on success, otherwise a negative error value.\r
+ * @retval #PRIVACY_MANAGER_ERROR_NONE Successful\r
+ * @retval #PRIVACY_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter\r
+ * @retval #PRIVACY_MANAGER_ERROR_OUT_OF_MEMORY Out of memory\r
+ * @see privacy_info_destroy()\r
+ */\r
+EXPORT_API int privacy_info_clone(privacy_info_h *clone, privacy_info_h privacy_info);\r
 
 #ifdef __cplusplus
 }
index 9900d3b66f9eea46f2796ea5049fa5cd2864ad36..e1433e19f288ea10a372ae2203deb6b85cf7f857 100644 (file)
@@ -68,6 +68,29 @@ typedef bool (*privacy_manager_privacy_packages_cb) (const char *package_id, voi
  */
 typedef bool (*privacy_manager_privacy_info_cb) (privacy_info_h privacy_info, void* user_data);
 
+/**
+ * @brief Called to get all privacy info once.
+ * @remarks @a privacy_info will be automatically destroyed when the callback function returns. (Do not release @a privacy_info.)
+ * @param[in] privacy_info_h privacy info
+ * @param[in] user_data The user data passed from the foreach function
+ * @return @c true to continue with the next iteration of the loop, \n @c false to break out of the loop.
+ * @pre privacy_manager_foreach_all_privacy() will invoke this callback.
+ * @see privacy_manager_foreach_all_privacy()
+ */
+typedef bool (*privacy_manager_all_privacy_info_cb) (privacy_info_h privacy_info, void* user_data);
+
+/**
+ * @brief Called to get a package id and privacy enabled info once for each privacy ID.
+ * @remarks @a package_id will be automatically destroyed when the callback function returns. (Do not release @a package_id.)
+ * @param[in] package_id The package id which uses the specific privacy information.
+ * @param[in] is_enabled A Boolean value indicating whether the privacy setting of the package is enabled
+ * @param[in] user_data The user data passed from the foreach function
+ * @return @c true to continue with the next iteration of the loop, \n @c false to break out of the loop.
+ * @pre privacy_manager_foreach_package_list_by_privacy() will invoke this callback.
+ * @see privacy_manager_foreach_package_list_by_privacy()
+ */
+typedef bool (*privacy_manager_packages_by_privacy_cb) (const char *package_id, bool is_enabled, void* user_data);
+
 /**
  * @brief Retrieves privacy package list.
  * @param [in] callback The callback function to invoke
@@ -112,6 +135,34 @@ EXPORT_API int privacy_manager_foreach_privacy_info(const char *package_id, priv
  */
 EXPORT_API int privacy_manager_set_package_privacy(const char *package_id, const char *privacy_id, bool enable);
 
+/**
+ * @brief Retrieves all privacy list.
+ * @param [in] callback The callback function to invoke
+ * @param [in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #PRIVACY_MANAGER_ERROR_NONE Successful
+ * @retval #PRIVACY_MANAGER_ERROR_IPC_FAILED IPC failed
+ * @retval #PRIVACY_MANAGER_ERROR_DB_FAILED DB operation failed
+ * @post       This function invokes privacy_manager_all_privacy_info_cb() repeatedly for each application context.
+ * @see privacy_manager_all_privacy_info_cb()
+ */
+EXPORT_API int privacy_manager_foreach_all_privacy(privacy_manager_all_privacy_info_cb callback, void* user_data);
+
+/**
+ * @brief Retrieves package list by the privacy id.
+ * @param [in] callback The callback function to invoke
+ * @param [in] user_data The user data to be passed to the callback function
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #PRIVACY_MANAGER_ERROR_NONE Successful
+ * @retval #PRIVACY_MANAGER_ERROR_NO_DATA no package founded.
+ * @retval #PRIVACY_MANAGER_ERROR_IPC_FAILED IPC failed
+ * @retval #PRIVACY_MANAGER_ERROR_DB_FAILED DB operation failed
+ * @post       This function invokes privacy_manager_all_privacy_info_cb() repeatedly for each application context.
+ * @see privacy_manager_all_privacy_info_cb()
+ */
+EXPORT_API int privacy_manager_foreach_package_list_by_privacy(const char *privacy_id, privacy_manager_packages_by_privacy_cb callback, void* user_data);
+
+
 
 #ifdef __cplusplus
 }
index a41284f84ee6ed16fc9b5f6bf423dccf8d856f5c..3f88e21f6b926ab059593303d3a637b2d723cbcc 100644 (file)
 \r
 static int _privacy_info_convert_error(int error)\r
 {\r
+       int ret = PRIV_MGR_ERROR_SUCCESS;\r
 \r
-       return PRIVACY_MANAGER_ERROR_NONE;\r
+       switch (error) \r
+       {\r
+       case PRIV_MGR_ERROR_SUCCESS:\r
+               ret = PRIVACY_MANAGER_ERROR_NONE;
+               break;
+       case PRIV_MGR_ERROR_INVALID_PARAMETER:
+               ret = PRIVACY_MANAGER_ERROR_INVALID_PARAMETER;
+               break;
+       case PRIV_MGR_ERROR_OUT_OF_MEMORY:
+               ret = PRIVACY_MANAGER_ERROR_OUT_OF_MEMORY;
+               break;
+       case PRIV_MGR_ERROR_IO_ERROR:
+               ret = PRIVACY_MANAGER_ERROR_IO_ERROR;
+               break;
+       case PRIV_MGR_ERROR_NO_DATA:
+               ret = PRIVACY_MANAGER_ERROR_NO_DATA;
+               break;
+       case PRIV_MGR_ERROR_DB_ERROR:
+               ret = PRIVACY_MANAGER_ERROR_DB_FAILED;
+               break;
+       case PRIV_MGR_ERROR_IPC_ERROR:\r
+               ret = PRIVACY_MANAGER_ERROR_IPC_FAILED;\r
+               break;\r
+       }\r
+       return ret;\r
 }\r
 \r
 int privacy_info_destroy(privacy_info_h privacy_info)\r
@@ -73,3 +98,35 @@ int privacy_info_is_enabled(struct privacy_info_s* privacy_info, bool *enable)
 \r
        return  _privacy_info_convert_error(retval);\r
 }\r
+\r
+int privacy_info_create(const char *privacy_id, privacy_info_h *privacy_info)\r
+{\r
+       int retval;\r
+       privacy_info_client_s* privacy_info_client = NULL;\r
+       \r
+       retval = create_privacy_info_client_s(privacy_id, false, &privacy_info_client);\r
+       if  (retval != PRIV_MGR_ERROR_SUCCESS)\r
+               return _privacy_info_convert_error(retval);\r
+\r
+       privacy_info_h privacy_info_temp = NULL;\r
+       privacy_info_temp = (struct privacy_info_s*) calloc(1, sizeof(struct privacy_info_s));\r
+       if (privacy_info_temp == NULL)\r
+               return PRIVACY_MANAGER_ERROR_OUT_OF_MEMORY;\r
+       \r
+       privacy_info_temp->privacy_info_client = privacy_info_client;\r
+\r
+       *privacy_info = privacy_info_temp;\r
+\r
+       return PRIVACY_MANAGER_ERROR_NONE;\r
+}\r
+\r
+int privacy_info_clone(privacy_info_h *clone, privacy_info_h privacy_info)\r
+{\r
+       int retval;\r
+       if (clone == NULL || privacy_info == NULL)\r
+               return PRIVACY_MANAGER_ERROR_INVALID_PARAMETER;\r
+       \r
+       retval = privacy_info_create(privacy_info->privacy_info_client->privacy_id, clone);\r
+\r
+       return retval;\r
+}
\ No newline at end of file
index a78bf9ddd64653885240942c3ba2449e667fdebb..dadd1ae869061d292c2364670b65022539f1ab60 100644 (file)
 #include <privacy_info_client.h>\r
 #include <privacy_manager_client.h>\r
 #include <privacy_manager_types_private.h>\r
+#include <dlog.h>\r
 \r
 \r
 static int _privacy_manager_convert_error(int error)\r
 {\r
-       return PRIVACY_MANAGER_ERROR_NONE;\r
+       int ret = PRIV_MGR_ERROR_SUCCESS;\r
+\r
+       LOGD("before error : %d", error);\r
+\r
+       switch (error) \r
+       {\r
+       case PRIV_MGR_ERROR_SUCCESS:\r
+               ret = PRIVACY_MANAGER_ERROR_NONE;
+               break;
+       case PRIV_MGR_ERROR_INVALID_PARAMETER:
+               ret = PRIVACY_MANAGER_ERROR_INVALID_PARAMETER;
+               break;
+       case PRIV_MGR_ERROR_OUT_OF_MEMORY:
+               ret = PRIVACY_MANAGER_ERROR_OUT_OF_MEMORY;
+               break;
+       case PRIV_MGR_ERROR_IO_ERROR:
+               ret = PRIVACY_MANAGER_ERROR_IO_ERROR;
+               break;
+       case PRIV_MGR_ERROR_NO_DATA:
+               ret = PRIVACY_MANAGER_ERROR_NO_DATA;
+               break;
+       case PRIV_MGR_ERROR_DB_ERROR:
+               ret = PRIVACY_MANAGER_ERROR_DB_FAILED;
+               break;
+       case PRIV_MGR_ERROR_IPC_ERROR:\r
+               ret = PRIVACY_MANAGER_ERROR_IPC_FAILED;\r
+               break;\r
+       }\r
+       LOGD("after error : %d", ret);\r
+       return ret;\r
 }\r
 \r
 typedef struct _foreach_privacy_package_context_\r
@@ -41,6 +71,18 @@ typedef struct _foreach_privacy_info_context_
        void *user_data;\r
 } foreach_privacy_info_context_s;\r
 \r
+typedef struct _foreach_all_privacy_context_\r
+{\r
+       privacy_manager_all_privacy_info_cb callback;\r
+       void *user_data;\r
+} foreach_all_privacy_context_s;\r
+\r
+typedef struct _foreach_package_by_privacy_context_\r
+{\r
+       privacy_manager_packages_by_privacy_cb callback;\r
+       void *user_data;\r
+} foreach_package_by_privacy_context_s;\r
+\r
 //static int _create_privacy_info(const char* package_id, bool enabled, privacy_info_h *privacy_info)\r
 //{\r
 //     privacy_info_h temp = (privacy_info_h) calloc(1, sizeof(privacy_info_h));\r
@@ -88,6 +130,36 @@ bool __privacy_manager_client_privacy_info_cb (privacy_info_client_s* privacy_in
        return ret;\r
 }\r
 \r
+bool __privacy_manager_client_all_privacy_info_cb(privacy_info_client_s* privacy_info_client, void* user_data)\r
+{\r
+       foreach_all_privacy_context_s* context = (foreach_all_privacy_context_s*) user_data;\r
+\r
+       struct privacy_info_s* privacy_info = NULL;\r
+\r
+       bool ret = false;\r
+\r
+       privacy_info = (struct privacy_info_s*) calloc(1, sizeof(struct privacy_info_s));\r
+\r
+       privacy_info->privacy_info_client = privacy_info_client;\r
+\r
+       ret = context->callback(privacy_info, context->user_data);\r
+\r
+       free(privacy_info);\r
+\r
+       return ret;\r
+}\r
+\r
+bool __privacy_manager_client_packages_by_privacy_cb(const char *package_id, bool is_enabled, void* user_data)\r
+{\r
+       foreach_package_by_privacy_context_s* context = (foreach_package_by_privacy_context_s*) user_data;\r
+\r
+       bool ret = false;\r
+\r
+       ret = context->callback(package_id, is_enabled, context->user_data);\r
+\r
+       return ret;\r
+}\r
+\r
 int privacy_manager_foreach_privacy_packages(privacy_manager_privacy_packages_cb callback, void *user_data)\r
 {\r
        int retval;\r
@@ -124,9 +196,46 @@ int privacy_manager_foreach_privacy_info(const char *package_id, privacy_manager
 \r
        return _privacy_manager_convert_error(retval);\r
 }\r
+\r
 int privacy_manager_set_package_privacy(const char *package_id, const char *privacy_id, bool enable)\r
 {\r
        int retval = privacy_manager_client_set_package_privacy(package_id, privacy_id, enable);\r
 \r
        return _privacy_manager_convert_error(retval);\r
 }\r
+\r
+int privacy_manager_foreach_all_privacy(privacy_manager_all_privacy_info_cb callback, void* user_data)\r
+{\r
+       int retval;\r
+\r
+       foreach_all_privacy_context_s* context = NULL;\r
+       \r
+       context = (foreach_all_privacy_context_s*) calloc(1, sizeof(foreach_all_privacy_context_s));\r
+       if (context == NULL)\r
+               return PRIV_MGR_ERROR_OUT_OF_MEMORY;\r
+\r
+       context->callback = callback;\r
+       context->user_data = user_data;\r
+\r
+       retval = privacy_manager_client_foreach_all_privacy(__privacy_manager_client_all_privacy_info_cb, context);\r
+\r
+       return _privacy_manager_convert_error(retval);\r
+}\r
+\r
+int privacy_manager_foreach_package_list_by_privacy(const char *privacy_id, privacy_manager_client_packages_by_privacy_cb callback, void* user_data)\r
+{\r
+       int retval;\r
+\r
+       foreach_package_by_privacy_context_s* context = NULL;\r
+       \r
+       context = (foreach_package_by_privacy_context_s*) calloc(1, sizeof(foreach_package_by_privacy_context_s));\r
+       if (context == NULL)\r
+               return PRIV_MGR_ERROR_OUT_OF_MEMORY;\r
+\r
+       context->callback = callback;\r
+       context->user_data = user_data;\r
+\r
+       retval = privacy_manager_client_foreach_package_list_by_privacy(privacy_id, __privacy_manager_client_packages_by_privacy_cb, context);\r
+\r
+       return _privacy_manager_convert_error(retval);\r
+}
\ No newline at end of file
index e5ae684098d4a5f826d978cbcbbcfd3befb569cd..ab5cb3835026dcf9d1a39a6a88f255cb18779629 100644 (file)
@@ -55,6 +55,8 @@ public:
        int isUserPrompted(const std::string pkgId, bool& isPrompted);\r
 \r
        int setUserPrompted(const std::string pkgId, bool prompted);\r
+\r
+       int getAppPackagesbyPrivacyId(std::string privacyId, std::list < std::pair < std::string, bool > >& list);\r
 };\r
 \r
 #endif // _PRIVACY_MANAGER_H_
\ No newline at end of file
index 4d407a601d604ead6b871dd790210d581971c44b..43741af873406c49ea9117b8b2ba328bed0c9472 100644 (file)
@@ -26,6 +26,8 @@ extern "C" {
 \r
 typedef bool (*privacy_manager_client_privacy_packages_cb) (const char *package_id, void* user_data);\r
 typedef bool (*privacy_manager_client_privacy_info_cb) (privacy_info_client_s* privacy_info, void* user_data);\r
+typedef bool (*privacy_manager_client_all_privacy_info_cb) (privacy_info_client_s* privacy_info, void* user_data);\r
+typedef bool (*privacy_manager_client_packages_by_privacy_cb) (const char *package_id, bool is_enabled, void* user_data);\r
 \r
 EXTERN_API int privacy_manager_client_install_privacy(const char *package_id, const char** privacy_list);\r
 EXTERN_API int privacy_manager_client_uninstall_privacy(const char *package_id);\r
@@ -33,7 +35,11 @@ EXTERN_API int privacy_manager_client_foreach_privacy_packages(privacy_manager_c
 EXTERN_API int privacy_manager_client_foreach_get_privacy_info(const char *package_id, privacy_manager_client_privacy_info_cb callback, void* user_data);\r
 EXTERN_API int privacy_manager_client_set_package_privacy(const char *package_id, const char *privacy_id, bool enable);\r
 \r
-EXTERN_API int privacy_manager_client_check_user_consented(const char *package_id, bool consented);\r
+EXTERN_API int privacy_manager_client_check_user_consented(const char *package_id, bool *consented);\r
+EXTERN_API int privacy_manager_client_set_user_consented(const char *package_id, bool consented);\r
+\r
+EXTERN_API int privacy_manager_client_foreach_all_privacy(privacy_manager_client_all_privacy_info_cb callback, void* user_data);\r
+EXTERN_API int privacy_manager_client_foreach_package_list_by_privacy(const char *privacy_id, privacy_manager_client_packages_by_privacy_cb callback, void* user_data);\r
 \r
 #ifdef __cplusplus\r
 }\r
index b2d9b08e43acb6d6a9bca37b8dde3e721996cb40..8eadd0ce5ab2077cbed85499d067938e9fdf29fa 100644 (file)
@@ -274,7 +274,7 @@ PrivacyChecker::checkWithPrivilege(const std::string pkgId, const std::string pr
        int res = PrivacyIdInfo::getPrivacyIdFromPrivilege(privilege, privacyId);\r
        if (res == PRIV_MGR_ERROR_NO_DATA) {\r
                LOGD("NOT privacy privilege");\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "getPrivacyIdFromPrivilege : %d", res);\r
@@ -292,7 +292,7 @@ PrivacyChecker::checkWithPrivilege(const std::string privilege)
        std::string privacyId;\r
        int res = PrivacyIdInfo::getPrivacyIdFromPrivilege(privilege, privacyId);\r
        if (res == PRIV_MGR_ERROR_NO_DATA)\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "getPrivacyIdFromPrivilege : %d", res);\r
 \r
        LOGI("leave");\r
@@ -308,7 +308,7 @@ PrivacyChecker::checkWithDeviceCap(const std::string pkgId, const std::string de
        std::string privacyId;\r
        int res = PrivacyIdInfo::getPrivacyIdFromDeviceCap(deviceCap, privacyId);\r
        if (res == PRIV_MGR_ERROR_NO_DATA)\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "getPrivacyIdFromPrivilege : %d", res);\r
 \r
        LOGI("leave");\r
@@ -324,7 +324,7 @@ PrivacyChecker::checkWithDeviceCap(const std::string deviceCap)
        std::string privacyId;\r
        int res = PrivacyIdInfo::getPrivacyIdFromDeviceCap(deviceCap, privacyId);\r
        if (res == PRIV_MGR_ERROR_NO_DATA)\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "getPrivacyIdFromPrivilege : %d", res);\r
 \r
        LOGI("leave");\r
index 6979767f0985be77c372af1e89a0dc4f5bc2a0f9..d2633c2ff3410d7356fca11c1d8b16b393edc7d1 100644 (file)
@@ -166,4 +166,10 @@ PrivacyManagerClient::setUserPrompted(const std::string pkgId, bool prompted)
        LOGI("leave");\r
 \r
        return result;\r
+}\r
+\r
+int \r
+PrivacyManagerClient::getAppPackagesbyPrivacyId(std::string privacyId, std::list < std::pair < std::string, bool > >& list)\r
+{\r
+       return PrivacyDb::getInstance()->getAppPackagesbyPrivacyId(privacyId, list);\r
 }
\ No newline at end of file
index c09043c835c471c1fd2bcac68f9c32b0d3cc5507..3c3c252558c585e1e25eb91ac8c02da4a5aa2cb8 100644 (file)
@@ -19,6 +19,7 @@
 #include <memory>\r
 #include <dlog.h>\r
 #include <PrivacyManagerClient.h>\r
+#include <PrivacyIdInfo.h>\r
 #include <privacy_manager_client.h>\r
 #include "privacy_manager_client_internal_types.h"\r
 \r
@@ -121,9 +122,68 @@ int privacy_manager_client_set_package_privacy(const char *package_id, const cha
        return pInst->setPrivacySetting(package_id, privacy_id, enable);\r
 }\r
 \r
-int privacy_manager_client_check_user_consented(const char *package_id, bool consented)\r
+int privacy_manager_client_check_user_consented(const char *package_id, bool *consented)\r
 {\r
        PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
 \r
-       return pInst->isUserPrompted(std::string(package_id), consented);\r
+       return pInst->isUserPrompted(std::string(package_id), *consented);\r
+}\r
+\r
+int privacy_manager_client_set_user_consented(const char *package_id, bool consented)\r
+{\r
+       PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
+\r
+       return pInst->setUserPrompted(std::string(package_id), consented);\r
+}\r
+\r
+int privacy_manager_client_foreach_all_privacy(privacy_manager_client_all_privacy_info_cb callback, void* user_data)\r
+{\r
+       int retval;\r
+       bool res;\r
+\r
+       std::list < std::string > privacyList;\r
+       retval = PrivacyIdInfo::getAllPrivacyId(privacyList);\r
+       if (retval != PRIV_MGR_ERROR_SUCCESS)\r
+               return retval;\r
+       if (privacyList.size() == 0)\r
+               return PRIV_MGR_ERROR_NO_DATA;\r
+\r
+       for (std::list < std::string >::iterator iter = privacyList.begin(); iter != privacyList.end(); ++iter)\r
+       {\r
+               privacy_info_client_s *privacy_info_client_s = NULL;\r
+               retval = create_privacy_info_client_s(iter->c_str(), false, &privacy_info_client_s);\r
+               res = callback(privacy_info_client_s, user_data);\r
+               privacy_info_client_s_destroy(privacy_info_client_s);\r
+               if (!res)\r
+                       break;\r
+       }\r
+\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
+}\r
+\r
+int privacy_manager_client_foreach_package_list_by_privacy(const char *privacy_id, privacy_manager_client_packages_by_privacy_cb callback, void* user_data)\r
+{\r
+       int retval;\r
+       bool res;\r
+       PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
+\r
+       std::list < std::pair < std::string, bool > > packageList;\r
+       retval = pInst->getAppPackagesbyPrivacyId(std::string(privacy_id), packageList);\r
+               for (std::list < std::pair < std::string, bool > >::iterator iter = packageList.begin(); iter != packageList.end(); ++iter)\r
+       {\r
+               LOGD("result : %s %d", iter->first.c_str(), iter->second);\r
+       }\r
+       if (retval != PRIV_MGR_ERROR_SUCCESS)\r
+               return retval;\r
+       if (packageList.size() == 0)\r
+               return PRIV_MGR_ERROR_NO_DATA;\r
+\r
+       for (std::list < std::pair < std::string, bool > >::iterator iter = packageList.begin(); iter != packageList.end(); ++iter)\r
+       {\r
+               res = callback(iter->first.c_str(), iter->second, user_data);\r
+               if (!res)\r
+                       break;\r
+       }\r
+\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
 }
\ No newline at end of file
index 4ba9d80df030d0459b79b93bc6038f7a39baed1f..d74b95834a38a8770fca0ae123570e769ae413a5 100644 (file)
@@ -38,9 +38,9 @@ private:
 public:\r
        static PrivacyDb* getInstance(void);\r
 \r
-       int getPrivacyAppPackages(std::list <std::string>& list);\r
+       int getPrivacyAppPackages(std::list <std::string>& list) const;\r
 \r
-       int getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > > & list);\r
+       int getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > > & list) const;\r
 \r
        int setPrivacySetting(const std::string pkgId, const std::string privacyId, bool enabled);\r
 \r
@@ -48,10 +48,11 @@ public:
 \r
        int removeAppPackagePrivacyInfo(const std::string pkgId);\r
 \r
-       int isUserPrompted(const std::string pkgId, bool& isPrompted);\r
+       int isUserPrompted(const std::string pkgId, bool& isPrompted) const;\r
 \r
        int setUserPrompted(const std::string pkgId, bool prompted);\r
 \r
+       int getAppPackagesbyPrivacyId(std::string privacyId, std::list < std::pair < std::string, bool > >& list) const;\r
 };\r
 \r
 \r
index 3756369c6f27dff1995a4100b8604d2e8e3cc15f..0c58248a68a556894d2f71941e7558afdda6d7af 100644 (file)
@@ -32,8 +32,8 @@ public:
        static int initialize(void);\r
        static int getPrivacyIdFromPrivilege(const std::string privilege, std::string& privacyId);\r
        static int getPrivacyIdFromDeviceCap(const std::string deviceCap, std::string& privacyId);\r
-\r
        static int getPrivacyIdListFromPrivilegeList(const std::list < std::string> privilegeList, std::list < std::string> & privacyIdList);\r
+       static int getAllPrivacyId(std::list < std::string >& privacyIdList);\r
 };\r
 \r
 #endif //_PRIVACY_ID_INFO_H_
\ No newline at end of file
index 0335b82101b3da9aa77434ed5164185725bc781d..efab9e9f9150464be19a20c60a6a8a0d66962a0b 100644 (file)
@@ -58,7 +58,7 @@ PrivacyDb::setPrivacySetting(const std::string pkgId, const std::string privacyI
 }\r
 \r
 int\r
-PrivacyDb::getPrivacyAppPackages(std::list <std::string>& list)\r
+PrivacyDb::getPrivacyAppPackages(std::list <std::string>& list) const\r
 {\r
        LOGI("enter");\r
 \r
@@ -81,7 +81,7 @@ PrivacyDb::getPrivacyAppPackages(std::list <std::string>& list)
 }\r
 \r
 int\r
-PrivacyDb::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > >& privacyInfoList)\r
+PrivacyDb::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > >& privacyInfoList) const\r
 {\r
        LOGI("enter");\r
 \r
@@ -186,7 +186,7 @@ PrivacyDb::removeAppPackagePrivacyInfo(const std::string pkgId)
 }\r
 \r
 int\r
-PrivacyDb::isUserPrompted(const std::string pkgId, bool& isPrompted)\r
+PrivacyDb::isUserPrompted(const std::string pkgId, bool& isPrompted) const\r
 {\r
        LOGI("enter");\r
 \r
@@ -239,6 +239,38 @@ PrivacyDb::setUserPrompted(const std::string pkgId, bool prompted)
        return 0;\r
 }\r
 \r
+int\r
+PrivacyDb::getAppPackagesbyPrivacyId(std::string privacyId, std::list < std::pair < std::string, bool > >& list) const\r
+{\r
+       LOGI("enter");\r
+\r
+       std::string sql = std::string("SELECT PKG_ID, IS_ENABLED from PrivacyInfo where PRIVACY_ID=?");\r
+\r
+       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       prepareDb(pDbHandler, sql.c_str(), pStmt);\r
+\r
+       LOGD("privacy id : %s", privacyId.c_str());\r
+       int res = sqlite3_bind_text(pStmt.get(), 1, privacyId.c_str(), -1, SQLITE_TRANSIENT);\r
+       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
+\r
+       while ( sqlite3_step(pStmt.get()) == SQLITE_ROW )\r
+       {\r
+               \r
+               const char* pPkgId =  reinterpret_cast < const char* > (sqlite3_column_text(pStmt.get(), 0));\r
+               bool isEnabled = sqlite3_column_int(pStmt.get(), 1) > 0 ? true : false;\r
+               LOGD("result : %s %d", pPkgId, isEnabled);\r
+               list.push_back( std::pair <std::string, bool >(std::string(pPkgId), isEnabled) );\r
+       }\r
+\r
+       \r
+\r
+\r
+       LOGI("leave %d", res);\r
+\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
+}\r
+\r
+\r
 PrivacyDb::PrivacyDb(void)\r
 {\r
 \r
index 080420ba5b1168c0134422ad243133742772cdf4..048f5277bad698208f3de4590f0009a4fbb36b98 100644 (file)
@@ -182,5 +182,26 @@ PrivacyIdInfo::getPrivacyIdListFromPrivilegeList(const std::list < std::string>
                privacyIdList.push_back(*iter);\r
        }\r
 \r
+       return PRIV_MGR_ERROR_SUCCESS;\r
+}\r
+\r
+int\r
+PrivacyIdInfo::getAllPrivacyId(std::list < std::string >& privacyIdList)\r
+{\r
+       static const std::string sql("SELECT PRIVACY_ID from PrivacyInfo");\r
+\r
+       LOGI("enter");\r
+       \r
+       openDb(PRIVACY_INFO_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READONLY);\r
+       prepareDb(pDbHandler, sql.c_str(), pStmt);\r
+\r
+       int res;\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
+               privacyIdList.push_back(std::string(privacyId));\r
+               LOGD(" privacy Id : %s", privacyId);\r
+       }\r
+\r
        return PRIV_MGR_ERROR_SUCCESS;\r
 }
\ No newline at end of file
index 33cb60e4f845bb86229f336996e10b285e0ec59a..391d213e76e016b9b9611c7b0385aa11f1452f50 100644 (file)
@@ -1,7 +1,7 @@
 Name:    privacy-manager-server
 Summary: Privacy Management
 Version: 0.0.2
-Release: 2
+Release: 3
 Group:   System/Libraries
 License: SAMSUNG
 Source0: %{name}-%{version}.tar.gz
@@ -112,8 +112,8 @@ install -D %{SOURCE4} %{buildroot}%{_datadir}/capi-security-privacy-manager.mani
 
 #mkdir -p %{buildroot}/etc/rc.d/rc3.d
 #mkdir -p %{buildroot}/etc/rc.d/rc5.d
-#ln -sf res/etc/rc.d/init.d/privacy-manager-server.sh %{buildroot}/etc/rc.d/rc3.d/S10privacy-manager-server.sh
-#ln -sf res/etc/rc.d/init.d/privacy-manager-server.sh %{buildroot}/etc/rc.d/rc5.d/S10privacy-manager-server.sh
+#ln -sf /etc/rc.d/init.d/privacy-manager-server.sh %{buildroot}/etc/rc.d/rc3.d/S10privacy-manager-server.sh
+#ln -sf /etc/rc.d/init.d/privacy-manager-server.sh %{buildroot}/etc/rc.d/rc5.d/S10privacy-manager-server.sh
 
 mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
 install -m 0644 %{SOURCE3} %{buildroot}%{_libdir}/systemd/system/privacy-manager-server.service
index 83248d985a2d9720b362ef20bab9816441684c31..e52cffbdba8646df78255ac9cebe8ec0400ed61e 100644 (file)
@@ -103,6 +103,8 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char* packageId)
        }\r
 \r
        LOGI("leave");\r
+    \r
+    return 0;\r
 }\r
 \r
 extern "C"\r
index 612c3e260e28292860258450c5aaca3edcee81f2..8695ca0353bb5b6955db3d9a50bc3c5baac2292e 100644 (file)
@@ -32,8 +32,6 @@
 #include "SocketConnection.h"\r
 \r
 const int SocketService::MAX_LISTEN = 5;\r
-const int SocketService::TIMEOUT_SEC = 0;\r
-const int SocketService::TIMEOUT_NSEC = 100000000;\r
 \r
 SocketService::SocketService(void)\r
        : m_listenFd(-1)\r
@@ -153,7 +151,6 @@ SocketService::mainloop(void)
        FD_ZERO(&allset);\r
        FD_SET(m_listenFd, &allset);\r
        FD_SET(signal_fd, &allset);\r
-       timespec timeout;\r
        maxfd = (m_listenFd > signal_fd) ? (m_listenFd) : (signal_fd);\r
        ++maxfd;\r
        //this will block SIGPIPE for this thread and every thread created in it\r
@@ -166,10 +163,8 @@ SocketService::mainloop(void)
 \r
        while(1)\r
        {\r
-               timeout.tv_sec = TIMEOUT_SEC;\r
-               timeout.tv_nsec = TIMEOUT_NSEC;\r
                rset = allset;\r
-               if(pselect(maxfd, &rset, NULL, NULL, &timeout, NULL) == -1)\r
+               if(pselect(maxfd, &rset, NULL, NULL, NULL, NULL) == -1)\r
                {\r
                        closeConnections();\r
                        LOGE("pselect()");\r
@@ -371,4 +366,4 @@ SocketService::closeConnections(void)
        }\r
 \r
        LOGI("Connections closed");\r
-}
\ No newline at end of file
+}\r