Johannes Sasongko
Johannes Sasongko

Reputation: 4238

Multiple user profiles / sessions in one CEF instance

Is it possible to have multiple user profiles—with separate cookies, history, local storage, etc.—running at the same time in one CEF (Chromium Embedded Framework) instance? The goal is to allow multiple browsing "sessions" side-by-side in one window (it's actually an OpenGL app).

There are two possible solutions I've looked into, each with its own problems:

Using CefCookieManager

This is possible to do for just cookies by creating multiple CefCookieManagers. However, there does not seem to be similar API for history and local storage, which are now still shared.

Using CefSettings::cache_path

CefSettings settings;
CefString(&settings.cache_path).FromASCII("C:\\CefCache");
CefInitialize(args, settings, app, nullptr);

The problem here is that CefSettings is associated with the global CEF instance rather than with each browser/client.


Is there a way to do this that I have not discovered?

Upvotes: 1

Views: 3459

Answers (1)

Czarek Tomczak
Czarek Tomczak

Reputation: 20675

If it's only about cookies and local storage, and you host content using custom scheme handler or request interception, then you could use different domains/subdomains for each profile. See this topic for reference: http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=11695 .

Regarding history, you could implement history on your own by using the OnBeforeBrowse callback.

In the topic referenced above it is also mentioned that it's technically possible to specify a different cache path per CefRequestContext (can be provided during browser creation). So working on a patch for CEF may be another option.

EDIT: CEF revision 2040 adds support for complete isolation of storage and permissions per request context, see comment #7 in Issue 1044: https://code.google.com/p/chromiumembedded/issues/detail?id=1044#c7

Upvotes: 2

Related Questions