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);
137 /* This function will update of api-feature status.
138 * If status is true (feature rejected) plugin connected with this
139 * api feature mustn't be loaded durign widget launch.
141 void updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature);
144 * This method change security settings value
146 void setSecurityPopupUsage(const SettingsType value);
147 void setGeolocationUsage(const SettingsType value);
148 void setWebNotificationUsage(const SettingsType value);
149 void setWebDatabaseUsage(const SettingsType value);
150 void setFileSystemUsage(const SettingsType value);
153 //Methods used during widget registering
154 static DbWidgetHandle registerWidgetInfo(
155 const WidgetPkgName & widgetName,
156 const WidgetRegisterInfo ®Info,
157 const IWacSecurity &wacSecurity,
158 const DPL::Optional<DbWidgetHandle> handle = DPL::Optional<DbWidgetHandle>());
159 static void registerWidgetExtendedInfo(
160 DbWidgetHandle widgetHandle,
161 const WidgetRegisterInfo ®Info);
162 static void registerWidgetLocalizedInfo(
163 DbWidgetHandle widgetHandle,
164 const WidgetRegisterInfo ®Info);
165 static void registerWidgetIcons(
166 DbWidgetHandle widgetHandle,
167 const WidgetRegisterInfo ®Info);
168 static void registerWidgetStartFile(
169 DbWidgetHandle widgetHandle,
170 const WidgetRegisterInfo ®Info);
171 static void registerWidgetPreferences(
172 DbWidgetHandle widgetHandle,
173 const WidgetRegisterInfo ®Info);
174 static void registerWidgetFeatures(
175 DbWidgetHandle widgetHandle,
176 const WidgetRegisterInfo ®Info);
177 static void registerWidgetWindowModes(
178 DbWidgetHandle widgetHandle,
179 const WidgetRegisterInfo ®Info);
180 static void registerWidgetWarpInfo(
181 DbWidgetHandle widgetHandle,
182 const WidgetRegisterInfo ®Info);
183 static void registerWidgetCertificates(
184 DbWidgetHandle widgetHandle,
185 const IWacSecurity &wacSecurity);
186 static void registerCertificatesChains(
187 DbWidgetHandle widgetHandle,
188 CertificateSource certificateSource,
189 const CertificateChainList &list);
190 static void registerWidgetSettings(
191 DbWidgetHandle widgetHandle,
192 const WidgetRegisterInfo ®Info);
193 static void registerAppService(
194 DbWidgetHandle widgetHandle,
195 const WidgetRegisterInfo ®Info);
196 static void registerEncryptedResouceInfo(
197 DbWidgetHandle widgetHandle,
198 const WidgetRegisterInfo ®Info);
200 * @brief registerExternalLocations Inserts new rows to WidgetExternalLocations
201 * @param externals list of files
203 static void registerExternalLocations(DbWidgetHandle widgetHandle,
204 const ExternalLocationList & externals);
205 static void registerWidgetSecuritySettings(DbWidgetHandle widgetHandle);
208 static void registerWidgetInternal(
209 const WidgetPkgName & widgetName,
210 const WidgetRegisterInfo &widgetRegInfo,
211 const IWacSecurity &wacSecurity,
212 const DPL::Optional<DbWidgetHandle> handle = DPL::Optional<DbWidgetHandle>());
213 static void unregisterWidgetInternal(
214 const WidgetPkgName & pkgName);
219 #endif // WIDGET_DAO_H