Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4465)

Unified Diff: chrome/browser/ssl/ssl_add_certificate.cc

Issue 2363653002: Cleanup unreachable cert adding code (Closed)
Patch Set: Rebased Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ssl/ssl_add_certificate.h ('k') | chrome/browser/ssl/ssl_add_certificate_android.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ssl/ssl_add_certificate.cc
diff --git a/chrome/browser/ssl/ssl_add_certificate.cc b/chrome/browser/ssl/ssl_add_certificate.cc
deleted file mode 100644
index a9f26bf0cf977ef789f4147e614f43a79df7752b..0000000000000000000000000000000000000000
--- a/chrome/browser/ssl/ssl_add_certificate.cc
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright (c) 2012 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 "chrome/browser/ssl/ssl_add_certificate.h"
-
-#include "base/macros.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "build/build_config.h"
-#include "chrome/browser/certificate_viewer.h"
-#include "chrome/browser/infobars/infobar_service.h"
-#include "chrome/grit/generated_resources.h"
-#include "components/infobars/core/confirm_infobar_delegate.h"
-#include "components/infobars/core/infobar.h"
-#include "components/infobars/core/infobar_delegate.h"
-#include "components/infobars/core/simple_alert_infobar_delegate.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-#include "net/base/net_errors.h"
-#include "net/cert/cert_database.h"
-#include "net/cert/x509_certificate.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/gfx/vector_icons_public.h"
-
-using content::BrowserThread;
-using content::RenderFrameHost;
-using content::WebContents;
-
-namespace chrome {
-
-namespace {
-
-class SSLAddCertificateInfoBarDelegate : public ConfirmInfoBarDelegate {
- public:
- // Creates an SSL certificate enrollment result infobar and delegate and adds
- // the infobar to |infobar_service|.
- static void Create(InfoBarService* infobar_service,
- net::X509Certificate* cert);
-
- private:
- explicit SSLAddCertificateInfoBarDelegate(net::X509Certificate* cert);
- ~SSLAddCertificateInfoBarDelegate() override;
-
- // ConfirmInfoBarDelegate:
- Type GetInfoBarType() const override;
- infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
- gfx::VectorIconId GetVectorIconId() const override;
- base::string16 GetMessageText() const override;
- int GetButtons() const override;
- base::string16 GetButtonLabel(InfoBarButton button) const override;
- bool Accept() override;
-
- // The certificate that was added.
- scoped_refptr<net::X509Certificate> cert_;
-
- DISALLOW_COPY_AND_ASSIGN(SSLAddCertificateInfoBarDelegate);
-};
-
-// static
-void SSLAddCertificateInfoBarDelegate::Create(InfoBarService* infobar_service,
- net::X509Certificate* cert) {
- infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
- std::unique_ptr<ConfirmInfoBarDelegate>(
- new SSLAddCertificateInfoBarDelegate(cert))));
-}
-
-SSLAddCertificateInfoBarDelegate::SSLAddCertificateInfoBarDelegate(
- net::X509Certificate* cert)
- : cert_(cert) {
-}
-
-SSLAddCertificateInfoBarDelegate::~SSLAddCertificateInfoBarDelegate() {
-}
-
-infobars::InfoBarDelegate::Type
-SSLAddCertificateInfoBarDelegate::GetInfoBarType() const {
- return PAGE_ACTION_TYPE;
-}
-
-infobars::InfoBarDelegate::InfoBarIdentifier
-SSLAddCertificateInfoBarDelegate::GetIdentifier() const {
- return SSL_ADD_CERTIFICATE_INFOBAR_DELEGATE;
-}
-
-gfx::VectorIconId SSLAddCertificateInfoBarDelegate::GetVectorIconId() const {
- // TODO(davidben): Use a more appropriate icon.
- return gfx::VectorIconId::AUTOLOGIN;
-}
-
-base::string16 SSLAddCertificateInfoBarDelegate::GetMessageText() const {
- // TODO(evanm): GetDisplayName should return UTF-16.
- return l10n_util::GetStringFUTF16(IDS_ADD_CERT_SUCCESS_INFOBAR_LABEL,
- base::UTF8ToUTF16(
- cert_->issuer().GetDisplayName()));
-}
-
-int SSLAddCertificateInfoBarDelegate::GetButtons() const {
- return BUTTON_OK;
-}
-
-base::string16 SSLAddCertificateInfoBarDelegate::GetButtonLabel(
- InfoBarButton button) const {
- DCHECK_EQ(BUTTON_OK, button);
- return l10n_util::GetStringUTF16(IDS_ADD_CERT_SUCCESS_INFOBAR_BUTTON);
-}
-
-bool SSLAddCertificateInfoBarDelegate::Accept() {
- WebContents* web_contents =
- InfoBarService::WebContentsFromInfoBar(infobar());
- ShowCertificateViewer(web_contents,
- web_contents->GetTopLevelNativeWindow(),
- cert_.get());
- // It looks weird to hide the infobar just as the dialog opens.
- return false;
-}
-
-void ShowErrorInfoBar(int message_id,
- int render_process_id,
- int render_frame_id,
- int cert_error) {
- WebContents* web_contents = WebContents::FromRenderFrameHost(
- RenderFrameHost::FromID(render_process_id, render_frame_id));
- if (!web_contents)
- return;
-
- // TODO(davidben): Use a more appropriate icon.
- // TODO(davidben): Display a more user-friendly error string.
- SimpleAlertInfoBarDelegate::Create(
- InfoBarService::FromWebContents(web_contents),
- infobars::InfoBarDelegate::SSL_ADD_CERTIFICATE,
- 0,
- gfx::VectorIconId::AUTOLOGIN,
- l10n_util::GetStringFUTF16(
- IDS_ADD_CERT_ERR_INVALID_CERT, base::IntToString16(-cert_error),
- base::ASCIIToUTF16(net::ErrorToString(cert_error))),
- true);
-}
-
-void ShowSuccessInfoBar(int render_process_id,
- int render_frame_id,
- net::X509Certificate* cert) {
- WebContents* web_contents = WebContents::FromRenderFrameHost(
- RenderFrameHost::FromID(render_process_id, render_frame_id));
- if (!web_contents)
- return;
-
- SSLAddCertificateInfoBarDelegate::Create(
- InfoBarService::FromWebContents(web_contents), cert);
-}
-
-} // namespace
-
-void SSLAddCertificate(
- net::CertificateMimeType cert_type,
- const void* cert_data,
- size_t cert_size,
- int render_process_id,
- int render_frame_id) {
- // Chromium only supports X.509 User certificates on non-Android
- // platforms. Note that this method should not be called for other
- // certificate mime types.
- if (cert_type != net::CERTIFICATE_MIME_TYPE_X509_USER_CERT)
- return;
-
- scoped_refptr<net::X509Certificate> cert;
- if (cert_data != NULL) {
- cert = net::X509Certificate::CreateFromBytes(
- reinterpret_cast<const char*>(cert_data), cert_size);
- }
- // NOTE: Passing a NULL cert pointer if |cert_data| was NULL is
- // intentional here.
-
- // Check if we have a corresponding private key.
- int cert_error = net::CertDatabase::GetInstance()->CheckUserCert(cert.get());
- if (cert_error != net::OK) {
- LOG_IF(ERROR, cert_error == net::ERR_NO_PRIVATE_KEY_FOR_CERT)
- << "No corresponding private key in store for cert: "
- << (cert.get() ? cert->subject().GetDisplayName() : "NULL");
-
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&ShowErrorInfoBar, IDS_ADD_CERT_ERR_INVALID_CERT,
- render_process_id, render_frame_id, cert_error));
- return;
- }
-
- // Install it.
- cert_error = net::CertDatabase::GetInstance()->AddUserCert(cert.get());
-
- // Show the appropriate infobar.
- if (cert_error != net::OK) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&ShowErrorInfoBar, IDS_ADD_CERT_ERR_FAILED,
- render_process_id, render_frame_id, cert_error));
- } else {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&ShowSuccessInfoBar, render_process_id, render_frame_id,
- base::RetainedRef(cert)));
- }
-}
-
-} // namespace chrome
« no previous file with comments | « chrome/browser/ssl/ssl_add_certificate.h ('k') | chrome/browser/ssl/ssl_add_certificate_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698