diff options
Diffstat (limited to 'net/base')
-rw-r--r-- | net/base/strict_transport_security_state.cc | 7 | ||||
-rw-r--r-- | net/base/strict_transport_security_state.h | 3 | ||||
-rw-r--r-- | net/base/strict_transport_security_state_unittest.cc | 14 |
3 files changed, 24 insertions, 0 deletions
diff --git a/net/base/strict_transport_security_state.cc b/net/base/strict_transport_security_state.cc index fc267c5..cc812d9 100644 --- a/net/base/strict_transport_security_state.cc +++ b/net/base/strict_transport_security_state.cc @@ -187,6 +187,13 @@ bool StrictTransportSecurityState::ParseHeader(const std::string& value, } } +void StrictTransportSecurityState::Clear() { + AutoLock lock(lock_); + + enabled_hosts_.clear(); + DirtyNotify(); +} + void StrictTransportSecurityState::SetDelegate( StrictTransportSecurityState::Delegate* delegate) { AutoLock lock(lock_); diff --git a/net/base/strict_transport_security_state.h b/net/base/strict_transport_security_state.h index 463382c..5739001 100644 --- a/net/base/strict_transport_security_state.h +++ b/net/base/strict_transport_security_state.h @@ -48,6 +48,9 @@ class StrictTransportSecurityState : int* max_age, bool* include_subdomains); + // Deletes all the state and notifies the delegate that the state is dirty. + void Clear(); + struct State { base::Time expiry; // the absolute time (UTC) when this record expires bool include_subdomains; // subdomains included? diff --git a/net/base/strict_transport_security_state_unittest.cc b/net/base/strict_transport_security_state_unittest.cc index 5ebd358..2b769d7 100644 --- a/net/base/strict_transport_security_state_unittest.cc +++ b/net/base/strict_transport_security_state_unittest.cc @@ -204,3 +204,17 @@ TEST_F(StrictTransportSecurityStateTest, Serialise2) { EXPECT_TRUE(state->IsEnabledForHost("foo.bar.baz.google.com")); EXPECT_FALSE(state->IsEnabledForHost("com")); } + +TEST_F(StrictTransportSecurityStateTest, Clear) { + scoped_refptr<net::StrictTransportSecurityState> state( + new net::StrictTransportSecurityState); + + const base::Time current_time(base::Time::Now()); + const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); + + EXPECT_FALSE(state->IsEnabledForHost("google.com")); + state->EnableHost("google.com", expiry, true); + EXPECT_TRUE(state->IsEnabledForHost("google.com")); + state->Clear(); + EXPECT_FALSE(state->IsEnabledForHost("google.com")); +} |