From: Kihong Kwon Date: Fri, 17 Aug 2012 07:57:13 +0000 (+0900) Subject: Add capture attribute for supporting HTML media capture X-Git-Tag: accepted/2.0/20130307.072448~92 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=72f15385166b873483e80c67b40446505010e438;p=profile%2Fivi%2Fwebkit-efl.git Add capture attribute for supporting HTML media capture [Title] Add capture attribute for supporting HTML media capture [Issue#] N/A [Problem] WK2 doesn't support HTML media capture [Cause] N/A [Solution] N/A Change-Id: I6ca6facf6c7d2e1887ce9f1cd1ec44704a2001e4 --- diff --git a/Source/WebKit2/UIProcess/API/efl/OpenPanel.cpp b/Source/WebKit2/UIProcess/API/efl/OpenPanel.cpp index 3769dcc..9c38d7a 100755 --- a/Source/WebKit2/UIProcess/API/efl/OpenPanel.cpp +++ b/Source/WebKit2/UIProcess/API/efl/OpenPanel.cpp @@ -124,7 +124,7 @@ static void destroy_cb(ui_gadget_h ug, void* priv) return; } -bool OpenPanel::openPanel(Evas_Object* ewkView, Eina_Bool allow_multiple_files, Eina_List* accepted_mime_types, void* userData) +bool OpenPanel::openPanel(Evas_Object* ewkView, Eina_Bool allow_multiple_files, Eina_List* accepted_mime_types, const char* capture, void* userData) { unsigned int i, n; diff --git a/Source/WebKit2/UIProcess/API/efl/OpenPanel.h b/Source/WebKit2/UIProcess/API/efl/OpenPanel.h index 667914d..ecb0146 100755 --- a/Source/WebKit2/UIProcess/API/efl/OpenPanel.h +++ b/Source/WebKit2/UIProcess/API/efl/OpenPanel.h @@ -31,7 +31,7 @@ class OpenPanel { public: OpenPanel(Evas_Object* ewkView); ~OpenPanel(); - bool openPanel(Evas_Object* ewkView, Eina_Bool allow_multiple_files, Eina_List *accepted_mime_types, void* userData); + bool openPanel(Evas_Object* ewkView, Eina_Bool allow_multiple_files, Eina_List *accepted_mime_types, const char* capture, void* userData); Evas_Object* ewkView(); void close(); diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp index 4cf3b90..6852b53 100755 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp @@ -379,7 +379,7 @@ DECLARE_EVENT_FUNC(_ewk_view_on_touch_up); static Eina_Bool _ewk_view_default_javascript_alert(Evas_Object*, const char* alertText, void* userData); static Eina_Bool _ewk_view_default_javascript_confirm(Evas_Object*, const char* message, void* userData); static Eina_Bool _ewk_view_default_javascript_prompt(Evas_Object*, const char* message, const char* defaultValue, void* userData); -static Eina_Bool _ewk_view_default_open_panel(Evas_Object*, Eina_Bool allow_multiple_files, Eina_List *accepted_mime_types, void* userData); +static Eina_Bool _ewk_view_default_open_panel(Evas_Object*, Eina_Bool allow_multiple_files, Eina_List *accepted_mime_types, const char* capture, void* userData); #if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL) Eina_Bool _ewk_view_popup_menu_show(Ewk_View_Smart_Data*, Eina_Rectangle, Ewk_Text_Direction, double page_scale_factor, Eina_List* items, int selectedIndex); @@ -1676,12 +1676,12 @@ static Eina_Bool _ewk_view_default_javascript_prompt(Evas_Object* ewkView, const return priv->javascriptPopup->prompt(message, defaultValue); } -static Eina_Bool _ewk_view_default_open_panel(Evas_Object* ewkView, Eina_Bool allow_multiple_files, Eina_List *accepted_mime_types, void* userData) +static Eina_Bool _ewk_view_default_open_panel(Evas_Object* ewkView, Eina_Bool allow_multiple_files, Eina_List *accepted_mime_types, const char* capture, void* userData) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); - return priv->openPanel->openPanel(ewkView, allow_multiple_files, accepted_mime_types, priv); + return priv->openPanel->openPanel(ewkView, allow_multiple_files, accepted_mime_types, capture, priv); } #if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL) @@ -2998,8 +2998,12 @@ bool ewkViewRunOpenPanel(Evas_Object* ewkView, WKOpenPanelParametersRef paramete WKStringGetUTF8CString(mime, buffer, length); acceptedMimeTypes = eina_list_append(acceptedMimeTypes, static_cast(const_cast(buffer))); } - - bool result = priv->openpanelContext->openPanelCallback(priv->openpanelContext->ewkView, allowMultipleFiles, acceptedMimeTypes, 0); + const char* capture = 0; +#if ENABLE(MEDIA_CAPTURE) + WKRetainPtr captureRef(AdoptWK, WKOpenPanelParametersCopyCapture(parameters)); + capture = eina_stringshare_add(toImpl(captureRef.get())->string().utf8().data()); +#endif + bool result = priv->openpanelContext->openPanelCallback(priv->openpanelContext->ewkView, allowMultipleFiles, acceptedMimeTypes, capture, 0); if (!acceptedMimeTypes) return result; diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.h b/Source/WebKit2/UIProcess/API/efl/ewk_view.h index 251c2f8..706f31f 100755 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.h @@ -613,7 +613,7 @@ typedef Eina_Bool (*Ewk_View_JavaScript_Prompt_Callback)(Evas_Object* o, const c EAPI void ewk_view_javascript_prompt_callback_set(Evas_Object* o, Ewk_View_JavaScript_Prompt_Callback callback, void* user_data); EAPI void ewk_view_javascript_prompt_reply(Evas_Object* o, const char* result); -typedef Eina_Bool (*Ewk_View_Open_Panel_Callback)(Evas_Object* o, Eina_Bool allow_multiple_files, Eina_List* accepted_mime_types, void* user_data); +typedef Eina_Bool (*Ewk_View_Open_Panel_Callback)(Evas_Object* o, Eina_Bool allow_multiple_files, Eina_List* accepted_mime_types, const char* capture, void* user_data); EAPI void ewk_view_open_panel_callback_set(Evas_Object* o, Ewk_View_Open_Panel_Callback callback, void* user_data); EAPI void ewk_view_open_panel_reply(Evas_Object* o, Eina_List* file_url, Eina_Bool result); diff --git a/Source/cmake/OptionsTizen.cmake b/Source/cmake/OptionsTizen.cmake index 871906c..290521c 100755 --- a/Source/cmake/OptionsTizen.cmake +++ b/Source/cmake/OptionsTizen.cmake @@ -82,6 +82,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_WEEK ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_COLOR ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_WEBKIT_BLOB_BUILDER ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CAPTURE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MICRODATA ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PAGE_VISIBILITY_API ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REGISTER_PROTOCOL_HANDLER ON)