2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * This file contains the declaration of widget dao class.
20 * @author Yang Jie (jie2.yang@samsung.com)
21 * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
22 * @author Pawel Sikorski (p.sikorski@samsung.com)
24 * @brief This file contains the declaration of widget dao
29 #include <dpl/wrt-dao-ro/widget_dao_read_only.h>
35 #include <dpl/exception.h>
36 #include <dpl/db/orm.h>
37 #include <dpl/wrt-dao-ro/config_parser_data.h>
38 #include <dpl/wrt-dao-rw/property_dao.h>
42 class WidgetDAO : public WidgetDAOReadOnly
45 typedef std::list<DPL::String> LanguageTagsList;
47 WidgetDAO(DbWidgetHandle handle);
48 WidgetDAO(DPL::OptionalString widgetGUID);
49 WidgetDAO(DPL::String pkgName);
57 * This method registers the widget information in the DB when it is installed.
59 * @see WidgetRegisterInfo
60 * @see UnRegisterWidget()
61 * @param[in] widgetPkgname Widget Pkgname that will be registered.
62 * @param[in] pWidgetRegisterInfo Specified the widget's information needed to be registered.
63 * @param[in] wacSecurity Widget's security certificates.
65 static void registerWidget(
66 const WidgetPkgName & widgetPkgname,
67 const WidgetRegisterInfo &widgetRegInfo,
68 const IWacSecurity &wacSecurity);
70 static DbWidgetHandle registerWidget(
71 const WidgetRegisterInfo &pWidgetRegisterInfo,
72 const IWacSecurity &wacSecurity) __attribute__((deprecated));
75 * @brief registerWidgetGenerateTizenId Registers widget with auto-generated tizen id
77 * This function is disadviced and should be used only in tests.
78 * Function is not thread-safe.
80 * @param pWidgetRegisterInfo registeration information
81 * @param wacSecurity Widget's security certificates.
82 * @return pkgname generated
84 static WidgetPkgName registerWidgetGenerateTizenId(
85 const WidgetRegisterInfo &pWidgetRegisterInfo,
86 const IWacSecurity &wacSecurity);
89 * This method re-registers the widget information to the DB when it is installed.
91 * It performs unregistration and new registration of widget in db in one transaction.
93 * @see WidgetRegisterInfo
94 * @param[in] widgetName Widget pkgname that will be registered.
95 * @param[in] pWidgetRegisterInfo Specified the widget's information needed to be registered.
96 * @param[in] wacSecurity Widget's security certificates.
98 static void registerOrUpdateWidget(
99 const WidgetPkgName & widgetName,
100 const WidgetRegisterInfo &widgetRegInfo,
101 const IWacSecurity &wacSecurity);
103 static void registerWidget(
104 WrtDB::DbWidgetHandle handle,
105 const WidgetRegisterInfo &widgetRegInfo,
106 const IWacSecurity &wacSecurity) __attribute__((deprecated));
109 * This method removes a widget's information from EmDB.
111 * @see RegisterWidget()
112 * @param[in] pkgName widgets name to be unregistered
114 static void unregisterWidget(const WidgetPkgName & pkgName);
116 static void unregisterWidget(WrtDB::DbWidgetHandle handle) __attribute__((deprecated));
118 /* This method removes widget property
120 void removeProperty(const PropertyDAOReadOnly::WidgetPropertyKey &key);
123 * @brief registerExternalLocations Removes rows from WidgetExternalLocations
125 void unregisterAllExternalLocations();
127 /* This method sets widget property
129 void setProperty(const PropertyDAOReadOnly::WidgetPropertyKey &key,
130 const PropertyDAOReadOnly::WidgetPropertyValue &value,
131 bool readOnly = false);
135 void setPkgName(const DPL::OptionalString& pkgName);
136 void setPkgName_TEMPORARY_API(const WidgetPkgName& pkgName);
138 /* This function will update of api-feature status.
139 * If status is true (feature rejected) plugin connected with this
140 * api feature mustn't be loaded durign widget launch.
142 void updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature);
145 * This method change security settings value
147 void setSecurityPopupUsage(const SettingsType value);
148 void setGeolocationUsage(const SettingsType value);
149 void setWebNotificationUsage(const SettingsType value);
150 void setWebDatabaseUsage(const SettingsType value);
151 void setFileSystemUsage(const SettingsType value);
154 //Methods used during widget registering
155 static DbWidgetHandle registerWidgetInfo(
156 const WidgetPkgName & widgetName,
157 const WidgetRegisterInfo ®Info,
158 const IWacSecurity &wacSecurity,
159 const DPL::Optional<DbWidgetHandle> handle = DPL::Optional<DbWidgetHandle>());
160 static void registerWidgetExtendedInfo(
161 DbWidgetHandle widgetHandle,
162 const WidgetRegisterInfo ®Info);
163 static void registerWidgetLocalizedInfo(
164 DbWidgetHandle widgetHandle,
165 const WidgetRegisterInfo ®Info);
166 static void registerWidgetIcons(
167 DbWidgetHandle widgetHandle,
168 const WidgetRegisterInfo ®Info);
169 static void registerWidgetStartFile(
170 DbWidgetHandle widgetHandle,
171 const WidgetRegisterInfo ®Info);
172 static void registerWidgetPreferences(
173 DbWidgetHandle widgetHandle,
174 const WidgetRegisterInfo ®Info);
175 static void registerWidgetFeatures(
176 DbWidgetHandle widgetHandle,
177 const WidgetRegisterInfo ®Info);
178 static void registerWidgetPrivilege(
179 DbWidgetHandle widgetHandle,
180 const WidgetRegisterInfo ®Info);
181 static void registerWidgetWindowModes(
182 DbWidgetHandle widgetHandle,
183 const WidgetRegisterInfo ®Info);
184 static void registerWidgetWarpInfo(
185 DbWidgetHandle widgetHandle,
186 const WidgetRegisterInfo ®Info);
187 static void registerWidgetCertificates(
188 DbWidgetHandle widgetHandle,
189 const IWacSecurity &wacSecurity);
190 static void registerCertificatesChains(
191 DbWidgetHandle widgetHandle,
192 CertificateSource certificateSource,
193 const CertificateChainList &list);
194 static void registerWidgetSettings(
195 DbWidgetHandle widgetHandle,
196 const WidgetRegisterInfo ®Info);
197 static void registerAppService(
198 DbWidgetHandle widgetHandle,
199 const WidgetRegisterInfo ®Info);
200 static void registerEncryptedResouceInfo(
201 DbWidgetHandle widgetHandle,
202 const WidgetRegisterInfo ®Info);
204 * @brief registerExternalLocations Inserts new rows to WidgetExternalLocations
205 * @param externals list of files
207 static void registerExternalLocations(DbWidgetHandle widgetHandle,
208 const ExternalLocationList & externals);
209 static void registerWidgetSecuritySettings(DbWidgetHandle widgetHandle);
212 static void registerWidgetInternal(
213 const WidgetPkgName & widgetName,
214 const WidgetRegisterInfo &widgetRegInfo,
215 const IWacSecurity &wacSecurity,
216 const DPL::Optional<DbWidgetHandle> handle = DPL::Optional<DbWidgetHandle>());
217 static void unregisterWidgetInternal(
218 const WidgetPkgName & pkgName);
223 #endif // WIDGET_DAO_H