diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-13 17:23:26 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-13 17:23:26 +0000 |
commit | 7134b1ff692fc6c57c71dd0eaedabc8db0ec792b (patch) | |
tree | 2b0bb156cb205d94a2c1ae562d17f89698b1d707 /content/browser/ssl/ssl_host_state.cc | |
parent | 9cdaf7474c46f9a01fd7d28260a3c6d789aa6847 (diff) | |
download | chromium_src-7134b1ff692fc6c57c71dd0eaedabc8db0ec792b.zip chromium_src-7134b1ff692fc6c57c71dd0eaedabc8db0ec792b.tar.gz chromium_src-7134b1ff692fc6c57c71dd0eaedabc8db0ec792b.tar.bz2 |
Remove ssl_host_state.h dependency from chrome.
I suspect there'll be a few objects that hang off BrowserContext/ResourceContext which are per profile that we don't want chrome to know about or even to create. For now, I did a one-off by manually keeping a map and deleting it when the BrowserContext goes away. If we hit others, we can generalize this into a template, perhaps like RenderViewHostObserverTracker.
BUG=98716
Review URL: https://chromiumcodereview.appspot.com/9384029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121706 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/ssl/ssl_host_state.cc')
-rw-r--r-- | content/browser/ssl/ssl_host_state.cc | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/content/browser/ssl/ssl_host_state.cc b/content/browser/ssl/ssl_host_state.cc index 7b0deef..67f3fd8 100644 --- a/content/browser/ssl/ssl_host_state.cc +++ b/content/browser/ssl/ssl_host_state.cc @@ -5,8 +5,26 @@ #include "content/browser/ssl/ssl_host_state.h" #include "base/logging.h" +#include "base/lazy_instance.h" +#include "content/public/browser/notification_details.h" +#include "content/public/browser/notification_source.h" +#include "content/public/browser/notification_types.h" -SSLHostState::SSLHostState() { +namespace { +typedef std::map<content::BrowserContext*, SSLHostState*> HostStateMap; +static base::LazyInstance<HostStateMap> g_host_state_map = + LAZY_INSTANCE_INITIALIZER; +} + +SSLHostState* SSLHostState::GetFor(content::BrowserContext* browser_context) { + if (!g_host_state_map.Get().count(browser_context)) + g_host_state_map.Get()[browser_context] = new SSLHostState(browser_context); + return g_host_state_map.Get()[browser_context]; +} + +SSLHostState::SSLHostState(content::BrowserContext* browser_context) { + registrar_.Add(this, content::NOTIFICATION_BROWSER_CONTEXT_DESTRUCTION, + content::Source<content::BrowserContext>(browser_context)); } SSLHostState::~SSLHostState() { @@ -43,3 +61,9 @@ net::CertPolicy::Judgment SSLHostState::QueryPolicy( return cert_policy_for_host_[host].Check(cert); } + +void SSLHostState::Observe(int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) { + delete this; +} |