[Release] wrt-commons_0.2.145
[framework/web/wrt-commons.git] / modules / widget_dao / dao / widget_dao_read_only.cpp
index 7adaf41..343c29a 100644 (file)
 #include <orm_generator_wrt.h>
 #include <LanguageTagsProvider.h>
 
-namespace WrtDB {
+namespace {
+    unsigned int seed = time(NULL);
+}
 
+namespace WrtDB {
 //TODO in current solution in each getter there exists a check
 //"IsWidgetInstalled". Maybe it should be verified, if it could be done
 //differently  (check in WidgetDAOReadOnly constructor)
@@ -61,15 +64,13 @@ namespace WrtDB {
                  "Cannot find widget. Handle: " << macro_handle);        \
     }
 
-
 typedef DPL::DB::ORM::wrt::WidgetInfo::Row WidgetInfoRow;
 typedef DPL::DB::ORM::wrt::WidgetFeature::widget_feature_id::ColumnType
-    WidgetFeatureId;
+WidgetFeatureId;
 typedef DPL::DB::ORM::wrt::WidgetSecuritySettings::Row
-    WidgetSecuritySettingsRow;
+WidgetSecuritySettingsRow;
 
 namespace {
-
 using namespace DPL::DB::ORM;
 using namespace DPL::DB::ORM::wrt;
 
@@ -108,14 +109,15 @@ WidgetSecuritySettingsRow getWidgetSecuritySettingsRow(int widgetHandle)
         }
         return rows.front();
     }
-    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getWidgetSecuritySettingsRow")
+    SQL_CONNECTION_EXCEPTION_HANDLER_END(
+        "Failed in getWidgetSecuritySettingsRow")
 }
 
 const int MAX_TIZENID_LENGTH = 10;
 
-WidgetPkgName getPkgNameByHandle(const DbWidgetHandle handle)
+TizenAppId getTizenAppIdByHandle(const DbWidgetHandle handle)
 {
-    LogDebug("Getting WidgetPkgName by DbWidgetHandle: " << handle);
+    LogDebug("Getting TizenAppId by DbWidgetHandle: " << handle);
 
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
@@ -125,41 +127,95 @@ WidgetPkgName getPkgNameByHandle(const DbWidgetHandle handle)
 
         if (rowList.empty()) {
             ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
-                 "Failed to get widget by handle");
+                     "Failed to get widget by handle");
         }
-        WidgetPkgName pkgname = rowList.front().Get_pkgname();
+        TizenAppId tzAppid = rowList.front().Get_tizen_appid();
+
+        return tzAppid;
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle")
+}
 
-        return pkgname;
+TizenAppId getTizenAppIdByPkgId(const TizenPkgId tzPkgid)
+{
+    LogDebug("Getting TizenAppId by pkgid : " << tzPkgid);
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
+        select->Where(Equals<WidgetInfo::tizen_pkgid>(tzPkgid));
+        WidgetInfo::Select::RowList rowList = select->GetRowList();
 
+        if (rowList.empty()) {
+            ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
+                     "Failed to get widget by handle");
+        }
+        TizenAppId tzAppid = rowList.front().Get_tizen_appid();
+
+        return tzAppid;
     }
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle")
 }
-} // namespace
 
+TizenPkgId getTizenPkgIdByHandle(const DbWidgetHandle handle)
+{
+    LogDebug("Getting TizenPkgId by DbWidgetHandle: " << handle);
+
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
+        select->Where(Equals<WidgetInfo::app_id>(handle));
+        WidgetInfo::Select::RowList rowList = select->GetRowList();
+
+        if (rowList.empty()) {
+            ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
+                     "Failed to get widget by handle");
+        }
+        TizenPkgId tzPkgid = rowList.front().Get_tizen_pkgid();
+
+        return tzPkgid;
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle")
+}
 
-IWacSecurity::~IWacSecurity()
+TizenPkgId getTizenPkgIdByAppId(const TizenAppId tzAppid)
 {
+    LogDebug("Getting TizenPkgId by TizenAppId: " << tzAppid);
+
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
+        select->Where(Equals<WidgetInfo::tizen_appid>(tzAppid));
+        WidgetInfo::Select::RowList rowList = select->GetRowList();
+
+        if (rowList.empty()) {
+            ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
+                     "Failed to get widget by tizen appId");
+        }
+        TizenPkgId tzPkgid = rowList.front().Get_tizen_pkgid();
+
+        return tzPkgid;
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed get pkgId")
 }
+} // namespace
+
+IWidgetSecurity::~IWidgetSecurity()
+{}
 
 WidgetDAOReadOnly::WidgetDAOReadOnly(DbWidgetHandle widgetHandle) :
     m_widgetHandle(widgetHandle)
-{
-}
+{}
 
 WidgetDAOReadOnly::WidgetDAOReadOnly(DPL::OptionalString widgetGUID) :
     m_widgetHandle(WidgetDAOReadOnly::getHandle(widgetGUID))
-{
-}
+{}
 
-WidgetDAOReadOnly::WidgetDAOReadOnly(DPL::String pkgName) :
-    m_widgetHandle(WidgetDAOReadOnly::getHandle(pkgName))
-{
-
-}
+WidgetDAOReadOnly::WidgetDAOReadOnly(TizenAppId tzAppid) :
+    m_widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid))
+{}
 
 WidgetDAOReadOnly::~WidgetDAOReadOnly()
-{
-}
+{}
 
 DbWidgetHandle WidgetDAOReadOnly::getHandle() const
 {
@@ -178,69 +234,89 @@ DbWidgetHandle WidgetDAOReadOnly::getHandle(const WidgetGUID GUID)
 
         if (rowList.empty()) {
             ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
-                 "Failed to get widget by guid");
+                     "Failed to get widget by guid");
         }
         return rowList.front().Get_app_id();
     }
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle")
 }
 
-DbWidgetHandle WidgetDAOReadOnly::getHandle(const DPL::String pkgName)
+DbWidgetHandle WidgetDAOReadOnly::getHandle(const DPL::String tzAppId)
 {
-    LogDebug("Getting WidgetHandle by Package Name [" << pkgName << "]");
+    LogDebug("Getting WidgetHandle by tizen app id [" << tzAppId << "]");
 
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
         WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
-        select->Where(Equals<WidgetInfo::pkgname>(pkgName));
+        select->Where(Equals<WidgetInfo::tizen_appid>(tzAppId));
         WidgetInfo::Select::RowList rowList = select->GetRowList();
 
         if (rowList.empty()) {
             ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
-                 "Failed to get widget by package name");
+                     "Failed to get widget by package name");
         }
         return rowList.front().Get_app_id();
     }
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle")
 }
 
-WidgetPkgName WidgetDAOReadOnly::getPkgName() const
+TizenAppId WidgetDAOReadOnly::getTzAppId() const
+{
+    return getTizenAppIdByHandle(m_widgetHandle);
+}
+
+TizenAppId WidgetDAOReadOnly::getTzAppId(const WidgetGUID GUID)
 {
-    return getPkgNameByHandle(m_widgetHandle);
+    return getTizenAppIdByHandle(getHandle(GUID));
 }
 
-WidgetPkgName WidgetDAOReadOnly::getPkgName(const WidgetGUID GUID)
+TizenAppId WidgetDAOReadOnly::getTzAppId(const DbWidgetHandle handle)
 {
-    return getPkgNameByHandle(getHandle(GUID));
+    return getTizenAppIdByHandle(handle);
 }
 
-WidgetPkgName WidgetDAOReadOnly::getPkgName(const DbWidgetHandle handle)
+TizenAppId WidgetDAOReadOnly::getTzAppId(const TizenPkgId tzPkgid)
 {
-    return getPkgNameByHandle(handle);
+    return getTizenAppIdByPkgId(tzPkgid);
+}
+
+TizenPkgId WidgetDAOReadOnly::getTzPkgId() const
+{
+    return getTizenPkgIdByHandle(m_widgetHandle);
+}
+
+TizenPkgId WidgetDAOReadOnly::getTzPkgId(const DbWidgetHandle handle)
+{
+    return getTizenPkgIdByHandle(handle);
+}
+
+TizenPkgId WidgetDAOReadOnly::getTzPkgId(const TizenAppId tzAppid)
+{
+    return getTizenPkgIdByAppId(tzAppid);
 }
 
 PropertyDAOReadOnly::WidgetPropertyKeyList
 WidgetDAOReadOnly::getPropertyKeyList() const
 {
-    return PropertyDAOReadOnly::GetPropertyKeyList(getPkgName());
+    return PropertyDAOReadOnly::GetPropertyKeyList(getTzAppId());
 }
 
 PropertyDAOReadOnly::WidgetPreferenceList
 WidgetDAOReadOnly::getPropertyList() const
 {
-    return PropertyDAOReadOnly::GetPropertyList(getPkgName());
+    return PropertyDAOReadOnly::GetPropertyList(getTzAppId());
 }
 
 PropertyDAOReadOnly::WidgetPropertyValue WidgetDAOReadOnly::getPropertyValue(
-        const PropertyDAOReadOnly::WidgetPropertyKey &key) const
+    const PropertyDAOReadOnly::WidgetPropertyKey &key) const
 {
-    return PropertyDAOReadOnly::GetPropertyValue(getPkgName(), key);
+    return PropertyDAOReadOnly::GetPropertyValue(getTzAppId(), key);
 }
 
 DPL::OptionalInt WidgetDAOReadOnly::checkPropertyReadFlag(
-        const PropertyDAOReadOnly::WidgetPropertyKey &key) const
+    const PropertyDAOReadOnly::WidgetPropertyKey &key) const
 {
-    return PropertyDAOReadOnly::CheckPropertyReadFlag(getPkgName(), key);
+    return PropertyDAOReadOnly::CheckPropertyReadFlag(getTzAppId(), key);
 }
 
 DPL::String WidgetDAOReadOnly::getPath() const
@@ -259,8 +335,8 @@ DPL::String WidgetDAOReadOnly::getFullPath() const
 }
 
 WidgetLocalizedInfo
-        WidgetDAOReadOnly::getLocalizedInfo(const DPL::String& languageTag)
-        const
+WidgetDAOReadOnly::getLocalizedInfo(const DPL::String& languageTag)
+const
 {
     LogDebug("Getting Localized Info. Handle: " << m_widgetHandle);
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -305,9 +381,7 @@ DbWidgetFeatureSet WidgetDAOReadOnly::getFeaturesList() const
         for (RowList::iterator i = list.begin(); i != list.end(); ++i) {
             DbWidgetFeature feature;
             feature.name = i->Get_name();
-            feature.required = i->Get_required();
             feature.rejected = i->Get_rejected();
-            feature.params = getFeatureParams(i->Get_widget_feature_id());
             FeatureDAOReadOnly featureDao(DPL::ToUTF8String(i->Get_name()));
             feature.pluginId = featureDao.GetPluginHandle();
             resultSet.insert(feature);
@@ -318,28 +392,6 @@ DbWidgetFeatureSet WidgetDAOReadOnly::getFeaturesList() const
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get features list")
 }
 
-WidgetParamMap WidgetDAOReadOnly::getFeatureParams(int id)
-{
-    WidgetFeatureId widgetFeatureId(id);
-    LogDebug("Getting feature Params. featureId: " << widgetFeatureId);
-    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
-    {
-        WRT_DB_SELECT(select, FeatureParam, &WrtDatabase::interface())
-        select->Where(Equals<FeatureParam::widget_feature_id>(
-                          widgetFeatureId));
-
-        WidgetParamMap resultMap;
-        typedef std::list<FeatureParam::Row> RowList;
-        RowList list = select->GetRowList();
-
-        FOREACH(i, list)
-            resultMap.insert(std::make_pair(i->Get_name(), i->Get_value()));
-
-        return resultMap;
-    }
-    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get feature params")
-}
-
 bool WidgetDAOReadOnly::hasFeature(const std::string& featureName) const
 {
     LogDebug(
@@ -402,17 +454,27 @@ DbWidgetHandleList WidgetDAOReadOnly::getHandleList()
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get handle list")
 }
 
-WidgetPkgNameList WidgetDAOReadOnly::getPkgnameList()
+TizenAppIdList WidgetDAOReadOnly::getTizenAppidList()
 {
     LogDebug("Getting Pkgname List ");
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
         WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
-        return select->GetValueList<WidgetInfo::pkgname>();
+        return select->GetValueList<WidgetInfo::tizen_appid>();
     }
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get Pkgname list")
 }
 
+TizenPkgIdList WidgetDAOReadOnly::getTizenPkgidList()
+{
+    LogDebug("Getting Pkgid List ");
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
+        return select->GetValueList<WidgetInfo::tizen_pkgid>();
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get Pkgid list")
+}
 
 DbWidgetDAOReadOnlyList WidgetDAOReadOnly::getWidgetList()
 {
@@ -439,13 +501,13 @@ bool WidgetDAOReadOnly::isWidgetInstalled(DbWidgetHandle handle)
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to check if widget exist")
 }
 
-bool WidgetDAOReadOnly::isWidgetInstalled(const WidgetPkgName & pkgName)
+bool WidgetDAOReadOnly::isWidgetInstalled(const TizenAppId &tzAppId)
 {
-    LogDebug("Checking if widget exist. package name " << pkgName);
+    LogDebug("Checking if widget exist. tizen app id" << tzAppId);
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
         WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
-        select->Where(Equals<WidgetInfo::pkgname>(pkgName));
+        select->Where(Equals<WidgetInfo::tizen_appid>(tzAppId));
 
         WidgetInfo::Select::RowList rows = select->GetRowList();
 
@@ -473,7 +535,7 @@ ExternalLocationList WidgetDAOReadOnly::getWidgetExternalLocations() const
 }
 
 CertificateChainList WidgetDAOReadOnly::getWidgetCertificate(
-        CertificateSource source) const
+    CertificateSource source) const
 {
     WRT_DB_SELECT(select, WidgetCertificate, &WrtDatabase::interface())
     select->Where(
@@ -486,7 +548,7 @@ CertificateChainList WidgetDAOReadOnly::getWidgetCertificate(
     CertificateChainList result;
 
     FOREACH(iter, chainList)
-        result.push_back(DPL::ToUTF8String(iter->Get_encoded_chain()));
+    result.push_back(DPL::ToUTF8String(iter->Get_encoded_chain()));
     return result;
 }
 
@@ -518,6 +580,11 @@ WidgetGUID WidgetDAOReadOnly::getGUID() const
     return row.Get_widget_id();
 }
 
+DPL::OptionalString WidgetDAOReadOnly::getTizenAppId() const
+{
+    return DPL::OptionalString(getTzAppId());
+}
+
 DPL::OptionalString WidgetDAOReadOnly::getDefaultlocale() const
 {
     WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
@@ -593,16 +660,6 @@ bool WidgetDAOReadOnly::isRecognized() const
     return static_cast<bool>(*result);
 }
 
-bool WidgetDAOReadOnly::isWacSigned() const
-{
-    WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
-    DPL::OptionalInt result = row.Get_wac_signed();
-    if (result.IsNull()) {
-        return false;
-    }
-    return static_cast<bool>(*result);
-}
-
 bool WidgetDAOReadOnly::isDistributorSigned() const
 {
     WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
@@ -620,24 +677,16 @@ bool WidgetDAOReadOnly::isTrusted() const
     return isDistributorSigned();
 }
 
-bool WidgetDAOReadOnly::isTestWidget() const
+DPL::OptionalString WidgetDAOReadOnly::getCspPolicy() const
 {
-    Try {
-        WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface())
-        select->Where(Equals<WidgetExtendedInfo::app_id>(m_widgetHandle));
-
-        WidgetExtendedInfo::Select::RowList rows = select->GetRowList();
-        if (rows.empty()) {
-            ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
-                     "Cannot find widget. Handle: " << m_widgetHandle);
-        }
+    WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
+    return row.Get_csp_policy();
+}
 
-        return static_cast<bool>(rows.front().Get_test_widget());
-    }
-    Catch(DPL::DB::SqlConnection::Exception::Base){
-        ReThrowMsg(WidgetDAOReadOnly::Exception::DatabaseError,
-                   "Failed to check IsTestWidget");
-    }
+DPL::OptionalString WidgetDAOReadOnly::getCspPolicyReportOnly() const
+{
+    WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
+    return row.Get_csp_policy_report_only();
 }
 
 bool WidgetDAOReadOnly::getWebkitPluginsRequired() const
@@ -645,7 +694,10 @@ bool WidgetDAOReadOnly::getWebkitPluginsRequired() const
     WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
     DPL::OptionalInt ret = row.Get_webkit_plugins_required();
 
-    if (ret.IsNull() || *ret == 0) { return false; } else { return true; }
+    if (ret.IsNull() || *ret == 0) {
+        return false;
+    } else { return true;
+    }
 }
 
 time_t WidgetDAOReadOnly::getInstallTime() const
@@ -689,7 +741,8 @@ DPL::OptionalString WidgetDAOReadOnly::getSplashImgSrc() const
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get splash image path")
 }
 
-WidgetDAOReadOnly::WidgetLocalizedIconList WidgetDAOReadOnly::getLocalizedIconList() const
+WidgetDAOReadOnly::WidgetLocalizedIconList WidgetDAOReadOnly::
+    getLocalizedIconList() const
 {
     //TODO check widget existance??
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -698,13 +751,13 @@ WidgetDAOReadOnly::WidgetLocalizedIconList WidgetDAOReadOnly::getLocalizedIconLi
         select->Where(Equals<WidgetLocalizedIcon::app_id>(m_widgetHandle));
 
         std::list<WidgetLocalizedIcon::Row> list =
-                select->GetRowList();
+            select->GetRowList();
         WidgetLocalizedIconList ret;
-        FOREACH(it,list)
+        FOREACH(it, list)
         {
-            WidgetLocalizedIconRow icon = {it->Get_app_id(),
-                                           it->Get_icon_id(),
-                                           it->Get_widget_locale()};
+            WidgetLocalizedIconRow icon = { it->Get_app_id(),
+                                            it->Get_icon_id(),
+                                            it->Get_widget_locale() };
             ret.push_back(icon);
         }
         return ret;
@@ -719,17 +772,19 @@ WidgetDAOReadOnly::WidgetIconList WidgetDAOReadOnly::getIconList() const
     {
         WRT_DB_SELECT(select, wrt::WidgetIcon, &WrtDatabase::interface())
         select->Where(Equals<wrt::WidgetIcon::app_id>(m_widgetHandle));
+        select->OrderBy(DPL::TypeListDecl<OrderingAscending<wrt::WidgetIcon::
+                                                                icon_id> >());
 
         std::list<WidgetIcon::Row> list =
-                select->GetRowList();
+            select->GetRowList();
         WidgetIconList ret;
-        FOREACH(it,list)
+        FOREACH(it, list)
         {
-            WidgetIconRow icon = {it->Get_icon_id(),
-                                  it->Get_app_id(),
-                                  it->Get_icon_src(),
-                                  it->Get_icon_width(),
-                                  it->Get_icon_height()};
+            WidgetIconRow icon = { it->Get_icon_id(),
+                                   it->Get_app_id(),
+                                   it->Get_icon_src(),
+                                   it->Get_icon_width(),
+                                   it->Get_icon_height() };
             ret.push_back(icon);
         }
         return ret;
@@ -737,7 +792,8 @@ WidgetDAOReadOnly::WidgetIconList WidgetDAOReadOnly::getIconList() const
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get icon data")
 }
 
-WidgetDAOReadOnly::LocalizedStartFileList WidgetDAOReadOnly::getLocalizedStartFileList() const
+WidgetDAOReadOnly::LocalizedStartFileList WidgetDAOReadOnly::
+    getLocalizedStartFileList() const
 {
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -748,15 +804,15 @@ WidgetDAOReadOnly::LocalizedStartFileList WidgetDAOReadOnly::getLocalizedStartFi
         select->OrderBy("start_file_id ASC");
 
         std::list<WidgetLocalizedStartFile::Row> list =
-                select->GetRowList();
+            select->GetRowList();
         LocalizedStartFileList ret;
-        FOREACH(it,list)
+        FOREACH(it, list)
         {
-            WidgetLocalizedStartFileRow file = {it->Get_start_file_id(),
-                                                it->Get_app_id(),
-                                                it->Get_widget_locale(),
-                                                it->Get_type(),
-                                                it->Get_encoding()};
+            WidgetLocalizedStartFileRow file = { it->Get_start_file_id(),
+                                                 it->Get_app_id(),
+                                                 it->Get_widget_locale(),
+                                                 it->Get_type(),
+                                                 it->Get_encoding() };
             ret.push_back(file);
         }
         return ret;
@@ -764,7 +820,8 @@ WidgetDAOReadOnly::LocalizedStartFileList WidgetDAOReadOnly::getLocalizedStartFi
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get start file list data")
 }
 
-WidgetDAOReadOnly::WidgetStartFileList WidgetDAOReadOnly::getStartFileList() const
+WidgetDAOReadOnly::WidgetStartFileList WidgetDAOReadOnly::getStartFileList()
+const
 {
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -774,13 +831,13 @@ WidgetDAOReadOnly::WidgetStartFileList WidgetDAOReadOnly::getStartFileList() con
         select->OrderBy("start_file_id ASC");
 
         std::list<WidgetStartFile::Row> list =
-                select->GetRowList();
+            select->GetRowList();
         WidgetStartFileList ret;
-        FOREACH(it,list)
+        FOREACH(it, list)
         {
-            WidgetStartFileRow file = {it->Get_start_file_id(),
-                                       it->Get_app_id(),
-                                       it->Get_src()};
+            WidgetStartFileRow file = { it->Get_start_file_id(),
+                                        it->Get_app_id(),
+                                        it->Get_src() };
             ret.push_back(file);
         }
         return ret;
@@ -822,7 +879,9 @@ WidgetCertificateDataList WidgetDAOReadOnly::getCertificateDataList() const
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
-        WRT_DB_SELECT(select, WidgetCertificateFingerprint, &WrtDatabase::interface())
+        WRT_DB_SELECT(select,
+                      WidgetCertificateFingerprint,
+                      &WrtDatabase::interface())
         select->Where(Equals<WidgetCertificateFingerprint::app_id>(
                           m_widgetHandle));
         select->OrderBy("chainid");
@@ -857,17 +916,20 @@ WidgetCertificateDataList WidgetDAOReadOnly::getCertificateDataList() const
 }
 
 FingerPrintList WidgetDAOReadOnly::getKeyFingerprints(
-        WidgetCertificateData::Owner owner,
-        WidgetCertificateData::Type type) const
+    WidgetCertificateData::Owner owner,
+    WidgetCertificateData::Type type) const
 {
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
-        WRT_DB_SELECT(select, WidgetCertificateFingerprint, &WrtDatabase::interface())
+        WRT_DB_SELECT(select,
+                      WidgetCertificateFingerprint,
+                      &WrtDatabase::interface())
         select->Where(And(And(
-            Equals<WidgetCertificateFingerprint::app_id>(m_widgetHandle),
-            Equals<WidgetCertificateFingerprint::owner>(owner)),
-            Equals<WidgetCertificateFingerprint::type>(type)));
+                              Equals<WidgetCertificateFingerprint::app_id>(
+                                  m_widgetHandle),
+                              Equals<WidgetCertificateFingerprint::owner>(owner)),
+                          Equals<WidgetCertificateFingerprint::type>(type)));
 
         WidgetCertificateFingerprint::Select::RowList rows =
             select->GetRowList();
@@ -890,17 +952,20 @@ FingerPrintList WidgetDAOReadOnly::getKeyFingerprints(
 }
 
 WidgetCertificateCNList WidgetDAOReadOnly::getKeyCommonNameList(
-        WidgetCertificateData::Owner owner,
-        WidgetCertificateData::Type type) const
+    WidgetCertificateData::Owner owner,
+    WidgetCertificateData::Type type) const
 {
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
-        WRT_DB_SELECT(select, WidgetCertificateFingerprint, &WrtDatabase::interface())
+        WRT_DB_SELECT(select,
+                      WidgetCertificateFingerprint,
+                      &WrtDatabase::interface())
         select->Where(And(And(
-            Equals<WidgetCertificateFingerprint::app_id>(m_widgetHandle),
-            Equals<WidgetCertificateFingerprint::owner>(owner)),
-            Equals<WidgetCertificateFingerprint::type>(type)));
+                              Equals<WidgetCertificateFingerprint::app_id>(
+                                  m_widgetHandle),
+                              Equals<WidgetCertificateFingerprint::owner>(owner)),
+                          Equals<WidgetCertificateFingerprint::type>(type)));
 
         WidgetCertificateFingerprint::Select::RowList rows =
             select->GetRowList();
@@ -916,28 +981,8 @@ WidgetCertificateCNList WidgetDAOReadOnly::getKeyCommonNameList(
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get key common name")
 }
 
-ResourceAttributeList WidgetDAOReadOnly::getResourceAttribute(
-        const std::string &resourceId) const
-{
-    WRT_DB_SELECT(select, WidgetFeature, &WrtDatabase::interface())
-    select->Where(And(Equals<WidgetFeature::app_id>(m_widgetHandle),
-                      Equals<WidgetFeature::name>(
-                          DPL::FromUTF8String(resourceId))));
-
-    std::list<WidgetFeature::Row> list = select->GetRowList();
-    ResourceAttributeList result;
-    if (!list.empty()) {
-        int widgetFeatureId = list.begin()->Get_widget_feature_id();
-        WidgetParamMap map = getFeatureParams(widgetFeatureId);
-
-        FOREACH(i, map)
-            result.push_back(DPL::ToUTF8String(i->first));
-    }
-    return result;
-}
-
 void WidgetDAOReadOnly::getWidgetAccessInfo(
-        WidgetAccessInfoList& outAccessInfoList) const
+    WidgetAccessInfoList& outAccessInfoList) const
 {
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -965,6 +1010,25 @@ void WidgetDAOReadOnly::getWidgetAccessInfo(
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get accessinfo list")
 }
 
+void WidgetDAOReadOnly::getWidgetAllowNavigationInfo(
+    WidgetAllowNavigationInfoList& allowNavigationList) const
+{
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        WRT_DB_SELECT(select, WidgetAllowNavigation, &WrtDatabase::interface())
+        select->Where(Equals<WidgetAllowNavigation::app_id>(m_widgetHandle));
+        WidgetAllowNavigation::Select::RowList rows = select->GetRowList();
+
+        FOREACH(it, rows) {
+            WidgetAllowNavigationInfo info;
+            info.scheme = it->Get_scheme();
+            info.host = it->Get_host();
+            allowNavigationList.push_back(info);
+        }
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get allow-navigation info list")
+}
+
 LanguageTags WidgetDAOReadOnly::getLanguageTags() const
 {
     //TODO check widget existance
@@ -991,9 +1055,9 @@ std::string WidgetDAOReadOnly::getCookieDatabasePath() const
     using namespace WrtDB::WidgetConfig;
     std::ostringstream path;
 
-    WidgetPkgName pkgname = getPkgName();
+    TizenAppId tzAppId = getTzAppId();
 
-    path << GetWidgetPersistentStoragePath(pkgname);
+    path << GetWidgetPersistentStoragePath(tzAppId);
     path << "/";
     path << GlobalConfig::GetCookieDatabaseFile();
 
@@ -1003,15 +1067,15 @@ std::string WidgetDAOReadOnly::getCookieDatabasePath() const
 std::string WidgetDAOReadOnly::getPrivateLocalStoragePath() const
 {
     std::ostringstream path;
-    WidgetPkgName pkgname = getPkgName();
-    path << WidgetConfig::GetWidgetWebLocalStoragePath(pkgname);
+    TizenAppId tzPkgId = getTizenPkgId();
+    path << WidgetConfig::GetWidgetWebLocalStoragePath(tzPkgId);
     path << "/";
 
     return path.str();
 }
 
 void WidgetDAOReadOnly::getWidgetSettings(
-        WidgetSettings& outWidgetSettings) const
+    WidgetSettings& outWidgetSettings) const
 {
     //TODO check widget existance
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -1033,37 +1097,39 @@ void WidgetDAOReadOnly::getWidgetSettings(
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get settings list")
 }
 
-void WidgetDAOReadOnly::getAppServiceList(
-        WidgetApplicationServiceList& outAppServiceList) const
+void WidgetDAOReadOnly::getAppControlList(
+    WidgetAppControlList& outAppControlList) const
 {
-    LogDebug("Getting getAppServiceList. Handle: " << m_widgetHandle);
+    LogDebug("Getting getAppControlList. Handle: " << m_widgetHandle);
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
     {
         ScopedTransaction transaction(&WrtDatabase::interface());
         CHECK_WIDGET_EXISTENCE(transaction, m_widgetHandle)
 
-        WRT_DB_SELECT(select, ApplicationServiceInfo, &WrtDatabase::interface())
-        select->Where(Equals<ApplicationServiceInfo::app_id>(m_widgetHandle));
+        WRT_DB_SELECT(select, AppControlInfo, &WrtDatabase::interface())
+        select->Where(Equals<AppControlInfo::app_id>(m_widgetHandle));
 
-        ApplicationServiceInfo::Select::RowList rows = select->GetRowList();
+        AppControlInfo::Select::RowList rows = select->GetRowList();
 
         if (rows.empty()) {
-            LogDebug("Application Service list is empty. Handle: " <<
+            LogDebug("AppControl list is empty. Handle: " <<
                      m_widgetHandle);
         }
 
         FOREACH(it, rows) {
-            WidgetApplicationService ret;
+            WidgetAppControl ret;
             ret.src = it->Get_src();
             ret.operation = it->Get_operation();
-            ret.scheme = it->Get_scheme();
+            ret.uri = it->Get_uri();
             ret.mime = it->Get_mime();
-            outAppServiceList.push_back(ret);
+            ret.disposition = static_cast<WidgetAppControl::Disposition>(it->Get_disposition());
+            ret.index = it->Get_execute_index();
+            outAppControlList.push_back(ret);
         }
 
         transaction.Commit();
     }
-    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get access host list")
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get AppControl list")
 }
 
 PackagingType WidgetDAOReadOnly::getPackagingType() const
@@ -1073,7 +1139,8 @@ PackagingType WidgetDAOReadOnly::getPackagingType() const
     return PackagingType(static_cast<PkgType>(*result));
 }
 
-void WidgetDAOReadOnly::getEncryptedFileList(EncryptedFileList& filesList) const
+void WidgetDAOReadOnly::getEncryptedFileList(EncryptedFileList& filesList)
+const
 {
     //TODO check widget existance
     WRT_DB_SELECT(select, EncryptedResourceList, &WrtDatabase::interface())
@@ -1108,18 +1175,19 @@ DPL::OptionalString WidgetDAOReadOnly::getBackgroundPage() const
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get background page")
 }
 
-WidgetPkgName WidgetDAOReadOnly::generateTizenId() {
+TizenPkgId WidgetDAOReadOnly::generatePkgId()
+{
     std::string allowed("0123456789"
-        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-        "abcdefghijklmnopqrstuvwxyz");
-    WidgetPkgName tizenId;
-    tizenId.resize(MAX_TIZENID_LENGTH);
+                        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                        "abcdefghijklmnopqrstuvwxyz");
+    TizenPkgId pkgId;
+    pkgId.resize(MAX_TIZENID_LENGTH);
     do {
-    for (int i = 0; i < MAX_TIZENID_LENGTH; ++i) {
-        tizenId[i] = allowed[rand() % allowed.length()];
-    }
-    } while (isWidgetInstalled(tizenId));
-    return tizenId;
+        for (int i = 0; i < MAX_TIZENID_LENGTH; ++i) {
+            pkgId[i] = allowed[rand_r(&seed) % allowed.length()];
+        }
+    } while (isWidgetInstalled(pkgId));
+    return pkgId;
 }
 
 SettingsType WidgetDAOReadOnly::getSecurityPopupUsage(void) const
@@ -1154,14 +1222,6 @@ SettingsType WidgetDAOReadOnly::getWebDatabaseUsage(void) const
     return static_cast<SettingsType>(*result);
 }
 
-SettingsType WidgetDAOReadOnly::getFileSystemUsage(void) const
-{
-    WidgetSecuritySettingsRow row =
-        getWidgetSecuritySettingsRow(m_widgetHandle);
-    DPL::OptionalInt result = row.Get_file_system_usage();
-    return static_cast<SettingsType>(*result);
-}
-
 DPL::OptionalString WidgetDAOReadOnly::getWidgetInstalledPath() const
 {
     SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
@@ -1181,8 +1241,34 @@ DPL::OptionalString WidgetDAOReadOnly::getWidgetInstalledPath() const
     }
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get widdget installed path")
 }
+
+TizenPkgId WidgetDAOReadOnly::getTizenPkgId() const
+{
+    WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
+    return row.Get_tizen_pkgid();
+}
+
+PrivilegeList WidgetDAOReadOnly::getWidgetPrivilege() const
+{
+    //TODO check widget existance
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        WRT_DB_SELECT(select, WidgetPrivilege, &WrtDatabase::interface())
+        select->Where(Equals<WidgetPrivilege::app_id>(m_widgetHandle));
+
+        return select->GetValueList<WidgetPrivilege::name>();
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get PrivilegeList")
+}
+
+WidgetSecurityModelVersion WidgetDAOReadOnly::getSecurityModelVersion() const
+{
+    WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
+    DPL::OptionalInt result = row.Get_security_model_version();
+    return static_cast<WidgetSecurityModelVersion>(*result);
+}
+
 #undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
 #undef SQL_CONNECTION_EXCEPTION_HANDLER_END
 #undef CHECK_WIDGET_EXISTENCE
-
 } // namespace WrtDB