// Copyright (c) 2016 The Chromium Embedded Framework 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 CEF_LIBCEF_BROWSER_SSL_STATUS_IMPL_H_
#define CEF_LIBCEF_BROWSER_SSL_STATUS_IMPL_H_
#pragma once

#include "include/cef_ssl_status.h"

#include "content/public/browser/ssl_status.h"

// CefSSLStatus implementation
class CefSSLStatusImpl : public CefSSLStatus {
 public:
  explicit CefSSLStatusImpl(const content::SSLStatus& value);

  // CefSSLStatus methods.
  bool IsSecureConnection() override;
  cef_cert_status_t GetCertStatus() override;
  cef_ssl_version_t GetSSLVersion() override;
  cef_ssl_content_status_t GetContentStatus() override;
  CefRefPtr<CefX509Certificate> GetX509Certificate() override;

 private:
  cef_cert_status_t cert_status_;
  cef_ssl_version_t ssl_version_;
  cef_ssl_content_status_t content_status_;

  // Don't create a CefX509Certificate object until requested.
  scoped_refptr<net::X509Certificate> certificate_;
  CefRefPtr<CefX509Certificate> cef_certificate_;

  IMPLEMENT_REFCOUNTING(CefSSLStatusImpl);
  DISALLOW_COPY_AND_ASSIGN(CefSSLStatusImpl);
};

#endif  // CEF_LIBCEF_BROWSER_SSL_STATUS_IMPL_H_