diff --git a/atom/browser/api/atom_api_session.cc b/atom/browser/api/atom_api_session.cc index c898f5f1b33f..87d42486d503 100644 --- a/atom/browser/api/atom_api_session.cc +++ b/atom/browser/api/atom_api_session.cc @@ -285,6 +285,14 @@ void SetProxyInIO(net::URLRequestContextGetter* getter, RunCallbackInUI(callback); } +void SetCertVerifyProcInIO( + const scoped_refptr& context_getter, + const AtomCertVerifier::VerifyProc& proc) { + auto request_context = context_getter->GetURLRequestContext(); + static_cast(request_context->cert_verifier())-> + SetVerifyProc(proc); +} + void ClearHostResolverCacheInIO( const scoped_refptr& context_getter, const base::Closure& callback) { @@ -434,7 +442,10 @@ void Session::SetCertVerifyProc(v8::Local val, return; } - browser_context_->cert_verifier()->SetVerifyProc(proc); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::Bind(&SetCertVerifyProcInIO, + make_scoped_refptr(browser_context_->GetRequestContext()), + proc)); } void Session::SetPermissionRequestHandler(v8::Local val, diff --git a/atom/browser/atom_browser_context.cc b/atom/browser/atom_browser_context.cc index 7b682543a09c..94cc3ee03d50 100644 --- a/atom/browser/atom_browser_context.cc +++ b/atom/browser/atom_browser_context.cc @@ -66,7 +66,6 @@ std::string RemoveWhitespace(const std::string& str) { AtomBrowserContext::AtomBrowserContext(const std::string& partition, bool in_memory) : brightray::BrowserContext(partition, in_memory), - cert_verifier_(new AtomCertVerifier), network_delegate_(new AtomNetworkDelegate) { // Construct user agent string. Browser* browser = Browser::Get(); @@ -174,7 +173,7 @@ content::PermissionManager* AtomBrowserContext::GetPermissionManager() { } std::unique_ptr AtomBrowserContext::CreateCertVerifier() { - return make_scoped_ptr(cert_verifier_); + return std::unique_ptr(new AtomCertVerifier); } net::SSLConfigService* AtomBrowserContext::CreateSSLConfigService() { diff --git a/atom/browser/atom_browser_context.h b/atom/browser/atom_browser_context.h index f793bc9870d6..732f1d045731 100644 --- a/atom/browser/atom_browser_context.h +++ b/atom/browser/atom_browser_context.h @@ -12,7 +12,6 @@ namespace atom { class AtomDownloadManagerDelegate; -class AtomCertVerifier; class AtomNetworkDelegate; class AtomPermissionManager; class WebViewManager; @@ -42,7 +41,6 @@ class AtomBrowserContext : public brightray::BrowserContext { // brightray::BrowserContext: void RegisterPrefs(PrefRegistrySimple* pref_registry) override; - AtomCertVerifier* cert_verifier() const { return cert_verifier_; } AtomNetworkDelegate* network_delegate() const { return network_delegate_; } private: @@ -52,7 +50,6 @@ class AtomBrowserContext : public brightray::BrowserContext { std::string user_agent_; // Managed by brightray::BrowserContext. - AtomCertVerifier* cert_verifier_; AtomNetworkDelegate* network_delegate_; DISALLOW_COPY_AND_ASSIGN(AtomBrowserContext);