summaryrefslogtreecommitdiffstats
path: root/content/browser/ssl/ssl_host_state.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-13 17:23:26 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-13 17:23:26 +0000
commit7134b1ff692fc6c57c71dd0eaedabc8db0ec792b (patch)
tree2b0bb156cb205d94a2c1ae562d17f89698b1d707 /content/browser/ssl/ssl_host_state.cc
parent9cdaf7474c46f9a01fd7d28260a3c6d789aa6847 (diff)
downloadchromium_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.cc26
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;
+}