Code refactoring and removal of factory_widget attribute.
[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 /**
44  * Widget's signature enum.
45  * This enumerates signature type of widget.
46  */
47 enum WidgetSignatureType
48 {
49     SIGNATURE_TYPE_CARRIER = 0,
50     SIGNATURE_TYPE_IDENTIFIED,
51     SIGNATURE_TYPE_UNIDENTIFIED
52 };
53
54 enum CertificateSource {
55     SIGNATURE_DISTRIBUTOR = 0,
56     SIGNATURE_AUTHOR = 1
57 };
58
59 typedef std::list<DPL::String> StringList;
60
61 struct WidgetLocalizedInfo
62 {
63     DPL::OptionalString name;
64     DPL::OptionalString shortName;
65     DPL::OptionalString description;
66     DPL::OptionalString license;
67     DPL::OptionalString licenseHref;
68 };
69
70 /**
71  * CertificateData
72  * A structure to hold certificate fingerprints.
73  */
74 struct WidgetCertificateData
75 {
76     enum Owner { AUTHOR, DISTRIBUTOR, UNKNOWN };
77     enum Type { ROOT, ENDENTITY };
78
79     // type of signature: author/distributor
80     Owner owner;
81     // indicates whether this is ca certificate
82     Type type;
83
84     // chain id number: relative BASE, where BASE is signatureBASE.xml
85     int chainId;
86     // certificate fingerprint digested by md5
87     std::string strMD5Fingerprint;
88     // certificate fingerprint digestef by sha1
89     std::string strSHA1Fingerprint;
90     // Common name field in certificate
91     DPL::String strCommonName;
92
93     bool operator== (const WidgetCertificateData& certData) const {
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
107 /**
108  * WidgetRegisterInfo
109  * A structure to hold widget's information needed to be registered.
110  * @see WidgetConfigurationInfo
111  */
112 struct WidgetRegisterInfo
113 {
114     struct LocalizedIcon : public ConfigParserData::Icon
115     {
116         LocalizedIcon(const ConfigParserData::Icon& icon,
117                 const LocaleSet& _availableLocales) :
118             ConfigParserData::Icon(icon),
119             availableLocales(_availableLocales)
120         {
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         type(APP_TYPE_UNKNOWN),
159         signatureType(SIGNATURE_TYPE_UNIDENTIFIED),
160         isTestWidget(0),
161         configInfo(),
162         pType(PKG_TYPE_UNKNOWN)
163     {
164     }
165
166     WidgetType type;
167     DPL::OptionalString guid;
168     DPL::OptionalString version;
169     DPL::OptionalString minVersion;
170     std::string shareHref;
171     std::string baseFolder;
172     WidgetSignatureType signatureType;
173     int isTestWidget;
174     ConfigParserData configInfo;
175     LocalizationData localizationData;
176     DPL::OptionalString pkgname;
177     time_t installedTime;
178     PkgType pType;
179     EncryptedFileList encryptedFiles;
180 };
181
182 typedef std::list<std::string> CertificateChainList;
183 class IWacSecurity
184 {
185   public:
186     virtual ~IWacSecurity();
187
188     virtual const WidgetCertificateDataList& getCertificateList() const = 0;
189
190     virtual bool isRecognized() const = 0;
191
192     virtual bool isDistributorSigned() const = 0;
193
194     virtual bool isWacSigned() const = 0;
195
196     virtual void getCertificateChainList(CertificateChainList& list,
197             CertificateSource source) const = 0;
198 };
199
200 /**
201  * WidgetAuthorInfo.
202  * Structure to hold the information of widget's author.
203  */
204 struct WidgetAuthorInfo
205 {
206     DPL::OptionalString name;
207     DPL::OptionalString email;
208     DPL::OptionalString href;
209 };
210
211 /**
212  * Widget update policy
213  */
214 enum WidgetUpdatePolicy
215 {
216     WIDGET_UPDATE_MONTHLY = 0,  //< monthly update
217     WIDGET_UPDATE_WEEKLY,       //< weekly update
218     WIDGET_UPDATE_DAILY,        //< daily update
219     WIDGET_UPDATE_STARTUP,      //< update when cell phone boots
220     WIDGET_UPDATE_NEVER         //< never update
221 };
222
223 typedef std::list <std::string> WidgetCertificateCNList;
224 typedef std::list<DPL::String> LanguageTagList;
225 typedef std::list<std::string> HostList;
226 typedef std::list<std::string> FingerPrintList;
227 typedef std::list<std::string> ResourceAttributeList;
228 typedef std::list<std::string> ExternalLocationList; //TODO: if there will be many files registered std::set is better
229
230 class WidgetDAOReadOnly
231 {
232   public:
233     /**
234      * WidgetDAO Exception classes
235      */
236     class Exception
237     {
238       public:
239         DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
240         DECLARE_EXCEPTION_TYPE(Base, DatabaseError)
241         DECLARE_EXCEPTION_TYPE(Base, ReadOnlyProperty)
242         DECLARE_EXCEPTION_TYPE(Base, GUIDisNull)
243         DECLARE_EXCEPTION_TYPE(Base, UnexpectedEmptyResult)
244         DECLARE_EXCEPTION_TYPE(Base, WidgetNotExist)
245         DECLARE_EXCEPTION_TYPE(Base, AlreadyRegistered)
246     };
247
248   protected:
249     DbWidgetHandle m_widgetHandle;
250
251   public:
252     struct WidgetLocalizedIconRow
253     {
254         int appId;
255         int iconId;
256         DPL::String widgetLocale;
257     };
258     typedef std::list<WidgetLocalizedIconRow> WidgetLocalizedIconList;
259
260     struct WidgetIconRow
261     {
262         int iconId;
263         int appId;
264         DPL::String iconSrc;
265         DPL::OptionalInt iconWidth;
266         DPL::OptionalInt iconHeight;
267     };
268     typedef std::list<WidgetIconRow> WidgetIconList;
269
270     struct WidgetStartFileRow
271     {
272         int startFileId;
273         int appId;
274         DPL::String src;
275     };
276     typedef std::list<WidgetStartFileRow> WidgetStartFileList;
277
278     struct WidgetLocalizedStartFileRow
279     {
280         int startFileId;
281         int appId;
282         DPL::String widgetLocale;
283         DPL::String type;
284         DPL::String encoding;
285     };
286     typedef std::list<WidgetLocalizedStartFileRow> LocalizedStartFileList;
287
288     /**
289      * This is a constructor.
290      *
291      * @param[in] widgetHandle application id of widget.
292      */
293     WidgetDAOReadOnly(DbWidgetHandle widgetHandle);
294     WidgetDAOReadOnly(DPL::OptionalString widgetGUID);
295     WidgetDAOReadOnly(DPL::String pkgName);
296
297     /**
298      * Destructor
299      */
300     virtual ~WidgetDAOReadOnly();
301
302     /**
303      * This method returns widget handle(m_widgetHandle).
304      *
305      * @return widget handle(m_widgetHandle).
306      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
307      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in DB table.
308      */
309     DbWidgetHandle getHandle() const;
310     static DbWidgetHandle getHandle(const WidgetGUID GUID);
311     static DbWidgetHandle getHandle(const DPL::String pkgName);
312
313     /**
314      * This method returns the root directory of widget resource.
315      *
316      * @return path name of root directory.
317      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
318      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
319      * DB table.
320      */
321     DPL::String getPath() const;
322
323     DPL::String getFullPath() const;
324
325     /**
326      * This method returns the preferred size of the widget,
327      * including width and height.
328      *
329      * @see DbWidgetSize
330      * @return An structure type variable to hold widget's size.
331      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
332      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching
333      *                                          DB table.
334      */
335     DbWidgetSize getPreferredSize() const;
336
337     /**
338      * This method returns the type of the widget.
339      *
340      * @return WidgetType
341      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
342      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching
343                                                 records in DB table.
344      */
345     WidgetType getWidgetType() const;
346
347     /**
348      * This method returns the id of the widget.
349      *
350      * @return widget id
351      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
352      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
353      *  DB table.
354      */
355     WidgetGUID getGUID() const;
356
357     /**
358      * This method returns the Package name of the widget.
359      *
360      * @return pkgname
361      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
362      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in DB table.
363      */
364     DPL::OptionalString getPkgname() const;
365
366     /**
367      * This method returns the defaultlocale for the widget.
368      *
369      * @return defaultlocale
370      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
371      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
372      *  DB table.
373      */
374     DPL::OptionalString getDefaultlocale() const;
375
376     /**
377      * This method returns list of localized icons files;
378      *
379      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
380      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
381      *  DB table.
382      */
383     WidgetLocalizedIconList getLocalizedIconList() const;
384
385     /**
386      * This method returns list of icons files;
387      *
388      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
389      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
390      *  DB table.
391      */
392     WidgetIconList getIconList() const;
393
394     /**
395      * This method returns list of localized start files;
396      *
397      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
398      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
399      *  DB table.
400      */
401     LocalizedStartFileList getLocalizedStartFileList() const;
402
403     /**
404      * This method returns list of start files;
405      *
406      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
407      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
408      *  DB table.
409      */
410     WidgetStartFileList getStartFileList() const;
411
412     /**
413      * @param[out] outAccessInfoList list filled with access info structures
414      */
415     void getWidgetAccessInfo(WidgetAccessInfoList& outAccessInfoList) const;
416
417     /**
418      * WAC 2.0 extension
419      * @return recognized status
420      */
421     bool isRecognized() const;
422
423     /**
424      * WAC 2.0 extension
425      * @return
426      */
427     bool isWacSigned() const;
428
429     /**
430      * WAC 2.0 extension
431      * @return
432      */
433     bool isDistributorSigned() const;
434
435     /**
436      * WAC 2.0 extension
437      * @return trusted status
438      */
439     bool isTrusted() const;
440
441     /**
442      * WAC 2.0 extension
443      * @return is WAC test widget
444      */
445     bool isTestWidget() const;
446
447     /**
448      * This method returns window mode of widget.
449      *
450      * @return window modes of widget
451      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
452      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
453      *  DB table.
454      */
455     WindowModeList getWindowModes() const;
456
457     /**
458      * This method returns the version of the widget.
459      *
460      * @return version of widget
461      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
462      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
463      *  DB table.
464      */
465     DPL::OptionalString getVersion() const;
466
467     /**
468      * This method returns list filed with Common Name entries from certificate.
469      *
470      * @return Common Name of Distribuotor End Entity certificate.
471      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
472      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
473      *  DB table.
474      */
475     WidgetCertificateCNList getKeyCommonNameList(
476             WidgetCertificateData::Owner owner,
477             WidgetCertificateData::Type type) const;
478
479     /**
480      * given a certificate owner (author / distributor) and type of certificate
481      * (end entity / ca)
482      * function returns list of matching fingerprints
483      */
484     FingerPrintList getKeyFingerprints(
485             WidgetCertificateData::Owner owner,
486             WidgetCertificateData::Type type) const;
487
488     /*
489      *  This method gets certificate data list for a widget from database.
490      */
491     WidgetCertificateDataList getCertificateDataList() const;
492
493     /**
494      * This method returns a list of widget features.
495      *
496      * @see WidgetFeature
497      * @see FreeFeatureList()
498      * @return list of widget features, type of list element is structure
499      *  WidgetFeature
500      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
501      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
502      *  DB table.
503      */
504     DbWidgetFeatureSet getFeaturesList() const;
505
506     static WidgetParamMap getFeatureParams(int widgetFeatureId);
507     /**
508      * This method checks whether widget has specified feature.
509      *
510      * @return true if has, false if has not
511      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
512      */
513     bool hasFeature(const std::string& featureName) const;
514
515     /**
516      * This method gets host list that widget can connect to.
517      *
518      * @return See above comment
519      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
520      */
521     HostList getAccessHostList() const;
522
523     /**
524      * This method gets widget's access on network: true or false.
525      *
526      * @return true: widget can access network; false: widget can not access
527      *  network.
528      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
529      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
530      *  DB table.
531      */
532     bool getAccessNetworkMode() const;
533
534     /**
535      * This method gets if widget needs webkit plugins enabled
536      *
537      * @return true: widget needs webkit plugins enabled
538      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
539      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
540      *  DB table.
541      */
542     bool getWebkitPluginsRequired() const;
543
544     /**
545      * This method returns a list of all the installed widgets' app id.
546      *
547      * @return list of installed widgets' app id.
548      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
549      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
550      *  DB table.
551      */
552     static DbWidgetHandleList getHandleList();
553
554     /**
555      * This method returns a list of all the installed widgets.
556      *
557      * @return list of installed widgets.
558      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
559      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
560      *  DB table.
561      */
562     static DbWidgetDAOReadOnlyList getWidgetList();
563
564    /**
565      * This method removes a widget's information from EmDB.
566      *
567      * @see RegisterWidget()
568      * @param[in] widgetHandle    widget's app id
569      * @return true if succeed, false if fail.
570      */
571     static void unregisterWidget(DbWidgetHandle widgetHandle);
572
573     /**
574      * This method gets author's infomation of a widget which is parsed from
575      *  configiration document.
576      *
577      * @see WidgetAuthorInfo
578      * @param[out] pAuthorInfo
579      * @return true if succeed, false if fail.
580      */
581     WidgetAuthorInfo getAuthorInfo() const;
582
583     /**
584      * This method gets author's name of a widget which is parsed from
585      *  configiration document.
586      *
587      * @param[out] pAuthorInfo
588      * @return author's name.
589      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
590      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
591      *  DB table.
592      */
593     DPL::OptionalString getAuthorName() const;
594
595     /**
596      * This method gets author's email of a widget which is parsed from
597      *  configiration document.
598      *
599      * @param[out] pAuthorInfo
600      * @return author's email.
601      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
602      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
603      *  DB table.
604      */
605     DPL::OptionalString getAuthorEmail() const;
606
607     /**
608      * This method gets author's email of a widget which is parsed from
609      *  configiration document.
610      *
611      * @param[out] pAuthorInfo
612      * @return author's email.
613      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
614      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
615      *  DB table.
616      */
617     DPL::OptionalString getAuthorHref() const;
618
619     /**
620      * This method returns minimum version of WAC that WRT has to be compliant
621      *  to to run this widget
622      *
623      * @return Minimum version
624      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
625      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
626      *  DB table.
627      */
628     DPL::OptionalString getMinimumWacVersion() const;
629
630     /* This method get widget' share href.
631      *
632      * @return widget's share href
633      */
634     std::string getShareHref() const;
635
636     /**
637      * This method get widget installed time
638      *
639      * @return time_t : return widget's install time
640      */
641     time_t getInstallTime() const;
642
643     /**
644      * This method gets widget base folder.
645      *
646      * @return widget base folder.
647      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
648      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in
649      *  DB table.
650      */
651     std::string getBaseFolder() const;
652
653     /* This method gets the parameter list for resource.
654      */
655     ResourceAttributeList getResourceAttribute(
656             const std::string &resourceId) const;
657
658     /* This method checks read only flag for given property
659      */
660     DPL::OptionalInt checkPropertyReadFlag(
661             const PropertyDAOReadOnly::WidgetPropertyKey &key) const;
662
663     /* This method gets widget property key list
664      */
665     PropertyDAOReadOnly::WidgetPropertyKeyList getPropertyKeyList() const;
666
667     /* This method gets widget property list
668      */
669     PropertyDAOReadOnly::WidgetPreferenceList getPropertyList() const;
670
671     /* This method get widget property value
672      */
673     PropertyDAOReadOnly::WidgetPropertyValue getPropertyValue(
674             const PropertyDAOReadOnly::WidgetPropertyKey &key) const;
675
676     LanguageTagList getLanguageTags() const;
677     LanguageTagList getIconLanguageTags() const;
678
679
680
681     WidgetLocalizedInfo getLocalizedInfo(const DPL::String& languageTag) const;
682     std::string getCookieDatabasePath() const;
683     // Local storage
684     std::string getPrivateLocalStoragePath() const;
685
686     bool getBackSupported() const;
687
688     static bool isWidgetInstalled(DbWidgetHandle handle);
689     static bool isWidgetInstalled(DPL::String pkgName);
690
691     /* This method get path of the splash image.
692      *
693      * @return path of the widget's splash image
694      */
695     DPL::OptionalString getSplashImgSrc() const;
696
697     ExternalLocationList getWidgetExternalLocations() const;
698
699     /*
700      * Default value is required to keep compatibility with
701      * wrt-installer and wrt.
702      */
703     CertificateChainList getWidgetCertificate(
704             CertificateSource source = SIGNATURE_DISTRIBUTOR) const;
705
706     void getWidgetSettings(WidgetSettings& outWidgetSettings) const;
707
708     /**
709      * This method gets application service list that define AUL value
710      *
711      * @return See above comment
712      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
713      */
714     void getAppServiceList(
715             WidgetApplicationServiceList& outAppServiceList) const;
716
717     /**
718      * This method returns the type of the package.
719      *
720      * @return PkgType
721      * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table.
722      * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching
723                                                 records in DB table.
724      */
725     PkgType getPkgType() const;
726
727     void getEncryptedFileList(EncryptedFileList& filesList) const;
728
729     /**
730      * This method returns widget's background page filename.
731      *
732      * @return Name of file containing background page
733      */
734     DPL::OptionalString getBackgroundPage() const;
735 };
736
737 } // namespace WrtDB
738
739 #endif // _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_
740