CAroot Certificate confirm request popup
authorleerang song <leerang.song@samsung.com>
Tue, 4 Dec 2012 11:28:36 +0000 (20:28 +0900)
committerleerang song <leerang.song@samsung.com>
Wed, 23 Jan 2013 10:21:13 +0000 (19:21 +0900)
[Issue#] N/A
[Problem] N/A
[Cause] When access not trusted site, request whether or not user access site
[Solution] Add certificate confirm request smart callback
[Verification] N/A
[SCMRequest] N/A

Change-Id: Ia2dd89eefa98661786a2a03e485db09bbcfa489b

src/view/webkit/view_logic.cpp
src/view/webkit/view_logic.h

index 3e27ac8..48263ad 100755 (executable)
@@ -68,6 +68,7 @@
 #include <wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h>
 #include <wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h>
 #include <wrt-commons/custom-handler-dao-rw/custom_handler_dao.h>
+#include <popup-runner/PopupInvoker.h>
 
 #include <appsvc/appsvc.h>
 
@@ -91,6 +92,10 @@ const char PROTOCOL_HANDLER_ASK_REMEMBER[] = "Remember dicision";
 const char CONTENT_HANDLER_ASK_MSG[] = "Add content?";
 const char CONTENT_HANDLER_ASK_TITLE[] = "Add content";
 const char CONTENT_HANDLER_AKS_REMEMBER[] = "Remember dicision";
+const char * const CERTIFICATE_CONFIRM_REQUEST_ASK_TITLE =
+    "Certification Info";
+const char * const CERTIFICATE_CONFIRM_REQUEST_ASK_BODY =
+    "This site's security certificate is not trusted! Do you acess this site?";
 } // anonymous namespace
 
 std::map<const std::string, const Evas_Smart_Cb> ViewLogic::m_ewkCallbacksMap =
@@ -145,7 +150,8 @@ std::map<const std::string, const Evas_Smart_Cb> ViewLogic::m_ewkCallbacksMap =
     {"protocolhandler,unregistration,requested", &ViewLogic::protocolHandlerUnregistrationCallback},
     {"contenthandler,registration,requested", &ViewLogic::contentHandlerRegistrationCallback},
     {"contenthandler,isregistered", &ViewLogic::contentHandlerIsRegisteredCallback},
-    {"contenthandler,unregistration,requested", &ViewLogic::contentHandlerUnregistrationCallback}
+    {"contenthandler,unregistration,requested", &ViewLogic::contentHandlerUnregistrationCallback},
+    {"request,certificate,confirm", &ViewLogic::certificateConfirmRequestCallback}
 };
 
 ViewLogic::ViewLogic():
@@ -487,6 +493,9 @@ void ViewLogic::initializeEwkContext(Ewk_Context* newEwkContext)
         vibrationCancelCallback,
         this);
 
+    ewk_context_certificate_file_set(m_ewkContext,
+        "/opt/usr/share/certs/ca-certificate.crt");
+
     // set to member value
     m_ewkContext = newEwkContext;
 }
@@ -1885,6 +1894,39 @@ void ViewLogic::fileSystemPermissionRequestCallback(
         eventInfo);
 }
 
+void ViewLogic::certificateConfirmRequestCallback(
+    void* data,
+    Evas_Object* /*obj*/,
+    void* eventInfo)
+{
+    LogDebug("certificateConfirmRequestCallback called");
+
+    Assert(data);
+    ViewLogic* This = static_cast<ViewLogic*>(data);
+    Assert(eventInfo);
+        Ewk_Certificate_Policy_Decision* certificatePolicyDecision =
+        static_cast<Ewk_Certificate_Policy_Decision*>(eventInfo);
+
+    bool status = This->askUserForCertificateConfirm();
+    if(!status) {
+        ewk_certificate_policy_decision_allowed_set(
+            certificatePolicyDecision,
+            EINA_FALSE);
+    }
+    else {
+        ewk_certificate_policy_decision_allowed_set(
+            certificatePolicyDecision,
+            EINA_TRUE);
+    }
+}
+
+bool ViewLogic::askUserForCertificateConfirm()
+{
+    return Wrt::Popup::PopupInvoker().askYesNo(
+        CERTIFICATE_CONFIRM_REQUEST_ASK_TITLE,
+        CERTIFICATE_CONFIRM_REQUEST_ASK_BODY);
+}
+
 void ViewLogic::didRecieveMessageFromInjectedBundle(
         const char* name,
         const char* /*body*/)
index 4b1229b..709a410 100755 (executable)
@@ -251,6 +251,11 @@ class ViewLogic : public ViewModule::IViewModule
         void* data,
         Evas_Object* obj,
         void* eventInfo);
+    static void certificateConfirmRequestCallback(
+        void* data,
+        Evas_Object* obj,
+        void* eventInfo);
+    bool askUserForCertificateConfirm();
 
     void attachToCustomHandlersDao();
     void detachFromCustomHandlersDao();