/* * Copyright (c) 2000 - 2016 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. */ #include #include #include #include #include #include #include #include #include /* For multi-user support */ #include #include "rua.h" #include "rua_internal.h" #include "rua_stat.h" #include "rua_stat_internal.h" static GMainLoop *mainloop = NULL; static pthread_t g_thread; static int callback_id_table[10] = { 0, }; static gboolean run_test(int selected_number); static void *__print_menu(void *arg) { int test_num = 0; int run_next = 1; while(run_next) { printf("==========================================\n"); printf(" Basic test menu \n"); printf("==========================================\n"); printf(" 0. EXIT\n"); printf(" 1. Add rua history to DEFAULT USER(5001)\n"); printf(" 2. Delete history with pkgname\n"); printf(" 3. Load RUA history\n"); printf(" 4. Update RUA stat\n"); printf(" 5. Get RUA stat tags\n"); printf(" 6. Register update callback (MAX 10)\n"); printf(" 7. Unregister update callback\n"); printf("------------------------------------------\n"); int ret = scanf("%d", &test_num); if (ret < 0) { printf("scanf fail %d", ret); break; } run_next = run_test(test_num); } return NULL; } static void __update_cb(char **table, int rows, int cols, void *user_data) { struct rua_rec record; printf("update_cb"); int row; for (row = 0; row < rows; ++row) { rua_history_get_rec(&record, table, rows, cols, row); printf("pkgname : %s, time : %d \n", record.pkg_name, (int)record.launch_time); } } static int __add_history() { int ret; char *app_path; char *pkgname = "org.tizen.ruatester"; app_path = (char *)tzplatform_mkpath(TZ_SYS_RW_APP, pkgname); ret = rua_add_history_for_uid(pkgname, app_path, NULL, 5001); return ret; } static int __delete_history_with_pkgname() { int ret; char *pkgname = "org.tizen.ruatester"; ret = rua_delete_history_with_pkgname_for_uid(pkgname, 5001); return ret; } static int __load_rua_history() { char **table = NULL; int rows = 0; int cols = 0; struct rua_rec record; if (rua_history_load_db_for_uid(&table, &rows, &cols, 5001) || !table) { printf("fail to load rua history \n"); return -1; } int row; for (row = 0; row < rows; ++row) { rua_history_get_rec(&record, table, rows, cols, row); printf("pkgname : %s, time : %d \n", record.pkg_name, (int)record.launch_time); } rua_history_unload_db(&table); return 0; } static int __update_stat() { int ret; ret = rua_stat_update_for_uid("ruacaller", "org.tizen.ruatester", 5001); return ret; } static int __rua_stat_tag_iter_cb(const char *rua_stat_tag, void *data) { printf("rua_stat_tag : %s \n", rua_stat_tag); return 0; } static int __get_stat_tags() { int ret; ret = rua_stat_get_stat_tags_for_uid("ruacaller", __rua_stat_tag_iter_cb, NULL, 5001); return ret; } static int __register_callback() { int ret; int i = 0; for (i = 0; i < 10; i++) { if (callback_id_table[i] == 0) { int output = 0; ret = rua_register_update_cb(__update_cb, NULL, &output); if (ret == -1) { printf("__register_callback error : %d \n", ret); return -1; } printf("callback id : %d \n", output); callback_id_table[i] = output; return 0; } } return -1; } static int __unregister_callback() { int ret; int i = 0; int id = 0; printf("Enter callback_id (The number from register_callback) : "); ret = scanf("%d", &id); if (ret < 0) { printf("scanf fail %d", ret); return -1; } for (i = 0; i < 10; i++) { if (callback_id_table[i] == id) { ret = rua_unregister_update_cb(callback_id_table[i]); if (ret == -1) printf("__unregister_callback : %d \n", ret); callback_id_table[i] = 0; return 0; } } return -1; } static gboolean run_test(int selected_number) { int r = 0; gboolean loop = TRUE; switch (selected_number) { case 0: g_main_loop_quit(mainloop); loop = FALSE; break; case 1: __add_history(); break; case 2: __delete_history_with_pkgname(); break; case 3: __load_rua_history(); break; case 4: __update_stat(); break; case 5: __get_stat_tags(); break; case 6: r = __register_callback(); if (r == -1) printf("table is full"); break; case 7: r = __unregister_callback(); if (r == -1) printf("id is wrong"); break; default: break; } return loop; } int main() { int ret = 0; mainloop = g_main_loop_new(NULL, FALSE); int result = pthread_create(&g_thread, NULL, __print_menu, (void *)NULL); if (result < 0) { printf("pthread_create failed in initialize\n"); return 0; } g_main_loop_run(mainloop); g_main_loop_unref(mainloop); mainloop = NULL; return ret; }