merge with master
[platform/framework/web/wrt-commons.git] / modules / widget_dao / include / dpl / wrt-dao-ro / widget_dao_read_only.h
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  * This file contains the declaration of widget dao class.
18  *
19  * @file    widget_dao_read_only.h
20  * @author  Yang Jie (jie2.yang@samsung.com)
21  * @author  Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
22  * @author  Pawel Sikorski (p.sikorski@samsung.com)
23  * @version 1.0
24  * @brief   This file contains the declaration of widget dao
25  */
26
27 #ifndef _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_
28 #define _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_
29
30 #include <time.h>
31 #include <list>
32 #include <string>
33 #include <dpl/string.h>
34 #include <dpl/exception.h>
35 #include <dpl/db/orm.h>
36 #include <dpl/optional_typedefs.h>
37 #include <dpl/wrt-dao-ro/config_parser_data.h>
38 #include <dpl/wrt-dao-ro/property_dao_read_only.h>
39 #include <dpl/wrt-dao-ro/common_dao_types.h>
40
41 namespace WrtDB {
42 /**
43  * Widget's signature enum.
44  * This enumerates signature type of widget.
45  */
46 enum WidgetSignatureType
47 {
48     SIGNATURE_TYPE_CARRIER = 0,
49     SIGNATURE_TYPE_IDENTIFIED,
50     SIGNATURE_TYPE_UNIDENTIFIED
51 };
52
53 enum CertificateSource {
54     SIGNATURE_DISTRIBUTOR = 0,
55     SIGNATURE_AUTHOR = 1
56 };
57
58 typedef std::list<DPL::String> StringList;
59
60 struct WidgetLocalizedInfo
61 {
62     DPL::OptionalString name;
63     DPL::OptionalString shortName;
64     DPL::OptionalString description;
65     DPL::OptionalString license;
66     DPL::OptionalString licenseHref;
67 };
68
69 /**
70  * CertificateData
71  * A structure to hold certificate fingerprints.
72  */
73 struct WidgetCertificateData
74 {
75     enum Owner { AUTHOR, DISTRIBUTOR, UNKNOWN };
76     enum Type { ROOT, ENDENTITY };
77
78     // type of signature: author/distributor
79     Owner owner;
80     // indicates whether this is ca certificate
81     Type type;
82
83     // chain id number: relative BASE, where BASE is signatureBASE.xml
84     int chainId;
85     // certificate fingerprint digested by md5
86     std::string strMD5Fingerprint;
87     // certificate fingerprint digestef by sha1
88     std::string strSHA1Fingerprint;
89     // Common name field in certificate
90     DPL::String strCommonName;
91
92     bool operator== (const WidgetCertificateData& certData) const
93     {
94         return certData.chainId == chainId &&
95                certData.owner == owner &&
96                certData.strCommonName == strCommonName &&
97                certData.strMD5Fingerprint == strMD5Fingerprint &&
98                certData.strSHA1Fingerprint == strSHA1Fingerprint;
99     }
100 };
101
102 typedef std::list<WidgetCertificateData> WidgetCertificateDataList;
103
104 typedef DPL::String Locale;
105 typedef std::set<Locale> LocaleSet;
106 typedef std::list<std::string> ExternalLocationList;
107
108 /**
109  * WidgetRegisterInfo
110  * A structure to hold widget's information needed to be registered.
111  * @see WidgetConfigurationInfo
112  */
113 struct WidgetRegisterInfo
114 {
115     struct LocalizedIcon : public ConfigParserData::Icon
116     {
117         LocalizedIcon(const ConfigParserData::Icon& icon,
118                       const LocaleSet& _availableLocales) :
119             ConfigParserData::Icon(icon),
120             availableLocales(_availableLocales)
121         {}
122
123         LocaleSet availableLocales;
124     };
125
126     struct StartFileProperties
127     {
128         DPL::String encoding;
129         DPL::String type;
130     };
131
132     typedef std::map<Locale,
133                      StartFileProperties> StartFilePropertiesForLocalesMap;
134     struct LocalizedStartFile
135     {
136         DPL::String path;
137         StartFilePropertiesForLocalesMap propertiesForLocales;
138     };
139
140     typedef std::list<LocalizedIcon> LocalizedIconList;
141     typedef std::list<LocalizedStartFile> LocalizedStartFileList;
142     struct LocalizationData
143     {
144         LocalizedIconList icons;
145         LocalizedStartFileList startFiles;
146     };
147
148     enum SecurityDomain
149     {
150         Untrusted,
151         Trusted,
152         Operator,
153         None
154     };
155
156     //Constructor
157     WidgetRegisterInfo() :
158         webAppType(APP_TYPE_UNKNOWN),
159         signatureType(SIGNATURE_TYPE_UNIDENTIFIED),
160         isTestWidget(0),
161         configInfo(),
162         packagingType(PKG_TYPE_UNKNOWN)
163     {}
164
165     WidgetType webAppType;
166     DPL::OptionalString guid;
167     DPL::OptionalString version;
168     DPL::OptionalString minVersion;
169     std::string shareHref;
170     std::string baseFolder;
171     WidgetSignatureType signatureType;
172     int isTestWidget;
173     ConfigParserData configInfo;
174     LocalizationData localizationData;
175
176     TizenPkgId tzPkgid;
177     TizenAppId tzAppid;
178
179     time_t installedTime;
180     PackagingType packagingType;
181     EncryptedFileList encryptedFiles;
182     ExternalLocationList externalLocations;
183     DPL::OptionalString widgetInstalledPath;
184 };
185
186 typedef std::list<std::string> CertificateChainList;
187 class IWacSecurity
188 {
189   public:
190     virtual ~IWacSecurity();
191
192     virtual const WidgetCertificateDataList& getCertificateList() const = 0;
193
194     virtual bool isRecognized() const = 0;
195
196     virtual bool isDistributorSigned() const = 0;
197
198     virtual bool isWacSigned() const = 0;
199
200     virtual void getCertificateChainList(CertificateChainList& list,
201                                          CertificateSource source) const = 0;
202 };
203
204 /**
205  * WidgetAuthorInfo.
206  * Structure to hold the information of widget's author.
207  */
208 struct WidgetAuthorInfo
209 {
210     DPL::OptionalString name;
211     DPL::OptionalString email;
212     DPL::OptionalString href;
213 };
214
215 /**
216  * Widget update policy
217  */
218 enum WidgetUpdatePolicy
219 {
220     WIDGET_UPDATE_MONTHLY = 0,  //< monthly update
221     WIDGET_UPDATE_WEEKLY,       //< weekly update
222     WIDGET_UPDATE_DAILY,        //< daily update
223     WIDGET_UPDATE_STARTUP,      //< update when cell phone boots
224     WIDGET_UPDATE_NEVER         //< never update
225 };
226
227 typedef std::list <std::string> WidgetCertificateCNList;
228 typedef std::list<DPL::String> LanguageTagList;
229 typedef std::list<std::string> HostList;
230 typedef std::list<std::string> FingerPrintList;
231 typedef std::list<std::string> ResourceAttributeList;
232
233 class WidgetDAOReadOnly
234 {
235   public:
236     /**
237      * WidgetDAO Exception classes
238      */
239     class Exception
240     {
241       public:
242         DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
243         DECLARE_EXCEPTION_TYPE(Base, DatabaseError)
244         DECLARE_EXCEPTION_TYPE(Base, ReadOnlyProperty)
245         DECLARE_EXCEPTION_TYPE(Base, GUIDisNull)
246         DECLARE_EXCEPTION_TYPE(Base, UnexpectedEmptyResult)
247         DECLARE_EXCEPTION_TYPE(Base, WidgetNotExist)
248         DECLARE_EXCEPTION_TYPE(Base, AlreadyRegistered)
249     };
250
251   protected:
252     DbWidgetHandle m_widgetHandle;
253
254   public:
255     struct WidgetLocalizedIconRow
256     {
257         int appId;
258         int iconId;
259         DPL::String widgetLocale;
260     };
261     typedef std::list<WidgetLocalizedIconRow> WidgetLocalizedIconList;
262
263     struct WidgetIconRow
264     {
265         int iconId;
266         int appId;
267         DPL::String iconSrc;
268         DPL::OptionalInt iconWidth;
269         DPL::OptionalInt iconHeight;
270     };
271     typedef std::list<WidgetIconRow> WidgetIconList;
272
273     struct WidgetStartFileRow
274     {
275         int startFileId;
276         int appId;
277         DPL::String src;
278     };
279     typedef std::list<WidgetStartFileRow> WidgetStartFileList;
280
281     struct WidgetLocalizedStartFileRow
282     {
283         int startFileId;
284         int appId;
285         DPL::String widgetLocale;
286         DPL::String type;
287         DPL::String encoding;
288     };
289     typedef std::list<WidgetLocalizedStartFileRow> LocalizedStartFileList;
290
291     /**
292      * This is a constructor.
293      *
294      * @param[in] widgetHandle application id of widget.
295      */
296     WidgetDAOReadOnly(DbWidgetHandle widgetHandle);
297     WidgetDAOReadOnly(DPL::OptionalString widgetGUID);
298     WidgetDAOReadOnly(DPL::String tzAppid);
299
300     /**
301      * Destructor
302      */
303     virtual ~WidgetDAOReadOnly();
304
305     /**
306      * This method returns widget handle(m_widgetHandle).
307      *
308      * @return widget handle(m_widgetHandle).
309      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
310      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
311      * DB table.
312      */
313     DbWidgetHandle getHandle() const;
314     static DbWidgetHandle getHandle(const WidgetGUID GUID);
315     static DbWidgetHandle getHandle(const DPL::String pkgName);
316
317     /**
318      * Returns tizenAppId for the specified widget
319      *
320      * @return tzAppid;
321      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
322      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
323      * DB table.
324      */
325
326     TizenAppId getTzAppId() const;
327     static TizenAppId getTzAppId(const WidgetGUID GUID);
328     static TizenAppId getTzAppId(const DbWidgetHandle handle);
329     static TizenAppId getTzAppId(const TizenPkgId tzPkgid);
330
331     /**
332      * Returns WidgetPkgName for the specified widget
333      *
334      * @return pkgName;
335      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
336      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
337      * DB table.
338      */
339
340     WidgetPkgName getPkgName() const;
341     static WidgetPkgName getPkgName(const WidgetGUID GUID);
342     static WidgetPkgName getPkgName(const DbWidgetHandle handle);
343
344     /**
345      * This method returns the root directory of widget resource.
346      *
347      * @return path name of root directory.
348      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
349      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
350      * DB table.
351      */
352     virtual DPL::String getPath() const;
353
354     DPL::String getFullPath() const;
355
356     /**
357      * This method returns the preferred size of the widget,
358      * including width and height.
359      *
360      * @see DbWidgetSize
361      * @return An structure type variable to hold widget's size.
362      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
363      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching
364      *                                          DB table.
365      */
366     DbWidgetSize getPreferredSize() const;
367
368     /**
369      * This method returns the type of the widget.
370      *
371      * @return WidgetType
372      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
373      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching
374      *                                          records in DB table.
375      */
376     WidgetType getWidgetType() const;
377
378     /**
379      * This method returns the id of the widget.
380      *
381      * @return widget id
382      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
383      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
384      *  DB table.
385      */
386     WidgetGUID getGUID() const;
387
388     /**
389      * This method returns the App id of the widget.
390      *
391      * @return appid
392      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
393      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
394      * DB table.
395      */
396     DPL::OptionalString getTizenAppId() const;
397
398     /**
399      * This method returns the defaultlocale for the widget.
400      *
401      * @return defaultlocale
402      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
403      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
404      *  DB table.
405      */
406     DPL::OptionalString getDefaultlocale() const;
407
408     /**
409      * This method returns list of localized icons files;
410      *
411      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
412      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
413      *  DB table.
414      */
415     WidgetLocalizedIconList getLocalizedIconList() const;
416
417     /**
418      * This method returns list of icons files;
419      *
420      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
421      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
422      *  DB table.
423      */
424     WidgetIconList getIconList() const;
425
426     /**
427      * This method returns list of localized start files;
428      *
429      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
430      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
431      *  DB table.
432      */
433     LocalizedStartFileList getLocalizedStartFileList() const;
434
435     /**
436      * This method returns list of start files;
437      *
438      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
439      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
440      *  DB table.
441      */
442     WidgetStartFileList getStartFileList() const;
443
444     /**
445      * @param[out] outAccessInfoList list filled with access info structures
446      */
447     void getWidgetAccessInfo(WidgetAccessInfoList& outAccessInfoList) const;
448
449     /**
450      * WAC 2.0 extension
451      * @return recognized status
452      */
453     bool isRecognized() const;
454
455     /**
456      * WAC 2.0 extension
457      * @return
458      */
459     bool isWacSigned() const;
460
461     /**
462      * WAC 2.0 extension
463      * @return
464      */
465     bool isDistributorSigned() const;
466
467     /**
468      * WAC 2.0 extension
469      * @return trusted status
470      */
471     bool isTrusted() const;
472
473     /**
474      * WAC 2.0 extension
475      * @return is WAC test widget
476      */
477     bool isTestWidget() const;
478
479     /**
480      * This method returns window mode of widget.
481      *
482      * @return window modes of widget
483      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
484      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
485      *  DB table.
486      */
487     WindowModeList getWindowModes() const;
488
489     /**
490      * This method returns the version of the widget.
491      *
492      * @return version of widget
493      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
494      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
495      *  DB table.
496      */
497     DPL::OptionalString getVersion() const;
498
499     /**
500      * This method is used as a getter for csp policy of widget. It should be
501      * provided in configuration file.
502      * @return global csp policy for widget
503      */
504     DPL::OptionalString getCspPolicy() const;
505
506     /**
507      * This method is used as a getter for report only csp policy of widget.
508      * It may be provided in configuration file.
509      * @return global csp report only policy for widget
510      */
511     DPL::OptionalString getCspPolicyReportOnly() const;
512
513     /**
514      * This method returns list filed with Common Name entries from certificate.
515      *
516      * @return Common Name of Distribuotor End Entity certificate.
517      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
518      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
519      *  DB table.
520      */
521     WidgetCertificateCNList getKeyCommonNameList(
522         WidgetCertificateData::Owner owner,
523         WidgetCertificateData::Type type) const;
524
525     /**
526      * given a certificate owner (author / distributor) and type of certificate
527      * (end entity / ca)
528      * function returns list of matching fingerprints
529      */
530     FingerPrintList getKeyFingerprints(
531         WidgetCertificateData::Owner owner,
532         WidgetCertificateData::Type type) const;
533
534     /*
535      *  This method gets certificate data list for a widget from database.
536      */
537     WidgetCertificateDataList getCertificateDataList() const;
538
539     /**
540      * This method returns a list of widget features.
541      *
542      * @see WidgetFeature
543      * @see FreeFeatureList()
544      * @return list of widget features, type of list element is structure
545      *  WidgetFeature
546      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
547      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
548      *  DB table.
549      */
550     DbWidgetFeatureSet getFeaturesList() const;
551
552     static WidgetParamMap getFeatureParams(int widgetFeatureId);
553     /**
554      * This method checks whether widget has specified feature.
555      *
556      * @return true if has, false if has not
557      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
558      */
559     bool hasFeature(const std::string& featureName) const;
560
561     /**
562      * This method gets host list that widget can connect to.
563      *
564      * @return See above comment
565      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
566      */
567     HostList getAccessHostList() const;
568
569     /**
570      * This method gets widget's access on network: true or false.
571      *
572      * @return true: widget can access network; false: widget can not access
573      *  network.
574      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
575      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
576      *  DB table.
577      */
578     bool getAccessNetworkMode() const;
579
580     /**
581      * This method gets if widget needs webkit plugins enabled
582      *
583      * @return true: widget needs webkit plugins enabled
584      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
585      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
586      *  DB table.
587      */
588     bool getWebkitPluginsRequired() const;
589
590     /**
591      * This method returns a list of all the installed widgets' app id.
592      *
593      * @return list of installed widgets' app id.
594      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
595      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
596      *  DB table.
597      */
598     static DbWidgetHandleList getHandleList();
599
600     /**
601      * This method returns list of pkgname of installed packages
602      * @return list of pkgname of installed packages
603      */
604     static TizenAppIdList getTizenAppidList();
605     static WidgetPkgNameList getPkgnameList();
606
607     /**
608      * This method returns a list of all the installed widgets.
609      *
610      * @return list of installed widgets.
611      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
612      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
613      *  DB table.
614      */
615     static DbWidgetDAOReadOnlyList getWidgetList();
616
617     /**
618      * This method removes a widget's information from EmDB.
619      *
620      * @see RegisterWidget()
621      * @param[in] widgetHandle    widget's app id
622      * @return true if succeed, false if fail.
623      */
624     static void unregisterWidget(DbWidgetHandle widgetHandle);
625
626     /**
627      * This method gets author's infomation of a widget which is parsed from
628      *  configiration document.
629      *
630      * @see WidgetAuthorInfo
631      * @param[out] pAuthorInfo
632      * @return true if succeed, false if fail.
633      */
634     WidgetAuthorInfo getAuthorInfo() const;
635
636     /**
637      * This method gets author's name of a widget which is parsed from
638      *  configiration document.
639      *
640      * @param[out] pAuthorInfo
641      * @return author's name.
642      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
643      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
644      *  DB table.
645      */
646     DPL::OptionalString getAuthorName() const;
647
648     /**
649      * This method gets author's email of a widget which is parsed from
650      *  configiration document.
651      *
652      * @param[out] pAuthorInfo
653      * @return author's email.
654      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
655      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
656      *  DB table.
657      */
658     DPL::OptionalString getAuthorEmail() const;
659
660     /**
661      * This method gets author's email of a widget which is parsed from
662      *  configiration document.
663      *
664      * @param[out] pAuthorInfo
665      * @return author's email.
666      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
667      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
668      *  DB table.
669      */
670     DPL::OptionalString getAuthorHref() const;
671
672     /**
673      * This method returns minimum version of WAC that WRT has to be compliant
674      *  to to run this widget
675      *
676      * @return Minimum version
677      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
678      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
679      *  DB table.
680      */
681     DPL::OptionalString getMinimumWacVersion() const;
682
683     /* This method get widget' share href.
684      *
685      * @return widget's share href
686      */
687     std::string getShareHref() const;
688
689     /**
690      * This method get widget installed time
691      *
692      * @return time_t : return widget's install time
693      */
694     time_t getInstallTime() const;
695
696     /**
697      * This method gets widget base folder.
698      *
699      * @return widget base folder.
700      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
701      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
702      *  DB table.
703      */
704     std::string getBaseFolder() const;
705
706     /* This method gets the parameter list for resource.
707      */
708     ResourceAttributeList getResourceAttribute(
709         const std::string &resourceId) const;
710
711     /* This method checks read only flag for given property
712      */
713     DPL::OptionalInt checkPropertyReadFlag(
714         const PropertyDAOReadOnly::WidgetPropertyKey &key) const;
715
716     /* This method gets widget property key list
717      */
718     PropertyDAOReadOnly::WidgetPropertyKeyList getPropertyKeyList() const;
719
720     /* This method gets widget property list
721      */
722     PropertyDAOReadOnly::WidgetPreferenceList getPropertyList() const;
723
724     /* This method get widget property value
725      */
726     PropertyDAOReadOnly::WidgetPropertyValue getPropertyValue(
727         const PropertyDAOReadOnly::WidgetPropertyKey &key) const;
728
729     LanguageTagList getLanguageTags() const;
730     LanguageTagList getIconLanguageTags() const;
731
732     WidgetLocalizedInfo getLocalizedInfo(const DPL::String& languageTag) const;
733     std::string getCookieDatabasePath() const;
734     // Local storage
735     std::string getPrivateLocalStoragePath() const;
736
737     bool getBackSupported() const;
738
739     static bool isWidgetInstalled(DbWidgetHandle handle);
740     static bool isWidgetInstalled(const TizenAppId & tzAppId);
741
742     /* This method get path of the splash image.
743      *
744      * @return path of the widget's splash image
745      */
746     DPL::OptionalString getSplashImgSrc() const;
747
748     ExternalLocationList getWidgetExternalLocations() const;
749
750     /*
751      * Default value is required to keep compatibility with
752      * wrt-installer and wrt.
753      */
754     CertificateChainList getWidgetCertificate(
755         CertificateSource source = SIGNATURE_DISTRIBUTOR) const;
756
757     void getWidgetSettings(WidgetSettings& outWidgetSettings) const;
758
759     /**
760      * This method gets application service list that define AUL value
761      *
762      * @return See above comment
763      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
764      */
765     void getAppServiceList(
766         WidgetApplicationServiceList& outAppServiceList) const;
767
768     /**
769      * This method returns the type of the package.
770      *
771      * @return PackagingType
772      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
773      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching
774      *                                          records in DB table.
775      */
776     PackagingType getPackagingType() const;
777
778     void getEncryptedFileList(EncryptedFileList& filesList) const;
779
780     /**
781      * This method returns widget's background page filename.
782      *
783      * @return Name of file containing background page
784      */
785     DPL::OptionalString getBackgroundPage() const;
786
787     /**
788      * @brief generateTizenId generates new package id
789      *
790      * If widget do not supplies it's own tizen package id, this method can be
791      * used,
792      * although it should be removed in future.
793      *
794      * @return new tizen package id
795      */
796     static TizenPkgId generatePkgId();
797     static TizenPkgId generateTizenId()
798     {
799         return generatePkgId();
800     }
801
802     /**
803      * @brief This method return each value for security setting
804      *
805      * @return SettingsType
806      *         SETTINGS_TYPE_UNKNOWN     : unknow value
807      *         SETTINGS_TYPE_ON                : enable
808      *         SETTINGS_TYPE_ALWAYS_ASK : ask by popup
809      *         SETTINGS_TYPE_OFF               : disable
810      */
811     SettingsType getSecurityPopupUsage() const;
812     SettingsType getGeolocationUsage() const;
813     SettingsType getWebNotificationUsage() const;
814     SettingsType getWebDatabaseUsage() const;
815     SettingsType getFileSystemUsage() const;
816
817     /**
818      * This method returns widget's installed path
819      *
820      * @return path of widget installed
821      */
822     DPL::OptionalString getWidgetInstalledPath() const;
823
824     /**
825      * This method returns tizen package id
826      *
827      * @return tizen package id
828      */
829     TizenPkgId getTizenPkgId() const;
830 };
831 } // namespace WrtDB
832
833 #endif // _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_
834