Support app:// for w3c privilege
authorJihoon Chung <jihoon.chung@samsung.com>
Wed, 27 Mar 2013 08:38:24 +0000 (17:38 +0900)
committerJihoon Chung <jihoon.chung@samsung.com>
Thu, 28 Mar 2013 06:06:12 +0000 (15:06 +0900)
[Issue#] N/A
[Problem] N/A
[Cause] N/A
[Solution] "file://" scheme is deprecated
Tizen2.1 uses "app://<app-id>" instead of "file://"
This commit changed add security origin part when web application
define w3c privilege in the config.xml
[SCMRequest] N/A

Change-Id: I4c7dc4f2a5f6d61f120e7763b73ac7830b2737fc

src/jobs/widget_install/task_database.cpp [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 775ddf8..d7f4646
@@ -161,13 +161,29 @@ void TaskDatabase::StepSecurityOriginDBInsert()
     FOREACH(it, m_context.widgetConfig.configInfo.privilegeList) {
         std::map<std::string, Feature>::const_iterator result =
             g_W3CPrivilegeTextMap.find(DPL::ToUTF8String(it->name));
+        std::string tizenAppId = DPL::ToUTF8String(m_context.widgetConfig.tzAppid).c_str();
+        std::transform(tizenAppId.begin(), tizenAppId.end(), tizenAppId.begin(), tolower);
         if (result != g_W3CPrivilegeTextMap.end()) {
             if (result->second == FEATURE_USER_MEDIA) {
-                dao.setPrivilegeSecurityOriginData(result->second, false);
+                // In case of user media, webkit callback doesn't control origin data
+                // Checking code also useing blank("") scheme and origin
+                SecurityOriginData data(
+                    FEATURE_USER_MEDIA,
+                    Origin(DPL::FromUTF8String(""),
+                           DPL::FromUTF8String(""),
+                           0));
+                dao.setSecurityOriginData(data, RESULT_ALLOW_ALWAYS, true);
             } else if (result->second == FEATURE_FULLSCREEN_MODE) {
+                // In case of fullscreen mode, use case directly compare
+                // whether web application define privilege name or not
                 continue;
             } else {
-                dao.setPrivilegeSecurityOriginData(result->second);
+                SecurityOriginData data(
+                    result->second,
+                    Origin(DPL::FromUTF8String("app"),
+                           DPL::FromUTF8String(tizenAppId),
+                           0));
+                dao.setSecurityOriginData(data, RESULT_ALLOW_ALWAYS, true);
             }
         }
     }