123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // Copyright 2019 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/ssl_error_controller_client.h"
- #include "base/task/thread_pool.h"
- #include "build/build_config.h"
- #include "components/security_interstitials/content/settings_page_helper.h"
- #include "components/security_interstitials/content/utils.h"
- #include "components/security_interstitials/core/metrics_helper.h"
- #include "content/public/browser/browser_context.h"
- #include "content/public/browser/browser_thread.h"
- #include "content/public/browser/ssl_host_state_delegate.h"
- #include "content/public/browser/web_contents.h"
- #include "weblayer/browser/i18n_util.h"
- #include "weblayer/browser/tab_impl.h"
- #include "weblayer/public/error_page_delegate.h"
- namespace weblayer {
- SSLErrorControllerClient::SSLErrorControllerClient(
- content::WebContents* web_contents,
- int cert_error,
- const net::SSLInfo& ssl_info,
- const GURL& request_url,
- std::unique_ptr<security_interstitials::MetricsHelper> metrics_helper,
- std::unique_ptr<security_interstitials::SettingsPageHelper>
- settings_page_helper)
- : security_interstitials::SecurityInterstitialControllerClient(
- web_contents,
- std::move(metrics_helper),
- nullptr /*prefs*/,
- i18n::GetApplicationLocale(),
- GURL("about:blank") /*default_safe_page*/,
- std::move(settings_page_helper)),
- cert_error_(cert_error),
- ssl_info_(ssl_info),
- request_url_(request_url) {}
- void SSLErrorControllerClient::GoBack() {
- ErrorPageDelegate* delegate =
- TabImpl::FromWebContents(web_contents_)->error_page_delegate();
- if (delegate && delegate->OnBackToSafety())
- return;
- SecurityInterstitialControllerClient::GoBackAfterNavigationCommitted();
- }
- void SSLErrorControllerClient::Proceed() {
- web_contents_->GetBrowserContext()->GetSSLHostStateDelegate()->AllowCert(
- request_url_.host(), *ssl_info_.cert.get(), cert_error_,
- web_contents_->GetPrimaryMainFrame()->GetStoragePartition());
- Reload();
- }
- void SSLErrorControllerClient::OpenUrlInNewForegroundTab(const GURL& url) {
- // For now WebLayer doesn't support multiple tabs, so just open the Learn
- // More link in the current tab.
- OpenUrlInCurrentTab(url);
- }
- bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() {
- return true;
- }
- void SSLErrorControllerClient::LaunchDateAndTimeSettings() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- base::ThreadPool::PostTask(
- FROM_HERE, {base::TaskPriority::USER_VISIBLE, base::MayBlock()},
- base::BindOnce(&security_interstitials::LaunchDateAndTimeSettings));
- }
- } // namespace weblayer
|