## Global functions

Global functions — Global functions controlling WebKit

## Synopsis

    SoupSession *       webkit_get_default_session          (void);
    guint64             webkit_get_default_web_database_quota
                                                            (void);
    const gchar *       webkit_get_web_database_directory_path
                                                            (void);
    WebKitWebPluginDatabase * webkit_get_web_plugin_database
                                                            (void);
    void                webkit_remove_all_web_databases     (void);
    void                webkit_set_default_web_database_quota
                                                            (guint64 defaultQuota);
    void                webkit_set_web_database_directory_path
                                                            (const gchar *path);
    WebKitFaviconDatabase * webkit_get_favicon_database     (void);
    WebKitIconDatabase * webkit_get_icon_database           (void);
    GObject *           webkit_get_text_checker             (void);
    void                webkit_set_text_checker             (GObject *checker);

    const gchar *       webkit_application_cache_get_database_directory_path
                                                            (void);
    unsigned long long  webkit_application_cache_get_maximum_size
                                                            (void);
    void                webkit_application_cache_set_maximum_size
                                                            (unsigned long long  size);

    enum                WebKitCacheModel;
    WebKitCacheModel    webkit_get_cache_model              (void);
    void                webkit_set_cache_model              (WebKitCacheModel cache_model);

    enum                WebKitContextMenuAction;
    WebKitContextMenuAction webkit_context_menu_item_get_action
                                                            (GtkMenuItem *item);

    enum                WebKitSecurityPolicy;
    void                webkit_set_security_policy_for_uri_scheme
                                                            (const gchar *scheme,
                                                             WebKitSecurityPolicy policy);
    WebKitSecurityPolicy webkit_get_security_policy_for_uri_scheme
                                                            (const gchar *scheme);

## Description

WebKit manages many resources which are not related to specific views. These functions relate to cross-view limits, such as cache sizes, database quotas, and the HTTP session management.

## Details

### webkit_get_default_session ()

    SoupSession *       webkit_get_default_session          (void);

Retrieves the default SoupSession used by all web views. Note that the session features are added by WebKit on demand, so if you insert your own SoupCookieJar before any network traffic occurs, WebKit will use it instead of the default.

Returns : | the default SoupSession. [transfer none]

Since 1.1.1

### webkit_get_default_web_database_quota ()

    guint64             webkit_get_default_web_database_quota
                                                            (void);

Returns the default quota for Web Database databases. By default this value is 5MB.

Returns : | the current default database quota in bytes

Since 1.1.14

### webkit_get_web_database_directory_path ()

    const gchar *       webkit_get_web_database_directory_path
                                                            (void);

Returns the current path to the directory WebKit will write Web Database and Indexed Database databases. By default this path will be in the user data directory.

Returns : | the current database directory path in the filesystem encoding

Since 1.1.14

### webkit_get_web_plugin_database ()

    WebKitWebPluginDatabase * webkit_get_web_plugin_database
                                                            (void);

Returns the current WebKitWebPluginDatabase with information about all the plugins WebKit knows about in this instance.

Returns : | the current WebKitWebPluginDatabase. [transfer none]

Since 1.3.8

### webkit_remove_all_web_databases ()

    void                webkit_remove_all_web_databases     (void);

Removes all web databases from the current database directory path.

Since 1.1.14

### webkit_set_default_web_database_quota ()

    void                webkit_set_default_web_database_quota
                                                            (guint64 defaultQuota);

Sets the default quota for Web Database databases.

`defaultQuota` : | the new default database quota

Since 1.1.14

### webkit_set_web_database_directory_path ()

    void                webkit_set_web_database_directory_path
                                                            (const gchar *path);

Sets the current path to the directory WebKit will write Web Database and Indexed Database databases.

`path` : | the new database directory path in the filesystem encoding

Since 1.1.14

### webkit_get_favicon_database ()

    WebKitFaviconDatabase * webkit_get_favicon_database     (void);

Returns the WebKitFaviconDatabase providing access to website icons.

Returns : | the current WebKitFaviconDatabase. [transfer none]

Since 1.8

### webkit_get_icon_database ()

    WebKitIconDatabase * webkit_get_icon_database           (void);

### Warning

`webkit_get_icon_database` has been deprecated since version 1.8 and should not be used in newly-written code. Use `webkit_get_favicon_database()` instead

Returns the WebKitIconDatabase providing access to website icons.

Returns : | the current WebKitIconDatabase. [transfer none]

Since 1.3.13

### webkit_get_text_checker ()

    GObject *           webkit_get_text_checker             (void);

Returns : | the WebKitSpellChecker used by WebKit, or `NULL` if spell checking is not enabled. [transfer none]

Since 1.5.1

### webkit_set_text_checker ()

    void                webkit_set_text_checker             (GObject *checker);

Sets `checker` as the spell checker to be used by WebKit. The API accepts GObject since in the future we might accept objects implementing multiple interfaces (for example, spell checking and grammar checking).

`checker` : | a WebKitSpellChecker or `NULL`

Since 1.5.1

### webkit_application_cache_get_database_directory_path ()

    const gchar *       webkit_application_cache_get_database_directory_path
                                                            (void);

Returns the path to the directory WebKit will write web application cache databases to. By default this path is set to $XDG_CACHE_HOME/webkitgtk/applications and cannot be modified.

Returns : | the application cache database directory path

Since 1.3.13

### webkit_application_cache_get_maximum_size ()

    unsigned long long  webkit_application_cache_get_maximum_size
                                                            (void);

Returns the maximum size of the cache storage. By default it is set to UINT_MAX i.e. no quota.

Returns : | the current application cache maximum storage size

Since 1.3.13

### webkit_application_cache_set_maximum_size ()

    void                webkit_application_cache_set_maximum_size
                                                            (unsigned long long  size);

Sets new application cache maximum storage size. Changing the application cache storage size will clear the cache and rebuild cache storage.

`size` : | the new web application cache maximum storage size

Since 1.3.13

### enum WebKitCacheModel

    typedef enum {
        WEBKIT_CACHE_MODEL_DEFAULT,
        WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER,
        WEBKIT_CACHE_MODEL_WEB_BROWSER,
        WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER,
    } WebKitCacheModel;

Enum values used for determining the webview cache model.

`WEBKIT_CACHE_MODEL_DEFAULT` | The default cache model. This is WEBKIT_CACHE_MODEL_WEB_BROWSER.
`WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER` | Disable the cache completely, which substantially reduces memory usage. Useful for applications that only access a single local file, with no navigation to other pages. No remote resources will be cached.
`WEBKIT_CACHE_MODEL_WEB_BROWSER` | Improve document load speed substantially by caching a very large number of resources and previously viewed content.
`WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER` | A cache model optimized for viewing a series of local files -- for example, a documentation viewer or a website designer. WebKit will cache a moderate number of resources.

### webkit_get_cache_model ()

    WebKitCacheModel    webkit_get_cache_model              (void);

Returns the current cache model. For more information about this value check the documentation of the function `webkit_set_cache_model()`.

Returns : | the current WebKitCacheModel

Since 1.1.18

### webkit_set_cache_model ()

    void                webkit_set_cache_model              (WebKitCacheModel cache_model);

Specifies a usage model for WebViews, which WebKit will use to determine its caching behavior. All web views follow the cache model. This cache model determines the RAM and disk space to use for caching previously viewed content .

Research indicates that users tend to browse within clusters of documents that hold resources in common, and to revisit previously visited documents. WebKit and the frameworks below it include built-in caches that take advantage of these patterns, substantially improving document load speed in browsing situations. The WebKit cache model controls the behaviors of all of these caches, including various WebCore caches.

Browsers can improve document load speed substantially by specifying WEBKIT_CACHE_MODEL_WEB_BROWSER. Applications without a browsing interface can reduce memory usage substantially by specifying WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER. Default value is WEBKIT_CACHE_MODEL_WEB_BROWSER.

`cache_model` : | a WebKitCacheModel

Since 1.1.18

### enum WebKitContextMenuAction

    typedef enum {
        WEBKIT_CONTEXT_MENU_ACTION_NO_ACTION = 0,
        WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK,
        WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK_IN_NEW_WINDOW,
        WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_LINK_TO_DISK,
        WEBKIT_CONTEXT_MENU_ACTION_COPY_LINK_TO_CLIPBOARD,
        WEBKIT_CONTEXT_MENU_ACTION_OPEN_IMAGE_IN_NEW_WINDOW,
        WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_IMAGE_TO_DISK,
        WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_TO_CLIPBOARD,
        WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_URL_TO_CLIPBOARD,
        WEBKIT_CONTEXT_MENU_ACTION_OPEN_FRAME_IN_NEW_WINDOW,
        WEBKIT_CONTEXT_MENU_ACTION_GO_BACK,
        WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD,
        WEBKIT_CONTEXT_MENU_ACTION_STOP,
        WEBKIT_CONTEXT_MENU_ACTION_RELOAD,
        WEBKIT_CONTEXT_MENU_ACTION_COPY,
        WEBKIT_CONTEXT_MENU_ACTION_CUT,
        WEBKIT_CONTEXT_MENU_ACTION_PASTE,
        WEBKIT_CONTEXT_MENU_ACTION_DELETE,
        WEBKIT_CONTEXT_MENU_ACTION_SELECT_ALL,
        WEBKIT_CONTEXT_MENU_ACTION_INPUT_METHODS,
        WEBKIT_CONTEXT_MENU_ACTION_UNICODE,
        WEBKIT_CONTEXT_MENU_ACTION_SPELLING_GUESS,
        WEBKIT_CONTEXT_MENU_ACTION_NO_GUESSES_FOUND,
        WEBKIT_CONTEXT_MENU_ACTION_IGNORE_SPELLING,
        WEBKIT_CONTEXT_MENU_ACTION_LEARN_SPELLING,
        WEBKIT_CONTEXT_MENU_ACTION_IGNORE_GRAMMAR,
        WEBKIT_CONTEXT_MENU_ACTION_FONT_MENU,
        WEBKIT_CONTEXT_MENU_ACTION_BOLD,
        WEBKIT_CONTEXT_MENU_ACTION_ITALIC,
        WEBKIT_CONTEXT_MENU_ACTION_UNDERLINE,
        WEBKIT_CONTEXT_MENU_ACTION_OUTLINE,
        WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT,
        WEBKIT_CONTEXT_MENU_ACTION_OPEN_MEDIA_IN_NEW_WINDOW,
        WEBKIT_CONTEXT_MENU_ACTION_COPY_MEDIA_LINK_TO_CLIPBOARD,
        WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_CONTROLS,
        WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_LOOP,
        WEBKIT_CONTEXT_MENU_ACTION_ENTER_VIDEO_FULLSCREEN,
        WEBKIT_CONTEXT_MENU_ACTION_MEDIA_PLAY_PAUSE,
        WEBKIT_CONTEXT_MENU_ACTION_MEDIA_MUTE
    } WebKitContextMenuAction;

Enum values used to denote actions of items in the default context menu.

`WEBKIT_CONTEXT_MENU_ACTION_NO_ACTION` | No action, used by separator menu items.
`WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK` | Open current link.
`WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK_IN_NEW_WINDOW` | Open current link in a new window.
`WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_LINK_TO_DISK` | Download link destination.
`WEBKIT_CONTEXT_MENU_ACTION_COPY_LINK_TO_CLIPBOARD` | Copy link location to the clipboard.
`WEBKIT_CONTEXT_MENU_ACTION_OPEN_IMAGE_IN_NEW_WINDOW` | Open current image in a new window.
`WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_IMAGE_TO_DISK` | Download current image.
`WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_TO_CLIPBOARD` | Copy current image to the clipboard.
`WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_URL_TO_CLIPBOARD` | Copy curent image location to the clipboard.
`WEBKIT_CONTEXT_MENU_ACTION_OPEN_FRAME_IN_NEW_WINDOW` | Open current frame in a new window.
`WEBKIT_CONTEXT_MENU_ACTION_GO_BACK` | Load the previous history item.
`WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD` | Load the next history item.
`WEBKIT_CONTEXT_MENU_ACTION_STOP` | Stop any ongoing loading operation.
`WEBKIT_CONTEXT_MENU_ACTION_RELOAD` | Reload the conents of current view.
`WEBKIT_CONTEXT_MENU_ACTION_COPY` | Copy current selection the clipboard.
`WEBKIT_CONTEXT_MENU_ACTION_CUT` | Cut current selection to the clipboard.
`WEBKIT_CONTEXT_MENU_ACTION_PASTE` | Paste clipboard contents.
`WEBKIT_CONTEXT_MENU_ACTION_DELETE` | Delete current selection.
`WEBKIT_CONTEXT_MENU_ACTION_SELECT_ALL` | Select all text.
`WEBKIT_CONTEXT_MENU_ACTION_INPUT_METHODS` | Input methods menu.
`WEBKIT_CONTEXT_MENU_ACTION_UNICODE` | Unicode menu.
`WEBKIT_CONTEXT_MENU_ACTION_SPELLING_GUESS` | Guess spelling.
`WEBKIT_CONTEXT_MENU_ACTION_NO_GUESSES_FOUND` | No guesses found.
`WEBKIT_CONTEXT_MENU_ACTION_IGNORE_SPELLING` | Ignore spelling.
`WEBKIT_CONTEXT_MENU_ACTION_LEARN_SPELLING` | Learn spelling.
`WEBKIT_CONTEXT_MENU_ACTION_IGNORE_GRAMMAR` | Ignore grammar.
`WEBKIT_CONTEXT_MENU_ACTION_FONT_MENU` | Font menu.
`WEBKIT_CONTEXT_MENU_ACTION_BOLD` | Bold.
`WEBKIT_CONTEXT_MENU_ACTION_ITALIC` | Italic.
`WEBKIT_CONTEXT_MENU_ACTION_UNDERLINE` | Underline.
`WEBKIT_CONTEXT_MENU_ACTION_OUTLINE` | Outline.
`WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT` | Open current element in the inspector.
`WEBKIT_CONTEXT_MENU_ACTION_OPEN_MEDIA_IN_NEW_WINDOW` | Open current media element in a new window.
`WEBKIT_CONTEXT_MENU_ACTION_COPY_MEDIA_LINK_TO_CLIPBOARD` | Copy media link location in to the clipboard.
`WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_CONTROLS` | Enable or disable media controls.
`WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_LOOP` | Enable or disable media loop.
`WEBKIT_CONTEXT_MENU_ACTION_ENTER_VIDEO_FULLSCREEN` | Show current video element in fullscreen mode.
`WEBKIT_CONTEXT_MENU_ACTION_MEDIA_PLAY_PAUSE` | Play or pause current media element.
`WEBKIT_CONTEXT_MENU_ACTION_MEDIA_MUTE` | Mute current media element.

Since 1.10

### webkit_context_menu_item_get_action ()

    WebKitContextMenuAction webkit_context_menu_item_get_action
                                                            (GtkMenuItem *item);

Returns the WebKitContextMenuAction of the given `item`. This function can be used to determine the items present in the default context menu. In order to inspect the default context menu, you should connect to "context-menu" signal.

Example 1. Inspecting the default context menu

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50

    static gboolean context_menu_cb (WebKitWebView       *webView,
                                     GtkWidget           *default_menu,
                                     WebKitHitTestResult *hit_test_result,
                                     gboolean             triggered_with_keyboard,
                                     gpointer             user_data)
    {
        GList *items = gtk_container_get_children (GTK_CONTAINER (default_menu));
        GList *l;
        GtkAction *action;
        GtkWidget *sub_menu;

        for (l = items; l; l = g_list_next (l)) {
            GtkMenuItem *item = (GtkMenuItem *)l->data;

            if (GTK_IS_SEPARATOR_MENU_ITEM (item)) {
                /* It's  separator, do nothing */
                continue;
            }

            switch (webkit_context_menu_item_get_action (item)) {
            case WEBKIT_CONTEXT_MENU_ACTION_NO_ACTION:
                /* No action for this item */
                break;
            /* Don't allow to ope links from context menu */
            case WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK:
            case WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK_IN_NEW_WINDOW:
                action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (item));
                gtk_action_set_sensitive (action, FALSE);
                break;
            default:
                break;
            }

            sub_menu = gtk_menu_item_get_submenu (item);
            if (sub_menu) {
                GtkWidget *menu_item;

                /* Add custom action to submenu */
                action = gtk_action_new ("CustomItemName", "Custom Action", NULL, NULL);
                g_signal_connect (action, "activate", G_CALLBACK (custom_menu_item_activated), NULL);

                menu_item = gtk_action_create_menu_item (action);
                g_object_unref (action);
                gtk_menu_shell_append (GTK_MENU_SHELL (sub_menu), menu_item);
                gtk_widget_show (menu_item);
            }
        }

        g_list_free(items);
    }

Note that you can get the GtkAction of any item in the default context menu with `gtk_activatable_get_related_action()`.

`item` : | a GtkMenuItem of the default context menu
Returns : | the WebKitContextMenuAction of the given `item`

Since 1.10

### enum WebKitSecurityPolicy

    typedef enum {
        WEBKIT_SECURITY_POLICY_LOCAL                     = 1 << 1,
        WEBKIT_SECURITY_POLICY_NO_ACCESS_TO_OTHER_SCHEME = 1 << 2,
        WEBKIT_SECURITY_POLICY_DISPLAY_ISOLATED          = 1 << 3,
        WEBKIT_SECURITY_POLICY_SECURE                    = 1 << 4,
        WEBKIT_SECURITY_POLICY_CORS_ENABLED              = 1 << 5,
        WEBKIT_SECURITY_POLICY_EMPTY_DOCUMENT            = 1 << 6
    } WebKitSecurityPolicy;

Flags used to represent the security policy of a URI scheme.

`WEBKIT_SECURITY_POLICY_LOCAL` | Local URI scheme, other non-local pages cannot link to or access URIs of this scheme.
`WEBKIT_SECURITY_POLICY_NO_ACCESS_TO_OTHER_SCHEME` | Pages loaded with this URI scheme cannot access pages loaded with any other URI scheme.
`WEBKIT_SECURITY_POLICY_DISPLAY_ISOLATED` | Pages cannot display these URIs unless they are from the same scheme.
`WEBKIT_SECURITY_POLICY_SECURE` | Secure URI scheme, doesn't generate mixed content warnings when included by an HTTPS page.
`WEBKIT_SECURITY_POLICY_CORS_ENABLED` | URI scheme that can be sent CORS (Cross-origin resource sharing) requests. See W3C CORS specification http://www.w3.org/TR/cors/.
`WEBKIT_SECURITY_POLICY_EMPTY_DOCUMENT` | Strictly empty documents allowed to commit synchronously.

Since 2.0

### webkit_set_security_policy_for_uri_scheme ()

    void                webkit_set_security_policy_for_uri_scheme
                                                            (const gchar *scheme,
                                                             WebKitSecurityPolicy policy);

Set the security policy for the given URI scheme.

`scheme` : | a URI scheme
`policy` : | a WebKitSecurityPolicy

Since 2.0

### webkit_get_security_policy_for_uri_scheme ()

    WebKitSecurityPolicy webkit_get_security_policy_for_uri_scheme
                                                            (const gchar *scheme);

Get the security policy for the given URI scheme.

`scheme` : | a URI scheme
Returns : | a WebKitSecurityPolicy

Since 2.0