Allow dynamic updating of authentication policies
This allows a number of the authentication policies to be updated
dynamically after the IO thread has been created.
BUG=545534
Review URL: https://codereview.chromium.org/1414313002
Cr-Commit-Position: refs/heads/master@{#362940}
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h
index f156ebd..96e10964 100644
--- a/chrome/browser/io_thread.h
+++ b/chrome/browser/io_thread.h
@@ -64,7 +64,8 @@
class FtpTransactionFactory;
class HostMappingRules;
class HostResolver;
-class HttpAuthHandlerFactory;
+class HttpAuthHandlerRegistryFactory;
+class HttpAuthPreferences;
class HttpNetworkSession;
class HttpServerProperties;
class HttpTransactionFactory;
@@ -79,7 +80,6 @@
class URLRequestContext;
class URLRequestContextGetter;
class URLRequestJobFactory;
-class URLSecurityManager;
} // namespace net
namespace net_log {
@@ -169,7 +169,7 @@
scoped_ptr<net::URLRequestJobFactory>
proxy_script_fetcher_url_request_job_factory;
scoped_ptr<net::URLRequestBackoffManager> url_request_backoff_manager;
- scoped_ptr<net::URLSecurityManager> url_security_manager;
+ scoped_ptr<net::HttpAuthPreferences> http_auth_preferences;
// TODO(willchan): Remove proxy script fetcher context since it's not
// necessary now that I got rid of refcounting URLRequestContexts.
//
@@ -325,8 +325,7 @@
// SystemRequestContext state has been initialized on the UI thread.
void InitSystemRequestContextOnIOThread();
- net::HttpAuthHandlerFactory* CreateDefaultAuthHandlerFactory(
- net::HostResolver* resolver);
+ void CreateDefaultAuthHandlerFactory();
// Returns an SSLConfigService instance.
net::SSLConfigService* GetSSLConfigService();
@@ -334,6 +333,11 @@
void ChangedToOnTheRecordOnIOThread();
void UpdateDnsClientEnabled();
+ void UpdateServerWhitelist();
+ void UpdateDelegateWhitelist();
+ void UpdateAndroidAuthNegotiateAccountType();
+ void UpdateNegotiateDisableCnameLookup();
+ void UpdateNegotiateEnablePort();
// Configures QUIC options based on the flags in |command_line| as
// well as the QUIC field trial group.
@@ -516,13 +520,23 @@
BooleanPrefMember quick_check_enabled_;
// Store HTTP Auth-related policies in this thread.
+ // TODO(aberent) Make the list of auth schemes a PrefMember, so that the
+ // policy can change after startup (https://crbug/549273).
std::string auth_schemes_;
- bool negotiate_disable_cname_lookup_;
- bool negotiate_enable_port_;
- std::string auth_server_whitelist_;
- std::string auth_delegate_whitelist_;
+ BooleanPrefMember negotiate_disable_cname_lookup_;
+ BooleanPrefMember negotiate_enable_port_;
+ StringPrefMember auth_server_whitelist_;
+ StringPrefMember auth_delegate_whitelist_;
+
+#if defined(OS_ANDROID)
+ StringPrefMember auth_android_negotiate_account_type_;
+#endif
+#if defined(OS_POSIX) && !defined(OS_ANDROID)
+ // No PrefMember for the GSSAPI library name, since changing it after startup
+ // requires unloading the existing GSSAPI library, which could cause all sorts
+ // of problems for, for example, active Negotiate transactions.
std::string gssapi_library_name_;
- std::string auth_android_negotiate_account_type_;
+#endif
// This is an instance of the default SSLConfigServiceManager for the current
// platform and it gets SSL preferences from local_state object.