Index: content/browser/loader/resource_loader_unittest.cc |
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc |
index 9123107b4b59822a7c7dfd0ee52670b8183b0267..13debea36e1279978df87549bc05c7faabc36a40 100644 |
--- a/content/browser/loader/resource_loader_unittest.cc |
+++ b/content/browser/loader/resource_loader_unittest.cc |
@@ -40,35 +40,38 @@ namespace { |
// inspection. |
class ClientCertStoreStub : public net::ClientCertStore { |
public: |
- ClientCertStoreStub(const net::CertificateList& certs) |
- : response_(certs), async_(false), request_count_(0) {} |
- |
- ~ClientCertStoreStub() override {} |
- |
- // Configures whether the certificates are returned asynchronously or not. |
- void set_async(bool async) { async_ = async; } |
- |
- // Returns |cert_authorities| field of the certificate request passed in the |
- // most recent call to GetClientCerts(). |
+ // Creates a new ClientCertStoreStub that returns |response| on query. It |
+ // saves the number of requests and most recently certificate authorities list |
+ // in |requested_authorities| and |request_count|, respectively. The caller is |
+ // responsible for ensuring those pointers outlive the ClientCertStoreStub. |
+ // |
// TODO(ppi): Make the stub independent from the internal representation of |
- // SSLCertRequestInfo. For now it seems that we cannot neither save the |
+ // SSLCertRequestInfo. For now it seems that we can neither save the |
// scoped_refptr<> (since it is never passed to us) nor copy the entire |
// CertificateRequestInfo (since there is no copy constructor). |
- std::vector<std::string> requested_authorities() { |
- return requested_authorities_; |
+ ClientCertStoreStub(const net::CertificateList& response, |
+ int* request_count, |
+ std::vector<std::string>* requested_authorities) |
+ : response_(response), |
+ async_(false), |
+ requested_authorities_(requested_authorities), |
+ request_count_(request_count) { |
+ requested_authorities_->clear(); |
+ *request_count_ = 0; |
} |
- // Returns the number of calls to GetClientCerts(). |
- int request_count() { |
- return request_count_; |
- } |
+ ~ClientCertStoreStub() override {} |
+ |
+ // Configures whether the certificates are returned asynchronously or not. |
+ void set_async(bool async) { async_ = async; } |
// net::ClientCertStore: |
void GetClientCerts(const net::SSLCertRequestInfo& cert_request_info, |
net::CertificateList* selected_certs, |
const base::Closure& callback) override { |
- ++request_count_; |
- requested_authorities_ = cert_request_info.cert_authorities; |
+ *requested_authorities_ = cert_request_info.cert_authorities; |
+ ++(*request_count_); |
+ |
*selected_certs = response_; |
if (async_) { |
base::MessageLoop::current()->PostTask(FROM_HERE, callback); |
@@ -80,8 +83,8 @@ class ClientCertStoreStub : public net::ClientCertStore { |
private: |
const net::CertificateList response_; |
bool async_; |
- int request_count_; |
- std::vector<std::string> requested_authorities_; |
+ std::vector<std::string>* requested_authorities_; |
+ int* request_count_; |
}; |
// Arbitrary read buffer size. |
@@ -377,15 +380,12 @@ class ResourceLoaderTest : public testing::Test, |
// selection. |
TEST_F(ResourceLoaderTest, ClientCertStoreLookup) { |
// Set up the test client cert store. |
+ int store_request_count; |
+ std::vector<std::string> store_requested_authorities; |
net::CertificateList dummy_certs(1, scoped_refptr<net::X509Certificate>( |
new net::X509Certificate("test", "test", base::Time(), base::Time()))); |
- scoped_ptr<ClientCertStoreStub> test_store( |
- new ClientCertStoreStub(dummy_certs)); |
- EXPECT_EQ(0, test_store->request_count()); |
- |
- // Ownership of the |test_store| is about to be turned over to ResourceLoader. |
- // We need to keep raw pointer copies to access these objects later. |
- ClientCertStoreStub* raw_ptr_to_store = test_store.get(); |
+ scoped_ptr<ClientCertStoreStub> test_store(new ClientCertStoreStub( |
+ dummy_certs, &store_request_count, &store_requested_authorities)); |
resource_context_.SetClientCertStore(test_store.Pass()); |
// Prepare a dummy certificate request. |
@@ -407,8 +407,8 @@ TEST_F(ResourceLoaderTest, ClientCertStoreLookup) { |
SetBrowserClientForTesting(old_client); |
// Check if the test store was queried against correct |cert_authorities|. |
- EXPECT_EQ(1, raw_ptr_to_store->request_count()); |
- EXPECT_EQ(dummy_authority, raw_ptr_to_store->requested_authorities()); |
+ EXPECT_EQ(1, store_request_count); |
+ EXPECT_EQ(dummy_authority, store_requested_authorities); |
// Check if the retrieved certificates were passed to the content browser |
// client. |
@@ -446,14 +446,13 @@ TEST_F(ResourceLoaderTest, ClientCertStoreNull) { |
TEST_F(ResourceLoaderTest, ClientCertStoreAsyncCancel) { |
// Set up the test client cert store. |
+ int store_request_count; |
+ std::vector<std::string> store_requested_authorities; |
scoped_ptr<ClientCertStoreStub> test_store( |
- new ClientCertStoreStub(net::CertificateList())); |
+ new ClientCertStoreStub(net::CertificateList(), &store_request_count, |
+ &store_requested_authorities)); |
test_store->set_async(true); |
- EXPECT_EQ(0, test_store->request_count()); |
- |
- // Ownership of the |test_store| is about to be turned over to ResourceLoader. |
- // We need to keep raw pointer copies to access these objects later. |
- ClientCertStoreStub* raw_ptr_to_store = test_store.get(); |
+ EXPECT_EQ(0, store_request_count); |
resource_context_.SetClientCertStore(test_store.Pass()); |
// Prepare a dummy certificate request. |
@@ -467,8 +466,8 @@ TEST_F(ResourceLoaderTest, ClientCertStoreAsyncCancel) { |
loader_->OnCertificateRequested(raw_ptr_to_request_, cert_request_info.get()); |
// Check if the test store was queried against correct |cert_authorities|. |
- EXPECT_EQ(1, raw_ptr_to_store->request_count()); |
- EXPECT_EQ(dummy_authority, raw_ptr_to_store->requested_authorities()); |
+ EXPECT_EQ(1, store_request_count); |
+ EXPECT_EQ(dummy_authority, store_requested_authorities); |
// Cancel the request before the store calls the callback. |
loader_.reset(); |