summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/base/ssl_client_auth_cache.cc4
-rw-r--r--net/base/ssl_client_auth_cache.h3
-rw-r--r--net/base/ssl_client_auth_cache_unittest.cc31
3 files changed, 38 insertions, 0 deletions
diff --git a/net/base/ssl_client_auth_cache.cc b/net/base/ssl_client_auth_cache.cc
index 355073f..cdaad7f 100644
--- a/net/base/ssl_client_auth_cache.cc
+++ b/net/base/ssl_client_auth_cache.cc
@@ -37,4 +37,8 @@ void SSLClientAuthCache::Remove(const std::string& server) {
cache_.erase(server);
}
+void SSLClientAuthCache::Clear() {
+ cache_.clear();
+}
+
} // namespace net
diff --git a/net/base/ssl_client_auth_cache.h b/net/base/ssl_client_auth_cache.h
index 2b276a2..b37164a 100644
--- a/net/base/ssl_client_auth_cache.h
+++ b/net/base/ssl_client_auth_cache.h
@@ -44,6 +44,9 @@ class SSLClientAuthCache {
// Remove the client certificate for |server| from the cache, if one exists.
void Remove(const std::string& server);
+ // Removes all cache entries.
+ void Clear();
+
private:
typedef std::string AuthCacheKey;
typedef scoped_refptr<X509Certificate> AuthCacheValue;
diff --git a/net/base/ssl_client_auth_cache_unittest.cc b/net/base/ssl_client_auth_cache_unittest.cc
index f528d58..144e114 100644
--- a/net/base/ssl_client_auth_cache_unittest.cc
+++ b/net/base/ssl_client_auth_cache_unittest.cc
@@ -137,4 +137,35 @@ TEST(SSLClientAuthCacheTest, LookupNullPreference) {
EXPECT_EQ(NULL, cached_cert.get());
}
+// Check that the Clear() method removes all cache entries.
+TEST(SSLClientAuthCacheTest, Clear) {
+ SSLClientAuthCache cache;
+ base::Time start_date = base::Time::Now();
+ base::Time expiration_date = start_date + base::TimeDelta::FromDays(1);
+
+ std::string server1("foo:443");
+ scoped_refptr<X509Certificate> cert1(
+ new X509Certificate("foo", "CA", start_date, expiration_date));
+
+ cache.Add(server1, cert1);
+
+ std::string server2("foo2:443");
+ cache.Add(server2, NULL);
+
+ scoped_refptr<X509Certificate> cached_cert;
+
+ // Demonstrate the set up is correct.
+ EXPECT_TRUE(cache.Lookup(server1, &cached_cert));
+ EXPECT_EQ(cert1, cached_cert);
+
+ EXPECT_TRUE(cache.Lookup(server2, &cached_cert));
+ EXPECT_EQ(NULL, cached_cert.get());
+
+ cache.Clear();
+
+ // Check that we no longer have entries for either server.
+ EXPECT_FALSE(cache.Lookup(server1, &cached_cert));
+ EXPECT_FALSE(cache.Lookup(server2, &cached_cert));
+}
+
} // namespace net