902939f8f8eb1cb0a54c8bd098c80a311da39240
[platform/framework/web/crosswalk-tizen.git] /
1 /*
2  * Copyright (C) 2011-2016 Samsung Electronics. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY SAMSUNG ELECTRONICS. AND ITS CONTRIBUTORS
14  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SAMSUNG ELECTRONICS. OR ITS
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
23  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 /**
27  * @file    ewk_view_product.h
28  * @brief   Chromium main smart object.
29  *
30  * This object provides view related APIs of Chromium to EFL object.
31  */
32
33 #ifndef ewk_view_product_h
34 #define ewk_view_product_h
35
36 #include "ewk_context_product.h"
37 #include "ewk_value_product.h"
38 #include "ewk_view_internal.h"
39
40 #if defined(TIZEN_PEPPER_EXTENSIONS)
41 #include "ewk_value_product.h"
42 #endif
43
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47
48 /**
49  * A callback to check whether allowed to run mixed content or not
50  *
51  * @param ewkView view object
52  * @param user_data user_data will be passed when callback is called
53  * @return true: allow to run mixed content. false: not allow to run mixed content
54  */
55 typedef Eina_Bool (*Ewk_View_Run_Mixed_Content_Confirm_Callback)(Evas_Object* ewkView, void* user_data);
56
57 /**
58  * @brief Creates a new EFL Chromium view object.
59  *
60  * @since_tizen 2.3
61  *
62  * @param[in] e canvas object where to create the view object
63  * @param[in] data a pointer to data to restore session data
64  * @param[in] length length of session data to restore session data
65  *
66  * @return view object on success or @c NULL on failure
67  */
68 EXPORT_API Evas_Object* ewk_view_add_with_session_data(Evas* e, const char* data, unsigned length);
69
70 /**
71  * @brief Gets the reference object for frame that represents the main frame.
72  *
73  * @since_tizen 2.3
74  *
75  * @param[in] o view object to get main frame
76  *
77  * @return frame reference of frame object on success, or NULL on failure
78  */
79 EXPORT_API Ewk_Frame_Ref ewk_view_main_frame_get(Evas_Object* o);
80
81 /**
82  * @brief Reply of javascript alert popup
83  *
84  * @since_tizen 2.3
85  *
86  * @param[in] o view object
87  */
88 EXPORT_API void ewk_view_javascript_alert_reply(Evas_Object* o);
89
90 /**
91  * @brief Reply of javascript confirm popup
92  *
93  * @since_tizen 2.3
94  *
95  * @param[in] o view object
96  * @param[in] result result of javascript confirm popup
97  */
98 EXPORT_API void ewk_view_javascript_confirm_reply(Evas_Object* o, Eina_Bool result);
99
100 /**
101  * @brief Reply of javascript prompt popup
102  *
103  * @since_tizen 2.3
104  *
105  * @param[in] o view object
106  * @param[in] result entered characters of javascript prompt popup
107  */
108 EXPORT_API void ewk_view_javascript_prompt_reply(Evas_Object* o, const char* result);
109
110 /**
111  * @brief Callback for before unload popup
112  *
113  * @since_tizen 2.3
114  *
115  * @param[in] o view object
116  * @param[in] message the contents of before unload popup
117  * @param[in] user_data user data
118  */
119 typedef Eina_Bool (*Ewk_View_Before_Unload_Confirm_Panel_Callback)(
120     Evas_Object* o,
121     const char* message,
122     void* user_data);
123
124 /**
125  * @brief Sets callback of before unload popup
126  *
127  * @since_tizen 2.3
128  *
129  * @param[in] o view object to set the callback
130  * @param[in] callback callback function for before unload popoup
131  * @param[in] user_data user data
132  */
133 EXPORT_API void ewk_view_before_unload_confirm_panel_callback_set(Evas_Object* o, Ewk_View_Before_Unload_Confirm_Panel_Callback callback, void* user_data);
134
135 /**
136  * @brief Reply of before unload popup
137  *
138  * @since_tizen 2.3
139  *
140  * @param[in] o view object
141  * @param[in] result result of before unload popup
142  */
143 EXPORT_API void ewk_view_before_unload_confirm_panel_reply(Evas_Object* o, Eina_Bool result);
144
145 /**
146  * @brief Sets callback of getting application cache permission.
147  *
148  * @since_tizen 2.3
149  *
150  * @param[in] o view object to set the callback of application cache permission
151  * @param[in] callback function to be called when application cache need to
152  *            get permission
153  * @param[in] user_data user data
154  */
155 EXPORT_API void ewk_view_application_cache_permission_callback_set(Evas_Object* o, Ewk_View_Applicacion_Cache_Permission_Callback callback, void* user_data);
156
157 /**
158  * @brief Application cache permission confirm popup reply
159  *
160  * @since_tizen 2.3
161  *
162  * @param[in] o view object to reply permission confirm popup
163  * @param[in] allow of response
164  */
165 EXPORT_API void ewk_view_application_cache_permission_reply(Evas_Object* o, Eina_Bool allow);
166
167 /**
168  * @brief Set to callback to controll unfocus operation from the arrow of
169  *        h/w keyboard.
170  *
171  * @since_tizen 2.3
172  *
173  * @param[in] o view object
174  * @param[in] callback callback to controll unfocus operation from the arrow of
175  *            h/w keyboard
176  * @param[in] user_data user data
177  */
178 EXPORT_API void ewk_view_unfocus_allow_callback_set(Evas_Object* o, Ewk_View_Unfocus_Allow_Callback callback, void* user_data);
179
180 /**
181  * @brief Requests loading the given contents.
182  *
183  * @since_tizen 2.3
184  *
185  * @param[in] o view object to load document
186  * @param[in] html what to load
187  * @param[in] base_uri base uri to use for relative resources, may be @c 0,\n
188  *        if provided @b must be an absolute uri
189  *
190  * @return @c EINA_TRUE on successful request, @c EINA_FALSE on errors
191  */
192 EXPORT_API Eina_Bool ewk_view_html_contents_set(Evas_Object* o, const char* html, const char* base_uri);
193
194 /**
195  * @brief Callback for ewk_view_cache_image_get
196  *
197  * @since_tizen 3.0
198  *
199  * @param[in] o view object
200  * @param[in] image_url url of the image in the cache
201  * @param[in] image cache image @b should be freed after use
202  * @param[in] user_data user data
203  */
204 typedef void (*Ewk_View_Cache_Image_Get_Callback)(Evas_Object* o, const char* image_url, Evas_Object* image, void* user_data);
205
206 /**
207  * @brief Asynchronous request for get the cache image specified in url.
208  *
209  * @since_tizen 3.0
210  *
211  * @param[in] o view object
212  * @param[in] image_url url of the image in the cache
213  * @param[in] canvas canvas for creating evas image
214  * @param[in] callback result callback to get cache image
215  * @param[in] user_data user_data will be passed when @a callback is called
216  *
217  * @return @c EINA_TRUE on successful request, @c EINA_FALSE on failure
218  */
219 EXPORT_API Eina_Bool ewk_view_cache_image_get(const Evas_Object* o, const char* image_url, Evas* canvas,
220                                               Ewk_View_Cache_Image_Get_Callback callback, void* user_data);
221
222 /**
223  * @brief Requests for getting web application capable.
224  *
225  * @since_tizen 2.3
226  *
227  * @param[in] o view object
228  * @param[in] callback result callback to get web database quota
229  * @param[in] user_data user_data will be passed when result_callback is
230  *            called\n -I.e., user data will be kept until callback is called
231  *
232  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
233  */
234 EXPORT_API Eina_Bool ewk_view_web_application_capable_get(Evas_Object* o, Ewk_Web_App_Capable_Get_Callback callback, void* user_data);
235
236 /**
237  * @brief Requests for getting web application icon string.
238  *
239  * @since_tizen 2.3
240  *
241  * @param[in] o view object
242  * @param[in] callback result callback to get web database quota
243  * @param[in] user_data user_data will be passed when result_callback is
244  *            called\n -I.e., user data will be kept until callback is called
245  *
246  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
247  */
248 EXPORT_API Eina_Bool ewk_view_web_application_icon_url_get(Evas_Object* o, Ewk_Web_App_Icon_URL_Get_Callback callback, void* user_data);
249
250 /**
251  * @brief Requests for getting web application icon list of
252  *        Ewk_Web_App_Icon_Data.
253  *
254  * @since_tizen 2.3
255  *
256  * @param[in] o view object
257  * @param[in] callback result callback to get web application icon urls
258  * @param[in] user_data user_data will be passed when result_callback is
259  *            called\n -I.e., user data will be kept until callback is called
260  *
261  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
262  */
263 EXPORT_API Eina_Bool ewk_view_web_application_icon_urls_get(Evas_Object* o, Ewk_Web_App_Icon_URLs_Get_Callback callback, void* user_data);
264
265 /**
266  * @brief Get the whole history(whole back & forward list) associated with this
267  *        view.
268  *
269  * @since_tizen 2.3
270  *
271  * @param[in] o view object to get the history(whole back & forward list)
272  *
273  * @return a newly allocated history of @b newly allocated item\n
274  *         instance. This memory of each item must be released with\n
275  *         ewk_history_free() after use
276  *
277  * @see ewk_history_free()
278  */
279 EXPORT_API Ewk_History* ewk_view_history_get(Evas_Object* o);
280
281 /**
282  * @brief Gets the selection ranges
283  *
284  * @since_tizen 2.3
285  *
286  * @param[in] o view object to get theselection ranges
287  * @param[out] left_rect the start lect(left rect) of the selection ranges
288  * @param[out] right_rect the end lect(right rect) of the selection ranges
289  *
290  * @return @c EINA_TRUE on success, @c EINA_FALSE on failure
291  */
292 EXPORT_API Eina_Bool ewk_view_text_selection_range_get(Evas_Object* o, Eina_Rectangle* left_rect, Eina_Rectangle* right_rect);
293
294 /**
295  * @brief Sets the focused input element value
296  *
297  * @since_tizen 2.3
298  *
299  * @param[in] o view object to send the value
300  * @param[in] value the string value to be set
301  */
302 EXPORT_API void ewk_view_focused_input_element_value_set(Evas_Object* o, const char* value);
303
304 /**
305  * @brief Gets the focused input element's value
306  *
307  * @since_tizen 2.3
308  *
309  * @param[in] o view object to get the value
310  *
311  * @return focused input element's value on success or NULL on failure
312  */
313 EXPORT_API const char* ewk_view_focused_input_element_value_get(Evas_Object* o);
314
315 /**
316  * @brief Selects index of current popup menu.
317  *
318  * @since_tizen 2.3
319  *
320  * @param[in] o view object contains popup menu
321  * @param[in] index index of item to select
322  *
323  * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (probably\n
324  *         popup menu is not selected or index is out of range)
325  */
326 EXPORT_API Eina_Bool ewk_view_popup_menu_select(Evas_Object* o, unsigned int index);
327
328 /**
329  * @brief Selects Multiple indexes  of current popup menu.
330  *
331  * @since_tizen 2.3
332  *
333  * @param[in] o view object contains popup menu.
334  * @param[in] changed_list  list of item selected and deselected
335  *
336  * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (probably\n
337  *         popup menu is not selected or index is out of range)
338  */
339 EXPORT_API Eina_Bool ewk_view_popup_menu_multiple_select(Evas_Object* o, Eina_Inarray* changed_list);
340
341 /*
342  * @brief Sets the user chosen color. To be used when implementing a color
343  *        picker.
344  *
345  * @details The function should only be called when a color has been requested
346  *          by the document.\n If called when this is not the case or when the
347  *          input picker has been dismissed, this\n function will fail and
348  *          return EINA_FALSE.
349  *
350  * @since_tizen 2.3
351  *
352  * @param[in] o view object contains color picker
353  * @param[in] r red channel value to be set
354  * @param[in] g green channel value to be set
355  * @param[in] b blue channel value to be set
356  * @param[in] a alpha channel value to be set
357  *
358  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
359  */
360 EXPORT_API Eina_Bool ewk_view_color_picker_color_set(Evas_Object* o, int r, int g, int b, int a);
361
362 /**
363  * @brief Feeds the touch event to the view.
364  *
365  * @since_tizen 2.3
366  *
367  * @param[in] o view object to feed touch event
368  * @param[in] type the type of touch event
369  * @param[in] points a list of points (Ewk_Touch_Point) to process
370  * @param[in] modifiers an Evas_Modifier handle to the list of modifier keys\n
371  *        registered in the Evas. Users can get the Evas_Modifier from the
372  *        Evas\n using evas_key_modifier_get() and can set each modifier key
373  *        using\n evas_key_modifier_on() and evas_key_modifier_off()
374  *
375  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
376  */
377 EXPORT_API Eina_Bool ewk_view_feed_touch_event(Evas_Object* o, Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers);
378
379 /**
380  * Creates a type name for the callback function used to get the background color.
381  *
382  * @param o view object
383  * @param r red color component
384  * @param g green color component
385  * @param b blue color component
386  * @param a transparency
387  * @param user_data user data will be passed when ewk_view_bg_color_get is called
388  */
389 typedef void (*Ewk_View_Background_Color_Get_Callback)(Evas_Object *o, int r, int g, int b, int a, void* user_data);
390
391 /**
392  * Gets the background color and transparency of the view.
393  *
394  * @param o view object to get the background color from
395  * @param callback callback function
396  * @param user_data user data will be passed when the callback is called
397  *
398  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
399  *
400  *  On success the background color of the view object o is retrieved
401  *  in the callback function
402  */
403 EXPORT_API Eina_Bool ewk_view_bg_color_get(Evas_Object *o, Ewk_View_Background_Color_Get_Callback callback, void *user_data);
404
405 /**
406  * Callback for ewk_view_main_frame_scrollbar_visible_get
407  *
408  * @param o view object
409  * @param visibility visibility of main frame scrollbar
410  * @param user_data user data passed to ewk_view_main_frame_scrollbar_visible_get
411  */
412 typedef void (*Ewk_View_Main_Frame_Scrollbar_Visible_Get_Callback)(Evas_Object* o, Eina_Bool visible, void* user_data);
413
414 /**
415  * @brief Gets the visibility of main frame scrollbar.
416  *
417  * @since_tizen 3.0
418  *
419  * @param[in] o view object
420  * @param callback callback function
421  * @param user_data user data will be passed when the callback is caller
422  *
423  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
424  *
425  *  On success the visibility of the scrollbar of the view object o is retrieved
426  *  in the callback function
427  */
428 EXPORT_API Eina_Bool ewk_view_main_frame_scrollbar_visible_get(Evas_Object* view, Ewk_View_Main_Frame_Scrollbar_Visible_Get_Callback callback, void* user_data);
429
430 /**
431  * @brief Gets the session data to be saved in a persistent store on
432  *        browser exit
433  *
434  * @since_tizen 2.3
435  *
436  * @param[in] o view object whose session needs to be stored.
437  * @param[in] data out parameter session data
438  * @param[in] length out parameter length of session data
439  */
440 EXPORT_API void ewk_view_session_data_get(Evas_Object* o, const char** data, unsigned* length);
441
442 /**
443  * @brief Reloads the current page's document without cache.
444  *
445  * @since_tizen 2.3
446  *
447  * @param[in] o view object to reload current document
448  *
449  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
450  */
451 EXPORT_API Eina_Bool ewk_view_reload_bypass_cache(Evas_Object* o);
452
453 /**
454  * @brief Creates a new hit test for the given veiw object and point.
455  *
456  * @since_tizen 2.3
457  *
458  * @remarks The returned object should be freed by ewk_hit_test_free().
459  *
460  * @param[in] o view object to do hit test on
461  * @param[in] x the horizontal position to query
462  * @param[in] y the vertical position to query
463  * @param[in] hit_test_mode the #Ewk_Hit_Test_Mode enum value to query
464  *
465  * @return a newly allocated hit test on success, @c 0 otherwise
466  */
467 EXPORT_API Ewk_Hit_Test* ewk_view_hit_test_new(Evas_Object* o, int x, int y, int hit_test_mode);
468
469 /**
470  * Create PDF file of page contents
471  *
472  * @param o view object to get page contents.
473  * @param width the suface width of PDF file.
474  * @param height the suface height of PDF file.
475  * @param fileName the file name for creating PDF file.
476  *
477  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
478  */
479 /* This return value is status of the request not the status of actual operation.
480  * There should be some callback to get the actual status or reason of failure.
481  */
482 EXPORT_API Eina_Bool ewk_view_contents_pdf_get(Evas_Object* o, int width, int height, const char* fileName);
483
484 /**
485  * Requests for setting callback function
486  *
487  * @param ewkView view object
488  * @param user_data user_data will be passed when callback is called
489  * @param callback callback function
490  */
491 EXPORT_API void ewk_view_run_mixed_content_confirm_callback_set(Evas_Object* ewkView, Ewk_View_Run_Mixed_Content_Confirm_Callback callback, void* user_data);
492
493 /**
494  * Returns the current favicon of view object.
495  *
496  * @param item view object to get current icon URL
497  *
498  * @return current favicon on success or @c NULL if unavailable or on failure.
499  * The returned Evas_Object needs to be freed after use.
500  */
501 EXPORT_API Evas_Object* ewk_view_favicon_get(const Evas_Object* ewkView);
502
503 /**
504  * To resume new url network loading
505  *
506  * @param item view object to resume new url loading
507  *
508  */
509 EXPORT_API void ewk_view_resume_network_loading(Evas_Object* item);
510
511 EXPORT_API void ewk_view_poweroff_suspend(Evas_Object *item);
512
513 /**
514  * To suspend all url loading
515  *
516  * @param item view object to suspend url loading
517  *
518  */
519 EXPORT_API void ewk_view_suspend_network_loading(Evas_Object* item);
520
521 /**
522  * This function should be use for browser edge scroll.
523  * It can also be used when the mouse pointer is out of webview.
524  * Scrolls webpage of view by dx and dy.
525  *
526  * @param item view object to scroll
527  * @param dx horizontal offset to scroll
528  * @param dy vertical offset to scroll
529  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
530  */
531 EXPORT_API Eina_Bool ewk_view_edge_scroll_by(Evas_Object *item, int dx, int dy);
532
533 /**
534  * Allow a browser to set its own cursor by setting a flag
535  * which prevents setting a default web page cursor.
536  *
537  * @param ewkView view object
538  * @param enable EINA_TRUE - prevent update of cursor by engine
539  *               EINA_FALSE - allow for update of cursor by engine
540  */
541 EXPORT_API void ewk_view_set_cursor_by_client(Evas_Object* ewkView, Eina_Bool enable);
542
543 /**
544  * Reply of running mixed content or not
545  *
546  * @param ewkView view object
547  * @param result reply
548  */
549 EXPORT_API void ewk_view_run_mixed_content_confirm_reply(Evas_Object* ewkView, Eina_Bool result);
550
551 /**
552  * Sets the cover-area (soon rect) multiplier.
553  *
554  * @param ewkView view object
555  * @param cover_area_multiplier the multiplier of cover-area.
556  */
557 EXPORT_API void ewk_view_tile_cover_area_multiplier_set(
558     Evas_Object* ewkView,
559     float cover_area_multiplier);
560
561 /**
562  * Set to enabled/disabled clear tiles on hide.
563  *
564  * @param ewkView view object
565  * @param enabled/disabled a state to set
566  *
567  */
568 EXPORT_API void ewk_view_clear_tiles_on_hide_enabled_set(Evas_Object* ewkView,
569                                                          Eina_Bool enable);
570
571 /**
572  * @brief Callback for ewk_view_is_video_playing
573  *
574  * @param[in] o the view object
575  * @param[in] is_playing video is playing or not
576  * @param[in] user_data user_data will be passsed when ewk_view_is_video_playing is
577  *                      called
578  */
579 typedef void (*Ewk_Is_Video_Playing_Callback)(Evas_Object* o, Eina_Bool is_playing, void* user_data);
580
581 /**
582  * @brief Asynchronous request for check if there is a video playing in the given view
583  *
584  * @param[in] o The view object
585  * @param[in] callback result callback to get web application capable
586  * @param[in] user_data user_data will be passed when result_callback is called
587  *
588  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
589  */
590 EXPORT_API Eina_Bool ewk_view_is_video_playing(Evas_Object* o, Ewk_Is_Video_Playing_Callback callback, void* user_data);
591
592 /**
593  * Callback for ewk_view_stop_video
594  *
595  * @param o view object
596  * @param is_stopped video is stopped or not
597  * @param user_data user_data will be passsed when ewk_view_stop_video is called
598  */
599 typedef void (*Ewk_Stop_Video_Callback)(Evas_Object* o, Eina_Bool is_stopped, void* user_data);
600
601 /**
602  * Asynchronous request for stopping any playing video in the given view
603  *
604  * @param[in] o The view object
605  * @param[in] callback result callback to get web application capable
606  * @param[in] user_data user_data will be passed when result_callback is called
607  *
608  * @return @c EINA_TRUE if any video was stopped or @c EINA_FALSE is there was no active video
609  */
610 EXPORT_API Eina_Bool ewk_view_stop_video(Evas_Object* o, Ewk_Stop_Video_Callback callback, void* user_data);
611
612 /**
613  * @brief Sets the support of video hole and video window, Use H/W overlay for performance of video output
614  *
615  * @since_tizen 3.0
616  *
617  * @param[in] o the view object
618  * @param[in] o the top-level window object
619  * @param[in] enable EINA_TRUE to set on support the video hole,
620  *            EINA_FALSE otherwise
621  * @param[in] enable EINA_TRUE to set on the video window of video hole,
622  *            EINA_FALSE to set on the video windowless of video hole
623  *
624  * @return return @c EINA_TRUE on success or @c EINA_FALSE on failure
625  */
626 EXPORT_API Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView, Evas_Object* window, Eina_Bool enable, Eina_Bool isVideoWindow);
627
628 #if defined(TIZEN_PEPPER_EXTENSIONS)
629
630 /**
631  * Callback for the generic sync call.
632  * It requests for performing operation/call giving its name. Arguments
633  * and return value is operation/call specific.
634  *
635  * @param[in] name requested call name
636  * @param[in] arguments call argumets, format is defined by opertion itself
637  * @param[in] user_data user_data will be passed when result_callback is called
638  *
639  * @return return value from the call, format is defind by operation itself
640  */
641 typedef Ewk_Value (*Generic_Sync_Call_Callback)(const char* name, Ewk_Value arguments, void* user_data);
642
643 /**
644  * Sets the function pointer for the generic sync call
645  *
646  * @param ewk_view view object to set the function pointer in
647  * @param cb pointer to the function
648  * @param user_data pointer to user data to be passed to the function when
649  *        it's being called
650  */
651 EXPORT_API void ewk_view_widget_pepper_extension_callback_set(Evas_Object* ewk_view, Generic_Sync_Call_Callback cb, void* user_data);
652
653 /**
654 * Sets the pepper widget extension info
655 *
656 * @param ewk_view view object to set the info in
657 * @param widget_pepper_ext_info the Ewk_Value containing the information
658 */
659 EXPORT_API void ewk_view_widget_pepper_extension_info_set(Evas_Object* ewk_view, Ewk_Value widget_pepper_ext_info);
660
661 #endif  // defined(TIZEN_PEPPER_EXTENSIONS)
662
663 /**
664  * @brief Sets the support of 4K video, Customize the device pixel ratio for
665  * video plane.
666  *
667  * @since_tizen 3.0
668  *
669  * @note Should be used after ewk_view_url_set().
670  *
671  * @param[in] o the view object
672  * @param[in] o enabled a state to set
673  *
674  * @return return @c EINA_TRUE on success or @c EINA_FALSE on failure
675  */
676 EXPORT_API Eina_Bool ewk_view_set_custom_device_pixel_ratio(Evas_Object* ewkView, Eina_Bool enabled);
677
678 /**
679  * @brief Gets whether vertical panning is holding.
680  *
681  * @since_tizen 2.3
682  *
683  * @param[in] o view object to get whether vertical panning is holding
684  *
685  * @return @c EINA_TRUE if vertical panning is holding
686  *         @c EINA_FALSE if not or on failure
687  */
688 EXPORT_API Eina_Bool ewk_view_vertical_panning_hold_get(Evas_Object* o);
689
690 /**
691   * Block/Release the vertical pan
692   *
693   * @param o view object on which pan is to be blocked/release
694   * @param hold status of pan
695   */
696 EXPORT_API void ewk_view_vertical_panning_hold_set(Evas_Object* o, Eina_Bool hold);
697
698 /**
699  * Callback for the generic sync call.
700  * It requests for performing operation/call giving its name. Arguments
701  * and return value is operation/call specific.
702  *
703  * @param[in] name requested call name
704  * @param[in] arguments call argumets, format is defined by opertion itself
705  * @param[in] user_data user_data will be passed when result_callback is called
706  *
707  * @return return value from the call, format is defind by operation itself
708  */
709 typedef Ewk_Value (*Generic_Sync_Call_Callback)(const char* name, Ewk_Value arguments, void* user_data);
710
711 /**
712  * Sets the function pointer for the generic sync call
713  *
714  * @param ewk_view view object to set the function pointer in
715  * @param cb pointer to the function
716  * @param user_data pointer to user data to be passed to the function when
717  *        it's being called
718  */
719 EXPORT_API void ewk_view_widget_pepper_extension_callback_set(Evas_Object* ewk_view, Generic_Sync_Call_Callback cb, void* user_data);
720
721 /**
722 * Sets the pepper widget extension info
723 *
724 * @param ewk_view view object to set the info in
725 * @param widget_pepper_ext_info the Ewk_Value containing the information
726 */
727 EXPORT_API void ewk_view_widget_pepper_extension_info_set(Evas_Object* ewk_view, Ewk_Value widget_pepper_ext_info);
728
729 #if defined(OS_TIZEN_TV_PRODUCT)
730 /**
731 * Set the translated url to media player.
732 *
733 * @param ewkView view object
734 * @param url string
735 *
736 * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
737 */
738 EXPORT_API Eina_Bool ewk_media_translated_url_set(Evas_Object* ewkView, const char* url);
739
740 /**
741 * Set app is preload type or not.
742 *
743 * @param ewkView view object
744 * @param is_preload if app is preload type
745 *
746 * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
747 */
748
749 EXPORT_API Eina_Bool ewk_view_app_preload_set(Evas_Object* ewkView, Eina_Bool is_preload);
750 #endif
751
752 /**
753  * @brief Sends key event.
754  *
755  * @since_tizen 2.4
756  *
757  * @param[in] o The view object
758  * @param[in] key_event Evas_Event_Key_Down struct or Evas_Event_Key_Up struct
759  * @param[in] isPress EINA_TRUE: keydown, EINA_FALSE: keyup
760  * @return @c EINA_TRUE on success,\n
761  *         otherwise @c EINA_FALSE
762  */
763 EXPORT_API Eina_Bool ewk_view_send_key_event(Evas_Object* o, void* key_event, Eina_Bool is_press);
764
765 /**
766  * @brief Sets whether the ewk_view supports the key events or not.
767  *
768  * @since_tizen 2.4
769  *
770  * @note Should be used after ewk_view_url_set().
771  *
772  * @remarks The ewk_view will support the key events if EINA_TRUE or not support the
773  *          key events otherwise. The default value is EINA_TRUE.
774  *
775  * @param[in] o The view object
776  * @param[in] enabled a state to set
777  *
778  * @return @c EINA_TRUE on success,\n
779  *         otherwise @c EINA_FALSE
780  */
781 EXPORT_API Eina_Bool ewk_view_key_events_enabled_set(Evas_Object *o, Eina_Bool enabled);
782
783 enum Ewk_Scrollbar_Orientation {
784   EWK_HORIZONTAL_SCROLLBAR = 0,
785   EWK_VERTICAL_SCROLLBAR
786 };
787
788 typedef enum Ewk_Scrollbar_Orientation Ewk_Scrollbar_Orientation;
789
790 struct Ewk_Scrollbar_Data {
791   Ewk_Scrollbar_Orientation orientation; /**< scrollbar orientation */
792   Eina_Bool focused;                     /**< isFocused */
793 };
794
795 typedef struct Ewk_Scrollbar_Data Ewk_Scrollbar_Data;
796
797 /**
798  * @brief Adds an item to back forward list
799  *
800  * @since_tizen 2.4
801  *
802  * @param[in] o The view object
803  * @param[in] item The back-forward list item instance
804  * @return @c EINA_TRUE on success,\n
805  *         otherwise @c EINA_FALSE
806  */
807 EXPORT_API Eina_Bool
808 ewk_view_add_item_to_back_forward_list(Evas_Object* o,
809                                        const Ewk_Back_Forward_List_Item* item);
810
811 /**
812  * @brief Load the specified @a html string as the content of the view overriding
813  *        current history entry. Can be used to ignore the malicious page while
814  *        navigation backward/forward.
815  *
816  * @since_tizen 3.0
817  *
818  * @param[in] view object to load the HTML into
819  * @param[in] html HTML data to load
820  * @param[in] base_url Base URL used for relative paths to external objects
821  *            (optional)
822  * @param[in] unreachable_url URL that could not be reached (optional)
823  *
824  * @return @c EINA_TRUE if it the HTML was successfully loaded,
825  *         @c EINA_FALSE otherwise
826  */
827 EXPORT_API Eina_Bool ewk_view_html_string_override_current_entry_load(Evas_Object* view, const char* html, const char* base_uri, const char* unreachable_url);
828
829 /**
830  * Sets whether to draw transparent background or not.
831  *
832  * @param o view object to enable/disable transparent background
833  * @param enabled a state to set
834  *
835  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
836  */
837 EXPORT_API Eina_Bool ewk_view_draws_transparent_background_set(Evas_Object *o, Eina_Bool enabled);
838
839 /**
840  * Creates a type name for the callback function used to get the page contents.
841  *
842  * @param o view object
843  * @param data mhtml data of the page contents
844  * @param user_data user data will be passed when ewk_view_mhtml_data_get is called
845  */
846 typedef void (*Ewk_View_MHTML_Data_Get_Callback)(Evas_Object *o, const char *data, void *user_data);
847
848 /**
849  * Get page contents as MHTML data
850  *
851  * @param o view object to get the page contents
852  * @param callback callback function to be called when the operation is finished
853  * @param user_data user data to be passed to the callback function
854  *
855  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
856  */
857 EXPORT_API Eina_Bool ewk_view_mhtml_data_get(Evas_Object *o, Ewk_View_MHTML_Data_Get_Callback callback, void *user_data);
858
859 /**
860  * Gets the minimum and maximum value of the scale range or -1 on failure
861  *
862  * @param o view object to get the minimum and maximum value of the scale range
863  * @param min_scale Pointer to an double in which to store the minimum scale factor of the object.
864  * @param max_scale Pointer to an double in which to store the maximum scale factor of the object.
865  *
866  * @note Use @c NULL pointers on the scale components you're not
867  * interested in: they'll be ignored by the function.
868  */
869 EXPORT_API void ewk_view_scale_range_get(Evas_Object* o, double* min_scale, double* max_scale);
870
871 /**
872  * Returns the evas image object of the specified viewArea of page
873  *
874  * The returned evas image object @b should be freed after use.
875  *
876  * @param o view object to get specified rectangle of cairo surface.
877  * @param viewArea rectangle of cairo surface.
878  * @param scaleFactor scale factor of cairo surface.
879  * @param canvas canvas for creating evas image.
880  *
881  * @return newly allocated evas image object on sucess or @c 0 on failure.
882  */
883 EXPORT_API Evas_Object* ewk_view_screenshot_contents_get(const Evas_Object* o, Eina_Rectangle viewArea, float scaleFactor, Evas* canvas);
884
885 /**
886  * Gets the possible scroll size of the given view.
887  *
888  * Possible scroll size is contents size minus the viewport size.
889  *
890  * @param o view object to get scroll size
891  * @param w the pointer to store the horizontal size that is possible to scroll,
892  *        may be @c 0
893  * @param h the pointer to store the vertical size that is possible to scroll,
894  *        may be @c 0
895  *
896  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise and
897  *         values are zeroed
898  */
899 EXPORT_API Eina_Bool ewk_view_scroll_size_get(const Evas_Object* o, int* w, int* h);
900
901 /**
902  * Clears the highlight of searched text.
903  *
904  * @param o view object to find text
905  *
906  * @return @c EINA_TRUE on success, @c EINA_FALSE on errors
907  */
908 EXPORT_API Eina_Bool ewk_view_text_find_highlight_clear(Evas_Object *o);
909
910 /**
911  * Counts the given string in the document.
912  *
913  * This does not highlight the matched string and just count the matched string.\n
914  *
915  * As the search is carried out through the whole document,\n
916  * only the following #Ewk_Find_Options are valid.\n
917  *  - EWK_FIND_OPTIONS_NONE\n
918  *  - EWK_FIND_OPTIONS_CASE_INSENSITIVE\n
919  *  - EWK_FIND_OPTIONS_AT_WORD_START\n
920  *  - EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START\n
921  *
922  * The "text,found" callback will be called with the number of matched string.
923  *
924  * @since_tizen 2.3
925  *
926  * @param o view object to find text
927  * @param text text to find
928  * @param options options to find
929  * @param max_match_count maximum match count to find, unlimited if 0
930  *
931  * @return @c EINA_TRUE on success, @c EINA_FALSE on errors
932  */
933 EXPORT_API Eina_Bool ewk_view_text_matches_count(Evas_Object* o, const char* text, Ewk_Find_Options options, unsigned max_match_count);
934
935 /**
936  * Gets the current text zoom level.
937  *
938  * @param o view object to get the zoom level
939  *
940  * @return current zoom level in use on success or @c -1.0 on failure
941  */
942 EXPORT_API double ewk_view_text_zoom_get(const Evas_Object* o);
943
944 /**
945  * Sets the current text zoom level.
946  *
947  * @param o view object to set the zoom level
948  * @param textZoomFactor a new level to set
949  *
950  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
951  */
952 EXPORT_API Eina_Bool ewk_view_text_zoom_set(Evas_Object* o, double text_zoom_factor);
953
954 /**
955  * @brief Draw the evas image object for the VoiceManager
956  *
957  * @since_tizen 3.0
958  *
959  * @param[in] view the view object
960  * @param[in] image evas image obejct for drawing
961  * @param[in] rect rectangle of image object for drawing
962  */
963 EXPORT_API void ewk_view_voicemanager_label_draw(Evas_Object* view, Evas_Object* image, Eina_Rectangle rect);
964
965 /**
966  * @brief Hide and remove all labels for the VoiceManager
967  *
968  * @details All labels are cleared on mouse down.
969  *
970  * @since_tizen 3.0
971  *
972  * @param[in] view the view object
973  */
974 EXPORT_API void ewk_view_voicemanager_labels_clear(Evas_Object* view);
975
976 /**
977  * This api is used for Canal+ App and HBB TV Application.
978  * They need to access various url required a client authentication while the apps is running.
979  * So when XWalk call this API with host and related cert path, We store these information to map.
980  * After that, When we get the "Certificate Request" packet from server,
981  * We find matched cert path to host in the map.
982  *
983  * @param ewkView view object to add host and cert path to the map
984  * @param host host that required client authentication
985  * @param cert_path the file path stored certificate
986  *
987  */
988 EXPORT_API void ewk_view_add_dynamic_certificate_path(const Evas_Object *ewkView, const char* host, const char* cert_path);
989
990 /**
991  * @brief Request to set the atk usage set by web app(config.xml).
992  *
993  * Some TV apps use WebSpeech instead of use ATK for regulation U.S.FCC
994  *
995  * @since_tizen 3.0 @if TV   @endif
996  *
997  * @param[in] o View object to set the atk use.
998  * @param[in] enable EINA_TRUE to set on the atk use.
999  *            EINA_FALSE makes atk not to use, but app use WebSpeech instead of ATK.
1000  */
1001 EXPORT_API void ewk_view_atk_deactivation_by_app(Evas_Object* view, Eina_Bool enable);
1002
1003 /*
1004  * Get cookies associated with an URL.
1005  *
1006  * @param o view object in which URL is opened.
1007  * @param url the url for which cookies needs to be obtained.
1008  *
1009  * @return @c character array containing cookies, @c NULL if no cookies are found.
1010  *
1011  * The return character array has to be owned by the application and freed when not required.
1012  */
1013 EXPORT_API char* ewk_view_cookies_get(Evas_Object* o, const char* url);
1014
1015 /**
1016  * @internal
1017  * @brief Callback for ewk_view_notification_show_callback_set
1018  *
1019  * @since_tizen 2.3
1020  *
1021  * @param[in] o view object to request the notification show
1022  * @param[in] notification Ewk_Notification object to get the information about notification show request
1023  * @param[in] user_data user data
1024  */
1025 typedef Eina_Bool (*Ewk_View_Notification_Show_Callback)(Evas_Object *o, Ewk_Notification *notification, void *user_data);
1026
1027 /**
1028  * @internal
1029  * @brief Sets the notification show callback.
1030  *
1031  * @since_tizen 2.3
1032  *
1033  * @param[in] o view object to request the notification show
1034  * @param[in] show_callback Ewk_View_Notification_Show_Callback function to notification show
1035  * @param[in] user_data user data
1036  */
1037 EXPORT_API void ewk_view_notification_show_callback_set(Evas_Object *o, Ewk_View_Notification_Show_Callback show_callback, void *user_data);
1038
1039 /**
1040  * @internal
1041  * @brief Callback for ewk_view_notification_cancel_callback_set
1042  *
1043  * @since_tizen 2.3
1044  *
1045  * @param[in] o view object to request the notification cancel
1046  * @param[in] notification_id Ewk_Notification object to get the information about notification cancel request
1047  * @param[in] user_data user data
1048  */
1049 typedef Eina_Bool (*Ewk_View_Notification_Cancel_Callback)(Evas_Object *o, uint64_t notification_id, void *user_data);
1050
1051 /**
1052  * @internal
1053  * @brief Sets the notification cancel callback.
1054  *
1055  * @since_tizen 2.3
1056  *
1057  * @param[in] o view object to request the notification show
1058  * @param[in] cancel_callback Ewk_View_Notification_Cancel_Callback function to notification cancel
1059  * @param[in] user_data user data
1060  */
1061 EXPORT_API void ewk_view_notification_cancel_callback_set(Evas_Object *o, Ewk_View_Notification_Cancel_Callback cancel_callback, void *user_data);
1062
1063 /**
1064 * @brief Gets the current custom character encoding name.
1065 *
1066 * @since_tizen 2.3
1067 *
1068 * @param[in] o view object to get the current encoding
1069 *
1070 * @return @c eina_strinshare containing the current encoding, or\n
1071 *         @c NULL if it's not set
1072 */
1073 EXPORT_API const char* ewk_view_custom_encoding_get(const Evas_Object* o);
1074
1075 /**
1076 * @brief Sets the custom character encoding and reloads the page.
1077 *
1078 * @since_tizen 2.3
1079 *
1080 * @param[in] o view to set the encoding
1081 * @param[in] encoding the new encoding to set or @c NULL to restore the default one
1082 *
1083 * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1084 */
1085 EXPORT_API Eina_Bool ewk_view_custom_encoding_set(Evas_Object* o, const char* encoding);
1086
1087 /**
1088 * @brief Forces web page to relayout
1089 *
1090 * @since_tizen 2.3
1091 *
1092 * @param [in] o view
1093 */
1094 EXPORT_API void ewk_view_force_layout(const Evas_Object* o);
1095
1096 /**
1097 * Creates a type name for the callback function used to get video current time.
1098 *
1099 * @param o view object
1100 * @param current time of the video
1101 *@param user_data user data will be passed when ewk_media_current_time_get
1102 *called
1103 */
1104 typedef void (*Ewk_View_Video_Current_Time_Get_Callback)(Evas_Object *o, double current_time, void *user_data);
1105
1106 /**
1107 * Gets the video's timestamp.
1108 *
1109 * @param o view object to get the video's timestamp
1110 *
1111 * @return timestamp value
1112 */
1113 EXPORT_API void ewk_media_current_time_get(const Evas_Object* o, Ewk_View_Video_Current_Time_Get_Callback callback, void *user_data);
1114
1115 /**
1116 * @brief Enforces web page to close
1117 *
1118 * @since_tizen 3.0
1119 *
1120 * @param[in] o view
1121 *
1122 * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1123 */
1124 EXPORT_API Eina_Bool ewk_view_page_close(Evas_Object* o);
1125
1126 /**
1127 * Clear all tile resources.
1128 *
1129 * @param ewkView view object
1130 */
1131
1132 EXPORT_API void ewk_view_clear_all_tiles_resources(Evas_Object* ewkView);
1133
1134 /**
1135  * Requests execution of the given script in the main frame and subframes of the page.
1136  *
1137  * The result value for the execution can be retrieved from the asynchronous callback.
1138  *
1139  * @param o The view to execute script
1140  * @param script JavaScript to execute
1141  * @param callback The function to call when the execution is completed, may be @c NULL
1142  * @param user_data User data, may be @c NULL
1143  *
1144  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1145  */
1146 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);
1147
1148 /**
1149  * Floating video's window ON/OFF
1150  *
1151  * @param o view object
1152  * @param bool status (true/false)
1153  *
1154  */
1155 EXPORT_API void ewk_view_floating_window_state_changed(const Evas_Object *o, Eina_Bool status);
1156
1157 /**
1158 * @}
1159 */
1160
1161 #ifdef __cplusplus
1162 }
1163 #endif
1164 #endif // ewk_view_product_h