wiki:EFLCookiesApiTutorial

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

http://i.imgur.com/EmopC.jpg

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.

Last modified 11 years ago Last modified on Oct 22, 2012 1:10:57 AM