Revise return value of privilege_info_is_privacy() 46/73246/2 accepted/tizen/common/20160608.160950 accepted/tizen/ivi/20160609.091000 accepted/tizen/mobile/20160609.090921 accepted/tizen/tv/20160609.090933 accepted/tizen/wearable/20160609.090951 submit/tizen/20160608.114653
authorYunjin Lee <yunjin-.lee@samsung.com>
Tue, 7 Jun 2016 09:03:25 +0000 (18:03 +0900)
committerYunjin Lee <yunjin-.lee@samsung.com>
Tue, 7 Jun 2016 09:08:01 +0000 (02:08 -0700)
return 1 for true(privilege id privacy related), 0 for false(include not stored in db case), and -1 for any other DB error.

Change-Id: If5b6d6dd3f2df0879b0e12def69b57bdeebe379d
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
capi/src/privilege_db_manager.c
capi/src/privilege_info.c
test/tc-privilege-info.c

index 767fda3..463b999 100755 (executable)
@@ -402,28 +402,30 @@ int __privilege_db_manager_is_privacy(const char* privilege)
 {
        sqlite3 *db = NULL;
        sqlite3_stmt *stmt = NULL;
+       int is_privacy = 0;
        int ret = __initialize_db('i', &db, PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE);
-       if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
-               return -1;
+       TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL");
 
        char *sql = sqlite3_mprintf("select is_privacy from privilege_info where(profile_id=%d or profile_id=%d)and package_type_id=%d and privilege_name=%Q",
                                                                PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege);
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
-       if (ret != SQLITE_OK) {
-               LOGE("[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db));
-               sqlite3_close(db);
-               return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
-       }
+       TryReturn (ret == SQLITE_OK, sqlite3_close(db), -PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db));
 
        ret = sqlite3_step(stmt);
-       if (ret == SQLITE_ROW)
-               ret = sqlite3_column_int(stmt, 0);
-       else
-               ret = -1;
+       if (ret == SQLITE_ROW) {
+               is_privacy = sqlite3_column_int(stmt, 0);
+               ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
+       } else if (ret == SQLITE_DONE) {
+               LOGD("[PRIVILEGE_DB_MANAGER] NO DATA TO READ. ret = %d", ret);
+               ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
+       }
 
        __finalize_db(db, stmt);
        sqlite3_free(sql);
-       return ret;
+       if (ret > 0)
+               return -ret;
+       else
+               return is_privacy;
 }
 
 int __privilege_db_manager_get_privacy_list(GList **privacy_list)
index eecc237..e2f60a0 100755 (executable)
@@ -534,7 +534,10 @@ int privilege_info_is_privacy(const char* privilege)
 {
        TryReturn(privilege != NULL, , PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
 
-       return __privilege_db_manager_is_privacy(privilege);
+       int ret = __privilege_db_manager_is_privacy(privilege);
+       if (ret != 0 && ret != 1)
+               ret = -1;
+       return ret;
 }
 
 int privilege_info_get_privacy_list(GList **privacy_list)
index 770d8e5..99e893b 100755 (executable)
@@ -114,9 +114,9 @@ static void __test_privilege_info_is_privacy()
        if (ret == 1) {
                success_cnt++;
                printf("SUCCESS: http://tizen.org/privilege/account.read is PRIVACY\n");
-       } else if (ret == 0) {
+       } else {
                fail_cnt++;
-               printf("Test FAILED\n");
+               printf("Test FAILED. ret =  %d\n", ret);
        }
        __print_line();
 
@@ -125,11 +125,22 @@ static void __test_privilege_info_is_privacy()
        if (ret == 0) {
                success_cnt++;
                printf("SUCCESS: http://tizen.org/privilege/internet is NOT PRIVACY\n");
-       } else if (ret == 1) {
+       } else {
                fail_cnt++;
-               printf("Test FAILED\n");
+               printf("Test FAILED. ret = %d\n", ret);
        }
        __print_line();
+
+       printf("privilege : http://tizen.org/privilege/internettttt\n");
+    ret = privilege_info_is_privacy("http://tizen.org/privilege/internettttt");
+    if (ret == 0) {
+        success_cnt++;
+        printf("SUCCESS: http://tizen.org/privilege/internettttt is NOT PRIVACY\n");
+    } else {
+        fail_cnt++;
+        printf("Test FAILED. ret = %d\n", ret);
+    }
+       __print_line();
 }
 
 static void __test_privilege_info_get_privacy_list()