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>
41 class WidgetDAO : public WidgetDAOReadOnly
44 typedef std::list<DPL::String> LanguageTagsList;
46 WidgetDAO(DbWidgetHandle handle);
47 WidgetDAO(DPL::OptionalString widgetGUID);
48 WidgetDAO(DPL::String tzAppId);
56 * This method registers the widget information in the DB when it is
59 * @see WidgetRegisterInfo
60 * @see UnRegisterWidget()
61 * @param[in] TizenAppId Widget app id that will be registered.
62 * @param[in] pWidgetRegisterInfo Specified the widget's information
63 * needed to be registered.
64 * @param[in] widgetSecurity Widget's security certificates.
66 static void registerWidget(
67 const TizenAppId& tzAppId,
68 const WidgetRegisterInfo &widgetRegInfo,
69 const IWidgetSecurity &widgetSecurity);
71 static DbWidgetHandle registerWidget(
72 const WidgetRegisterInfo &pWidgetRegisterInfo,
73 const IWidgetSecurity &widgetSecurity) __attribute__((deprecated));
76 * @brief registerWidgetGenerateTizenId Registers widget with auto-generated
79 * This function is disadviced and should be used only in tests.
80 * Function is not thread-safe.
82 * @param pWidgetRegisterInfo registeration information
83 * @param widgetSecurity Widget's security certificates.
84 * @return tzAppId generated
86 static TizenAppId registerWidgetGeneratePkgId(
87 const WidgetRegisterInfo &pWidgetRegisterInfo,
88 const IWidgetSecurity &widgetSecurity);
90 static void updateTizenAppId(const TizenAppId & fromAppId,
91 const TizenAppId & toAppId);
93 * This method removes a widget's information from EmDB.
95 * @see RegisterWidget()
96 * @param[in] tzAppId widgets name to be unregistered
98 static void unregisterWidget(const TizenAppId & tzAppId);
100 /* This method removes widget property
102 void removeProperty(const PropertyDAOReadOnly::WidgetPropertyKey &key);
105 * @brief registerExternalLocations Removes rows from
106 * WidgetExternalLocations
108 void unregisterAllExternalLocations();
110 /* This method sets widget property
112 void setProperty(const PropertyDAOReadOnly::WidgetPropertyKey &key,
113 const PropertyDAOReadOnly::WidgetPropertyValue &value,
114 bool readOnly = false);
118 void setTizenAppId(const DPL::OptionalString& tzAppId);
120 /* This function will update of api-feature status.
121 * If status is true (feature rejected) plugin connected with this
122 * api feature mustn't be loaded durign widget launch.
124 void updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature);
127 * This method change security settings value
129 void setSecurityPopupUsage(const SettingsType value);
130 void setGeolocationUsage(const SettingsType value);
131 void setWebNotificationUsage(const SettingsType value);
132 void setWebDatabaseUsage(const SettingsType value);
135 //Methods used during widget registering
136 static DbWidgetHandle registerWidgetInfo(
137 const TizenAppId & widgetName,
138 const WidgetRegisterInfo ®Info,
139 const IWidgetSecurity &widgetSecurity,
140 const DPL::Optional<DbWidgetHandle> handle =
141 DPL::Optional<DbWidgetHandle>());
142 static void registerWidgetExtendedInfo(
143 DbWidgetHandle widgetHandle,
144 const WidgetRegisterInfo ®Info);
145 static void registerWidgetLocalizedInfo(
146 DbWidgetHandle widgetHandle,
147 const WidgetRegisterInfo ®Info);
148 static void registerWidgetIcons(
149 DbWidgetHandle widgetHandle,
150 const WidgetRegisterInfo ®Info);
151 static void registerWidgetStartFile(
152 DbWidgetHandle widgetHandle,
153 const WidgetRegisterInfo ®Info);
154 static void registerWidgetPreferences(
155 DbWidgetHandle widgetHandle,
156 const WidgetRegisterInfo ®Info);
157 static void registerWidgetFeatures(
158 DbWidgetHandle widgetHandle,
159 const WidgetRegisterInfo ®Info);
160 static void registerWidgetPrivilege(
161 DbWidgetHandle widgetHandle,
162 const WidgetRegisterInfo ®Info);
163 static void registerWidgetWindowModes(
164 DbWidgetHandle widgetHandle,
165 const WidgetRegisterInfo ®Info);
166 static void registerWidgetWarpInfo(
167 DbWidgetHandle widgetHandle,
168 const WidgetRegisterInfo ®Info);
169 static void registerWidgetAllowNavigationInfo(
170 DbWidgetHandle widgetHandle,
171 const WidgetRegisterInfo ®Info);
172 static void registerWidgetCertificates(
173 DbWidgetHandle widgetHandle,
174 const IWidgetSecurity &widgetSecurity);
175 static void registerCertificatesChains(
176 DbWidgetHandle widgetHandle,
177 CertificateSource certificateSource,
178 const CertificateChainList &list);
179 static void registerWidgetSettings(
180 DbWidgetHandle widgetHandle,
181 const WidgetRegisterInfo ®Info);
182 static void registerAppControl(
183 DbWidgetHandle widgetHandle,
184 const WidgetRegisterInfo ®Info);
185 static void registerEncryptedResouceInfo(
186 DbWidgetHandle widgetHandle,
187 const WidgetRegisterInfo ®Info);
189 * @brief registerExternalLocations Inserts new rows to
190 * WidgetExternalLocations
191 * @param externals list of files
193 static void registerExternalLocations(
194 DbWidgetHandle widgetHandle,
195 const ExternalLocationList &
197 static void registerWidgetSecuritySettings(DbWidgetHandle widgetHandle);
199 static void registerWidgetInternal(
200 const TizenAppId & tzAppId,
201 const WidgetRegisterInfo &widgetRegInfo,
202 const IWidgetSecurity &widgetSecurity,
203 const DPL::Optional<DbWidgetHandle> handle =
204 DPL::Optional<DbWidgetHandle>());
205 static void unregisterWidgetInternal(const TizenAppId & tzAppId);
206 static void insertAppControlInfo(DbWidgetHandle handle,
208 DPL::String operation,
212 unsigned disposition);
216 #endif // WIDGET_DAO_H