[M108 Aura Migration] Add media playback ewk api
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / efl_integration / public / ewk_view_product.h
index 382bb89..6afdf45 100644 (file)
 #define ewk_view_product_h
 
 #include "ewk_context_product.h"
+#include "ewk_media_playback_info_product.h"
 #include "ewk_value_product.h"
 #include "ewk_view_internal.h"
 
-#if defined(TIZEN_PEPPER_EXTENSIONS)
-#include "ewk_value_product.h"
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -175,6 +172,18 @@ EXPORT_API void ewk_view_application_cache_permission_reply(Evas_Object* o, Eina
 EXPORT_API void ewk_view_unfocus_allow_callback_set(Evas_Object* o, Ewk_View_Unfocus_Allow_Callback callback, void* user_data);
 
 /**
+ * @brief Set to callback to show or hide the notification of bluetooth mic to user.
+ *
+ * @since_tizen 5.0
+ *
+ * @param[in] o view object
+ * @param[in] callback to show or hide the notification
+ * @param[in] user_data user_data will be passed when result_callback is
+ *            called\n -I.e., user data will be kept until callback is called
+ */
+EXPORT_API void ewk_view_smartrc_show_mic_notification_callback_set(Evas_Object* o, Ewk_View_SmartRC_Mic_Notification_Callback callback, void* user_data);
+
+/**
  * @brief Requests loading the given contents.
  *
  * @since_tizen 2.3
@@ -503,7 +512,7 @@ EXPORT_API Evas_Object* ewk_view_favicon_get(const Evas_Object* ewkView);
  * @param item view object to resume new url loading
  *
  */
-EXPORT_API void ewk_view_resume_network_loading(Evas_Object* item);
+EXPORT_API void ewk_view_resume_network_loading(Evas_Object* ewkView);
 
 EXPORT_API void ewk_view_poweroff_suspend(Evas_Object *item);
 
@@ -513,7 +522,7 @@ EXPORT_API void ewk_view_poweroff_suspend(Evas_Object *item);
  * @param item view object to suspend url loading
  *
  */
-EXPORT_API void ewk_view_suspend_network_loading(Evas_Object* item);
+EXPORT_API void ewk_view_suspend_network_loading(Evas_Object* ewkView);
 
 /**
  * This function should be use for browser edge scroll.
@@ -546,10 +555,10 @@ EXPORT_API void ewk_view_set_cursor_by_client(Evas_Object* ewkView, Eina_Bool en
 EXPORT_API void ewk_view_run_mixed_content_confirm_reply(Evas_Object* ewkView, Eina_Bool result);
 
 /**
- * Sets the cover-area (soon rect)  multiplier.
+ * Sets the cover-area (soon rect) multiplier.
  *
  * @param ewkView view object
- * @param coverAreaMultiplier the multiplier of cover-area.
+ * @param cover_area_multiplier the multiplier of cover-area.
  */
 EXPORT_API void ewk_view_tile_cover_area_multiplier_set(
     Evas_Object* ewkView,
@@ -620,42 +629,26 @@ EXPORT_API Eina_Bool ewk_view_stop_video(Evas_Object* o, Ewk_Stop_Video_Callback
  *
  * @return return @c EINA_TRUE on success or @c EINA_FALSE on failure
  */
-EXPORT_API Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView, Evas_Object* window, Eina_Bool enable, Eina_Bool isVideoWindow);
+EXPORT_API Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView,
+                                                     void* window,
+                                                     Eina_Bool enable,
+                                                     Eina_Bool isVideoWindow);
 
 /**
- * @brief Sets the support of 4K video, Customize the device pixel ratio for
- * video plane.
+ * @brief Sets the support of canvas hole, Use H/W overlay for video quality of WebGL 360 degree.
+ * Also, The WebBrowser provisionally want to show plane 360 video through canvas hole.
  *
  * @since_tizen 3.0
  *
  * @note Should be used after ewk_view_url_set().
  *
  * @param[in] o the view object
- * @param[in] o enabled a state to set
+ * @param[in] url string (ex. "youtube.com")
  *
  * @return return @c EINA_TRUE on success or @c EINA_FALSE on failure
  */
-EXPORT_API Eina_Bool ewk_view_set_custom_device_pixel_ratio(Evas_Object* ewkView, Eina_Bool enabled);
+EXPORT_API Eina_Bool ewk_view_set_support_canvas_hole(Evas_Object* ewkView, const char* url);
 
-/**
- * @brief Gets whether vertical panning is holding.
- *
- * @since_tizen 2.3
- *
- * @param[in] o view object to get whether vertical panning is holding
- *
- * @return @c EINA_TRUE if vertical panning is holding
- *         @c EINA_FALSE if not or on failure
- */
-EXPORT_API Eina_Bool ewk_view_vertical_panning_hold_get(Evas_Object* o);
-
-/**
-  * Block/Release the vertical pan
-  *
-  * @param o view object on which pan is to be blocked/release
-  * @param hold status of pan
-  */
-EXPORT_API void ewk_view_vertical_panning_hold_set(Evas_Object* o, Eina_Bool hold);
 
 /**
  * Callback for the generic sync call.
@@ -688,7 +681,64 @@ EXPORT_API void ewk_view_widget_pepper_extension_callback_set(Evas_Object* ewk_v
  */
 EXPORT_API void ewk_view_widget_pepper_extension_info_set(Evas_Object* ewk_view, Ewk_Value widget_pepper_ext_info);
 
-#if defined(OS_TIZEN_TV)
+/**
+ * @brief Sets the support of 4K video, Customize the device pixel ratio for
+ * video plane.
+ *
+ * @since_tizen 3.0
+ *
+ * @note Should be used after ewk_view_url_set().
+ *
+ * @param[in] o the view object
+ * @param[in] o enabled a state to set
+ *
+ * @return return @c EINA_TRUE on success or @c EINA_FALSE on failure
+ */
+EXPORT_API Eina_Bool ewk_view_set_custom_device_pixel_ratio(Evas_Object* ewkView, Eina_Bool enabled);
+
+/**
+ * @brief Gets whether horizontal panning is holding.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] o view object to get whether horizontal panning is holding
+ *
+ * @return @c EINA_TRUE if horizontal panning is holding
+ *         @c EINA_FALSE if not or on failure
+ */
+EXPORT_API Eina_Bool ewk_view_horizontal_panning_hold_get(Evas_Object* o);
+
+/**
+ * @brief Sets to hold horizontal panning.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] o view object to set to hold horizontal panning
+ * @param[in] hold @c EINA_TRUE to hold horizontal panning
+ *        @c EINA_FALSE not to hold
+ */
+EXPORT_API void ewk_view_horizontal_panning_hold_set(Evas_Object* o, Eina_Bool hold);
+
+/**
+ * @brief Gets whether vertical panning is holding.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] o view object to get whether vertical panning is holding
+ *
+ * @return @c EINA_TRUE if vertical panning is holding
+ *         @c EINA_FALSE if not or on failure
+ */
+EXPORT_API Eina_Bool ewk_view_vertical_panning_hold_get(Evas_Object* o);
+
+/**
+  * Block/Release the vertical pan
+  *
+  * @param o view object on which pan is to be blocked/release
+  * @param hold status of pan
+  */
+EXPORT_API void ewk_view_vertical_panning_hold_set(Evas_Object* o, Eina_Bool hold);
+
 /**
  * Set the translated url to media player.
  *
@@ -698,7 +748,6 @@ EXPORT_API void ewk_view_widget_pepper_extension_info_set(Evas_Object* ewk_view,
  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
  */
 EXPORT_API Eina_Bool ewk_media_translated_url_set(Evas_Object* ewkView, const char* url);
-#endif
 
 /**
  * Set app is preload type or not.
@@ -711,6 +760,78 @@ EXPORT_API Eina_Bool ewk_media_translated_url_set(Evas_Object* ewkView, const ch
 EXPORT_API Eina_Bool ewk_view_app_preload_set(Evas_Object* ewkView, Eina_Bool is_preload);
 
 /**
+* Set app enable marlin or not.
+*
+* @param ewkView view object
+* @param is_enable   if app enable marlin drm
+*
+* @return @c EINA_TRUE on success or @c EINA_FALSE on failure
+*/
+EXPORT_API Eina_Bool ewk_view_marlin_enable_set(Evas_Object* ewkView, Eina_Bool is_enable);
+
+/**
+ * Sets whitelisted DRM key systems. Passed key systems will be available
+ * through EME. Other systems even if available in the platform will be
+ * unavailable through EME
+ *
+ * @param ewkView View object
+ * @param list Key system names
+ * @param list_size Key system count
+ */
+EXPORT_API Eina_Bool ewk_view_key_system_whitelist_set(Evas_Object* ewkView,
+                                                       const char** list,
+                                                       unsigned list_size);
+
+/**
+ * Sets the active DRM system identifier as provided by the HbbTV application.
+ *
+ * @param ewkView View object
+ * @param drm_system_id Identifier of requested DRM system
+ *
+ * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
+ */
+EXPORT_API Eina_Bool ewk_view_active_drm_set(Evas_Object* view, const char* drm_system_id);
+
+/**
+ * Inform webengine about decoder used by broadcast for dual decoding.
+ *
+ * @param view View object
+ * @param decoder Identifier of used decoder
+ */
+EXPORT_API void ewk_view_broadcast_decoder_set(Evas_Object* view,
+  Ewk_Hardware_Decoders decoder);
+
+/**
+* Set the selected text track language to media player.
+*
+* @param ewkView view object
+* @param lang_list comma separated three_digit_language code. (For example "eng,deu")
+*
+*/
+EXPORT_API void ewk_media_set_subtitle_lang(Evas_Object* ewkView, const char* lang_list);
+
+
+/**
+* Set parental rating result to media player.
+*
+* @param ewkView view object
+* @param url   media url
+* @param is_pass  authentication result true/false
+*
+*/
+EXPORT_API void ewk_media_set_parental_rating_result(Evas_Object* ewkView, const char* url, Eina_Bool is_pass);
+
+/**
+* Set the if use high bit rate to media player.
+*
+* @param ewkView view object
+* @param is_high  if app use high bit rate
+*
+*/
+EXPORT_API void ewk_media_start_with_high_bit_rate(Evas_Object* ewkView, Eina_Bool is_high_bitrate);
+
+
+/**
  * @brief Sends key event.
  *
  * @since_tizen 2.4
@@ -958,47 +1079,64 @@ EXPORT_API void ewk_view_add_dynamic_certificate_path(const Evas_Object *ewkView
  * @param[in] o View object to set the atk use.
  * @param[in] enable EINA_TRUE to set on the atk use.
  *            EINA_FALSE makes atk not to use, but app use WebSpeech instead of ATK.
- *            The default value is EINA_FALSE.
  */
 EXPORT_API void ewk_view_atk_deactivation_by_app(Evas_Object* view, Eina_Bool enable);
 
-/*
- * Get cookies associated with an URL.
+typedef enum {
+  EWK_TTS_MODE_DEFAULT = 0, /**< Default mode for normal application */
+  EWK_TTS_MODE_NOTIFICATION = 1, /**< Notification mode(it has same behavior with EWK_TTS_MODE_DEFAULT. not supported in vd) */
+  EWK_TTS_MODE_SCREEN_READER = 2 /**< Accessibiliity mode(TTS works only for accessibility mode) */
+} ewk_tts_mode;
+
+/**
+ * @brief Sets tts mode
+ * up to tizen 4.0(in VD), default tts mode is EWK_TTS_MODE_SCREEN_READER.
+ * so TTS api disabled when accessibility mode turn off.
+ * this api provided to use tts api in none accessibility mode
+ * (tts mode decided in chromium's init time. so it should be called in init time)
+ * tts mode affect to below web apis
+ * speech_syntesis
  *
- * @param o view object in which URL is opened.
- * @param url the url for which cookies needs to be obtained.
+ * @since_tizen 4.0 @if TV   @endif
  *
- * @return @c character array containing cookies, @c NULL if no cookies are found.
+ * @param[in] o View object to set.
+ * @param[in] ewk_tts_mode.
  *
- * The return character array has to be owned by the application and freed when not required.
  */
-EXPORT_API char* ewk_view_cookies_get(Evas_Object* o, const char* url);
+EXPORT_API Eina_Bool ewk_view_tts_mode_set(Evas_Object* view, ewk_tts_mode tts_mode);
 
 /**
- * @brief To give a chance to intercept request data before sending it.
+ * remove custom header
  *
- * @since_tizen 2.3
+ * @param o view object to remove custom header
  *
- * @param[in] o view object to intercept request
- * @param[in] intercept_request Defined structure to notify requesting infomation
- * @param[in] user_data user data
+ * @param name custom header name to remove the custom header
  *
- * @see ewk_view_intercept_request_callback_set()
+ * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
  */
-typedef void (*Ewk_View_Intercept_Request_Callback)(Evas_Object* o, Ewk_Intercept_Request* intercept_request, void* user_data);
+EXPORT_API Eina_Bool ewk_view_custom_header_remove(const Evas_Object* o, const char* name);
 
 /**
- * @brief  To set Ewk_View_Intercept_Request_Callback to give a chance to intercept request data before sending it.
+ * Returns application name string.
  *
- * @since_tizen 2.3
+ * @param o view object to get the application name
  *
- * @param[in] o view object to intercept request
- * @param[in] callback Defined callback
- * @param[in] user_data user data
+ * @return @c application name. The returned string @b should be freed by
+ *         eina_stringshare_del() after use.
+ */
+EXPORT_API const char* ewk_view_application_name_for_user_agent_get(const Evas_Object* o);
+
+/*
+ * Get cookies associated with an URL.
+ *
+ * @param o view object in which URL is opened.
+ * @param url the url for which cookies needs to be obtained.
  *
- * @see Ewk_View_Intercept_Request_Callback
+ * @return @c character array containing cookies, @c NULL if no cookies are found.
+ *
+ * The return character array has to be owned by the application and freed when not required.
  */
-EXPORT_API void ewk_view_intercept_request_callback_set (Evas_Object* o, Ewk_View_Intercept_Request_Callback callback, void* user_data);
+EXPORT_API char* ewk_view_cookies_get(Evas_Object* o, const char* url);
 
 /**
  * @internal
@@ -1082,23 +1220,13 @@ EXPORT_API Eina_Bool ewk_view_custom_encoding_set(Evas_Object* o, const char* en
 EXPORT_API void ewk_view_force_layout(const Evas_Object* o);
 
 /**
-* Creates a type name for the callback function used to get video current time.
-*
-* @param o view object
-* @param current time of the video
-*@param user_data user data will be passed when ewk_media_current_time_get
-*called
-*/
-typedef void (*Ewk_View_Video_Current_Time_Get_Callback)(Evas_Object *o, double current_time, void *user_data);
-
-/**
 * Gets the video's timestamp.
 *
 * @param o view object to get the video's timestamp
 *
 * @return timestamp value
 */
-EXPORT_API void ewk_media_current_time_get(const Evas_Object* o, Ewk_View_Video_Current_Time_Get_Callback callback, void *user_data);
+EXPORT_API double ewk_view_media_current_time_get(const Evas_Object *o);
 
 /**
 * @brief Enforces web page to close
@@ -1112,6 +1240,79 @@ EXPORT_API void ewk_media_current_time_get(const Evas_Object* o, Ewk_View_Video_
 EXPORT_API Eina_Bool ewk_view_page_close(Evas_Object* o);
 
 /**
+* Clear all tile resources.
+*
+* @param ewkView view object
+*/
+EXPORT_API void ewk_view_clear_all_tiles_resources(Evas_Object* ewkView);
+
+/**
+* Request canvas to be shown in full-screen.
+*
+* @param ewkView view object
+*/
+EXPORT_API void ewk_view_request_canvas_fullscreen(Evas_Object* ewkView);
+
+/**
+* play 360 video in the view
+*
+* @param ewkView view object
+*/
+EXPORT_API void ewk_view_360video_play(Evas_Object* ewkView);
+
+/**
+* pause 360 video in the view
+*
+* @param ewkView view object
+*/
+EXPORT_API void ewk_view_360video_pause(Evas_Object* ewkView);
+
+/**
+ * Callback for ewk_view_360video_duration
+ *
+ * @param o view object
+ * @param duration 360 video's duration
+ * @param user_data user_data will be passsed when ewk_view_360video_duration is called
+ */
+typedef void (*Ewk_360_Video_Duration_Callback)(Evas_Object* o, double duration, void* user_data);
+
+/**
+* get duration of the 360 video in the view
+*
+* @param ewkView view object
+*
+* @return duration of the video
+*/
+EXPORT_API void ewk_view_360video_duration(Evas_Object* ewkView, Ewk_360_Video_Duration_Callback callback, void* user_data);
+
+/**
+ * Callback for ewk_view_360video_current_time
+ *
+ * @param o view object
+ * @param current_time 360 video's current time
+ * @param user_data user_data will be passsed when ewk_view_360video_current_time is called
+ */
+typedef void (*Ewk_360_Video_CurrentTime_Callback)(Evas_Object* o, double current_time, void* user_data);
+
+/**
+* get current time of the 360 video in the view
+*
+* @param ewkView view object
+*
+* @return current time of the video
+*/
+EXPORT_API void ewk_view_360video_current_time(Evas_Object* ewkView, Ewk_360_Video_CurrentTime_Callback callback, void* user_data);
+
+/**
+* set current time of the 360 video in the view
+*
+* @param ewkView view object
+*
+* @param current_time set current time
+*/
+EXPORT_API void ewk_view_360video_set_current_time(Evas_Object* ewkView, double current_time);
+
+/**
  * @brief Request to set the atk usage set by web app(config.xml).
  *
  * Some TV apps use WebSpeech instead of use ATK for regulation U.S.FCC
@@ -1125,48 +1326,38 @@ EXPORT_API Eina_Bool ewk_view_page_close(Evas_Object* o);
  */
 EXPORT_API void ewk_view_atk_deactivation_by_app(Evas_Object* view, Eina_Bool enable);
 
-typedef enum {
-  EWK_TTS_MODE_DEFAULT = 0,      /**< Default mode for normal application */
-  EWK_TTS_MODE_NOTIFICATION = 1, /**< Notification mode(it has same behavior
-                                    with EWK_TTS_MODE_DEFAULT. not supported in
-                                    vd) */
-  EWK_TTS_MODE_SCREEN_READER =
-      2 /**< Accessibiliity mode(TTS works only for accessibility mode) */
-} ewk_tts_mode;
-
 /**
- * @brief Sets tts mode
- * up to tizen 4.0(in VD), default tts mode is EWK_TTS_MODE_SCREEN_READER.
- * so TTS api disabled when accessibility mode turn off.
- * this api provided to use tts api in none accessibility mode
- * (tts mode decided in chromium's init time. so it should be called in init
- * time) tts mode affect to below web apis speech_syntesis
+ * Requests execution of the given script in the main frame and subframes of the page.
  *
- * @since_tizen 4.0 @if TV   @endif
+ * The result value for the execution can be retrieved from the asynchronous callback.
  *
- * @param[in] o View object to set.
- * @param[in] ewk_tts_mode.
+ * @param o The view to execute script
+ * @param script JavaScript to execute
+ * @param callback The function to call when the execution is completed, may be @c NULL
+ * @param user_data User data, may be @c NULL
  *
+ * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
  */
-EXPORT_API Eina_Bool ewk_view_tts_mode_set(Evas_Object* view, ewk_tts_mode tts_mode);
+EXPORT_API Eina_Bool ewk_view_script_execute_all_frames(Evas_Object *o, const char *script, Ewk_View_Script_Execute_Cb callback, void *user_data);
 
 /**
- * @brief Request to set the spatial navigation usage set by hbbtv
+ * Floating video's window ON/OFF
  *
- * @since_tizen 3.0
+ * @param o view object
+ * @param bool status (true/false)
  *
- * @param[in] settings setting object
- * @param[in] enable @c EINA_TRUE enable to use spatial navigation
- *                   @c EINA_FALSE to disable
  */
-EXPORT_API void ewk_settings_spatial_navigation_enabled_set(Ewk_Settings* settings, Eina_Bool Enabled);
+EXPORT_API void ewk_view_floating_window_state_changed(const Evas_Object *o, Eina_Bool status);
 
 /**
- * Clear all tile resources.
+ * Auto login by samsung pass
+ *
+ * @param view  view object
+ * @param user_name user name to login
+ * @param password  user password to login
  *
- * @param ewkView view object
  */
-EXPORT_API void ewk_view_clear_all_tiles_resources(Evas_Object* ewkView);
+EXPORT_API void ewk_view_auto_login(Evas_Object *view, const char* user_name, const char* password);
 
 /**
  * @}