| Index: chrome/browser/chrome_content_browser_client.cc
 | 
| diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 | 
| index 0c5402e3ecf559859775e5d260e361cd070815e8..7828e8289ef1db0757ca6b70a4a981903c7827c8 100644
 | 
| --- a/chrome/browser/chrome_content_browser_client.cc
 | 
| +++ b/chrome/browser/chrome_content_browser_client.cc
 | 
| @@ -71,6 +71,8 @@
 | 
|  #include "chrome/browser/renderer_host/chrome_navigation_ui_data.h"
 | 
|  #include "chrome/browser/renderer_host/chrome_render_message_filter.h"
 | 
|  #include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h"
 | 
| +#include "chrome/browser/safe_browsing/certificate_reporting_service.h"
 | 
| +#include "chrome/browser/safe_browsing/certificate_reporting_service_factory.h"
 | 
|  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
 | 
|  #include "chrome/browser/safe_browsing/ui_manager.h"
 | 
|  #include "chrome/browser/search/instant_service.h"
 | 
| @@ -138,6 +140,7 @@
 | 
|  #include "components/prefs/scoped_user_pref_update.h"
 | 
|  #include "components/rappor/rappor_recorder_impl.h"
 | 
|  #include "components/rappor/rappor_utils.h"
 | 
| +#include "components/safe_browsing_db/safe_browsing_prefs.h"
 | 
|  #include "components/security_interstitials/core/ssl_error_ui.h"
 | 
|  #include "components/signin/core/common/profile_management_switches.h"
 | 
|  #include "components/spellcheck/spellcheck_build_features.h"
 | 
| @@ -660,29 +663,25 @@ void HandleFlashDownloadActionOnUIThread(int render_process_id,
 | 
|  #endif  // BUILDFLAG(ENABLE_PLUGINS)
 | 
|  
 | 
|  // An implementation of the SSLCertReporter interface used by
 | 
| -// SSLErrorHandler. Uses the SafeBrowsing UI manager to send invalid
 | 
| -// certificate reports.
 | 
| -class SafeBrowsingSSLCertReporter : public SSLCertReporter {
 | 
| +// SSLErrorHandler. Uses CertificateReportingService to send reports. The
 | 
| +// service handles queueing and re-sending of failed reports. Each certificate
 | 
| +// error creates a new instance of this class.
 | 
| +class CertificateReportingServiceCertReporter : public SSLCertReporter {
 | 
|   public:
 | 
| -  explicit SafeBrowsingSSLCertReporter(
 | 
| -      const scoped_refptr<safe_browsing::SafeBrowsingUIManager>&
 | 
| -          safe_browsing_ui_manager)
 | 
| -      : safe_browsing_ui_manager_(safe_browsing_ui_manager) {}
 | 
| -  ~SafeBrowsingSSLCertReporter() override {}
 | 
| +  explicit CertificateReportingServiceCertReporter(
 | 
| +      CertificateReportingService* service)
 | 
| +      : service_(service) {}
 | 
| +  ~CertificateReportingServiceCertReporter() override {}
 | 
|  
 | 
|    // SSLCertReporter methods:
 | 
|    void ReportInvalidCertificateChain(
 | 
|        const std::string& serialized_report) override {
 | 
| -    if (safe_browsing_ui_manager_) {
 | 
| -      safe_browsing_ui_manager_->ReportInvalidCertificateChain(
 | 
| -          serialized_report, base::Bind(&base::DoNothing));
 | 
| -    }
 | 
| +    service_->Send(serialized_report);
 | 
|    }
 | 
| -  void OnDidNotSendReport() override {}
 | 
| +  void OnDidNotSendReport() override { service_->DidAttemptSend(false); }
 | 
|  
 | 
|   private:
 | 
| -  const scoped_refptr<safe_browsing::SafeBrowsingUIManager>
 | 
| -      safe_browsing_ui_manager_;
 | 
| +  CertificateReportingService* service_;
 | 
|  };
 | 
|  
 | 
|  #if BUILDFLAG(ANDROID_JAVA_UI)
 | 
| @@ -2203,12 +2202,31 @@ void ChromeContentBrowserClient::AllowCertificateError(
 | 
|    if (expired_previous_decision)
 | 
|      options_mask |= SSLErrorUI::EXPIRED_BUT_PREVIOUSLY_ALLOWED;
 | 
|  
 | 
| -  safe_browsing::SafeBrowsingService* safe_browsing_service =
 | 
| -      g_browser_process->safe_browsing_service();
 | 
| -  std::unique_ptr<SafeBrowsingSSLCertReporter> cert_reporter(
 | 
| -      new SafeBrowsingSSLCertReporter(safe_browsing_service
 | 
| -                                          ? safe_browsing_service->ui_manager()
 | 
| -                                          : nullptr));
 | 
| +  // safe_browsing::SafeBrowsingService* safe_browsing_service =
 | 
| +  //    g_browser_process->safe_browsing_service();
 | 
| +  CertificateReportingService* cert_reporting_service =
 | 
| +      CertificateReportingServiceFactory::GetForBrowserContext(
 | 
| +          web_contents->GetBrowserContext());
 | 
| +
 | 
| +  /*if (!cert_reporting_service->IsInitialized()) {
 | 
| +    Profile* profile =
 | 
| +        Profile::FromBrowserContext(web_contents->GetBrowserContext());
 | 
| +    SafeBrowsingPreferenceObserver* observer =
 | 
| +        new SafeBrowsingPreferenceObserver(*profile->GetPrefs(),
 | 
| +                                           safe_browsing_service,
 | 
| +                                           cert_reporting_service);
 | 
| +    // Initialize cert reporting service and subscribe it to SafeBrowsing
 | 
| +    // shutdown notifications.
 | 
| +    cert_reporting_service->Initialize(
 | 
| +        std::unique_ptr<SafeBrowsingPreferenceObserver>(observer),
 | 
| +        safe_browsing_service->url_request_context(),
 | 
| +        safe_browsing_service->RegisterShutdownCallback(
 | 
| +            base::Bind(&CertificateReportingService::Shutdown,
 | 
| +                       base::Unretained(cert_reporting_service))));
 | 
| +  }*/
 | 
| +
 | 
| +  std::unique_ptr<CertificateReportingServiceCertReporter> cert_reporter(
 | 
| +      new CertificateReportingServiceCertReporter(cert_reporting_service));
 | 
|    SSLErrorHandler::HandleSSLError(web_contents, cert_error, ssl_info,
 | 
|                                    request_url, options_mask,
 | 
|                                    std::move(cert_reporter), callback);
 | 
| 
 |