Add capture attribute for supporting HTML media capture
authorKihong Kwon <kihong.kwon@samsung.com>
Fri, 17 Aug 2012 07:57:13 +0000 (16:57 +0900)
committerKihong Kwon <kihong.kwon@samsung.com>
Sat, 25 Aug 2012 03:15:53 +0000 (12:15 +0900)
[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

Source/WebKit2/UIProcess/API/efl/OpenPanel.cpp
Source/WebKit2/UIProcess/API/efl/OpenPanel.h
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
Source/WebKit2/UIProcess/API/efl/ewk_view.h
Source/cmake/OptionsTizen.cmake

index 3769dcc..9c38d7a 100755 (executable)
@@ -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;
 
index 667914d..ecb0146 100755 (executable)
@@ -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();
 
index 4cf3b90..6852b53 100755 (executable)
@@ -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 void*>(const_cast<const char*>(buffer)));
     }
-
-    bool result = priv->openpanelContext->openPanelCallback(priv->openpanelContext->ewkView, allowMultipleFiles, acceptedMimeTypes, 0);
+    const char* capture = 0;
+#if ENABLE(MEDIA_CAPTURE)
+    WKRetainPtr<WKStringRef> 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;
 
index 251c2f8..706f31f 100755 (executable)
@@ -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);
 
index 871906c..290521c 100755 (executable)
@@ -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)