7a26432d9c9155845328d9e8034911bd9c928f20
[platform/framework/web/crosswalk.git] / src / xwalk / application / tools / tizen / xwalk_backendlib.cc
1 // Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <package-manager.h>
6 #include <package-manager-types.h>
7 #include <package-manager-plugin.h>
8
9 #include "base/logging.h"
10 #include "xwalk/application/tools/tizen/xwalk_backend_plugin.h"
11
12 #define API_EXPORT __attribute__((visibility("default")))
13
14 extern "C" {
15
16 // exported function
17 API_EXPORT int pkg_plugin_on_load(pkg_plugin_set *set);
18
19 void pkg_plugin_on_unload();
20 int pkg_plugin_get_app_detail_info(
21     const char* pkg_name, package_manager_pkg_detail_info_t* pkg_detail_info);
22 int pkg_plugin_get_app_detail_info_from_package(
23     const char* pkg_path, package_manager_pkg_detail_info_t* pkg_detail_info);
24 int pkg_plugin_app_is_installed(const char* pkg_name);
25 int pkg_plugin_get_installed_apps_list(
26     const char* category, const char* option, package_manager_pkg_info_t** list,
27     int* count);
28
29 // definitions
30 int pkg_plugin_on_load(pkg_plugin_set* set) {
31   LOG(INFO) << "Crosswalk backend plugin - load";
32
33   if (!set) {
34     return FALSE;
35   }
36   memset(set, 0x00, sizeof(pkg_plugin_set));
37
38   set->plugin_on_unload = pkg_plugin_on_unload;
39   set->pkg_is_installed = pkg_plugin_app_is_installed;
40   set->get_installed_pkg_list = pkg_plugin_get_installed_apps_list;
41   set->get_pkg_detail_info = pkg_plugin_get_app_detail_info;
42   set->get_pkg_detail_info_from_package =
43       pkg_plugin_get_app_detail_info_from_package;
44
45   // FIXME: store load set which contains
46   // pkgmgr sets pkg_type after calling 'pkg_plugin_on_load'
47   // we need to store load set to recover type of package
48   // for which backendlib was loaded - wgt or xpk
49   PkgmgrBackendPlugin::GetInstance()->SetLoadSet(set);
50
51   return 0;
52 }
53
54 void pkg_plugin_on_unload() {
55   LOG(INFO) << "Crosswalk backend plugin ("
56             << PkgmgrBackendPlugin::GetInstance()->type()
57             << ") - unload";
58 }
59
60 int pkg_plugin_get_app_detail_info(
61     const char *pkg_name, package_manager_pkg_detail_info_t *pkg_detail_info) {
62   LOG(INFO) << "Crosswalk backend plugin ("
63             << PkgmgrBackendPlugin::GetInstance()->type()
64             << ") - pkg_plugin_get_app_detail_info";
65
66   return PkgmgrBackendPlugin::GetInstance()->DetailedInfo(pkg_name,
67                                                           pkg_detail_info);
68 }
69
70 int pkg_plugin_get_app_detail_info_from_package(
71     const char *pkg_path, package_manager_pkg_detail_info_t *pkg_detail_info) {
72   LOG(INFO) << "Crosswalk backend plugin ("
73             << PkgmgrBackendPlugin::GetInstance()->type()
74             << ") - pkg_plugin_get_app_detail_info_from_package";
75
76   return PkgmgrBackendPlugin::GetInstance()->DetailedInfoPkg(pkg_path,
77                                                              pkg_detail_info);
78 }
79
80 int pkg_plugin_app_is_installed(const char *pkg_name) {
81   LOG(INFO) << "Crosswalk backend plugin ("
82             << PkgmgrBackendPlugin::GetInstance()->type()
83             << ") - pkg_plugin_app_is_installed";
84
85   return PkgmgrBackendPlugin::GetInstance()->IsAppInstalled(pkg_name);
86 }
87
88 int pkg_plugin_get_installed_apps_list(const char* category,
89                                        const char* option,
90                                        package_manager_pkg_info_t** list,
91                                        int* count) {
92   LOG(INFO) << "Crosswalk backend plugin ("
93             << PkgmgrBackendPlugin::GetInstance()->type()
94             << ") - pkg_plugin_get_installed_apps_list";
95
96   return PkgmgrBackendPlugin::GetInstance()->AppsList(list, count);
97 }
98
99 }