Merge "fix: use EINA_* booleans instread of TRUE/FALSE" into tizen
[platform/framework/web/wrt.git] / src / view / webkit / view_logic_web_notification_permission_support.cpp
index aade0fa..dd81dfe 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <string>
 #include <dpl/log/secure_log.h>
+#include <dpl/availability.h>
 #include <wrt-commons/security-origin-dao/security_origin_dao_types.h>
 #include <wrt-commons/security-origin-dao/security_origin_dao.h>
 #include <common/view_logic_security_origin_support.h>
@@ -39,7 +40,9 @@ using namespace ViewModule::SecurityOriginSupportUtil;
 namespace {
 // Function declare
 bool askUserPermission(Evas_Object* parent, PermissionData* data);
+void setPermissionResult(PermissionData* permData, Result result);
 static void popupCallback(void* data, Evas_Object* obj, void* eventInfo);
+static void eaKeyCallback(void* data, Evas_Object* obj, void* eventInfo);
 
 bool askUserPermission(Evas_Object* parent, PermissionData* data)
 {
@@ -65,6 +68,7 @@ bool askUserPermission(Evas_Object* parent, PermissionData* data)
                                      body.c_str(),
                                      WRT_BODY_REMEMBER_PREFERENCE,
                                      popupCallback,
+                                     eaKeyCallback,
                                      data);
     if (popup == NULL) {
         delete data;
@@ -75,29 +79,53 @@ bool askUserPermission(Evas_Object* parent, PermissionData* data)
     return true;
 }
 
-void popupCallback(void* data, Evas_Object* obj, void* /*eventInfo*/)
+void setPermissionResult(PermissionData* permData, Result result)
 {
-    LogDebug("called");
-    Assert(data);
-    PermissionData* permData = static_cast<PermissionData*>(data);
-    Ewk_Notification_Permission_Request* request =
+    Assert(permData);
+    if (result != RESULT_UNKNOWN) {
+        permData->m_originDao->setSecurityOriginData(permData->m_originData, result);
+    }
+
+    Ewk_Notification_Permission_Request* permissionRequest =
         static_cast<Ewk_Notification_Permission_Request*>(permData->m_data);
+    Eina_Bool ret = (result == RESULT_ALLOW_ALWAYS || result == RESULT_ALLOW_ONCE) ? EINA_TRUE : EINA_FALSE;
+    ewk_notification_permission_request_set(permissionRequest, ret);
+}
 
-    Evas_Object* popup = getPopup(obj);
-    Result result = getResult(obj);
+void popupCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+    _D("called");
 
-    if (result != RESULT_UNKNOWN) {
-        permData->m_originDao->setSecurityOriginData(permData->m_originData,
-                                                     result);
-    }
-    Eina_Bool ret =
-        (result == RESULT_ALLOW_ALWAYS || result == RESULT_ALLOW_ONCE) ?
-        EINA_TRUE : EINA_FALSE;
-    ewk_notification_permission_request_set(request, ret);
+    Assert(data);
+    Assert(obj);
+
+    DPL_UNUSED_PARAM(eventInfo);
+
+    PermissionData* permData = static_cast<PermissionData*>(data);
+    setPermissionResult(permData, getResult(obj));
     delete permData;
+
+    Evas_Object* popup = getPopup(obj);
     evas_object_hide(popup);
     evas_object_del(popup);
 }
+
+void eaKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+    _D("called");
+
+    Assert(data);
+    Assert(obj);
+
+    DPL_UNUSED_PARAM(eventInfo);
+
+    PermissionData* permData = static_cast<PermissionData*>(data);
+    setPermissionResult(permData, RESULT_DENY_ONCE);
+    delete permData;
+
+    evas_object_hide(obj);
+    evas_object_del(obj);
+}
 } // anonymous namespace
 
 void permissionRequest(