blob: b196332f2b71c83866fe5d0d1cba1bdb23966679 [file] [log] [blame]
/*
Copyright (C) 2009-2010 ProFUSION embedded systems
Copyright (C) 2009-2010 Samsung Electronics
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/**
* @file ewk_frame.h
* @brief WebKit frame smart object.
*
* This object is the low level access to WebKit-EFL browser
* component. It represents both the main and internal frames that
* HTML pages contain.
*
* Every ewk_view has at least one frame, called "main frame" and
* retrieved with ewk_view_frame_main_get(). One can retrieve frame's
* owner view with ewk_frame_view_get(). Parent frame can be retrieved
* with standard smart object's evas_object_smart_parent_get().
* Children can be accessed with ewk_frame_children_iterator_new() or
* ewk_frame_child_find().
*
* The following signals (see evas_object_smart_callback_add()) are emitted:
*
* - "contents,size,changed", Evas_Coord[2]: reports contents size
* were changed due new layout, script actions or any other events.
* - "editorclient,contents,changed", void: reports that editor client's
* contents were changed
* - "icon,changed", void: frame favicon changed.
* - "intent,new", Ewk_Intent_Request*: reports new intent.
* - "intent,service,register", Ewk_Intent_Service_Info*: reports new intent service registration.
* - "load,committed", void: reports load committed.
* - "load,document,finished", void: frame finished loading the document.
* - "load,error", const Ewk_Frame_Load_Error*: reports load failed
* and it gives a pointer to structure defining the error as an argument.
* - "load,finished", const Ewk_Frame_Load_Error*: reports load
* finished and it gives @c NULL on success or pointer to
* structure defining the error.
* - "load,resource,finished", unsigned long*: reports resource load finished and it gives
* a pointer to its identifier.
* - "load,resource,failed", Ewk_Frame_Load_Error*: reports resource load failure and it
* gives a pointer to structure defining the error as an argument.
* - "load,firstlayout,finished", void: frame finished first layout.
* - "load,nonemptylayout,finished", void: frame finished first
* non-empty layout.
* - "load,progress", double*: load progress is changed (overall value
* from 0.0 to 1.0, connect to individual frames for fine grained).
* - "load,provisional", void: frame started provisional load.
* - "load,provisional,failed", Ewk_Frame_Load_Error*: frame provisional load failed.
* - "load,started", void: frame started loading the document.
* - "mixedcontent,displayed", void: frame has loaded and displayed mixed content.
* - "mixedcontent,run", void: frame has loaded and run mixed content.
* - "navigation,first", void: first navigation was occurred.
* - "redirect,cancelled", void: client redirect was cancelled.
* - "redirect,load,provisional", void: received server redirect for provisional load.
* - "redirect,requested", const char*: url of the client redirect that will be performed.
* - "resource,request,new", Ewk_Frame_Resource_Request*: reports that
* there's a new resource request.
* - "resource,request,willsend", Ewk_Frame_Resource_Messages*: a resource will be requested.
* and the possible redirect response.
* - "resource,response,received", Ewk_Frame_Resource_Response*: reports that a response
* to a resource request was received.
* - "state,save", void: frame's state will be saved as a history item.
* - "title,changed", Ewk_Text_With_Direction*: title of the main frame was changed.
* - "uri,changed", const char*: uri of the main frame was changed.
* - "xss,detected", Ewk_Frame_Xss_Notification*: reflected XSS is encountered in the page and suppressed.
*/
#ifndef ewk_frame_h
#define ewk_frame_h
#include "ewk_intent.h"
#include "ewk_security_origin.h"
#include <Evas.h>
#ifdef __cplusplus
extern "C" {
#endif
/// Creates a type name for _Ewk_Frame_Load_Error.
typedef struct _Ewk_Frame_Load_Error Ewk_Frame_Load_Error;
/**
* @brief Structure used to report load errors.
*
* Load errors are reported as signal by ewk_view. All the strings are
* temporary references and should @b not be used after the signal
* callback returns. If it's required, make copies with strdup() or
* eina_stringshare_add() (they are not even guaranteed to be
* stringshared, so must use eina_stringshare_add() and not
* eina_stringshare_ref()).
*/
struct _Ewk_Frame_Load_Error {
int code; /**< numeric error code */
Eina_Bool is_cancellation; /**< if load failed because it was canceled */
const char *domain; /**< error domain name */
const char *description; /**< error description already localized */
const char *failing_url; /**< the url that failed to load */
unsigned long resource_identifier; /**< identifier of resource */
Evas_Object *frame; /**< frame where the failure happened */
};
/// Creates a type name for _Ewk_Frame_Resource_Request.
typedef struct _Ewk_Frame_Resource_Request Ewk_Frame_Resource_Request;
/**
* @brief Structure containing details about a resource request.
*
* Details given before a resource is loaded on a given frame. It's used in
* Ewk_Frame_Resource_Messages to inform about the details of a resource request.
*/
struct _Ewk_Frame_Resource_Request {
const char *url; /**< url of the resource */
const char *first_party; /**< first party for cookies, can not be changed */
const char *http_method; /**< http method, can not be changed */
const unsigned long identifier; /**< identifier of resource, can not be changed */
Evas_Object *frame; /**< frame where the resource is requested */
Eina_Bool is_main_frame_request; /** < indicates if the request is for the main frame */
};
/// Creates a type name for _Ewk_Frame_Resource_Response.
typedef struct _Ewk_Frame_Resource_Response Ewk_Frame_Resource_Response;
/**
* @brief Structure containing details about a response to a resource request.
*
* Details given in the response to a resource request. It's used by
* ewk_frame_response_received() to inform about the details of a response.
*/
struct _Ewk_Frame_Resource_Response {
const char *url; /**< url of the resource */
int status_code; /**< http status code */
unsigned long identifier; /**< identifier of resource */
const char *mime_type; /**< MIME type of the resource */
};
/// Creates a type name for _Ewk_Frame_Resource_Messages.
typedef struct _Ewk_Frame_Resource_Messages Ewk_Frame_Resource_Messages;
struct _Ewk_Frame_Resource_Messages {
Ewk_Frame_Resource_Request *request; /**< resource request */
Ewk_Frame_Resource_Response *redirect_response; /**< redirect response, can not be changed */
};
/// Enum containing text directionality values.
typedef enum {
EWK_TEXT_DIRECTION_DEFAULT, /**< Natural writing direction ("inherit") */
EWK_TEXT_DIRECTION_LEFT_TO_RIGHT,
EWK_TEXT_DIRECTION_RIGHT_TO_LEFT
} Ewk_Text_Direction;
/// Creates a type name for Ewk_Text_With_Direction.
typedef struct _Ewk_Text_With_Direction Ewk_Text_With_Direction;
struct _Ewk_Text_With_Direction {
const char *string;
Ewk_Text_Direction direction;
};
/// Creates a type name for Ewk_Frame_Xss_Notification.
typedef struct _Ewk_Frame_Xss_Notification Ewk_Frame_Xss_Notification;
/**
* @brief Structure used to report reflected XSS is encountered in the page.
*
* This structure contains information received from the XSSAuditor when reflected XSS
* is encountered in the page. The string is temporary reference and should @b not
* be used after the signal callback returns. If it's required, make a copy of it.
*/
struct _Ewk_Frame_Xss_Notification {
const char *insecure_url; /**< insecure url of the document */
Eina_Bool is_entire_page_blocked; /** < indicates if the entire page was blocked by XSSAuditor */
};
/// Creates a type name for Ewk_Intent_Service_Info.
typedef struct _Ewk_Intent_Service_Info Ewk_Intent_Service_Info;
struct _Ewk_Intent_Service_Info {
const char *action; /**< an opaque string indicating the behavior class the service supports. */
const char *type; /**< a string specifying the type of payload data the service can accept. */
const char *href; /**< service URI. */
const char *title; /**< A human-readable title for the service. */
const char *disposition; /**< A hint about whether the service can be run "inline" or in a new "window". */
};
/// Enum containing hit test data types
typedef enum {
EWK_HIT_TEST_RESULT_CONTEXT_DOCUMENT = 1 << 1,
EWK_HIT_TEST_RESULT_CONTEXT_LINK = 1 << 2,
EWK_HIT_TEST_RESULT_CONTEXT_IMAGE = 1 << 3,
EWK_HIT_TEST_RESULT_CONTEXT_MEDIA = 1 << 4,
EWK_HIT_TEST_RESULT_CONTEXT_SELECTION = 1 << 5,
EWK_HIT_TEST_RESULT_CONTEXT_EDITABLE = 1 << 6
} Ewk_Hit_Test_Result_Context;
/// Enum containing navigation types
typedef enum {
EWK_NAVIGATION_TYPE_LINK_CLICKED,
EWK_NAVIGATION_TYPE_FORM_SUBMITTED,
EWK_NAVIGATION_TYPE_BACK_FORWARD,
EWK_NAVIGATION_TYPE_RELOAD,
EWK_NAVIGATION_TYPE_FORM_RESUBMITTED,
EWK_NAVIGATION_TYPE_OTHER
} Ewk_Navigation_Type;
/// Creates a type name for _Ewk_Hit_Test.
typedef struct _Ewk_Hit_Test Ewk_Hit_Test;
/// Structure used to report hit test result.
struct _Ewk_Hit_Test {
int x; /**< the horizontal position of the hit test */
int y; /**< the vertical position of the hit test */
struct {
int x, y, w, h;
} bounding_box; /**< DEPRECATED, see ewk_frame_hit_test_new() */
Ewk_Text_With_Direction title; /**< title of the element */
const char *alternate_text; /**< the alternate text for image, area, input and applet */
Evas_Object *frame; /**< the pointer to frame where hit test was requested */
struct {
const char *text; /**< the text of the link */
const char *url; /**< URL of the link */
const char *title; /**< the title of link */
Evas_Object *target_frame;
} link;
const char *image_uri;
const char *media_uri;
Ewk_Hit_Test_Result_Context context;
};
/// Represents actions of touch events.
typedef enum {
EWK_TOUCH_START,
EWK_TOUCH_MOVE,
EWK_TOUCH_END,
EWK_TOUCH_CANCEL
} Ewk_Touch_Event_Type;
/// Represents states of touch events.
typedef enum {
EWK_TOUCH_POINT_RELEASED,
EWK_TOUCH_POINT_PRESSED,
EWK_TOUCH_POINT_MOVED,
EWK_TOUCH_POINT_STATIONARY,
EWK_TOUCH_POINT_CANCELLED,
EWK_TOUCH_POINT_END
} Ewk_Touch_Point_Type;
/// Creates a type name for _Ewk_Touch_Point.
typedef struct _Ewk_Touch_Point Ewk_Touch_Point;
/// Represents a touch point.
struct _Ewk_Touch_Point {
unsigned int id; /**< identifier of the touch event */
int x; /**< the horizontal position of the touch event */
int y; /**< the horizontal position of the touch event */
Ewk_Touch_Point_Type state; /**< state of the touch event */
};
typedef enum {
EWK_TEXT_SELECTION_NONE,
EWK_TEXT_SELECTION_CARET,
EWK_TEXT_SELECTION_RANGE
} Ewk_Text_Selection_Type;
/**
* Represents the validity of a X.509 certificate related to the current frame.
*
* A certificate is considered untrusted when any problem is found in it: it may have
* expired, the certificate's Common Name does not match the current host, the certificate
* does not validate against the current set of root CA certificates etc.
*
* @sa ewk_frame_certificate_status_get, ewk_network_tls_ca_certificates_path_set
*/
typedef enum {
EWK_CERTIFICATE_STATUS_NO_CERTIFICATE = 1 << 1, /**< No certificate provided (non-HTTPS connection). */
EWK_CERTIFICATE_STATUS_UNTRUSTED = 1 << 2, /**< The certificate provided is not trusted. */
EWK_CERTIFICATE_STATUS_TRUSTED = 1 << 3 /**< The certificate is valid and fully trusted. */
} Ewk_Certificate_Status;
/**
* Retrieves the ewk_view object that owns this frame.
*
* @param o frame object to get view object
*
* @return view object or @c NULL on failure
*/
EAPI Evas_Object *ewk_frame_view_get(const Evas_Object *o);
/**
* Retrieves the Ewk_Security_Origin of this frame.
*
* The returned object should be freed by ewk_security_origin_free().
*
* @param o frame object to get the security origin
*
* @return security origin object
*/
EAPI Ewk_Security_Origin *ewk_frame_security_origin_get(const Evas_Object *o);
/**
* Returns a new iterator over all direct children frames.
*
* Keep frame object intact while iteration happens otherwise frame
* may be destroyed while iterated.
*
* Iteration results are Evas_Object*, so give eina_iterator_next() a
* pointer to it.
*
* Returned iterator should be freed by eina_iterator_free().
*
* @param o frame object to create the iterator
*
* @return a newly allocated iterator on sucess, or @c NULL if not possible to
* create the iterator
*/
EAPI Eina_Iterator *ewk_frame_children_iterator_new(Evas_Object *o);
/**
* Finds a child frame by its name, recursively.
*
* For pre-defined names, returns @a o if @a name is "_self" or
* "_current", returns @a o's parent frame if @a name is "_parent",
* and returns the main frame if @a name is "_top". Also returns @a o
* if it is the main frame and @a name is either "_parent" or
* "_top". For other names, this function returns the first frame that
* matches @a name. This function searches @a o and its descendents
* first, then @a o's parent and its children moving up the hierarchy
* until a match is found. If no match is found in @a o's hierarchy,
* this function will search for a matching frame in other main frame
* hierarchies.
*
* @param o frame object to find a child frame
* @param name child frame name
*
* @return child frame of the given frame, or @c NULL if the the child wasn't found
*/
EAPI Evas_Object *ewk_frame_child_find(Evas_Object *o, const char *name);
/**
* Asks the main frame to load the given URI.
*
* @param o frame object to load uri
* @param uri uniform resource identifier to load
*
* @return @c EINA_TRUE on success, or @c EINA_FALSE on failure
*/
EAPI Eina_Bool ewk_frame_uri_set(Evas_Object *o, const char *uri);
/**
* Gets the uri of this frame.
*
* It returns an internal string and should not
* be modified. The string is guaranteed to be stringshared.
*
* @param o frame object to get uri
*
* @return frame uri on success or @c NULL on failure
*/
EAPI const char *ewk_frame_uri_get(const Evas_Object *o);
/**
* Gets the title of this frame.
*
* It returns an internal string and should not
* be modified. The string is guaranteed to be stringshared.
*
* @param o frame object to get title
*
* @return frame title on success or @c NULL on failure
*/
EAPI const Ewk_Text_With_Direction *ewk_frame_title_get(const Evas_Object *o);
/**
* Gets the name of this frame.
*
* It returns an internal string and should not
* be modified. The string is guaranteed to be stringshared.
*
* @param o frame object to get name
*
* @return frame name on success or @c NULL on failure
*/
EAPI const char *ewk_frame_name_get(const Evas_Object *o);
/**
* Gets last known contents size.
*
* @param o frame object to get contents size
* @param w pointer to store contents size width, may be @c NULL
* @param h pointer to store contents size height, may be @c NULL
*
* @return @c EINA_TRUE on success or @c EINA_FALSE on failure and
* @a w and @a h will be zeroed
*/
EAPI Eina_Bool ewk_frame_contents_size_get(const Evas_Object *o, Evas_Coord *w, Evas_Coord *h);
/**
* Requests loading the given contents in this frame.
*
* @param o frame object to load document
* @param contents what to load into frame
* @param contents_size size of @a contents (in bytes),
* if @c 0 is given, length of @a contents is used
* @param mime_type type of @a contents data, if @c NULL is given "text/html" is assumed
* @param encoding encoding for @a contents data, if @c NULL is given "UTF-8" is assumed
* @param base_uri base uri to use for relative resources, may be @c NULL,
* if provided @b must be an absolute uri
*
* @return @c EINA_TRUE on successful request, @c EINA_FALSE on errors
*/
EAPI Eina_Bool ewk_frame_contents_set(Evas_Object *o, const char *contents, size_t contents_size, const char *mime_type, const char *encoding, const char *base_uri);
/**
* Requests loading alternative contents for unreachable URI in this frame.
*
* This is similar to ewk_frame_contents_set(), but is used when some
* URI was failed to load, using the provided content instead. The main
* difference is that back-forward navigation list is not changed.
*
* @param o frame object to load alternative content
* @param contents what to load into frame, must @b not be @c NULL
* @param contents_size size of @a contents (in bytes),
* if @c 0 is given, length of @a contents is used
* @param mime_type type of @a contents data, if @c NULL is given "text/html" is assumed
* @param encoding encoding used for @a contents data, if @c NULL is given "UTF-8" is assumed
* @param base_uri base URI to use for relative resources, may be @c NULL,
* if provided must be an absolute uri
* @param unreachable_uri the URI that failed to load and is getting the
* alternative representation, must @b not be @c NULL
*
* @return @c EINA_TRUE on successful request, @c EINA_FALSE on errors
*/
EAPI Eina_Bool ewk_frame_contents_alternate_set(Evas_Object *o, const char *contents, size_t contents_size, const char *mime_type, const char *encoding, const char *base_uri, const char *unreachable_uri);
/**
* Requests execution of the given script.
*
* The returned string @b should be freed by eina_stringshare_del() after use.
*
* @param o frame object to execute script
* @param script Java Script to execute
*
* @return newly allocated string for result or @c NULL if the result cannot be converted to string or failure
*/
EAPI const char *ewk_frame_script_execute(Evas_Object *o, const char *script);
/**
* Queries if the frame is editable.
*
* @param o the frame object to query editable state
*
* @return @c EINA_TRUE if the frame is editable, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_editable_get(const Evas_Object *o);
/**
* Sets editable state for frame.
*
* @param o the frame object to set editable state
* @param editable a new state to set
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_editable_set(Evas_Object *o, Eina_Bool editable);
/**
* Gets the copy of the selected text.
*
* The returned string @b should be freed by eina_stringshare_del() after use.
*
* @param o the frame object to get selected text
*
* @return a newly allocated string or @c NULL if nothing is selected or on failure
*/
EAPI const char *ewk_frame_selection_get(const Evas_Object *o);
/**
* Searches the given string in a document.
*
* @param o frame object where to search the text
* @param string reference string to search
* @param case_sensitive if search should be case sensitive or not
* @param forward if search is from cursor and on or backwards
* @param wrap if search should wrap at the end
*
* @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not or failure
*/
EAPI Eina_Bool ewk_frame_text_search(const Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
/**
* Marks matches the given string in a document.
*
* @param o frame object where to search text
* @param string reference string to match
* @param case_sensitive if match should be case sensitive or not
* @param highlight if matches should be highlighted
* @param limit maximum amount of matches, or zero to unlimited
*
* @return number of matched @a string
*/
EAPI unsigned int ewk_frame_text_matches_mark(Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
/**
* Unmarks all marked matches in a document.
* Reverses the effect of ewk_frame_text_matches_mark().
*
* @param o frame object where to unmark matches
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure
*/
EAPI Eina_Bool ewk_frame_text_matches_unmark_all(Evas_Object *o);
/**
* Sets whether matches marked with ewk_frame_text_matches_mark() should be highlighted.
*
* @param o frame object where to set if matches are highlighted or not
* @param highlight @c EINA_TRUE if matches are highlighted, @c EINA_FALSE if not
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure
*/
EAPI Eina_Bool ewk_frame_text_matches_highlight_set(Evas_Object *o, Eina_Bool highlight);
/**
* Returns whether matches marked with ewk_frame_text_matches_mark() are highlighted.
*
* @param o frame object to query if matches are highlighted or not
*
* @return @c EINA_TRUE if matches are highlighted, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_text_matches_highlight_get(const Evas_Object *o);
/**
* Returns the position of the n-th matched text in the frame.
*
* @param o frame object where matches are marked
* @param n index of element
* @param x the pointer to store the horizontal position of @a n matched text, may be @c NULL
* @param y the pointer to store the vertical position of @a n matched text, may be @c NULL
*
* @return @c EINA_TRUE on success, @c EINA_FALSE when no matches were found or
* @a n is bigger than search results or on failure
*/
EAPI Eina_Bool ewk_frame_text_matches_nth_pos_get(const Evas_Object *o, size_t n, int *x, int *y);
/**
* Asks frame to stop loading.
*
* @param o frame object to stop loading
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_stop(Evas_Object *o);
/**
* Asks frame to reload current document.
*
* @param o frame object to reload current document
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*
* @see ewk_frame_reload_full()
*/
EAPI Eina_Bool ewk_frame_reload(Evas_Object *o);
/**
* Asks frame to fully reload current document, using no previous caches.
*
* @param o frame object to reload current document
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_reload_full(Evas_Object *o);
/**
* Asks the frame to navigate back in the history.
*
* @param o frame object to navigate back
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*
* @see ewk_frame_navigate()
*/
EAPI Eina_Bool ewk_frame_back(Evas_Object *o);
/**
* Asks frame to navigate forward in the history.
*
* @param o frame object to navigate forward
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*
* @see ewk_frame_navigate()
*/
EAPI Eina_Bool ewk_frame_forward(Evas_Object *o);
/**
* Navigates back or forward in the history.
*
* @param o frame object to navigate
* @param steps if positive navigates that amount forwards, if negative
* does backwards
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_navigate(Evas_Object *o, int steps);
/**
* Queries if it's possible to navigate backwards one item in the history.
*
* @param o frame object to query if backward navigation is possible
*
* @return @c EINA_TRUE if it's possible to navigate backwards one item in the history, @c EINA_FALSE otherwise
*
* @see ewk_frame_navigate_possible()
*/
EAPI Eina_Bool ewk_frame_back_possible(Evas_Object *o);
/**
* Queries if it's possible to navigate forwards one item in the history.
*
* @param o frame object to query if forward navigation is possible
*
* @return @c EINA_TRUE if it's possible to navigate forwards in the history, @c EINA_FALSE otherwise
*
* @see ewk_frame_navigate_possible()
*/
EAPI Eina_Bool ewk_frame_forward_possible(Evas_Object *o);
/**
* Queries if it's possible to navigate given @a steps in the history.
*
* @param o frame object to query if is possible to navigate @a steps in the history
* @param steps positive value navigates that amount forwards, negative value
* does backwards
*
* @return @c EINA_TRUE if it's possible to navigate @a steps in the history, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_navigate_possible(Evas_Object *o, int steps);
/**
* Gets the current page zoom level used by this frame.
*
* @param o frame object to get zoom level
*
* @return page zoom level for the frame or @c -1.0 on failure
*
* @see ewk_frame_text_zoom_get()
*/
EAPI float ewk_frame_page_zoom_get(const Evas_Object *o);
/**
* Sets the current page zoom level used by this frame.
*
* @param o frame object to change zoom level
* @param page_zoom_factor a new zoom level
*
* @return @c EINA_TRUE on success or @c EINA_FALSE on failure
*
* @see ewk_frame_text_zoom_set()
*/
EAPI Eina_Bool ewk_frame_page_zoom_set(Evas_Object *o, float page_zoom_factor);
/**
* Gets the current text zoom level used by this frame.
*
* @param o frame object to get zoom level
*
* @return text zoom level for the frame or @c -1.0 on failure
*
* @see ewk_frame_page_zoom_get()
*/
EAPI float ewk_frame_text_zoom_get(const Evas_Object *o);
/**
* Sets the current text zoom level used by this frame.
*
* @param o frame object to change zoom level
* @param textZoomFactor a new zoom level
*
* @return @c EINA_TRUE on success or @c EINA_FALSE on failure
*
* @see ewk_frame_page_zoom_set()
*/
EAPI Eina_Bool ewk_frame_text_zoom_set(Evas_Object *o, float text_zoom_factor);
/**
* Frees hit test instance created by ewk_frame_hit_test_new().
*
* @param hit_test instance
*/
EAPI void ewk_frame_hit_test_free(Ewk_Hit_Test *hit_test);
/**
* Creates a new hit test for the given frame and point.
*
* The returned object should be freed by ewk_frame_hit_test_free().
*
* @param o frame object to do hit test on
* @param x the horizontal position to query
* @param y the vertical position to query
*
* @return a newly allocated hit test on success, @c NULL otherwise
*/
EAPI Ewk_Hit_Test *ewk_frame_hit_test_new(const Evas_Object *o, int x, int y);
/**
* Delivers an intent to a target service page in the frame.
*
* @param o frame object to deliver the intent to.
* @param ewkIntent intent object to deliver.
*/
EAPI void ewk_frame_intent_deliver(const Evas_Object *o, Ewk_Intent *ewk_intent);
/**
* Sets a relative scroll of the given frame.
*
* This function does scroll @a dx and @a dy pixels
* from the current position of scroll.
*
* @param o frame object to scroll
* @param dx horizontal offset to scroll
* @param dy vertical offset to scroll
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_scroll_add(Evas_Object *o, int dx, int dy);
/**
* Sets an absolute scroll of the given frame.
*
* Both values are from zero to the contents size minus the viewport
* size. See ewk_frame_scroll_size_get().
*
* @param o frame object to scroll
* @param x horizontal position to scroll
* @param y vertical position to scroll
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_scroll_set(Evas_Object *o, int x, int y);
/**
* Gets the possible scroll size of the given frame.
*
* Possible scroll size is contents size minus the viewport
* size. It's the last allowed value for ewk_frame_scroll_set()
*
* @param o frame object to get scroll size
* @param w the pointer to store the horizontal size that is possible to scroll,
* may be @c NULL
* @param h the pointer to store the vertical size that is possible to scroll,
* may be @c NULL
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise and
* values are zeroed
*/
EAPI Eina_Bool ewk_frame_scroll_size_get(const Evas_Object *o, int *w, int *h);
/**
* Gets the current scroll position of given frame.
*
* @param o frame object to get the current scroll position
* @param x the pointer to store the horizontal position, may be @c NULL
* @param y the pointer to store the vertical position. may be @c NULL
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise and
* values are zeroed.
*/
EAPI Eina_Bool ewk_frame_scroll_pos_get(const Evas_Object *o, int *x, int *y);
/**
* Gets the visible content geometry of the frame.
*
* @param o frame object to query visible content geometry
* @param include_scrollbars whenever to include scrollbars size
* @param x the pointer to store the horizontal position, may be @c NULL
* @param y the pointer to store the vertical position, may be @c NULL
* @param w the pointer to store width, may be @c NULL
* @param h the pointer to store height, may be @c NULL
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise and
* values are zeroed
*/
EAPI Eina_Bool ewk_frame_visible_content_geometry_get(const Evas_Object *o, Eina_Bool include_scrollbars, int *x, int *y, int *w, int *h);
/**
* Queries if the frame should be repainted completely.
*
* Function tells if dirty areas should be repainted
* even if they are out of the screen.
*
* @param o frame object to query if the frame should be repainted completely
*
* @return @c EINA_TRUE if any dirty areas should be repainted, @c EINA_FALSE
* otherwise
*/
EAPI Eina_Bool ewk_frame_paint_full_get(const Evas_Object *o);
/**
* Sets if the frame should be repainted completely.
*
* Function sets if dirty areas should be repainted
* even if they are out of the screen.
*
* @param o frame object to set if the frame should be repainted completely
* @param flag @c EINA_TRUE to repaint the frame completely,
* @c EINA_FALSE if not
*/
EAPI void ewk_frame_paint_full_set(Evas_Object *o, Eina_Bool flag);
/**
* Feeds the focus in event to the frame.
*
* @param o frame object to feed focus
*
* @return @c EINA_TRUE if the focus was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_focus_in(Evas_Object *o);
/**
* Feeds the focus out event to the frame.
*
* @param o frame object to remove focus
*
* @return @c EINA_FALSE since the feature is not implemented
*/
EAPI Eina_Bool ewk_frame_feed_focus_out(Evas_Object *o);
/**
* Gets the geometry, relative to the frame, of the focused element in the
* document.
*
* @param o frame object containing the focused element
* @param x pointer where to store the X value of the geometry, may be @c NULL
* @param x pointer where to store the Y value of the geometry, may be @c NULL
* @param x pointer where to store width of the geometry, may be @c NULL
* @param x pointer where to store height of the geometry, may be @c NULL
*
* @return @c EINA_TRUE if the frame contains the currently focused element and
* its geometry was correctly fetched, @c EINA_FALSE in any other case
*/
EAPI Eina_Bool ewk_frame_focused_element_geometry_get(const Evas_Object *o, int *x, int *y, int *w, int *h);
/**
* Feeds the mouse wheel event to the frame.
*
* @param o frame object to feed the mouse wheel event
* @param ev the mouse wheel event
*
* @return @c EINA_TRUE if the mouse wheel event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_mouse_wheel(Evas_Object *o, const Evas_Event_Mouse_Wheel *ev);
/**
* Feeds the mouse down event to the frame.
*
* @param o frame object to feed the mouse down event
* @param ev the mouse down event
*
* @return @c EINA_TRUE if the mouse down event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_mouse_down(Evas_Object *o, const Evas_Event_Mouse_Down *ev);
/**
* Feeds the mouse up event to the frame.
*
* @param o frame object to feed the mouse up event
* @param ev the mouse up event
*
* @return @c EINA_TRUE if the mouse up event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_mouse_up(Evas_Object *o, const Evas_Event_Mouse_Up *ev);
/**
* Feeds the mouse move event to the frame.
*
* @param o frame object to feed the mouse move event
* @param ev the mouse move event
*
* @return @c EINA_TRUE if the mouse move event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_mouse_move(Evas_Object *o, const Evas_Event_Mouse_Move *ev);
/**
* Feeds the touch event to the frame.
*
* @param o frame object to feed touch event
* @param action the action of touch event
* @param points a list of points (Ewk_Touch_Point) to process
* @param metaState modifiers state of touch event. Users are expected to pass ORed values of the ECORE_EVENT_MODIFIER macros in Ecore_Input.h, such as ECORE_EVENT_MODIFIER_ALT or ECORE_EVENT_MODIFIER_SHIFT
*
* @return @c EINA_TRUE if touch event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_touch_event(Evas_Object *o, Ewk_Touch_Event_Type action, Eina_List *points, unsigned modifiers);
/**
* Feeds the keyboard key down event to the frame.
*
* @param o frame object to feed event
* @param ev keyboard key down event
*
* @return @c EINA_TRUE if the key down event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_key_down(Evas_Object *o, const Evas_Event_Key_Down *ev);
/**
* Feeds the keyboard key up event to the frame.
*
* @param o frame object to feed event
* @param ev keyboard key up event
*
* @return @c EINA_TRUE if the key up event was handled, @c EINA_FALSE otherwise
*/
EAPI Eina_Bool ewk_frame_feed_key_up(Evas_Object *o, const Evas_Event_Key_Up *ev);
/**
* Returns current text selection type.
*
* @param o a frame object to check selection type
* @return current text selection type on success or no selection otherwise
*/
EAPI Ewk_Text_Selection_Type ewk_frame_text_selection_type_get(const Evas_Object *o);
/**
* Gets the frame source.
*
* It's part of HTML saving feature. Currently only HTML documents are supported.
*
* @param o frame smart object to get the frame source
* @param frame_source a pointer to store the source of frame,
* must @b not be @c NULL, this value @b should be freed after use
*
* @return @c length of @a frame_source on success, or @c -1 on failure
*
* @see ewk_frame_resources_location_get()
*/
EAPI ssize_t ewk_frame_source_get(const Evas_Object *o, char **frame_source);
/**
* Gets the resource list of this frame.
*
* It's part of HTML saving feature. Currently only locations of images are supported.
* An application might find these values in frame source and
* replace them to the local paths. Values are not duplicated and they are decoded.
*
* @param o frame smart object to get the resources list
* @return @c Eina_List with location of resources on success, or @c NULL on failure,
* the Eina_List should be freed after use
*
* @see ewk_frame_source_get()
*/
EAPI Eina_List *ewk_frame_resources_location_get(const Evas_Object *o);
/**
* Retrieve the frame's contents in plain text.
*
* This function returns the contents of the given frame converted to plain text,
* removing all the HTML formatting.
*
* The returned string @b should be freed by eina_stringshare_del() after use.
*
* @param ewkFrame Frame object whose contents to retrieve.
*
* @return A newly allocated string (which must be freed by the caller with @c free())
* or @c NULL in case of failure.
*/
EAPI const char *ewk_frame_plain_text_get(const Evas_Object *o);
/**
* Returns whether the frame has displayed mixed content.
*
* When a frame has displayed mixed content, its current URI is an HTTPS one, but it has
* loaded and displayed a resource (such as an image) from an insecure (non-HTTPS) URI.
* Both the frame and the container view send a "mixedcontent,displayed" signal in this case.
*
* The status is reset only when a load event occurs (eg. the page is reloaded or a new page is loaded).
*
* @param o The frame to query.
*
* @sa ewk_view_mixed_content_displayed_get
*/
EAPI Eina_Bool ewk_frame_mixed_content_displayed_get(const Evas_Object *o);
/**
* Returns whether the frame has run mixed content.
*
* When a frame has run mixed content, its current URI is an HTTPS one, but it has
* loaded and run a resource (such as an image) from an insecure (non-HTTPS) URI.
* Both the frame and the container view send a "mixedcontent,run" signal in this case.
*
* The status is reset only when a load event occurs (eg. the page is reloaded or a new page is loaded).
*
* @param o The frame to query.
*
* @sa ewk_view_mixed_content_run_get
*/
EAPI Eina_Bool ewk_frame_mixed_content_run_get(const Evas_Object *o);
/**
* Returns the validity of the X.509 certificate related to the current frame.
*/
EAPI Ewk_Certificate_Status ewk_frame_certificate_status_get(Evas_Object *o);
#ifdef __cplusplus
}
#endif
#endif // ewk_frame_h