Don't key client auth on HttpNetworkSession.
It's an IO-thread object being maintained (fortunately just as a pointer) on
the UI thread. It's used to tie together SSLClientAuthObserver instances, but
the BrowserContext is a more suitable UI thread key.
This relands part of https://codereview.chromium.org/596873002
BUG=439134
Review URL: https://codereview.chromium.org/780383002
Cr-Commit-Position: refs/heads/master@{#307274}
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
index f5cb5cf..8af695f 100644
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -364,7 +364,6 @@
void AwContentBrowserClient::SelectClientCertificate(
int render_process_id,
int render_frame_id,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback) {
AwContentsClientBridgeBase* client =
diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h
index 1d0bcea..f9507a67 100644
--- a/android_webview/browser/aw_content_browser_client.h
+++ b/android_webview/browser/aw_content_browser_client.h
@@ -106,7 +106,6 @@
virtual void SelectClientCertificate(
int render_process_id,
int render_frame_id,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback) override;
virtual void RequestPermission(
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 227fc51..94ccf123 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1769,7 +1769,6 @@
void ChromeContentBrowserClient::SelectClientCertificate(
int render_process_id,
int render_frame_id,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback) {
content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
@@ -1822,8 +1821,7 @@
}
}
- chrome::ShowSSLClientCertificateSelector(tab, network_session,
- cert_request_info, callback);
+ chrome::ShowSSLClientCertificateSelector(tab, cert_request_info, callback);
}
void ChromeContentBrowserClient::AddCertificate(
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index aeeabb5..4ea44b3 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -172,7 +172,6 @@
void SelectClientCertificate(
int render_process_id,
int render_frame_id,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback) override;
void AddCertificate(net::CertificateMimeType cert_type,
diff --git a/chrome/browser/ssl/ssl_client_auth_observer.cc b/chrome/browser/ssl/ssl_client_auth_observer.cc
index 46f580e..edc63bb 100644
--- a/chrome/browser/ssl/ssl_client_auth_observer.cc
+++ b/chrome/browser/ssl/ssl_client_auth_observer.cc
@@ -19,10 +19,10 @@
typedef std::pair<net::SSLCertRequestInfo*, net::X509Certificate*> CertDetails;
SSLClientAuthObserver::SSLClientAuthObserver(
- const net::HttpNetworkSession* network_session,
+ const content::BrowserContext* browser_context,
const scoped_refptr<net::SSLCertRequestInfo>& cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback)
- : network_session_(network_session),
+ : browser_context_(browser_context),
cert_request_info_(cert_request_info),
callback_(callback) {
}
@@ -44,7 +44,7 @@
content::NotificationService* service =
content::NotificationService::current();
service->Notify(chrome::NOTIFICATION_SSL_CLIENT_AUTH_CERT_SELECTED,
- content::Source<net::HttpNetworkSession>(network_session_),
+ content::Source<content::BrowserContext>(browser_context_),
content::Details<CertDetails>(&details));
callback_.Run(certificate);
@@ -76,7 +76,7 @@
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
notification_registrar_.Add(
this, chrome::NOTIFICATION_SSL_CLIENT_AUTH_CERT_SELECTED,
- content::Source<net::HttpNetworkSession>(network_session_));
+ content::Source<content::BrowserContext>(browser_context_));
}
void SSLClientAuthObserver::StopObserving() {
diff --git a/chrome/browser/ssl/ssl_client_auth_observer.h b/chrome/browser/ssl/ssl_client_auth_observer.h
index 1fe5f39..62e3fde 100644
--- a/chrome/browser/ssl/ssl_client_auth_observer.h
+++ b/chrome/browser/ssl/ssl_client_auth_observer.h
@@ -11,15 +11,18 @@
#include "content/public/browser/notification_registrar.h"
namespace net {
-class HttpNetworkSession;
class SSLCertRequestInfo;
class X509Certificate;
}
+namespace content {
+class BrowserContext;
+}
+
class SSLClientAuthObserver : public content::NotificationObserver {
public:
SSLClientAuthObserver(
- const net::HttpNetworkSession* network_session,
+ const content::BrowserContext* browser_context,
const scoped_refptr<net::SSLCertRequestInfo>& cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback);
~SSLClientAuthObserver() override;
@@ -52,7 +55,7 @@
const content::NotificationSource& source,
const content::NotificationDetails& details) override;
- const net::HttpNetworkSession* network_session_;
+ const content::BrowserContext* browser_context_;
scoped_refptr<net::SSLCertRequestInfo> cert_request_info_;
base::Callback<void(net::X509Certificate*)> callback_;
content::NotificationRegistrar notification_registrar_;
diff --git a/chrome/browser/ssl/ssl_client_auth_requestor_mock.cc b/chrome/browser/ssl/ssl_client_auth_requestor_mock.cc
index 78c2c96..6f63c32 100644
--- a/chrome/browser/ssl/ssl_client_auth_requestor_mock.cc
+++ b/chrome/browser/ssl/ssl_client_auth_requestor_mock.cc
@@ -4,18 +4,13 @@
#include "chrome/browser/ssl/ssl_client_auth_requestor_mock.h"
-#include "net/http/http_transaction_factory.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_context.h"
SSLClientAuthRequestorMock::SSLClientAuthRequestorMock(
net::URLRequest* request,
const scoped_refptr<net::SSLCertRequestInfo>& cert_request_info)
- : cert_request_info_(cert_request_info),
- http_network_session_(request->context()
- ->http_transaction_factory()
- ->GetSession()) {
+ : cert_request_info_(cert_request_info) {
}
SSLClientAuthRequestorMock::~SSLClientAuthRequestorMock() {}
diff --git a/chrome/browser/ssl/ssl_client_auth_requestor_mock.h b/chrome/browser/ssl/ssl_client_auth_requestor_mock.h
index 69bd729..7d63a7c 100644
--- a/chrome/browser/ssl/ssl_client_auth_requestor_mock.h
+++ b/chrome/browser/ssl/ssl_client_auth_requestor_mock.h
@@ -25,7 +25,6 @@
MOCK_METHOD1(CertificateSelected, void(net::X509Certificate* cert));
scoped_refptr<net::SSLCertRequestInfo> cert_request_info_;
- net::HttpNetworkSession* http_network_session_;
protected:
friend class base::RefCountedThreadSafe<SSLClientAuthRequestorMock>;
diff --git a/chrome/browser/ssl/ssl_client_certificate_selector.h b/chrome/browser/ssl/ssl_client_certificate_selector.h
index afec4ad..1a33c059 100644
--- a/chrome/browser/ssl/ssl_client_certificate_selector.h
+++ b/chrome/browser/ssl/ssl_client_certificate_selector.h
@@ -12,7 +12,6 @@
}
namespace net {
-class HttpNetworkSession;
class SSLCertRequestInfo;
class X509Certificate;
}
@@ -28,7 +27,6 @@
// with a NULL certificate.
void ShowSSLClientCertificateSelector(
content::WebContents* contents,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const SelectCertificateCallback& callback);
diff --git a/chrome/browser/ui/android/ssl_client_certificate_request.cc b/chrome/browser/ui/android/ssl_client_certificate_request.cc
index afe2d7e..65c9adaf 100644
--- a/chrome/browser/ui/android/ssl_client_certificate_request.cc
+++ b/chrome/browser/ui/android/ssl_client_certificate_request.cc
@@ -226,7 +226,6 @@
void ShowSSLClientCertificateSelector(
content::WebContents* contents,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const chrome::SelectCertificateCallback& callback) {
ui::WindowAndroid* window =
diff --git a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.h b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.h
index 991a23a..aacdafe 100644
--- a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.h
+++ b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.h
@@ -16,6 +16,10 @@
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sheet.h"
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet_controller.h"
+namespace content {
+class BrowserContext;
+}
+
class ConstrainedWindowMac;
@class SFChooseIdentityPanel;
class SSLClientAuthObserverCocoaBridge;
@@ -41,7 +45,7 @@
@property (readonly, nonatomic) SFChooseIdentityPanel* panel;
-- (id)initWithNetworkSession:(const net::HttpNetworkSession*)networkSession
+- (id)initWithBrowserContext:(const content::BrowserContext*)browserContext
certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo
callback:(const chrome::SelectCertificateCallback&)callback;
- (void)displayForWebContents:(content::WebContents*)webContents;
diff --git a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.mm b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.mm
index 027b896..9d471b9 100644
--- a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.mm
+++ b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa.mm
@@ -40,11 +40,11 @@
public ConstrainedWindowMacDelegate {
public:
SSLClientAuthObserverCocoaBridge(
- const net::HttpNetworkSession* network_session,
+ const content::BrowserContext* browser_context,
net::SSLCertRequestInfo* cert_request_info,
const chrome::SelectCertificateCallback& callback,
SSLClientCertificateSelectorCocoa* controller)
- : SSLClientAuthObserver(network_session, cert_request_info, callback),
+ : SSLClientAuthObserver(browser_context, cert_request_info, callback),
controller_(controller) {
}
@@ -71,14 +71,13 @@
void ShowSSLClientCertificateSelector(
content::WebContents* contents,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const SelectCertificateCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// The dialog manages its own lifetime.
SSLClientCertificateSelectorCocoa* selector =
[[SSLClientCertificateSelectorCocoa alloc]
- initWithNetworkSession:network_session
+ initWithBrowserContext:contents->GetBrowserContext()
certRequestInfo:cert_request_info
callback:callback];
[selector displayForWebContents:contents];
@@ -88,14 +87,14 @@
@implementation SSLClientCertificateSelectorCocoa
-- (id)initWithNetworkSession:(const net::HttpNetworkSession*)networkSession
+- (id)initWithBrowserContext:(const content::BrowserContext*)browserContext
certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo
callback:(const chrome::SelectCertificateCallback&)callback {
- DCHECK(networkSession);
+ DCHECK(browserContext);
DCHECK(certRequestInfo);
if ((self = [super init])) {
observer_.reset(new SSLClientAuthObserverCocoaBridge(
- networkSession, certRequestInfo, callback, self));
+ browserContext, certRequestInfo, callback, self));
}
return self;
}
diff --git a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm
index 37757d62..a0c71106 100644
--- a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm
+++ b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm
@@ -50,7 +50,7 @@
int count = 0;
SSLClientCertificateSelectorCocoa* selector =
[[SSLClientCertificateSelectorCocoa alloc]
- initWithNetworkSession:auth_requestor_->http_network_session_
+ initWithBrowserContext:web_contents->GetBrowserContext()
certRequestInfo:auth_requestor_->cert_request_info_.get()
callback:base::Bind(&OnCertificateSelected,
&cert,
@@ -72,13 +72,13 @@
// Test that switching to another tab correctly hides the sheet.
IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorCocoaTest, HideShow) {
- SSLClientCertificateSelectorCocoa* selector =
- [[SSLClientCertificateSelectorCocoa alloc]
- initWithNetworkSession:auth_requestor_->http_network_session_
- certRequestInfo:auth_requestor_->cert_request_info_.get()
- callback:chrome::SelectCertificateCallback()];
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
+ SSLClientCertificateSelectorCocoa* selector =
+ [[SSLClientCertificateSelectorCocoa alloc]
+ initWithBrowserContext:web_contents->GetBrowserContext()
+ certRequestInfo:auth_requestor_->cert_request_info_.get()
+ callback:chrome::SelectCertificateCallback()];
[selector displayForWebContents:web_contents];
content::RunAllPendingInMessageLoop();
diff --git a/chrome/browser/ui/views/ssl_client_certificate_selector.cc b/chrome/browser/ui/views/ssl_client_certificate_selector.cc
index 7e84fb0..de31ce8f 100644
--- a/chrome/browser/ui/views/ssl_client_certificate_selector.cc
+++ b/chrome/browser/ui/views/ssl_client_certificate_selector.cc
@@ -82,10 +82,10 @@
SSLClientCertificateSelector::SSLClientCertificateSelector(
content::WebContents* web_contents,
- const net::HttpNetworkSession* network_session,
const scoped_refptr<net::SSLCertRequestInfo>& cert_request_info,
const chrome::SelectCertificateCallback& callback)
- : SSLClientAuthObserver(network_session, cert_request_info, callback),
+ : SSLClientAuthObserver(web_contents->GetBrowserContext(),
+ cert_request_info, callback),
model_(new CertificateSelectorTableModel(cert_request_info.get())),
web_contents_(web_contents),
table_(NULL),
@@ -274,13 +274,12 @@
void ShowSSLClientCertificateSelector(
content::WebContents* contents,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const chrome::SelectCertificateCallback& callback) {
DVLOG(1) << __FUNCTION__ << " " << contents;
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
(new SSLClientCertificateSelector(
- contents, network_session, cert_request_info, callback))->Init();
+ contents, cert_request_info, callback))->Init();
}
} // namespace chrome
diff --git a/chrome/browser/ui/views/ssl_client_certificate_selector.h b/chrome/browser/ui/views/ssl_client_certificate_selector.h
index 882b4b0..de4fbed4 100644
--- a/chrome/browser/ui/views/ssl_client_certificate_selector.h
+++ b/chrome/browser/ui/views/ssl_client_certificate_selector.h
@@ -40,7 +40,6 @@
public:
SSLClientCertificateSelector(
content::WebContents* web_contents,
- const net::HttpNetworkSession* network_session,
const scoped_refptr<net::SSLCertRequestInfo>& cert_request_info,
const chrome::SelectCertificateCallback& callback);
~SSLClientCertificateSelector() override;
diff --git a/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc b/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
index b5dba23f..390abd4 100644
--- a/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
+++ b/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
@@ -73,7 +73,6 @@
browser()->tab_strip_model()->GetActiveWebContents());
selector_ = new SSLClientCertificateSelector(
browser()->tab_strip_model()->GetActiveWebContents(),
- auth_requestor_->http_network_session_,
auth_requestor_->cert_request_info_,
base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
auth_requestor_));
@@ -161,14 +160,12 @@
selector_1_ = new SSLClientCertificateSelector(
browser()->tab_strip_model()->GetWebContentsAt(1),
- auth_requestor_1_->http_network_session_,
auth_requestor_1_->cert_request_info_,
base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
auth_requestor_1_));
selector_1_->Init();
selector_2_ = new SSLClientCertificateSelector(
browser()->tab_strip_model()->GetWebContentsAt(2),
- auth_requestor_2_->http_network_session_,
auth_requestor_2_->cert_request_info_,
base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
auth_requestor_2_));
@@ -239,7 +236,6 @@
selector_1_ = new SSLClientCertificateSelector(
browser_1_->tab_strip_model()->GetActiveWebContents(),
- auth_requestor_1_->http_network_session_,
auth_requestor_1_->cert_request_info_,
base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
auth_requestor_1_));
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc
index 8910deca..2af4ffc5 100644
--- a/content/browser/loader/resource_loader_unittest.cc
+++ b/content/browser/loader/resource_loader_unittest.cc
@@ -231,7 +231,6 @@
void SelectClientCertificate(
int render_process_id,
int render_view_id,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback) override {
++call_count_;
diff --git a/content/browser/ssl/ssl_client_auth_handler.cc b/content/browser/ssl/ssl_client_auth_handler.cc
index b063e619..a0bcdcf 100644
--- a/content/browser/ssl/ssl_client_auth_handler.cc
+++ b/content/browser/ssl/ssl_client_auth_handler.cc
@@ -9,11 +9,8 @@
#include "content/browser/loader/resource_request_info_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
-#include "net/cert/x509_certificate.h"
-#include "net/http/http_transaction_factory.h"
#include "net/ssl/client_cert_store.h"
#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_context.h"
namespace content {
@@ -22,8 +19,6 @@
net::URLRequest* request,
net::SSLCertRequestInfo* cert_request_info)
: request_(request),
- http_network_session_(
- request_->context()->http_transaction_factory()->GetSession()),
cert_request_info_(cert_request_info),
client_cert_store_(client_cert_store.Pass()) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
@@ -117,7 +112,6 @@
GetContentClient()->browser()->SelectClientCertificate(
render_process_host_id,
render_frame_host_id,
- http_network_session_,
cert_request_info_.get(),
base::Bind(&SSLClientAuthHandler::CertificateSelected, this));
}
diff --git a/content/browser/ssl/ssl_client_auth_handler.h b/content/browser/ssl/ssl_client_auth_handler.h
index b848d54..1f55aac1 100644
--- a/content/browser/ssl/ssl_client_auth_handler.h
+++ b/content/browser/ssl/ssl_client_auth_handler.h
@@ -71,9 +71,6 @@
// The net::URLRequest that triggered this client auth.
net::URLRequest* request_;
- // The HttpNetworkSession |request_| is associated with.
- const net::HttpNetworkSession* http_network_session_;
-
// The certs to choose from.
scoped_refptr<net::SSLCertRequestInfo> cert_request_info_;
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index e68ca1b..3c5e123 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -58,7 +58,6 @@
namespace net {
class CookieOptions;
class CookieStore;
-class HttpNetworkSession;
class NetLog;
class SSLCertRequestInfo;
class SSLInfo;
@@ -402,7 +401,6 @@
virtual void SelectClientCertificate(
int render_process_id,
int render_frame_id,
- const net::HttpNetworkSession* network_session,
net::SSLCertRequestInfo* cert_request_info,
const base::Callback<void(net::X509Certificate*)>& callback) {}