This tutorial is an effect of collaboration between Samsung Poland R&D Center and Silesian Univeristy of Technology. It's a part of subject: "Writing tutorial about a WebKit-Efl API"
Author: Krzysztof Kuliga (kkrzysiek89 [at] interia.pl)
The Settings API
Introduction
The ewk_cookies.h file is designed to manage the browser cookies. It has all of the important functions needed to use cookies (create cookie, delete,) and change their properties(change cookies policy).
Dependency diagram
Parts of WebCore and libraries which are related to ewk_cookies.h
API Module Description
Initialization
Firstly initialization of the module depends on definition of the cookie object. After creating or during that operation we are obliged to define all the cookie object properties like for example: name, value, domain, path, expiration date. Closer look we will have in the example of use.
Objects Modification
After we created the object and define all of its important values/properties we can do some modifications. The ewk_cookies.h file provides us declaration on several functions that modificate cookie state. Functions:
- EAPI Eina_Bool ewk_cookies_file_set (const char * filename)
- EAPI void ewk_cookies_policy_set (Ewk_Cookie_Policy p)
- EAPI Eina_List* ewk_cookies_get_all (void )
- EAPI Ewk_Cookie_Policy ewk_cookies_policy_get (void )
Example of use
#include "ewk_cookies.h" // including the library
// modifying the function that is used after each load of the site
static void on_load_finished(void *user_data, Evas_Object *webview, void *event_info)
{
Ewk_cookie *cookie = new Ewk_cookie(); // defining the cookie pointer
Eina_list *list = 0; // defining list for storing all the webpage cookies
const Ewk_Frame_Load_Error *err = (const Ewk_Frame_Load_Error *)event_info;
const char* text = "~src/Webkit/cookies";
if (!err)
info("Succeeded loading page.\n");
else if (err->is_cancellation)
info("Load was cancelled.\n");
else
info("Failed loading page: %d %s \"%s\", url=%s\n",
err->code, err->domain, err->description, err->failing_url);
// checking if any path for storing cookies is set
if(ewk_cookies_file_set(*text))
{
//defining cookie properties
cookie->name = "first_cookie"; //example name for cookie
cookie->value = 1;
cookie->domain = err->domain; // we get info about domain from err pointer
cookie->path = *text; // setting path which is stored in global variable
cookie->expires = 0; // setting cookie expiration time
ewk_cookies_policy_set(SOUP_COOKIE_JAR_ACCEPT_ALWAYS); //setting cookie policy
}
else //when we can't set our path for storing cookies
{
info("Unable to set path where cookies to be stored.\n");
ewk_cookies_policy_set(SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY);
}
list = ewk_cookies_get_all(); // we get all the cookies into list variable
currentZoom = ewk_view_zoom_get(webview);
currentZoomLevel = nearest_zoom_level_get(currentZoom);
info("WebCore Zoom=%f, currentZoomLevel=%d\n", currentZoom, currentZoomLevel);
}
Example is based on the Tools/EWebLauncher/main.c.
