tizen 2.3.1 release
[framework/web/wearable/wrt-plugins-tizen.git] / src / Package / PackageManager.h
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #ifndef _TIZEN_PACKAGE_MANAGER_H_
19 #define _TIZEN_PACKAGE_MANAGER_H_
20
21 #include <string>
22 #include <list>
23 #include <CallbackUserData.h>
24 #include <CommonsJavaScript/Converter.h>
25 #include <JavaScriptCore/JavaScript.h>
26 #include <Commons/Exception.h>
27
28 #include <package_manager.h>
29 #include <package-manager.h>
30
31 #include "PackageInformation.h"
32
33 namespace DeviceAPI {
34 namespace Package {
35
36 using namespace WrtDeviceApis::Commons;
37 using namespace DeviceAPI::Common;
38 using namespace std;
39
40 class PackageInfoCallbackData : public CallbackUserData
41 {
42 public:
43     PackageInfoCallbackData(JSContextRef globalCtx);
44     ~PackageInfoCallbackData();
45
46     vector<PackageInformation> getPackageInfoList();
47     void addPackageInfo(PackageInformation pkgInfo);
48
49     void setExceptionCode(ExceptionCodes::Enumeration exceptionCode);
50     ExceptionCodes::Enumeration getExceptionCode() const;
51
52 public:
53     pkgmgr_client *pc;
54
55 private:
56     vector<PackageInformation> m_pkgInfos;
57     ExceptionCodes::Enumeration m_exceptionCode;
58 };
59
60
61 class PackageInfoEventCallback
62 {
63 public:
64     PackageInfoEventCallback(CallbackUserData* oninstalled, CallbackUserData* onupdated, CallbackUserData* onuninstalled);
65     ~PackageInfoEventCallback();
66     CallbackUserData* getOnInstalled();
67     CallbackUserData* getOnUpdated();
68     CallbackUserData* getOnUninstalled();
69     pkgmgr_client ** getEventHandler();
70     void setEventHandler(pkgmgr_client **handle_p);
71
72 private:
73     CallbackUserData* m_oninstalled;
74     CallbackUserData* m_onupdated;
75     CallbackUserData* m_onuninstalled;
76     pkgmgr_client **m_handle_p;
77 };
78
79 class PackageInstallEventCallback
80 {
81 public:
82     PackageInstallEventCallback(JSContextRef globalCtx, CallbackUserData* onprogress, CallbackUserData* oncomplete, CallbackUserData* onerror);
83     ~PackageInstallEventCallback();
84     CallbackUserData* getOnProgress();
85     CallbackUserData* getOnComplete();
86     CallbackUserData* getOnError();
87     JSContextRef getContext();
88     void setHandle(package_manager_request_h handle);
89     package_manager_request_h getHandle();
90
91 private:
92     CallbackUserData* m_onprogress;
93     CallbackUserData* m_oncomplete;
94     CallbackUserData* m_onerror;
95     package_manager_request_h m_request_handle;
96     JSContextRef m_context;
97 };
98
99
100 class PackageManager
101 {
102 public:
103     enum InstalledStorageType
104     {
105         INTERNAL,
106         EXTERNAL
107     };
108
109     void install(string pkgPath, PackageInstallEventCallback* callback);
110     void uninstall(string pkgPath, PackageInstallEventCallback* callback);
111     void move(string pkgPath, string type, PackageInstallEventCallback* callback);
112
113     bool isInstalled(string pkgId);
114     PackageInformation* getPackageInfo(string pkgId);
115     void getPackagesInfo(PackageInfoCallbackData *user_data);
116     string getPackageIdFromAppId(string appId);
117     void setPackageInfoEventListener(PackageInfoEventCallback * eventCB);
118     void unsetPackageInfoEventListener();
119
120     static PackageManager* getInstance();
121
122 private:
123     PackageManager();
124     ~PackageManager();
125     pkgmgr_client *m_manager_handle;
126     string m_curr_app_id;
127
128 };
129
130 }    // Package
131 }   // DeviceAPI
132 #endif