mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
chrome: Enforce matching context for new user and incognito profiles
Selecting a new user or incognito profile via Chrome UI may result in the creation of a new Profile object. If that occurs, we should find or create a matching CefBrowserContext and CefRequestContext instead of reusing an existing mismatched context (e.g. using the original context for an incognito window would be a mismatch). If a new CefRequestContext will be created the client can now implement CefBrowserProcessHandler::GetDefaultRequestContextHandler() to provide the handler for that context. To test with a new user profile: 1. Click "Profile" icon, select "Add". Now you have 2+ profiles. 2. Click "Profile" icon, select the other user name to create a new window using the other user profile. 3. The new window should launch successfully. To test with a new incognito profile: 1. Select "New Incognito window" from the 3-dot menu. 2. The new window should launch successfully. To test DevTools window creation for the new profile: 1. Right-click in the new window, select Inspect. 2. The DevTools window should launch successfully.
This commit is contained in:
@ -9,11 +9,12 @@
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
// $hash=11604cc40431cd047990f92e86495c9ccd7ded29$
|
||||
// $hash=5703528ee112474079bd5d04f5ca9f2f290238fa$
|
||||
//
|
||||
|
||||
#include "libcef_dll/cpptoc/browser_process_handler_cpptoc.h"
|
||||
#include "libcef_dll/cpptoc/client_cpptoc.h"
|
||||
#include "libcef_dll/cpptoc/request_context_handler_cpptoc.h"
|
||||
#include "libcef_dll/ctocpp/command_line_ctocpp.h"
|
||||
#include "libcef_dll/ctocpp/preference_registrar_ctocpp.h"
|
||||
|
||||
@ -138,6 +139,25 @@ struct _cef_client_t* CEF_CALLBACK browser_process_handler_get_default_client(
|
||||
return CefClientCppToC::Wrap(_retval);
|
||||
}
|
||||
|
||||
struct _cef_request_context_handler_t* CEF_CALLBACK
|
||||
browser_process_handler_get_default_request_context_handler(
|
||||
struct _cef_browser_process_handler_t* self) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Execute
|
||||
CefRefPtr<CefRequestContextHandler> _retval =
|
||||
CefBrowserProcessHandlerCppToC::Get(self)
|
||||
->GetDefaultRequestContextHandler();
|
||||
|
||||
// Return type: refptr_same
|
||||
return CefRequestContextHandlerCppToC::Wrap(_retval);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
// CONSTRUCTOR - Do not edit by hand.
|
||||
@ -154,6 +174,8 @@ CefBrowserProcessHandlerCppToC::CefBrowserProcessHandlerCppToC() {
|
||||
GetStruct()->on_schedule_message_pump_work =
|
||||
browser_process_handler_on_schedule_message_pump_work;
|
||||
GetStruct()->get_default_client = browser_process_handler_get_default_client;
|
||||
GetStruct()->get_default_request_context_handler =
|
||||
browser_process_handler_get_default_request_context_handler;
|
||||
}
|
||||
|
||||
// DESTRUCTOR - Do not edit by hand.
|
||||
|
Reference in New Issue
Block a user