[CoordinatedGraphics][EFL] Remove view_source functions.
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / efl / ewk_view.h
1 /*
2    Copyright (C) 2011 Samsung Electronics
3    Copyright (C) 2012 Intel Corporation. All rights reserved.
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 /**
22  * @file    ewk_view.h
23  * @brief   WebKit main smart object.
24  *
25  * This object provides view related APIs of WebKit2 to EFL object.
26  *
27  * The following signals (see evas_object_smart_callback_add()) are emitted:
28  *
29  * - "authentication,request", Ewk_Auth_Request*: reports that user authentication was requested. Call
30  *   ewk_auth_request_ref() on the request object to process the authentication asynchronously.
31  * - "back,forward,list,changed", void: reports that the view's back / forward list had changed.
32  * - "cancel,vibration", void: request to cancel the vibration.
33  * - "contents,size,changed", Ewk_CSS_Size*: reports that contents size was changed.
34  * - "download,cancelled", Ewk_Download_Job*: reports that a download was effectively cancelled.
35  * - "download,failed", Ewk_Download_Job_Error*: reports that a download failed with the given error.
36  * - "download,finished", Ewk_Download_Job*: reports that a download completed successfully.
37  * - "download,request", Ewk_Download_Job*: reports that a new download has been requested. The client should set the
38  *   destination path by calling ewk_download_job_destination_set() or the download will fail.
39  * - "file,chooser,request", Ewk_File_Chooser_Request*: reports that a request has been made for the user to choose
40  *   a file (or several) on the file system. Call ewk_file_chooser_request_ref() on the request object to process it
41  *   asynchronously.
42  * - "form,submission,request", Ewk_Form_Submission_Request*: Reports that a form request is about to be submitted.
43  *   The Ewk_Form_Submission_Request passed contains information about the text fields of the form. This
44  *   is typically used to store login information that can be used later to pre-fill the form.
45  *   The form will not be submitted until ewk_form_submission_request_submit() is called.
46  *   It is possible to handle the form submission request asynchronously, by simply calling
47  *   ewk_form_submission_request_ref() on the request and calling ewk_form_submission_request_submit()
48  *   when done to continue with the form submission. If the last reference is removed on a
49  *   #Ewk_Form_Submission_Request and the form has not been submitted yet,
50  *   ewk_form_submission_request_submit() will be called automatically.
51  * - "favicon,changed", void: reports that the view's favicon has changed.
52  *   The favicon can be queried using ewk_view_favicon_get().
53  * - "load,error", const Ewk_Error*: reports main frame load failed.
54  * - "load,finished", void: reports load finished.
55  * - "load,progress", double*: load progress has changed (value from 0.0 to 1.0).
56  * - "load,provisional,failed", const Ewk_Error*: view provisional load failed.
57  * - "load,provisional,redirect", void: view received redirect for provisional load.
58  * - "load,provisional,started", void: view started provisional load.
59  * - "policy,decision,navigation", Ewk_Navigation_Policy_Decision*: a navigation policy decision should be taken.
60  *   To make a policy decision asynchronously, simply increment the reference count of the
61  *   #Ewk_Navigation_Policy_Decision object using ewk_navigation_policy_decision_ref().
62  * - "policy,decision,new,window", Ewk_Navigation_Policy_Decision*: a new window policy decision should be taken.
63  *   To make a policy decision asynchronously, simply increment the reference count of the
64  *   #Ewk_Navigation_Policy_Decision object using ewk_navigation_policy_decision_ref().
65  * - "text,found", unsigned int*: the requested text was found and it gives the number of matches.
66  * - "title,changed", const char*: title of the main frame was changed.
67  * - "tooltip,text,set", const char*: tooltip was set.
68  * - "tooltip,text,unset", void: tooltip was unset.
69  * - "url,changed", const char*: url of the main frame was changed.
70  * - "vibrate", uint64_t*: request to vibrate. (value is vibration time)
71  * - "webprocess,crashed", Eina_Bool*: expects a @c EINA_TRUE if web process crash is handled; @c EINA_FALSE, otherwise.
72  */
73
74 #ifndef ewk_view_h
75 #define ewk_view_h
76
77 #include "ewk_back_forward_list.h"
78 #include "ewk_color_picker.h"
79 #include "ewk_context.h"
80 #include "ewk_context_menu.h"
81 #include "ewk_download_job.h"
82 #include "ewk_error.h"
83 #include "ewk_page_group.h"
84 #include "ewk_popup_menu.h"
85 #include "ewk_security_origin.h"
86 #include "ewk_settings.h"
87 #include "ewk_touch.h"
88 #include "ewk_url_request.h"
89 #include "ewk_url_response.h"
90 #include "ewk_window_features.h"
91 #include <Evas.h>
92
93 #ifdef __cplusplus
94 extern "C" {
95 #endif
96
97 /// Enum values containing text directionality values.
98 typedef enum {
99     EWK_TEXT_DIRECTION_RIGHT_TO_LEFT,
100     EWK_TEXT_DIRECTION_LEFT_TO_RIGHT
101 } Ewk_Text_Direction;
102
103 /// Enum values containing page contents type values.
104 typedef enum {
105     EWK_PAGE_CONTENTS_TYPE_MHTML,
106     EWK_PAGE_CONTENTS_TYPE_STRING
107 } Ewk_Page_Contents_Type;
108
109 typedef struct Ewk_View_Smart_Data Ewk_View_Smart_Data;
110 typedef struct Ewk_View_Smart_Class Ewk_View_Smart_Class;
111
112 /// Ewk view's class, to be overridden by sub-classes.
113 struct Ewk_View_Smart_Class {
114     Evas_Smart_Class sc; /**< all but 'data' is free to be changed. */
115     unsigned long version;
116
117     Eina_Bool (*custom_item_selected)(Ewk_View_Smart_Data *sd, Ewk_Context_Menu_Item *item);
118     Eina_Bool (*context_menu_show)(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Ewk_Context_Menu *menu);
119     Eina_Bool (*context_menu_hide)(Ewk_View_Smart_Data *sd);
120
121     Eina_Bool (*popup_menu_show)(Ewk_View_Smart_Data *sd, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Ewk_Popup_Menu *menu);
122     Eina_Bool (*popup_menu_hide)(Ewk_View_Smart_Data *sd);
123
124     // event handling:
125     //  - returns true if handled
126     //  - if overridden, have to call parent method if desired
127     Eina_Bool (*focus_in)(Ewk_View_Smart_Data *sd);
128     Eina_Bool (*focus_out)(Ewk_View_Smart_Data *sd);
129     Eina_Bool (*fullscreen_enter)(Ewk_View_Smart_Data *sd, Ewk_Security_Origin *origin);
130     Eina_Bool (*fullscreen_exit)(Ewk_View_Smart_Data *sd);
131     Eina_Bool (*mouse_wheel)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Wheel *ev);
132     Eina_Bool (*mouse_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Down *ev);
133     Eina_Bool (*mouse_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Up *ev);
134     Eina_Bool (*mouse_move)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Move *ev);
135     Eina_Bool (*key_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Down *ev);
136     Eina_Bool (*key_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Up *ev);
137     Eina_Bool (*window_geometry_set)(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord width, Evas_Coord height);
138     Eina_Bool (*window_geometry_get)(Ewk_View_Smart_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *width, Evas_Coord *height);
139
140     // javascript popup:
141     //   - All strings should be guaranteed to be stringshared.
142     void (*run_javascript_alert)(Ewk_View_Smart_Data *sd, const char *message);
143     Eina_Bool (*run_javascript_confirm)(Ewk_View_Smart_Data *sd, const char *message);
144     const char *(*run_javascript_prompt)(Ewk_View_Smart_Data *sd, const char *message, const char *default_value); /**< return string should be stringshared. */
145
146     // color picker:
147     //   - Shows and hides color picker.
148     Eina_Bool (*input_picker_color_request)(Ewk_View_Smart_Data *sd, Ewk_Color_Picker *color_picker);
149     Eina_Bool (*input_picker_color_dismiss)(Ewk_View_Smart_Data *sd);
150
151     // storage:
152     //   - Web database.
153     unsigned long long (*exceeded_database_quota)(Ewk_View_Smart_Data *sd, const char *databaseName, const char *displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage);
154
155     // window creation and closing:
156     //   - Create a new window with specified features and close window.
157     Evas_Object *(*window_create)(Ewk_View_Smart_Data *sd, const Ewk_Window_Features *window_features);
158     void (*window_close)(Ewk_View_Smart_Data *sd);
159 };
160
161 /**
162  * The version you have to put into the version field
163  * in the @a Ewk_View_Smart_Class structure.
164  */
165 #define EWK_VIEW_SMART_CLASS_VERSION 8UL
166
167 /**
168  * Initializer for whole Ewk_View_Smart_Class structure.
169  *
170  * @param smart_class_init initializer to use for the "base" field
171  * (Evas_Smart_Class).
172  *
173  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
174  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
175  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
176  */
177 #define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
178
179 /**
180  * Initializer to zero a whole Ewk_View_Smart_Class structure.
181  *
182  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
183  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
184  * @see EWK_VIEW_SMART_CLASS_INIT
185  */
186 #define EWK_VIEW_SMART_CLASS_INIT_NULL EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL)
187
188 /**
189  * Initializer to zero a whole Ewk_View_Smart_Class structure and set
190  * name and version.
191  *
192  * Similar to EWK_VIEW_SMART_CLASS_INIT_NULL, but will set version field of
193  * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION and name
194  * to the specific value.
195  *
196  * It will keep a reference to name field as a "const char *", that is,
197  * name must be available while the structure is used (hint: static or global!)
198  * and will not be modified.
199  *
200  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
201  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
202  * @see EWK_VIEW_SMART_CLASS_INIT
203  */
204 #define EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION(name) EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
205
206 typedef struct EwkView EwkView;
207 /**
208  * @brief Contains an internal View data.
209  *
210  * It is to be considered private by users, but may be extended or
211  * changed by sub-classes (that's why it's in public header file).
212  */
213 struct Ewk_View_Smart_Data {
214     Evas_Object_Smart_Clipped_Data base;
215     const Ewk_View_Smart_Class* api; /**< reference to casted class instance */
216     Evas_Object* self; /**< reference to owner object */
217     Evas_Object* image; /**< reference to evas_object_image for drawing web contents */
218     EwkView* priv; /**< should never be accessed, c++ stuff */
219     struct {
220         Evas_Coord x, y, w, h; /**< last used viewport */
221     } view;
222     struct { /**< what changed since last smart_calculate */
223         Eina_Bool any:1;
224         Eina_Bool size:1;
225         Eina_Bool position:1;
226     } changed;
227 };
228
229 /// Creates a type name for Ewk_Download_Job_Error.
230 typedef struct Ewk_Download_Job_Error Ewk_Download_Job_Error;
231
232 /**
233  * @brief Structure containing details about a download failure.
234  */
235 struct Ewk_Download_Job_Error {
236     Ewk_Download_Job *download_job; /**< download that failed */
237     Ewk_Error *error; /**< download error */
238 };
239
240 /// Creates a type name for Ewk_CSS_Size.
241 typedef struct Ewk_CSS_Size Ewk_CSS_Size;
242
243 /**
244  * @brief Structure representing size.
245  */
246 struct Ewk_CSS_Size {
247     Evas_Coord w; /**< width */
248     Evas_Coord h; /**< height */
249 };
250
251 /**
252  * Enum values used to specify search options.
253  * @brief   Provides option to find text
254  * @info    Keep this in sync with WKFindOptions.h
255  */
256 enum Ewk_Find_Options {
257     EWK_FIND_OPTIONS_NONE, /**< no search flags, this means a case sensitive, no wrap, forward only search. */
258     EWK_FIND_OPTIONS_CASE_INSENSITIVE = 1 << 0, /**< case insensitive search. */
259     EWK_FIND_OPTIONS_AT_WORD_STARTS = 1 << 1, /**< search text only at the beginning of the words. */
260     EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START = 1 << 2, /**< treat capital letters in the middle of words as word start. */
261     EWK_FIND_OPTIONS_BACKWARDS = 1 << 3, /**< search backwards. */
262     EWK_FIND_OPTIONS_WRAP_AROUND = 1 << 4, /**< if not present search will stop at the end of the document. */
263     EWK_FIND_OPTIONS_SHOW_OVERLAY = 1 << 5, /**< show overlay */
264     EWK_FIND_OPTIONS_SHOW_FIND_INDICATOR = 1 << 6, /**< show indicator */
265     EWK_FIND_OPTIONS_SHOW_HIGHLIGHT = 1 << 7 /**< show highlight */
266 };
267 typedef enum Ewk_Find_Options Ewk_Find_Options;
268
269 /**
270  * Enum values used to set pagination mode.
271  */
272 typedef enum {
273     EWK_PAGINATION_MODE_INVALID = -1, /**< invalid pagination mode that will be returned when error occured. */
274     EWK_PAGINATION_MODE_UNPAGINATED, /**< default mode for pagination. not paginated  */
275     EWK_PAGINATION_MODE_LEFT_TO_RIGHT, /**< go to the next page with scrolling left to right horizontally. */
276     EWK_PAGINATION_MODE_RIGHT_TO_LEFT, /**< go to the next page with scrolling right to left horizontally. */
277     EWK_PAGINATION_MODE_TOP_TO_BOTTOM, /**< go to the next page with scrolling top to bottom vertically. */
278     EWK_PAGINATION_MODE_BOTTOM_TO_TOP /**< go to the next page with scrolling bottom to top vertically. */
279 } Ewk_Pagination_Mode;
280
281 /**
282  * @typedef Ewk_View_Script_Execute_Cb Ewk_View_Script_Execute_Cb
283  * @brief Callback type for use with ewk_view_script_execute()
284  */
285 typedef void (*Ewk_View_Script_Execute_Cb)(Evas_Object *o, const char *return_value, void *user_data);
286
287 /**
288  * Creates a type name for the callback function used to get the page contents.
289  *
290  * @param type type of the contents
291  * @param data string buffer of the contents
292  * @param user_data user data will be passed when ewk_view_page_contents_get is called
293  */
294 typedef void (*Ewk_Page_Contents_Cb)(Ewk_Page_Contents_Type type, const char *data, void *user_data);
295
296 /**
297  * Sets the smart class APIs, enabling view to be inherited.
298  *
299  * @param api class definition to set, all members with the
300  *        exception of @a Evas_Smart_Class->data may be overridden, must
301  *        @b not be @c NULL
302  *
303  * @note @a Evas_Smart_Class->data is used to implement type checking and
304  *       is not supposed to be changed/overridden. If you need extra
305  *       data for your smart class to work, just extend
306  *       Ewk_View_Smart_Class instead.
307  *       The Evas_Object which inherits the ewk_view should use
308  *       ewk_view_smart_add() to create Evas_Object instead of
309  *       evas_object_smart_add() because it performs additional initialization
310  *       for the ewk_view.
311  *
312  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
313  *         version mismatch)
314  *
315  * @see ewk_view_smart_add()
316  */
317 EAPI Eina_Bool ewk_view_smart_class_set(Ewk_View_Smart_Class *api);
318
319 /**
320  * Creates a new EFL WebKit view object with Evas_Smart and Ewk_Context.
321  *
322  * @note The Evas_Object which inherits the ewk_view should create its
323  *       Evas_Object using this API instead of evas_object_smart_add()
324  *       because the default initialization for ewk_view is done in this API.
325  *
326  * @param e canvas object where to create the view object
327  * @param smart Evas_Smart object. Its type should be EWK_VIEW_TYPE_STR
328  * @param context Ewk_Context object which is used for initializing
329  * @param pageGroup Ewk_Page_Group object which is used for initializing
330  *
331  * @return view object on success or @c NULL on failure
332  */
333 EAPI Evas_Object *ewk_view_smart_add(Evas *e, Evas_Smart *smart, Ewk_Context *context, Ewk_Page_Group *pageGroup);
334
335 /**
336  * Creates a new EFL WebKit view object.
337  *
338  * @param e canvas object where to create the view object
339  *
340  * @return view object on success or @c NULL on failure
341  */
342 EAPI Evas_Object *ewk_view_add(Evas *e);
343
344 /**
345  * Creates a new EFL WebKit view object based on specific Ewk_Context.
346  *
347  * @param e canvas object where to create the view object
348  * @param context Ewk_Context object to declare process model
349  *
350  * @return view object on success or @c NULL on failure
351  */
352 EAPI Evas_Object *ewk_view_add_with_context(Evas *e, Ewk_Context *context);
353
354 /**
355  * Gets the Ewk_Context of this view.
356  *
357  * @param o the view object to get the Ewk_Context
358  *
359  * @return the Ewk_Context of this view or @c NULL on failure
360  */
361 EAPI Ewk_Context *ewk_view_context_get(const Evas_Object *o);
362
363 /**
364  * Gets the Ewk_Page_Group of this view.
365  *
366  * @param o the view object to get the Ewk_Page_Group
367  *
368  * @return the Ewk_Page_Group of this view or @c NULL on failure
369  */
370 EAPI Ewk_Page_Group *ewk_view_page_group_get(const Evas_Object *o);
371
372 /**
373  * Asks the object to load the given URL.
374  *
375  * @param o view object to load @a URL
376  * @param url uniform resource identifier to load
377  *
378  * @return @c EINA_TRUE is returned if @a o is valid, irrespective of load,
379  *         or @c EINA_FALSE on failure
380  */
381 EAPI Eina_Bool ewk_view_url_set(Evas_Object *o, const char *url);
382
383 /**
384  * Returns the current URL string of view object.
385  *
386  * It returns an internal string and should not
387  * be modified. The string is guaranteed to be stringshared.
388  *
389  * @param o view object to get current URL
390  *
391  * @return current URL on success or @c NULL on failure
392  */
393 EAPI const char *ewk_view_url_get(const Evas_Object *o);
394
395 /**
396  * Returns the current favicon of view object.
397  *
398  * @param o view object to get current icon URL
399  *
400  * @return current favicon on success or @c NULL if unavailable or on failure.
401  * The returned Evas_Object needs to be freed after use.
402  */
403 EAPI Evas_Object *ewk_view_favicon_get(const Evas_Object *o);
404
405 /**
406  * Asks the main frame to reload the current document.
407  *
408  * @param o view object to reload current document
409  *
410  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
411  *
412  * @see ewk_view_reload_bypass_cache()
413  */
414 EAPI Eina_Bool    ewk_view_reload(Evas_Object *o);
415
416 /**
417  * Reloads the current page's document without cache.
418  *
419  * @param o view object to reload current document
420  *
421  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
422  */
423 EAPI Eina_Bool ewk_view_reload_bypass_cache(Evas_Object *o);
424
425 /**
426  * Asks the main frame to stop loading.
427  *
428  * @param o view object to stop loading
429  *
430  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise.
431  */
432 EAPI Eina_Bool    ewk_view_stop(Evas_Object *o);
433
434 /**
435  * Gets the Ewk_Settings of this view.
436  *
437  * @param o view object to get Ewk_Settings
438  *
439  * @return the Ewk_Settings of this view or @c NULL on failure
440  */
441 EAPI Ewk_Settings *ewk_view_settings_get(const Evas_Object *o);
442
443 /**
444  * Asks the main frame to navigate back in the history.
445  *
446  * @param o view object to navigate back
447  *
448  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
449  *
450  * @see ewk_frame_back()
451  */
452 EAPI Eina_Bool    ewk_view_back(Evas_Object *o);
453
454 /**
455  * Asks the main frame to navigate forward in the history.
456  *
457  * @param o view object to navigate forward
458  *
459  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
460  *
461  * @see ewk_frame_forward()
462  */
463 EAPI Eina_Bool    ewk_view_forward(Evas_Object *o);
464
465 /**
466  * Queries if it is possible to navigate backwards one item in the history.
467  *
468  * @param o view object to query if backward navigation is possible
469  *
470  * @return @c EINA_TRUE if it is possible to navigate backwards in the history, @c EINA_FALSE otherwise
471  */
472 EAPI Eina_Bool    ewk_view_back_possible(Evas_Object *o);
473
474 /**
475  * Queries if it is possible to navigate forwards one item in the history.
476  *
477  * @param o view object to query if forward navigation is possible
478  *
479  * @return @c EINA_TRUE if it is possible to navigate forwards in the history, @c EINA_FALSE otherwise
480  */
481 EAPI Eina_Bool    ewk_view_forward_possible(Evas_Object *o);
482
483 /**
484  * Gets the back-forward list associated with this view.
485  *
486  * The returned instance is unique for this view and thus multiple calls
487  * to this function with the same view as parameter returns the same
488  * handle. This handle is alive while view is alive, thus one
489  * might want to listen for EVAS_CALLBACK_DEL on given view
490  * (@a o) to know when to stop using returned handle.
491  *
492  * @param o view object to get navigation back-forward list
493  *
494  * @return the back-forward list instance handle associated with this view
495  */
496 EAPI Ewk_Back_Forward_List *ewk_view_back_forward_list_get(const Evas_Object *o);
497
498 /**
499  * Navigates to specified back-forward list item.
500  *
501  * @param o view object to navigate in the history
502  * @param item the back-forward list item
503  *
504  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
505  */
506 EAPI Eina_Bool ewk_view_navigate_to(Evas_Object *o, const Ewk_Back_Forward_List_Item *item);
507
508 /**
509  * Gets the current title of the main frame.
510  *
511  * It returns an internal string and should not
512  * be modified. The string is guaranteed to be stringshared.
513  *
514  * @param o view object to get current title
515  *
516  * @return current title on success or @c NULL on failure
517  */
518 EAPI const char *ewk_view_title_get(const Evas_Object *o);
519
520 /**
521  * Gets the current load progress of page.
522  *
523  * The progress estimation from 0.0 to 1.0.
524  *
525  * @param o view object to get the current progress
526  *
527  * @return the load progress of page, value from 0.0 to 1.0,
528  *         or @c -1.0 on failure
529  */
530 EAPI double ewk_view_load_progress_get(const Evas_Object *o);
531
532 /**
533  * Loads the specified @a html string as the content of the view.
534  *
535  * External objects such as stylesheets or images referenced in the HTML
536  * document are located relative to @a baseUrl.
537  *
538  * If an @a unreachableUrl is passed it is used as the url for the loaded
539  * content. This is typically used to display error pages for a failed
540  * load.
541  *
542  * @param o view object to load the HTML into
543  * @param html HTML data to load
544  * @param baseUrl Base URL used for relative paths to external objects (optional)
545  * @param unreachableUrl URL that could not be reached (optional)
546  *
547  * @return @c EINA_TRUE if it the HTML was successfully loaded, @c EINA_FALSE otherwise
548  */
549 EAPI Eina_Bool ewk_view_html_string_load(Evas_Object *o, const char *html, const char *baseUrl, const char *unreachableUrl);
550
551 /**
552  * Scales the current page, centered at the given point.
553  *
554  * @param o view object to set the zoom level
555  * @param scale_factor a new level to set
556  * @param cx x of center coordinate
557  * @param cy y of center coordinate
558  *
559  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
560  */
561 EAPI Eina_Bool ewk_view_scale_set(Evas_Object *o, double scaleFactor, int x, int y);
562
563 /**
564  * Queries the current scale factor of the page.
565  *
566  * It returns previous scale factor after ewk_view_scale_set is called immediately
567  * until scale factor of page is really changed.
568  *
569  * @param o view object to get the scale factor
570  *
571  * @return current scale factor in use on success or @c -1.0 on failure
572  */
573 EAPI double ewk_view_scale_get(const Evas_Object *o);
574
575 /**
576  * Queries the ratio between the CSS units and device pixels when the content is unscaled.
577  *
578  * When designing touch-friendly contents, knowing the approximated target size on a device
579  * is important for contents providers in order to get the intented layout and element
580  * sizes.
581  *
582  * As most first generation touch devices had a PPI of approximately 160, this became a
583  * de-facto value, when used in conjunction with the viewport meta tag.
584  *
585  * Devices with a higher PPI learning towards 240 or 320, applies a pre-scaling on all
586  * content, of either 1.5 or 2.0, not affecting the CSS scale or pinch zooming.
587  *
588  * This value can be set using this property and it is exposed to CSS media queries using
589  * the -webkit-device-pixel-ratio query.
590  *
591  * For instance, if you want to load an image without having it upscaled on a web view
592  * using a device pixel ratio of 2.0 it can be done by loading an image of say 100x100
593  * pixels but showing it at half the size.
594  *
595  * @media (-webkit-min-device-pixel-ratio: 1.5) {
596  *     .icon {
597  *         width: 50px;
598  *         height: 50px;
599  *         url: "/images/icon@2x.png"; // This is actually a 100x100 image
600  *     }
601  * }
602  *
603  * If the above is used on a device with device pixel ratio of 1.5, it will be scaled
604  * down but still provide a better looking image.
605  *
606  * @param o view object to get device pixel ratio
607  *
608  * @return the ratio between the CSS units and device pixels,
609  *         or @c -1.0 on failure
610  */
611 EAPI float ewk_view_device_pixel_ratio_get(const Evas_Object *o);
612
613 /**
614  * Sets the ratio between the CSS units and device pixels when the content is unscaled.
615  *
616  * @param o view object to set device pixel ratio
617  *
618  * @return @c EINA_TRUE if the device pixel ratio was set, @c EINA_FALSE otherwise
619  *
620  * @see ewk_view_device_pixel_ratio_get()
621  */
622 EAPI Eina_Bool ewk_view_device_pixel_ratio_set(Evas_Object *o, float ratio);
623
624 /**
625  * Sets the theme path that will be used by this view.
626  *
627  * This also sets the theme on the main frame. As frames inherit theme
628  * from their parent, this will have all frames with unset theme to
629  * use this one.
630  *
631  * @param o view object to change theme
632  * @param path theme path
633  */
634 EAPI void ewk_view_theme_set(Evas_Object *o, const char *path);
635
636 /**
637  * Gets the theme set on this view.
638  *
639  * This returns the value set by ewk_view_theme_set().
640  *
641  * @param o view object to get theme path
642  *
643  * @return the theme path, may be @c NULL if not set
644  */
645 EAPI const char *ewk_view_theme_get(const Evas_Object *o);
646
647 /**
648  * Gets the current custom character encoding name.
649  *
650  * @param o view object to get the current encoding
651  *
652  * @return @c eina_stringshare containing the current encoding, or
653  *         @c NULL if it's not set
654  */
655 EAPI const char *ewk_view_custom_encoding_get(const Evas_Object *o);
656
657 /**
658  * Sets the custom character encoding and reloads the page.
659  *
660  * @param o view to set the encoding
661  * @param encoding the new encoding to set or @c NULL to restore the default one
662  *
663  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
664  */
665 EAPI Eina_Bool ewk_view_custom_encoding_set(Evas_Object *o, const char *encoding);
666
667 /**
668  * Gets the current user agent string.
669  *
670  * @param o view object to get the current user agent
671  *
672  * @return @c eina_stringshare containing the current user agent, or
673  *         @c default user agent if it's not set
674  */
675 EAPI const char *ewk_view_user_agent_get(const Evas_Object *o);
676
677 /**
678  * Sets the user agent string.
679  *
680  * @param o view to set the user agent
681  * @param user_agent the user agent string to set or @c NULL to restore the default one
682  *
683  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
684  */
685 EAPI Eina_Bool ewk_view_user_agent_set(Evas_Object *o, const char *encoding);
686
687 /**
688  * Searches and hightlights the given string in the document.
689  *
690  * @param o view object to find text
691  * @param text text to find
692  * @param options options to find
693  * @param max_match_count maximum match count to find, unlimited if 0
694  *
695  * @return @c EINA_TRUE on success, @c EINA_FALSE on errors
696  */
697 EAPI Eina_Bool ewk_view_text_find(Evas_Object *o, const char *text, Ewk_Find_Options options, unsigned max_match_count);
698
699 /**
700  * Clears the highlight of searched text.
701  *
702  * @param o view object to find text
703  *
704  * @return @c EINA_TRUE on success, @c EINA_FALSE on errors
705  */
706 EAPI Eina_Bool ewk_view_text_find_highlight_clear(Evas_Object *o);
707
708 /**
709  * Counts the given string in the document.
710  *
711  * This does not highlight the matched string and just count the matched string.
712  *
713  * As the search is carried out through the whole document,
714  * only the following EWK_FIND_OPTIONS are valid.
715  *  - EWK_FIND_OPTIONS_NONE
716  *  - EWK_FIND_OPTIONS_CASE_INSENSITIVE
717  *  - EWK_FIND_OPTIONS_AT_WORD_START
718  *  - EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START
719  *
720  * The "text,found" callback will be called with the number of matched string.
721  *
722  * @param o view object to find text
723  * @param text text to find
724  * @param options options to find
725  * @param max_match_count maximum match count to find, unlimited if 0
726  *
727  * @return @c EINA_TRUE on success, @c EINA_FALSE on errors
728  */
729 EAPI Eina_Bool ewk_view_text_matches_count(Evas_Object *o, const char *text, Ewk_Find_Options options, unsigned max_match_count);
730
731 /**
732  * Sets whether the ewk_view supports the mouse events or not.
733  *
734  * The ewk_view will support the mouse events if EINA_TRUE or not support the
735  * mouse events otherwise. The default value is EINA_TRUE.
736  *
737  * @param o view object to enable/disable the mouse events
738  * @param enabled a state to set
739  *
740  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
741  */
742 EAPI Eina_Bool ewk_view_mouse_events_enabled_set(Evas_Object *o, Eina_Bool enabled);
743
744 /**
745  * Queries if the ewk_view supports the mouse events.
746  *
747  * @param o view object to query if the mouse events are enabled
748  *
749  * @return @c EINA_TRUE if the mouse events are enabled or @c EINA_FALSE otherwise
750  */
751 EAPI Eina_Bool ewk_view_mouse_events_enabled_get(const Evas_Object *o);
752
753 /**
754  * Feeds the touch event to the view.
755  *
756  * @param o view object to feed touch event
757  * @param type the type of touch event
758  * @param points a list of points (Ewk_Touch_Point) to process
759  * @param modifiers an Evas_Modifier handle to the list of modifier keys
760  *        registered in the Evas. Users can get the Evas_Modifier from the Evas
761  *        using evas_key_modifier_get() and can set each modifier key using
762  *        evas_key_modifier_on() and evas_key_modifier_off()
763  *
764  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
765  */
766 EAPI Eina_Bool ewk_view_feed_touch_event(Evas_Object *o, Ewk_Touch_Event_Type type, const Eina_List *points, const Evas_Modifier *modifiers);
767
768 /**
769  * Sets whether the ewk_view supports the touch events or not.
770  *
771  * The ewk_view will support the touch events if @c EINA_TRUE or not support the
772  * touch events otherwise. The default value is @c EINA_FALSE.
773  *
774  * @param o view object to enable/disable the touch events
775  * @param enabled a state to set
776  *
777  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
778  */
779 EAPI Eina_Bool ewk_view_touch_events_enabled_set(Evas_Object *o, Eina_Bool enabled);
780
781 /**
782  * Queries if the ewk_view supports the touch events.
783  *
784  * @param o view object to query if the touch events are enabled
785  *
786  * @return @c EINA_TRUE if the touch events are enabled or @c EINA_FALSE otherwise
787  */
788 EAPI Eina_Bool ewk_view_touch_events_enabled_get(const Evas_Object *o);
789
790 /**
791  * Show the inspector to debug a web page.
792  *
793  * @param o The view to show the inspector.
794  *
795  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
796  *
797  * @see ewk_settings_developer_extras_enabled_set()
798  */
799 EAPI Eina_Bool ewk_view_inspector_show(Evas_Object *o);
800
801 /**
802  * Close the inspector
803  *
804  * @param o The view to close the inspector.
805  *
806  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
807  */
808 EAPI Eina_Bool ewk_view_inspector_close(Evas_Object *o);
809
810 /**
811  * Set pagination mode to the current web page.
812  *
813  * @param o view object to set the pagenation mode
814  * @param mode The Ewk_Pagination_Mode to set
815  *
816  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
817  */
818 EAPI Eina_Bool ewk_view_pagination_mode_set(Evas_Object *o, Ewk_Pagination_Mode mode);
819
820 /**
821  * Get pagination mode of the current web page. 
822  * 
823  * The default value is EWK_PAGINATION_MODE_UNPAGINATED.
824  * When error occured, EWK_PAGINATION_MODE_INVALID is returned. 
825  *
826  * @param o view object to get the pagination mode
827  *
828  * @return The pagination mode of the current web page
829  */
830 EAPI Ewk_Pagination_Mode ewk_view_pagination_mode_get(const Evas_Object *o);
831
832 /**
833  * Exit fullscreen mode.
834  *
835  * @param o view object where to exit fullscreen
836  *
837  * @return @c EINA_TRUE if successful, @c EINA_FALSE otherwise
838  */
839 EAPI Eina_Bool ewk_view_fullscreen_exit(Evas_Object *o);
840
841 /**
842  * Sets whether the ewk_view background matches page background color.
843  *
844  * If enabled sets view background color close to page color on page load.
845  * This helps to reduce flicker on page scrolling and repainting in places
846  * where page content is not ready for painting.
847  * View background color can interfere with semi-transparent pages and is
848  * disabled by default.
849  *
850  * @param o view object to enable/disable background matching
851  * @param enabled a state to set
852  *
853  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
854  */
855 EAPI void ewk_view_draws_page_background_set(Evas_Object *o, Eina_Bool enabled);
856
857 /**
858  * Get contents of the current web page.
859  *
860  * @param o view object to get the page contents
861  * @param type type of the page contents
862  * @param callback callback function to be called when the operation is finished
863  * @param user_data user data to be passed to the callback function
864  *
865  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
866  */
867 EAPI Eina_Bool ewk_view_page_contents_get(const Evas_Object *o, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback, void *user_data);
868
869 /**
870  * Requests execution of the given script.
871  *
872  * The result value for the execution can be retrieved from the asynchronous callback.
873  *
874  * @param o The view to execute script
875  * @param script JavaScript to execute
876  * @param callback The function to call when the execution is completed, may be @c NULL
877  * @param user_data User data, may be @c NULL
878  *
879  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
880  */
881 EAPI Eina_Bool ewk_view_script_execute(Evas_Object *o, const char *script, Ewk_View_Script_Execute_Cb callback, void *user_data);
882
883 /**
884  * Sets whether the ewk_view use fixed layout or not.
885  *
886  * The webview will use fixed layout if EINA_TRUE or not use it otherwise.
887  * The default value is EINA_FALSE.
888  *
889  * @param o view object to set fixed layout
890  * @param enabled a state to set
891  *
892  * @return @c EINA_TRUE on success, or @c EINA_FALSE on failure
893  */
894 EAPI Eina_Bool ewk_view_layout_fixed_set(Evas_Object *o, Eina_Bool enabled);
895
896 /**
897  * Queries if the webview is using fixed layout.
898  *
899  * @param o view object to query the status
900  *
901  * @return @c EINA_TRUE if the webview is using fixed layout, or
902  *         @c EINA_FALSE otherwise
903  */
904 EAPI Eina_Bool ewk_view_layout_fixed_get(const Evas_Object *o);
905
906 #ifdef __cplusplus
907 }
908 #endif
909 #endif // ewk_view_h