Reland r37508. Implement HostContentSettingsMap.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/555172

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37526 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc
index a6861e9ad..c197a78 100644
--- a/chrome/browser/profile.cc
+++ b/chrome/browser/profile.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -29,6 +29,7 @@
 #include "chrome/browser/spellcheck_host.h"
 #include "chrome/browser/transport_security_persister.h"
 #include "chrome/browser/history/history.h"
+#include "chrome/browser/host_content_settings_map.h"
 #include "chrome/browser/host_zoom_map.h"
 #include "chrome/browser/in_process_webkit/webkit_context.h"
 #include "chrome/browser/net/chrome_url_request_context.h"
@@ -405,6 +406,14 @@
     return GetOriginalProfile()->GetSSLConfigService();
   }
 
+  virtual HostContentSettingsMap* GetHostContentSettingsMap() {
+    // Need to use a separate map from the normal one to avoid persisting
+    // content setting changes in OTR mode.
+    if (!host_content_settings_map_.get())
+      host_content_settings_map_.reset(new HostContentSettingsMap(this));
+    return host_content_settings_map_.get();
+  }
+
   virtual HostZoomMap* GetHostZoomMap() {
     // Need to use a separate map from the normal one to avoid persisting zoom
     // changes in OTR mode.
@@ -535,6 +544,8 @@
 
   scoped_refptr<ChromeURLRequestContextGetter> extensions_request_context_;
 
+  scoped_ptr<HostContentSettingsMap> host_content_settings_map_;
+
   scoped_refptr<HostZoomMap> host_zoom_map_;
 
   // The download manager that only stores downloaded items in memory.
@@ -572,6 +583,7 @@
       request_context_(NULL),
       media_request_context_(NULL),
       extensions_request_context_(NULL),
+      host_content_settings_map_(NULL),
       host_zoom_map_(NULL),
       history_service_created_(false),
       favicon_service_created_(false),
@@ -961,6 +973,12 @@
   return ssl_config_service_manager_->Get();
 }
 
+HostContentSettingsMap* ProfileImpl::GetHostContentSettingsMap() {
+  if (!host_content_settings_map_.get())
+    host_content_settings_map_.reset(new HostContentSettingsMap(this));
+  return host_content_settings_map_.get();
+}
+
 HostZoomMap* ProfileImpl::GetHostZoomMap() {
   if (!host_zoom_map_)
     host_zoom_map_ = new HostZoomMap(this);