Update wrt-plugins-common_0.3.60
[platform/framework/web/wrt-plugins-common.git] / src / plugins-installer / wrt-installer / installer_callbacks_translate.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /**
17  * @file    api_callbacks_translate.h
18  * @author  Pawel Sikorski (p.sikorski@samsung.com)
19  * @version 1.0
20  * @brief   Source file for api callbacks translate functions
21  */
22
23 #include <installer_callbacks_translate.h>
24 #include <dpl/log/log.h>
25
26 namespace InstallerCallbacksTranslate {
27 WrtErrStatus TranslateError(CommonError::Type status)
28 {
29     switch (status) {
30     case CommonError::WrtSuccess:
31         return WRT_SUCCESS;
32
33     case CommonError::HandleNotFound:
34         return WRT_ERROR_HANDLE_NOT_FOUND;
35
36     case CommonError::AlreadyRunning:
37         return WRT_ERROR_ALREADY_RUNNING;
38
39     case CommonError::InvalidLanguage:
40         return WRT_ERROR_INVALID_LANGUAGE;
41
42     case CommonError::AlreadyStopped:
43         return WRT_ERROR_ALREADY_STOPPED;
44
45     case CommonError::StillAuthorizing:
46         return WRT_ERROR_STILL_AUTHORIZING;
47
48     case CommonError::EarlyKilled:
49         return WRT_ERROR_EARLY_KILLED;
50
51     case CommonError::AccessDenied:
52         return WRT_ERROR_ACCESS_DENIED;
53
54     default:
55         LogError("Untranslatable error: " << status);
56         return WRT_ERROR_INTERNAL;
57     }
58 }
59
60 void StatusCallback(int widget_handle,
61         CommonError::Type result,
62         void *data)
63 {
64     LogDebug("StatusCallback called  " << widget_handle << " | " << result);
65     Assert(data != NULL);
66
67     WrtErrStatus error = TranslateError(result);
68     StatusCallbackStruct* statusCallbackStruct =
69         static_cast<StatusCallbackStruct*>(data);
70
71     if (statusCallbackStruct->status_callback) {
72         statusCallbackStruct->status_callback(widget_handle,
73                                               error,
74                                               statusCallbackStruct->userdata);
75     } else {
76         LogInfo("StatusCallback: ignoring NULL callback pointer");
77     }
78
79     delete statusCallbackStruct;
80 }
81
82 //// callback for finished install
83 //void installFinishedCallback(void *userParam,
84 //        WidgetHandle widget_handle,
85 //        Jobs::WidgetInstall::Exceptions::Type status)
86 //{
87 //    Assert(userParam != NULL);
88 //
89 //    StatusCallbackStruct *apiStr =
90 //        static_cast<StatusCallbackStruct*>(userParam);
91 //
92 //    if (apiStr->status_callback) {
93 //        // Translate error
94 //        WrtErrStatus errorStatus;
95 //
96 //        switch (status) {
97 //        case Jobs::WidgetInstall::Exceptions::Success:
98 //            errorStatus = WRT_SUCCESS;
99 //            break;
100 //
101 //        case Jobs::WidgetInstall::Exceptions::ErrorInvalidWidgetPackage:
102 //            errorStatus = WRT_INSTALLER_ERROR_INVALID_WIDGET_PACKAGE;
103 //            break;
104 //
105 //        case Jobs::WidgetInstall::Exceptions::ErrorWidgetDoesNotExist:
106 //            errorStatus = WRT_INSTALLER_ERROR_WIDGET_DOES_NOT_EXIST;
107 //            break;
108 //
109 //        case Jobs::WidgetInstall::Exceptions::ErrorFactoryWidget:
110 //            errorStatus = WRT_INSTALLER_ERROR_FACTORY_WIDGET;
111 //            break;
112 //
113 //        case Jobs::WidgetInstall::Exceptions::ErrorAreadyUninstalling:
114 //            errorStatus = WRT_INSTALLER_ERROR_ALREADY_UNINSTALLING;
115 //            break;
116 //
117 //        case Jobs::WidgetInstall::Exceptions::ErrorOutOfDiskSpace:
118 //            errorStatus = WRT_INSTALLER_ERROR_OUT_OUT_DISK_SPACE;
119 //            break;
120 //
121 //        case Jobs::WidgetInstall::Exceptions::ErrorInvalidPackage:
122 //            errorStatus = WRT_INSTALLER_ERROR_INVALID_CERTIFICATE;
123 //            break;
124 //
125 //        case Jobs::WidgetInstall::Exceptions::ErrorAlreadyInstalled:
126 //            errorStatus = WRT_INSTALLER_ERROR_ALREADY_INSTALLED;
127 //            break;
128 //
129 //        case Jobs::WidgetInstall::Exceptions::ErrorInternal:
130 //            errorStatus = WRT_INSTALLER_ERROR_INTERNAL;
131 //            break;
132 //
133 //        case Jobs::WidgetInstall::Exceptions::ErrorNotAllowed:
134 //            errorStatus = WRT_INSTALLER_ERROR_NOT_ALLOWED;
135 //            break;
136 //
137 //        case Jobs::WidgetInstall::Exceptions::ErrorDeferred:
138 //            errorStatus = WRT_INSTALLER_ERROR_DEFERRED;
139 //            break;
140 //
141 //        case Jobs::WidgetInstall::Exceptions::ErrorDatabaseFailure:
142 //            errorStatus = WRT_INSTALLER_ERROR_DATABASE_FAILURE;
143 //            break;
144 //
145 //        case Jobs::WidgetInstall::Exceptions::ErrorInstallOspServcie:
146 //            errorStatus = WRT_INSTALLER_ERROR_OSPSVC;
147 //            break;
148 //
149 //        case Jobs::WidgetInstall::Exceptions::ErrorUnknown:
150 //            errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
151 //            break;
152 //
153 //        default:
154 //            errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
155 //            break;
156 //        }
157 //
158 //        // Callback
159 //        apiStr->status_callback(widget_handle, errorStatus, apiStr->userdata);
160 //    } else {
161 //        LogInfo("installFinishedCallback: No callback");
162 //    }
163 //}
164
165 // callback for finished install
166 //void uninstallFinishedCallback(void *userParam,
167 //        WidgetHandle widget_handle,
168 //        Jobs::WidgetUninstall::Exceptions::Type status)
169 //{
170 //    Assert(userParam != NULL);
171 //
172 //    StatusCallbackStruct *apiStr =
173 //        static_cast<StatusCallbackStruct*>(userParam);
174 //
175 //    if (apiStr->status_callback) {
176 //        // Translate error
177 //        WrtErrStatus errorStatus;
178 //
179 //        switch (status) {
180 //        case Jobs::WidgetUninstall::Exceptions::Success:
181 //            errorStatus = WRT_SUCCESS;
182 //            break;
183 //
184 //        case Jobs::WidgetUninstall::Exceptions::ErrorAlreadyUninstalling:
185 //            errorStatus = WRT_INSTALLER_ERROR_ALREADY_UNINSTALLING;
186 //            break;
187 //
188 //        case Jobs::WidgetUninstall::Exceptions::ErrorWidgetDoesNotExist:
189 //            errorStatus = WRT_INSTALLER_ERROR_WIDGET_DOES_NOT_EXIST;
190 //            break;
191 //
192 //        case Jobs::WidgetUninstall::Exceptions::ErrorDatabaseFailure:
193 //            errorStatus = WRT_INSTALLER_ERROR_DATABASE_FAILURE;
194 //            break;
195 //
196 //        case Jobs::WidgetUninstall::Exceptions::ErrorUninstallOspSvcFailed:
197 //            errorStatus = WRT_INSTALLER_ERROR_OSPSVC;
198 //            break;
199 //
200 //        case Jobs::WidgetUninstall::Exceptions::ErrorUnknown:
201 //            errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
202 //            break;
203 //
204 //        default:
205 //            errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
206 //            break;
207 //        }
208 //
209 //        // Callback
210 //        apiStr->status_callback(widget_handle, errorStatus, apiStr->userdata);
211 //    } else {
212 //        LogInfo("uninstallFinishedCallback: No callback");
213 //    }
214 //}
215
216 void pluginInstallFinishedCallback(void *userParam,
217         Jobs::PluginInstall::Exceptions::Type status)
218 {
219     Assert(userParam);
220
221     PluginStatusCallbackStruct *apiStr =
222         static_cast<PluginStatusCallbackStruct*>(userParam);
223
224     if (apiStr->statusCallback) {
225         // Translate error
226         WrtErrStatus errorStatus;
227
228         switch (status) {
229         case Jobs::PluginInstall::Exceptions::Success:
230             errorStatus = WRT_SUCCESS;
231             break;
232         case Jobs::PluginInstall::Exceptions::WrongPluginPath:
233             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_WRONG_PATH;
234             break;
235         case Jobs::PluginInstall::Exceptions::MetafileError:
236             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_METAFILE;
237             break;
238         case Jobs::PluginInstall::Exceptions::AlreadyInstalled:
239             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_ALREADY_INSTALLED;
240             break;
241         case Jobs::PluginInstall::Exceptions::LoadingLibraryError:
242             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_LIBRARY_ERROR;
243             break;
244         case Jobs::PluginInstall::Exceptions::InstallationWaiting:
245             errorStatus = WRT_PLUGIN_INSTALLER_ERROR_WAITING;
246             break;
247         default:
248             errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
249             break;
250         }
251
252         apiStr->statusCallback(errorStatus, apiStr->userdata);
253     } else {
254         LogInfo("PluginInstallFinishedCallback: No callback");
255     }
256
257     delete apiStr;
258 }
259
260 // callback for progress of install OR uninstall
261 void installProgressCallback(void *userParam,
262         ProgressPercent percent,
263         const ProgressDescription &description)
264 {
265     Assert(userParam != NULL);
266
267     StatusCallbackStruct *apiStr =
268         static_cast<StatusCallbackStruct*>(userParam);
269
270     if (apiStr->progress_callback) {
271         //CALLBACK EXEC
272         LogInfo("Entered " << percent << "% " << description);
273         apiStr->progress_callback(static_cast<float>(percent),
274                                   description.c_str(),
275                                   apiStr->userdata);
276     } else {
277         LogInfo("installProgressCallback: ignoring NULL callback pointer");
278     }
279 }
280
281 } //namespace
282