evas_object_show(layout);
elm_object_content_set(popup, layout);
Evas_Object* btn1 = elm_button_add(popup);
- elm_object_text_set(btn1, "YES");
+ elm_object_text_set(btn1, "Allow");
elm_object_part_content_set(popup, "button1", btn1);
evas_object_smart_callback_add(btn1, "clicked", buttonCallback, data);
Evas_Object* btn2 = elm_button_add(popup);
- elm_object_text_set(btn2, "NO");
+ elm_object_text_set(btn2, "Deny");
elm_object_part_content_set(popup, "button2", btn2);
evas_object_smart_callback_add(btn2, "clicked", buttonCallback, data);
return popup;
if (popup == NULL) {
return RESULT_UNKNOWN;
}
- bool allow = !strcmp("YES", elm_object_text_get(button));
+ bool allow = !strcmp("Allow", elm_object_text_get(button));
// get check evas_object
Evas_Object* check = getCheck(popup);
#include <string>
#include <dpl/log/log.h>
#include <dpl/assert.h>
+#include <wrt-commons/security-origin-dao/security_origin_dao_types.h>
+#include <wrt-commons/security-origin-dao/security_origin_dao.h>
#include <Elementary.h>
#include <EWebKit2.h>
+#include <common/view_logic_security_origin_support.h>
namespace ViewModule {
+using namespace SecurityOriginDB;
+using namespace ViewModule::SecurityOriginSupportUtil;
namespace {
const char* const USERMEDIA_USE_ASK_BODY =
"This application wants to use your media";
// function declare
-void askUserForUsermediaPermission(Evas_Object* window, void* data);
+void askUserForUsermediaPermission(Evas_Object* window, PermissionData* data);
Evas_Object* getPopup(Evas_Object* button);
static void popupCallback(void* data, Evas_Object* obj, void* eventInfo);
-void askUserForUsermediaPermission(Evas_Object* window, void* data)
+void askUserForUsermediaPermission(Evas_Object* window, PermissionData* data)
{
LogDebug("askUserForUsermediaPermission called");
{
LogDebug("popupCallback");
Assert(data);
- Ewk_User_Media_Permission_Request* usermediaPermission =
- static_cast<Ewk_User_Media_Permission_Request*>(data);
+ PermissionData* permData = static_cast<PermissionData*>(data);
+ Ewk_User_Media_Permission_Request* permissionRequest =
+ static_cast<Ewk_User_Media_Permission_Request*>(permData->m_data);
Assert(obj);
Evas_Object* popup = getPopup(obj);
Assert(popup);
- bool allow = !strcmp("Allow", elm_object_text_get(obj));
+ bool allow = !strcmp("Allow", elm_object_text_get(obj));
Eina_Bool ret = allow ? EINA_TRUE : EINA_FALSE;
- ewk_user_media_permission_request_set(usermediaPermission, ret);
-
+ ewk_user_media_permission_request_set(permissionRequest, ret);
+ delete permData;
evas_object_hide(popup);
evas_object_del(popup);
}
} // namespace
void UsermediaSupport::usermediaPermissionRequest(Evas_Object* window,
+ SecurityOriginDAO* securityOriginDAO,
void* data)
{
LogDebug("usermediaPermissionRequest called");
- Assert(window);
+ Assert(securityOriginDAO);
Assert(data);
- Ewk_User_Media_Permission_Request* usermediaPermission =
+ Ewk_User_Media_Permission_Request* permissionRequest =
static_cast<Ewk_User_Media_Permission_Request*>(data);
- ewk_user_media_permission_request_suspend(usermediaPermission);
+
+ SecurityOriginData securityOriginData(
+ FEATURE_USER_MEDIA,
+ Origin(DPL::FromUTF8String(""), DPL::FromUTF8String(""), 0));
+
+ // In case of usermedia ewk doesn't support origin data
+ // cache data also only store allow data by privilege
+ Result result = securityOriginDAO->getResult(securityOriginData);
+ if (RESULT_ALLOW_ALWAYS == result) {
+ LogDebug("allow");
+ ewk_user_media_permission_request_set(permissionRequest, EINA_TRUE);
+ return;
+ } else if (RESULT_DENY_ALWAYS == result) {
+ LogDebug("deny");
+ ewk_user_media_permission_request_set(permissionRequest, EINA_FALSE);
+ return;
+ }
+
+ ewk_user_media_permission_request_suspend(permissionRequest);
// ask to user
- askUserForUsermediaPermission(window, data);
+ PermissionData* permissionData =
+ new PermissionData(securityOriginDAO,
+ securityOriginData,
+ data);
+ askUserForUsermediaPermission(window, permissionData);
return;
}
} // namespace ViewModule