mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Move cookieable scheme configuration to settings (see issue #2969)
The Chrome runtime requires that cookieable scheme information be available at Profile initialization time because it also triggers NetworkContext creation at the same time. To make this possible, and to avoid various race conditions when setting state, the cookieable scheme configuration has been added as |cookieable_schemes_list| and |cookieable_schemes_exclude_defaults| in CefSettings and CefBrowserContextSettings. The CefCookieManager:: SetSupportedSchemes and CefBrowserProcessHandler::GetCookieableSchemes methods are no longer required and have been removed. This change also modifies chrome to delay OffTheRecordProfileImpl initialization so that |ChromeBrowserContext::profile_| can be set before ChromeContentBrowserClientCef::ConfigureNetworkContextParams calls CefBrowserContext::FromBrowserContext to retrieve the ChromeBrowserContext and associated cookieable scheme information. Otherwise, the ChromeBrowserContext will not be matched and the NetworkContext will not be configured correctly. The CookieTest suite now passes with the Chrome runtime enabled.
This commit is contained in:
@@ -422,6 +422,20 @@ typedef struct _cef_settings_t {
|
||||
///
|
||||
cef_string_t accept_language_list;
|
||||
|
||||
///
|
||||
// Comma delimited list of schemes supported by the associated
|
||||
// CefCookieManager. If |cookieable_schemes_exclude_defaults| is false (0) the
|
||||
// default schemes ("http", "https", "ws" and "wss") will also be supported.
|
||||
// Specifying a |cookieable_schemes_list| value and setting
|
||||
// |cookieable_schemes_exclude_defaults| to true (1) will disable all loading
|
||||
// and saving of cookies for this manager. Can be overridden
|
||||
// for individual CefRequestContext instances via the
|
||||
// CefRequestContextSettings.cookieable_schemes_list and
|
||||
// CefRequestContextSettings.cookieable_schemes_exclude_defaults values.
|
||||
///
|
||||
cef_string_t cookieable_schemes_list;
|
||||
int cookieable_schemes_exclude_defaults;
|
||||
|
||||
///
|
||||
// GUID string used for identifying the application. This is passed to the
|
||||
// system AV function for scanning downloaded files. By default, the GUID
|
||||
@@ -490,6 +504,18 @@ typedef struct _cef_request_context_settings_t {
|
||||
// ignored if |cache_path| matches the CefSettings.cache_path value.
|
||||
///
|
||||
cef_string_t accept_language_list;
|
||||
|
||||
///
|
||||
// Comma delimited list of schemes supported by the associated
|
||||
// CefCookieManager. If |cookieable_schemes_exclude_defaults| is false (0) the
|
||||
// default schemes ("http", "https", "ws" and "wss") will also be supported.
|
||||
// Specifying a |cookieable_schemes_list| value and setting
|
||||
// |cookieable_schemes_exclude_defaults| to true (1) will disable all loading
|
||||
// and saving of cookies for this manager. These values will be ignored if
|
||||
// |cache_path| matches the CefSettings.cache_path value.
|
||||
///
|
||||
cef_string_t cookieable_schemes_list;
|
||||
int cookieable_schemes_exclude_defaults;
|
||||
} cef_request_context_settings_t;
|
||||
|
||||
///
|
||||
@@ -654,7 +680,7 @@ typedef struct _cef_browser_settings_t {
|
||||
///
|
||||
// Comma delimited ordered list of language codes without any whitespace that
|
||||
// will be used in the "Accept-Language" HTTP header. May be set globally
|
||||
// using the CefBrowserSettings.accept_language_list value. If both values are
|
||||
// using the CefSettings.accept_language_list value. If both values are
|
||||
// empty then "en-US,en" will be used.
|
||||
///
|
||||
cef_string_t accept_language_list;
|
||||
|
@@ -555,6 +555,7 @@ struct CefSettingsTraits {
|
||||
cef_string_clear(&s->resources_dir_path);
|
||||
cef_string_clear(&s->locales_dir_path);
|
||||
cef_string_clear(&s->accept_language_list);
|
||||
cef_string_clear(&s->cookieable_schemes_list);
|
||||
cef_string_clear(&s->application_client_id_for_file_scanning);
|
||||
}
|
||||
|
||||
@@ -609,6 +610,13 @@ struct CefSettingsTraits {
|
||||
cef_string_set(src->accept_language_list.str,
|
||||
src->accept_language_list.length,
|
||||
&target->accept_language_list, copy);
|
||||
|
||||
cef_string_set(src->cookieable_schemes_list.str,
|
||||
src->cookieable_schemes_list.length,
|
||||
&target->cookieable_schemes_list, copy);
|
||||
target->cookieable_schemes_exclude_defaults =
|
||||
src->cookieable_schemes_exclude_defaults;
|
||||
|
||||
cef_string_set(src->application_client_id_for_file_scanning.str,
|
||||
src->application_client_id_for_file_scanning.length,
|
||||
&target->application_client_id_for_file_scanning, copy);
|
||||
@@ -628,6 +636,7 @@ struct CefRequestContextSettingsTraits {
|
||||
static inline void clear(struct_type* s) {
|
||||
cef_string_clear(&s->cache_path);
|
||||
cef_string_clear(&s->accept_language_list);
|
||||
cef_string_clear(&s->cookieable_schemes_list);
|
||||
}
|
||||
|
||||
static inline void set(const struct_type* src,
|
||||
@@ -641,6 +650,12 @@ struct CefRequestContextSettingsTraits {
|
||||
cef_string_set(src->accept_language_list.str,
|
||||
src->accept_language_list.length,
|
||||
&target->accept_language_list, copy);
|
||||
|
||||
cef_string_set(src->cookieable_schemes_list.str,
|
||||
src->cookieable_schemes_list.length,
|
||||
&target->cookieable_schemes_list, copy);
|
||||
target->cookieable_schemes_exclude_defaults =
|
||||
src->cookieable_schemes_exclude_defaults;
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user