Commit 1f70e1b1 authored by Colin Blundell's avatar Colin Blundell Committed by Commit Bot

[WebLayer] Add ChromeSSLHostStateDelegateFactory

This factory will be needed for using this class in WebLayer in order
to share the logic for bypassing SSL interstitials between WebLayer and
Chrome. The factory follows that of //chrome.

Bug: 1030692
Change-Id: I84ac6ef02331b7d038b3a13e4e31951b4932d124
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2063007
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: default avatarCarlos IL <carlosil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#743888}
parent a6e49d50
...@@ -101,6 +101,8 @@ jumbo_static_library("weblayer_lib") { ...@@ -101,6 +101,8 @@ jumbo_static_library("weblayer_lib") {
"browser/browser_main_parts_impl.h", "browser/browser_main_parts_impl.h",
"browser/browser_process.cc", "browser/browser_process.cc",
"browser/browser_process.h", "browser/browser_process.h",
"browser/chrome_ssl_host_state_delegate_factory.cc",
"browser/chrome_ssl_host_state_delegate_factory.h",
"browser/content_browser_client_impl.cc", "browser/content_browser_client_impl.cc",
"browser/content_browser_client_impl.h", "browser/content_browser_client_impl.h",
"browser/controls_visibility_reason.h", "browser/controls_visibility_reason.h",
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "components/prefs/pref_service_factory.h" #include "components/prefs/pref_service_factory.h"
#include "components/safe_browsing/core/common/safe_browsing_prefs.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/security_interstitials/content/chrome_ssl_host_state_delegate.h"
#include "components/user_prefs/user_prefs.h" #include "components/user_prefs/user_prefs.h"
#include "content/public/browser/device_service.h" #include "content/public/browser/device_service.h"
#include "content/public/browser/download_request_utils.h" #include "content/public/browser/download_request_utils.h"
...@@ -216,6 +217,7 @@ void BrowserContextImpl::RegisterPrefs( ...@@ -216,6 +217,7 @@ void BrowserContextImpl::RegisterPrefs(
pref_registry->RegisterBooleanPref( pref_registry->RegisterBooleanPref(
embedder_support::kAlternateErrorPagesEnabled, true); embedder_support::kAlternateErrorPagesEnabled, true);
ChromeSSLHostStateDelegate::RegisterProfilePrefs(pref_registry);
HostContentSettingsMap::RegisterProfilePrefs(pref_registry); HostContentSettingsMap::RegisterProfilePrefs(pref_registry);
safe_browsing::RegisterProfilePrefs(pref_registry); safe_browsing::RegisterProfilePrefs(pref_registry);
} }
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "ui/base/material_design/material_design_controller.h" #include "ui/base/material_design/material_design_controller.h"
#include "ui/base/resource/resource_bundle.h" #include "ui/base/resource/resource_bundle.h"
#include "weblayer/browser/browser_process.h" #include "weblayer/browser/browser_process.h"
#include "weblayer/browser/chrome_ssl_host_state_delegate_factory.h"
#include "weblayer/browser/host_content_settings_map_factory.h" #include "weblayer/browser/host_content_settings_map_factory.h"
#include "weblayer/browser/webui/web_ui_controller_factory.h" #include "weblayer/browser/webui/web_ui_controller_factory.h"
#include "weblayer/public/main.h" #include "weblayer/public/main.h"
...@@ -60,6 +61,7 @@ namespace { ...@@ -60,6 +61,7 @@ namespace {
// especially important for services that should be created at profile // especially important for services that should be created at profile
// creation time as compared to lazily on first access. // creation time as compared to lazily on first access.
static void EnsureBrowserContextKeyedServiceFactoriesBuilt() { static void EnsureBrowserContextKeyedServiceFactoriesBuilt() {
ChromeSSLHostStateDelegateFactory::GetInstance();
HostContentSettingsMapFactory::GetInstance(); HostContentSettingsMapFactory::GetInstance();
#if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION) #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
......
// Copyright 2020 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.
#include "weblayer/browser/chrome_ssl_host_state_delegate_factory.h"
#include <memory>
#include "base/macros.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/security_interstitials/content/chrome_ssl_host_state_delegate.h"
#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/browser_context.h"
#include "weblayer/browser/host_content_settings_map_factory.h"
namespace weblayer {
// static
ChromeSSLHostStateDelegate*
ChromeSSLHostStateDelegateFactory::GetForBrowserContext(
content::BrowserContext* browser_context) {
return static_cast<ChromeSSLHostStateDelegate*>(
GetInstance()->GetServiceForBrowserContext(browser_context, true));
}
// static
ChromeSSLHostStateDelegateFactory*
ChromeSSLHostStateDelegateFactory::GetInstance() {
return base::Singleton<ChromeSSLHostStateDelegateFactory>::get();
}
ChromeSSLHostStateDelegateFactory::ChromeSSLHostStateDelegateFactory()
: BrowserContextKeyedServiceFactory(
"ChromeSSLHostStateDelegate",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(HostContentSettingsMapFactory::GetInstance());
}
ChromeSSLHostStateDelegateFactory::~ChromeSSLHostStateDelegateFactory() =
default;
KeyedService* ChromeSSLHostStateDelegateFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
return new ChromeSSLHostStateDelegate(
context, user_prefs::UserPrefs::Get(context),
HostContentSettingsMapFactory::GetForBrowserContext(context));
}
content::BrowserContext*
ChromeSSLHostStateDelegateFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
return context;
}
} // namespace weblayer
// Copyright 2020 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.
#ifndef WEBLAYER_BROWSER_CHROME_SSL_HOST_STATE_DELEGATE_FACTORY_H_
#define WEBLAYER_BROWSER_CHROME_SSL_HOST_STATE_DELEGATE_FACTORY_H_
#include "base/macros.h"
#include "base/memory/singleton.h"
#include "base/values.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
#include "components/prefs/pref_service.h"
class ChromeSSLHostStateDelegate;
namespace weblayer {
// Singleton that associates all ChromeSSLHostStateDelegates with
// BrowserContexts.
class ChromeSSLHostStateDelegateFactory
: public BrowserContextKeyedServiceFactory {
public:
static ChromeSSLHostStateDelegate* GetForBrowserContext(
content::BrowserContext* browser_context);
static ChromeSSLHostStateDelegateFactory* GetInstance();
private:
friend struct base::DefaultSingletonTraits<ChromeSSLHostStateDelegateFactory>;
ChromeSSLHostStateDelegateFactory();
~ChromeSSLHostStateDelegateFactory() override;
ChromeSSLHostStateDelegateFactory(const ChromeSSLHostStateDelegateFactory&) =
delete;
ChromeSSLHostStateDelegateFactory& operator=(
const ChromeSSLHostStateDelegateFactory&) = delete;
// BrowserContextKeyedServiceFactory methods:
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_CHROME_SSL_HOST_STATE_DELEGATE_FACTORY_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment