55 lines
2.1 KiB
C
55 lines
2.1 KiB
C
/*
|
|
* webkit_data.h — helpers to wipe WebKit website data on identity change
|
|
*
|
|
* WebKitGTK's WebKitWebsiteDataManager holds cookies, HTTP cache, localStorage,
|
|
* IndexedDB, WebSQL, service worker registrations, offline app cache, HSTS,
|
|
* and the favicon database for the whole process. When a user logs out or
|
|
* switches Nostr identity, this data must be cleared so the next user does
|
|
* not see the previous user's web session (cookies are the primary leak —
|
|
* they identify you to web pages).
|
|
*
|
|
* Phase 0 of plans/webkit-data-isolation.md: a single shared data manager
|
|
* (the default context's) is wiped in place. Phase A will replace this with
|
|
* per-user data managers, at which point these helpers become the safety net
|
|
* for the in-memory live-tab case.
|
|
*/
|
|
|
|
#ifndef WEBKIT_DATA_H
|
|
#define WEBKIT_DATA_H
|
|
|
|
#include <webkit2/webkit2.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* Clear ALL website data from the given WebKitWebContext's data manager:
|
|
* cookies, disk + memory cache, local storage, session storage, IndexedDB,
|
|
* WebSQL, service worker registrations, offline app cache, HSTS, plugin data,
|
|
* and (optionally) favicons.
|
|
*
|
|
* ctx — the WebKitWebContext whose data manager to clear.
|
|
* Pass NULL to target the default context.
|
|
* clear_favicons — if TRUE, also clear the favicon database. The favicon
|
|
* DB is process-global and shared across contexts; clearing
|
|
* it drops every cached favicon, not just the current
|
|
* site's. Pass FALSE if you only want session/cache
|
|
* isolation (favicons are not identity-sensitive).
|
|
*
|
|
* This is asynchronous in WebKitGTK (the clear API takes a callback). This
|
|
* function runs a nested GLib main loop until the clear completes (or 5s
|
|
* elapses) so that on return the data is gone. It is safe to call from the
|
|
* GTK main thread.
|
|
*
|
|
* Returns 0 on success, -1 if the context/data manager could not be resolved,
|
|
* -2 if the clear timed out.
|
|
*/
|
|
int webkit_data_clear_all(WebKitWebContext *ctx, gboolean clear_favicons);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* WEBKIT_DATA_H */
|