| Index: net/http/transport_security_state.cc
 | 
| diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc
 | 
| index 2515a4bec53b5f055e8e32bd1b5179cbcb2b6649..e6c5b4263b3ffa56703f9a85013b8802ab21c7af 100644
 | 
| --- a/net/http/transport_security_state.cc
 | 
| +++ b/net/http/transport_security_state.cc
 | 
| @@ -199,15 +199,22 @@ void TransportSecurityState::DeleteAllDynamicDataSince(const base::Time& time) {
 | 
|    DCHECK(CalledOnValidThread());
 | 
|  
 | 
|    bool dirtied = false;
 | 
| -
 | 
|    DomainStateMap::iterator i = enabled_hosts_.begin();
 | 
|    while (i != enabled_hosts_.end()) {
 | 
| -    if (i->second.created >= time) {
 | 
| +    if (i->second.sts_observed >= time && i->second.pkp_observed >= time) {
 | 
|        dirtied = true;
 | 
|        enabled_hosts_.erase(i++);
 | 
| -    } else {
 | 
| -      i++;
 | 
| +      continue;
 | 
| +    }
 | 
| +
 | 
| +    if (i->second.sts_observed >= time) {
 | 
| +      dirtied = true;
 | 
| +      i->second.upgrade_mode = DomainState::MODE_DEFAULT;
 | 
| +    } else if (i->second.pkp_observed >= time) {
 | 
| +      dirtied = true;
 | 
| +      i->second.dynamic_spki_hashes.clear();
 | 
|      }
 | 
| +    ++i;
 | 
|    }
 | 
|  
 | 
|    if (dirtied)
 | 
| @@ -614,7 +621,7 @@ bool TransportSecurityState::AddHSTSHeader(const std::string& host,
 | 
|        domain_state.upgrade_mode = DomainState::MODE_DEFAULT;
 | 
|      else
 | 
|        domain_state.upgrade_mode = DomainState::MODE_FORCE_HTTPS;
 | 
| -    domain_state.created = now;
 | 
| +    domain_state.sts_observed = now;
 | 
|      domain_state.upgrade_expiry = now + max_age;
 | 
|      EnableHost(host, domain_state);
 | 
|      return true;
 | 
| @@ -635,7 +642,7 @@ bool TransportSecurityState::AddHPKPHeader(const std::string& host,
 | 
|                        &max_age, &domain_state.pkp_include_subdomains,
 | 
|                        &domain_state.dynamic_spki_hashes)) {
 | 
|      // TODO(palmer): http://crbug.com/243865 handle max-age == 0.
 | 
| -    domain_state.created = now;
 | 
| +    domain_state.pkp_observed = now;
 | 
|      domain_state.dynamic_spki_hashes_expiry = now + max_age;
 | 
|      EnableHost(host, domain_state);
 | 
|      return true;
 | 
| @@ -657,7 +664,7 @@ bool TransportSecurityState::AddHSTS(const std::string& host,
 | 
|    if (i != enabled_hosts_.end())
 | 
|      domain_state = i->second;
 | 
|  
 | 
| -  domain_state.created = base::Time::Now();
 | 
| +  domain_state.sts_observed = base::Time::Now();
 | 
|    domain_state.sts_include_subdomains = include_subdomains;
 | 
|    domain_state.upgrade_expiry = expiry;
 | 
|    domain_state.upgrade_mode = DomainState::MODE_FORCE_HTTPS;
 | 
| @@ -680,7 +687,7 @@ bool TransportSecurityState::AddHPKP(const std::string& host,
 | 
|    if (i != enabled_hosts_.end())
 | 
|      domain_state = i->second;
 | 
|  
 | 
| -  domain_state.created = base::Time::Now();
 | 
| +  domain_state.pkp_observed = base::Time::Now();
 | 
|    domain_state.pkp_include_subdomains = include_subdomains;
 | 
|    domain_state.dynamic_spki_hashes_expiry = expiry;
 | 
|    domain_state.dynamic_spki_hashes = hashes;
 | 
| @@ -825,9 +832,11 @@ void TransportSecurityState::AddOrUpdateEnabledHosts(
 | 
|  
 | 
|  TransportSecurityState::DomainState::DomainState()
 | 
|      : upgrade_mode(MODE_DEFAULT),
 | 
| -      created(base::Time::Now()),
 | 
|        sts_include_subdomains(false),
 | 
|        pkp_include_subdomains(false) {
 | 
| +  base::Time now(base::Time::Now());
 | 
| +  sts_observed = now;
 | 
| +  pkp_observed = now;
 | 
|  }
 | 
|  
 | 
|  TransportSecurityState::DomainState::~DomainState() {
 | 
| 
 |