Fix App-control Supports
authorTaejeong Lee <taejeong.lee@samsung.com>
Wed, 6 Mar 2013 07:02:21 +0000 (16:02 +0900)
committerGerrit Code Review <gerrit2@kim11>
Wed, 6 Mar 2013 11:48:15 +0000 (20:48 +0900)
 * wrt-commons : Registration routine was added.

[Issue#]   N/A
[Bug]      Tizen app-control service doesn't works peroperly on wrt.
[Cause]    App-control info DB registeration routine was omitted.
[Solution] Registration routine was added.

Change-Id: Idd0202f4664a0c4fc952a30526e716986a348b17

modules/widget_dao/dao/widget_dao.cpp
modules/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h

index a58c478..51c4627 100644 (file)
@@ -695,6 +695,26 @@ void WidgetDAO::registerWidgetSettings(DbWidgetHandle widgetHandle,
     }
 }
 
+void WidgetDAO::insertApplicationServiceInfo(DbWidgetHandle handle,
+                                             DPL::String src,
+                                             DPL::String operation,
+                                             DPL::String scheme,
+                                             DPL::String mime)
+{
+    using namespace DPL::DB::ORM;
+    using namespace DPL::DB::ORM::wrt;
+
+    ApplicationServiceInfo::Row row;
+
+    row.Set_app_id(handle);
+    row.Set_src(src);
+    row.Set_operation(operation);
+    row.Set_scheme(scheme);
+    row.Set_mime(mime);
+
+    DO_INSERT(row, ApplicationServiceInfo);
+}
+
 void WidgetDAO::registerAppService(DbWidgetHandle widgetHandle,
                                    const WidgetRegisterInfo &regInfo)
 {
@@ -702,6 +722,7 @@ void WidgetDAO::registerAppService(DbWidgetHandle widgetHandle,
     using namespace DPL::DB::ORM::wrt;
     const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo;
 
+    // appServiceList
     FOREACH(ASIt, widgetConfigurationInfo.appServiceList)
     {
         ApplicationServiceInfo::Row row;
@@ -714,6 +735,57 @@ void WidgetDAO::registerAppService(DbWidgetHandle widgetHandle,
 
         DO_INSERT(row, ApplicationServiceInfo)
     }
+
+    // appControlList
+    FOREACH(appControl_it, widgetConfigurationInfo.appControlList)
+    {
+        DPL::String src       = appControl_it->m_src;
+        DPL::String operation = appControl_it->m_operation;
+
+        if (!appControl_it->m_uriList.empty())
+        {
+            FOREACH(uri_it, appControl_it->m_uriList)
+            {
+                DPL::String scheme = *uri_it;
+
+                if (!appControl_it->m_mimeList.empty())
+                {
+                    FOREACH(mime_it, appControl_it->m_mimeList)
+                    {
+                        DPL::String mime = *mime_it;
+
+                        insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+                    }
+                }
+                else
+                {
+                    DPL::String mime = L"";
+
+                    insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+                }
+            }
+        }
+        else
+        {
+            DPL::String scheme = L"";
+
+            if (!appControl_it->m_mimeList.empty())
+            {
+                FOREACH(mime_it, appControl_it->m_mimeList)
+                {
+                    DPL::String mime = *mime_it;
+
+                    insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+                }
+            }
+            else
+            {
+                DPL::String mime = L"";
+
+                insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+            }
+        }
+    }
 }
 
 void WidgetDAO::registerEncryptedResouceInfo(DbWidgetHandle widgetHandle,
index 5f059db..0c37d51 100644 (file)
@@ -221,6 +221,12 @@ class WidgetDAO : public WidgetDAOReadOnly
             DPL::Optional<DbWidgetHandle>());
     static void unregisterWidgetInternal(
         const TizenAppId & tzAppId);
+
+    static void insertApplicationServiceInfo(DbWidgetHandle handle,
+                                             DPL::String src,
+                                             DPL::String operation,
+                                             DPL::String scheme,
+                                             DPL::String mime);
 };
 } // namespace WrtDB