Add new pkgmar_installer_info API 50/130050/2
authorjongmyeongko <jongmyeong.ko@samsung.com>
Fri, 19 May 2017 02:36:16 +0000 (11:36 +0900)
committerjongmyeongko <jongmyeong.ko@samsung.com>
Fri, 19 May 2017 05:20:30 +0000 (14:20 +0900)
to get privilege_level info of the package which
is being processing by installer currently.

Change-Id: Ic522a61c8b79c25e01f7e5c161dd8d2f91f3d572
Signed-off-by: jongmyeongko <jongmyeong.ko@samsung.com>
installer/CMakeLists.txt
installer/pkgmgr_installer.c
installer/pkgmgr_installer.h
installer/pkgmgr_installer_info.h
installer/pkgmgr_installer_type.h [new file with mode: 0644]

index c3b72ef..4aa5e87 100644 (file)
@@ -37,6 +37,7 @@ INSTALL(TARGETS pkgmgr_installer DESTINATION ${LIB_INSTALL_DIR} COMPONENT Runtim
 INSTALL(FILES pkgmgr_installer.h DESTINATION include/pkgmgr)
 INSTALL(FILES pkgmgr_installer_info.h DESTINATION include/pkgmgr)
 INSTALL(FILES pkgmgr_installer_error.h DESTINATION include/pkgmgr)
+INSTALL(FILES pkgmgr_installer_type.h DESTINATION include/pkgmgr)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
 
 ## pkgmgr_installer_signal_agent
index 36279ab..e9a0aa7 100644 (file)
@@ -113,6 +113,7 @@ struct pkgmgr_installer {
 };
 
 static uid_t g_target_uid;
+static pkgmgr_privilege_level g_privilege_level = PM_PRIVILEGE_UNKNOWN;
 
 static const char *__get_signal_name(pkgmgr_installer *pi, const char *key,
                const char *pkg_type)
@@ -878,9 +879,23 @@ API int pkgmgr_installer_delete_certinfo(const char *pkgid)
        return ret;
 }
 
+API int pkgmgr_installer_set_privilege_level(pkgmgr_privilege_level level)
+{
+       g_privilege_level = level;
+
+       return 0;
+}
+
 API int pkgmgr_installer_info_get_target_uid(uid_t *uid)
 {
        *uid = g_target_uid;
 
        return 0;
 }
+
+API int pkgmgr_installer_info_get_privilege_level(pkgmgr_privilege_level *level)
+{
+       *level = g_privilege_level;
+
+       return 0;
+}
index c108979..73ffbd3 100644 (file)
  */
 
 
-#include <sys/types.h>
-
 #ifndef __PKGMGR_INSTALLER_H__
 #define __PKGMGR_INSTALLER_H__
 
+#include <sys/types.h>
+
+#include "pkgmgr_installer_type.h"
+
 /**
  * @file pkgmgr_installer.h
  * @author Youmin Ha <youmin.ha@samsung.com>
@@ -37,7 +39,6 @@
 extern "C" {
 #endif
 
-
 /**
  * pkgmgr_installer is an opaque type for an object
  */
@@ -45,78 +46,6 @@ typedef struct pkgmgr_installer pkgmgr_installer;
 typedef void *pkgmgr_instcertinfo_h;
 
 /**
- * @brief listening event type in pkgmgr.
- */
-#define PKGMGR_INSTALLER_START_KEY_STR           "start"
-#define PKGMGR_INSTALLER_END_KEY_STR             "end"
-#define PKGMGR_INSTALLER_ERROR_KEY_STR           "error"
-#define PKGMGR_INSTALLER_APPID_KEY_STR           "appid"
-#define PKGMGR_INSTALLER_INSTALL_PERCENT_KEY_STR "install_percent"
-#define PKGMGR_INSTALLER_GET_SIZE_KEY_STR        "get_size"
-#define PKGMGR_INSTALLER_CLEAR_CACHE_KEY_STR     "clear_cache"
-
-#define PKGMGR_INSTALLER_INSTALL_EVENT_STR       "install"
-#define PKGMGR_INSTALLER_UNINSTALL_EVENT_STR     "uninstall"
-#define PKGMGR_INSTALLER_CLEAR_EVENT_STR         "clear"
-#define PKGMGR_INSTALLER_MOVE_EVENT_STR          "move"
-#define PKGMGR_INSTALLER_UPGRADE_EVENT_STR       "update"
-#define PKGMGR_INSTALLER_OK_EVENT_STR            "ok"
-#define PKGMGR_INSTALLER_FAIL_EVENT_STR          "fail"
-#define PKGMGR_INSTALLER_UNKNOWN_EVENT_STR       ""
-
-#define PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR         "disable_app"
-#define PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR          "enable_app"
-
-#define PKGMGR_INSTALLER_APP_DISABLE_SPLASH_SCREEN_EVENT_STR         "disable_app_splash_screen"
-#define PKGMGR_INSTALLER_APP_ENABLE_SPLASH_SCREEN_EVENT_STR          "enable_app_splash_screen"
-
-/**
- * Request type.
- */
-enum {
-       PKGMGR_REQ_PERM = -1,
-       PKGMGR_REQ_INVALID = 0,
-       PKGMGR_REQ_INSTALL = 1,
-       PKGMGR_REQ_UNINSTALL = 2,
-       PKGMGR_REQ_CLEAR = 3,
-       PKGMGR_REQ_MOVE = 4,
-       PKGMGR_REQ_RECOVER = 5,
-       PKGMGR_REQ_REINSTALL = 6,
-       PKGMGR_REQ_GETSIZE = 7,
-       PKGMGR_REQ_UPGRADE = 8,
-       PKGMGR_REQ_SMACK = 9,
-       PKGMGR_REQ_MANIFEST_DIRECT_INSTALL = 10,
-       PKGMGR_REQ_ENABLE_APP = 11,
-       PKGMGR_REQ_DISABLE_APP = 12,
-       PKGMGR_REQ_ENABLE_APP_SPLASH_SCREEN = 13,
-       PKGMGR_REQ_DISABLE_APP_SPLASH_SCREEN = 14,
-       PKGMGR_REQ_MOUNT_INSTALL = 15,
-       PKGMGR_REQ_DISABLE_PKG = 16,
-       PKGMGR_REQ_ENABLE_PKG = 17,
-       PKGMGR_REQ_MIGRATE_EXTIMG = 18
-};
-
-enum {
-       PKGMGR_INSTALLER_EINVAL = -2,           /**< Invalid argument */
-       PKGMGR_INSTALLER_ERROR = -1,            /**< General error */
-       PKGMGR_INSTALLER_EOK = 0                        /**< General success */
-};
-
-
-typedef enum {
-       PM_SET_AUTHOR_ROOT_CERT = 0,
-       PM_SET_AUTHOR_INTERMEDIATE_CERT = 1,
-       PM_SET_AUTHOR_SIGNER_CERT = 2,
-       PM_SET_DISTRIBUTOR_ROOT_CERT = 3,
-       PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4,
-       PM_SET_DISTRIBUTOR_SIGNER_CERT = 5,
-       PM_SET_DISTRIBUTOR2_ROOT_CERT = 6,
-       PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,
-       PM_SET_DISTRIBUTOR2_SIGNER_CERT = 8,
-} pkgmgr_instcert_type;
-
-
-/**
  * @brief      Create a pkgmgr_installer object.
  * @pre                None
  * @post       pkgmgr_installer object must be freed.
@@ -1047,6 +976,16 @@ int pkgmgr_installer_destroy_certinfo_set_handle(pkgmgr_instcertinfo_h handle);
 */
 int pkgmgr_installer_delete_certinfo(const char *pkgid);
 
+/**
+ * @brief      This API sets privilege level for pkgmgr_installer_info
+ *
+ *              This API is for installer backend.\n
+ *
+ * @param[in]  level                           pkgmgr_privilege_level
+ * @return     0 if success, error code(<0) if fail\n
+*/
+int pkgmgr_installer_set_privilege_level(pkgmgr_privilege_level level);
+
 #ifdef __cplusplus
 }
 #endif
index 0f29f6e..91bbeb8 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef __PKGMGR_INSTALLER_INFO_H__
 #define __PKGMGR_INSTALLER_INFO_H__
 
+#include "pkgmgr_installer_type.h"
+
 /**
  * @file       pkgmgr_installer_info.h
  * @brief      This file declares API for getting information of pkgmgr_installer
@@ -31,7 +33,7 @@ extern "C" {
 #endif
 
 /**
- * @brief      Get target_uid for pkg to be installed path
+ * @brief      Get target_uid of package which is being processed by installer
  * @pre                None
  * @post       None
  * @param[out] uid     user id
@@ -50,6 +52,30 @@ extern "C" {
  */
 int pkgmgr_installer_info_get_target_uid(uid_t *uid);
 
+/**
+ * @brief      Get privilege_level of package which is being processed by installer
+ * @pre                None
+ * @post       None
+ * @param[out] pkgmgr_privilege_level  level
+ * @return     0 if success, else retrun < 0
+ * @remark     In case of uninstallation, the level can be PM_PRIVILEGE_UNKNOWN.
+ *             Because, the installer don't have the privilege level in that case.
+ * @code
+       #include <pkgmgr_installer_info.h>
+       int main()
+       {
+               pkgmgr_privilege_level level;
+               if (pkgmgr_installer_info_get_privilege_level(&level) < 0) {
+                       printf("failed to get privilege level\n");
+               }
+               if (level == PM_PRIVILEGE_PLATFORM)) {
+                       printf("platform level privilege");
+               }
+       }
+ * @endcode
+ */
+int pkgmgr_installer_info_get_privilege_level(pkgmgr_privilege_level *level);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/installer/pkgmgr_installer_type.h b/installer/pkgmgr_installer_type.h
new file mode 100644 (file)
index 0000000..7717146
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * slp-pkgmgr
+ *
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __PKGMGR_INSTALLER_TYPE_H__
+#define __PKGMGR_INSTALLER_TYPE_H__
+
+/**
+ * @file       pkgmgr_installer_type.h
+ * @brief      This file declares some types for pkgmgr_installer
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief listening event type in pkgmgr.
+ */
+#define PKGMGR_INSTALLER_START_KEY_STR           "start"
+#define PKGMGR_INSTALLER_END_KEY_STR             "end"
+#define PKGMGR_INSTALLER_ERROR_KEY_STR           "error"
+#define PKGMGR_INSTALLER_APPID_KEY_STR           "appid"
+#define PKGMGR_INSTALLER_INSTALL_PERCENT_KEY_STR "install_percent"
+#define PKGMGR_INSTALLER_GET_SIZE_KEY_STR        "get_size"
+#define PKGMGR_INSTALLER_CLEAR_CACHE_KEY_STR     "clear_cache"
+
+#define PKGMGR_INSTALLER_INSTALL_EVENT_STR       "install"
+#define PKGMGR_INSTALLER_UNINSTALL_EVENT_STR     "uninstall"
+#define PKGMGR_INSTALLER_CLEAR_EVENT_STR         "clear"
+#define PKGMGR_INSTALLER_MOVE_EVENT_STR          "move"
+#define PKGMGR_INSTALLER_UPGRADE_EVENT_STR       "update"
+#define PKGMGR_INSTALLER_OK_EVENT_STR            "ok"
+#define PKGMGR_INSTALLER_FAIL_EVENT_STR          "fail"
+#define PKGMGR_INSTALLER_UNKNOWN_EVENT_STR       ""
+
+#define PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR         "disable_app"
+#define PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR          "enable_app"
+
+#define PKGMGR_INSTALLER_APP_DISABLE_SPLASH_SCREEN_EVENT_STR         "disable_app_splash_screen"
+#define PKGMGR_INSTALLER_APP_ENABLE_SPLASH_SCREEN_EVENT_STR          "enable_app_splash_screen"
+
+/**
+ * Request type.
+ */
+enum {
+       PKGMGR_REQ_PERM = -1,
+       PKGMGR_REQ_INVALID = 0,
+       PKGMGR_REQ_INSTALL = 1,
+       PKGMGR_REQ_UNINSTALL = 2,
+       PKGMGR_REQ_CLEAR = 3,
+       PKGMGR_REQ_MOVE = 4,
+       PKGMGR_REQ_RECOVER = 5,
+       PKGMGR_REQ_REINSTALL = 6,
+       PKGMGR_REQ_GETSIZE = 7,
+       PKGMGR_REQ_UPGRADE = 8,
+       PKGMGR_REQ_SMACK = 9,
+       PKGMGR_REQ_MANIFEST_DIRECT_INSTALL = 10,
+       PKGMGR_REQ_ENABLE_APP = 11,
+       PKGMGR_REQ_DISABLE_APP = 12,
+       PKGMGR_REQ_ENABLE_APP_SPLASH_SCREEN = 13,
+       PKGMGR_REQ_DISABLE_APP_SPLASH_SCREEN = 14,
+       PKGMGR_REQ_MOUNT_INSTALL = 15,
+       PKGMGR_REQ_DISABLE_PKG = 16,
+       PKGMGR_REQ_ENABLE_PKG = 17,
+       PKGMGR_REQ_MIGRATE_EXTIMG = 18
+};
+
+enum {
+       PKGMGR_INSTALLER_EINVAL = -2,           /**< Invalid argument */
+       PKGMGR_INSTALLER_ERROR = -1,            /**< General error */
+       PKGMGR_INSTALLER_EOK = 0                /**< General success */
+};
+
+typedef enum {
+       PM_SET_AUTHOR_ROOT_CERT = 0,
+       PM_SET_AUTHOR_INTERMEDIATE_CERT = 1,
+       PM_SET_AUTHOR_SIGNER_CERT = 2,
+       PM_SET_DISTRIBUTOR_ROOT_CERT = 3,
+       PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4,
+       PM_SET_DISTRIBUTOR_SIGNER_CERT = 5,
+       PM_SET_DISTRIBUTOR2_ROOT_CERT = 6,
+       PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,
+       PM_SET_DISTRIBUTOR2_SIGNER_CERT = 8,
+} pkgmgr_instcert_type;
+
+typedef enum {
+       PM_PRIVILEGE_UNKNOWN = -1,
+       PM_PRIVILEGE_UNTRUSTED = 0,
+       PM_PRIVILEGE_PUBLIC = 1,
+       PM_PRIVILEGE_PARTNER = 2,
+       PM_PRIVILEGE_PLATFORM = 3
+} pkgmgr_privilege_level;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PKGMGR_INSTALLER_TYPE_H__ */
+