Index: chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc |
diff --git a/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc b/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc |
index ef0081b23fcaf8bc8614c1a73b441a2b0b9705aa..d45dba602aa977e1e0f9a43c4986bc92853fa5a7 100644 |
--- a/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc |
+++ b/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc |
@@ -52,8 +52,9 @@ class CertificateProviderService::CertKeyProviderImpl |
certificate_provider::ThreadSafeCertificateMap* certificate_map); |
~CertKeyProviderImpl() override; |
- bool GetCertificateKey(const net::X509Certificate& cert, |
- scoped_ptr<net::SSLPrivateKey>* private_key) override; |
+ bool GetCertificateKey( |
+ const net::X509Certificate& cert, |
+ scoped_refptr<net::SSLPrivateKey>* private_key) override; |
private: |
const scoped_refptr<base::SequencedTaskRunner> service_task_runner_; |
@@ -104,7 +105,6 @@ class CertificateProviderService::SSLPrivateKey : public net::SSLPrivateKey { |
const CertificateInfo& cert_info, |
const scoped_refptr<base::SequencedTaskRunner>& service_task_runner, |
const base::WeakPtr<CertificateProviderService>& service); |
- ~SSLPrivateKey() override; |
// net::SSLPrivateKey: |
Type GetType() override; |
@@ -115,6 +115,8 @@ class CertificateProviderService::SSLPrivateKey : public net::SSLPrivateKey { |
const SignCallback& callback) override; |
private: |
+ ~SSLPrivateKey() override; |
+ |
static void SignDigestOnServiceTaskRunner( |
const base::WeakPtr<CertificateProviderService>& service, |
const std::string& extension_id, |
@@ -150,7 +152,7 @@ CertificateProviderService::CertKeyProviderImpl::~CertKeyProviderImpl() {} |
bool CertificateProviderService::CertKeyProviderImpl::GetCertificateKey( |
const net::X509Certificate& cert, |
- scoped_ptr<net::SSLPrivateKey>* private_key) { |
+ scoped_refptr<net::SSLPrivateKey>* private_key) { |
bool is_currently_provided = false; |
CertificateInfo info; |
std::string extension_id; |
@@ -159,8 +161,10 @@ bool CertificateProviderService::CertKeyProviderImpl::GetCertificateKey( |
if (!is_currently_provided) |
return false; |
- private_key->reset( |
- new SSLPrivateKey(extension_id, info, service_task_runner_, service_)); |
+ scoped_refptr<net::SSLPrivateKey> new_key = |
+ new SSLPrivateKey(extension_id, info, service_task_runner_, service_); |
+ private_key->swap(new_key); |
+ |
return true; |
} |