summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chrome_content_browser_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chrome_content_browser_client.cc')
-rw-r--r--chrome/browser/chrome_content_browser_client.cc39
1 files changed, 33 insertions, 6 deletions
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index ecac531..39f2fcd 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -9,6 +9,7 @@
#include <vector>
#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/command_line.h"
#include "base/files/scoped_file.h"
#include "base/i18n/icu_util.h"
@@ -53,6 +54,7 @@
#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/safe_browsing_service.h"
+#include "chrome/browser/safe_browsing/ui_manager.h"
#include "chrome/browser/search/instant_service.h"
#include "chrome/browser/search/instant_service_factory.h"
#include "chrome/browser/search/search.h"
@@ -62,6 +64,7 @@
#include "chrome/browser/speech/tts_message_filter.h"
#include "chrome/browser/ssl/ssl_add_certificate.h"
#include "chrome/browser/ssl/ssl_blocking_page.h"
+#include "chrome/browser/ssl/ssl_cert_reporter.h"
#include "chrome/browser/ssl/ssl_client_certificate_selector.h"
#include "chrome/browser/ssl/ssl_error_handler.h"
#include "chrome/browser/sync_file_system/local/sync_file_system_backend.h"
@@ -518,6 +521,29 @@ void HandleBlockedPopupOnUIThread(const BlockedWindowParams& params) {
popup_helper->AddBlockedPopup(params);
}
+// An implementation of the SSLCertReporter interface used by
+// SSLErrorHandler. Uses the SafeBrowsing UI manager to send invalid
+// certificate reports.
+class SafeBrowsingSSLCertReporter : public SSLCertReporter {
+ public:
+ explicit SafeBrowsingSSLCertReporter(
+ const scoped_refptr<SafeBrowsingUIManager>& safe_browsing_ui_manager)
+ : safe_browsing_ui_manager_(safe_browsing_ui_manager) {}
+ ~SafeBrowsingSSLCertReporter() override {}
+
+ // SSLCertReporter implementation
+ void ReportInvalidCertificateChain(const std::string& hostname,
+ const net::SSLInfo& ssl_info) override {
+ if (safe_browsing_ui_manager_) {
+ safe_browsing_ui_manager_->ReportInvalidCertificateChain(
+ hostname, ssl_info, base::Bind(&base::DoNothing));
+ }
+ }
+
+ private:
+ const scoped_refptr<SafeBrowsingUIManager> safe_browsing_ui_manager_;
+};
+
#if defined(OS_ANDROID)
void HandleSingleTabModeBlockOnUIThread(const BlockedWindowParams& params) {
@@ -571,7 +597,7 @@ void GetGuestViewDefaultContentSettingRules(
std::string(),
incognito));
}
-#endif // defined(ENALBE_EXTENSIONS)
+#endif // defined(ENABLE_EXTENSIONS)
} // namespace
@@ -1711,11 +1737,12 @@ void ChromeContentBrowserClient::AllowCertificateError(
SafeBrowsingService* safe_browsing_service =
g_browser_process->safe_browsing_service();
- SSLErrorHandler::HandleSSLError(
- tab, cert_error, ssl_info, request_url, options_mask,
- safe_browsing_service ? safe_browsing_service->ui_manager().get()
- : nullptr,
- callback);
+ scoped_ptr<SafeBrowsingSSLCertReporter> cert_reporter(
+ new SafeBrowsingSSLCertReporter(safe_browsing_service
+ ? safe_browsing_service->ui_manager()
+ : nullptr));
+ SSLErrorHandler::HandleSSLError(tab, cert_error, ssl_info, request_url,
+ options_mask, cert_reporter.Pass(), callback);
}
void ChromeContentBrowserClient::SelectClientCertificate(