Chromium Code Reviews| Index: net/http/transport_security_persister.cc | 
| diff --git a/net/http/transport_security_persister.cc b/net/http/transport_security_persister.cc | 
| index 771d07dc1bc84d3733393262279a19cfdfbe399d..9e016b1d3e8ac438c41c48cd03c56bccb304f099 100644 | 
| --- a/net/http/transport_security_persister.cc | 
| +++ b/net/http/transport_security_persister.cc | 
| @@ -79,6 +79,8 @@ const char kStrict[] = "strict"; | 
| const char kDefault[] = "default"; | 
| const char kPinningOnly[] = "pinning-only"; | 
| const char kCreated[] = "created"; | 
| +const char kStsObserved[] = "sts_observed"; | 
| +const char kPkpObserved[] = "pkp_observed"; | 
| std::string LoadState(const base::FilePath& path) { | 
| std::string result; | 
| @@ -148,7 +150,8 @@ bool TransportSecurityPersister::SerializeData(std::string* output) { | 
| domain_state.sts_include_subdomains); | 
| serialized->SetBoolean(kPkpIncludeSubdomains, | 
| domain_state.pkp_include_subdomains); | 
| - serialized->SetDouble(kCreated, domain_state.created.ToDoubleT()); | 
| + serialized->SetDouble(kStsObserved, domain_state.sts_observed.ToDoubleT()); | 
| + serialized->SetDouble(kPkpObserved, domain_state.pkp_observed.ToDoubleT()); | 
| serialized->SetDouble(kExpiry, domain_state.upgrade_expiry.ToDoubleT()); | 
| serialized->SetDouble(kDynamicSPKIHashesExpiry, | 
| domain_state.dynamic_spki_hashes_expiry.ToDoubleT()); | 
| @@ -211,7 +214,6 @@ bool TransportSecurityPersister::Deserialize(const std::string& serialized, | 
| } | 
| std::string mode_string; | 
| - double created; | 
| double expiry; | 
| double dynamic_spki_hashes_expiry = 0.0; | 
| TransportSecurityState::DomainState domain_state; | 
| @@ -271,13 +273,27 @@ bool TransportSecurityPersister::Deserialize(const std::string& serialized, | 
| domain_state.upgrade_expiry = base::Time::FromDoubleT(expiry); | 
| domain_state.dynamic_spki_hashes_expiry = | 
| base::Time::FromDoubleT(dynamic_spki_hashes_expiry); | 
| - if (parsed->GetDouble(kCreated, &created)) { | 
| - domain_state.created = base::Time::FromDoubleT(created); | 
| + | 
| + double sts_observed; | 
| + double pkp_observed; | 
| + if (parsed->GetDouble(kStsObserved, &sts_observed)) { | 
| + domain_state.sts_observed = base::Time::FromDoubleT(sts_observed); | 
| + } else if (parsed->GetDouble(kCreated, &sts_observed)) { | 
| + // kCreated is a legacy synonym for both kStsObserved and kPkpObserved. | 
| + domain_state.sts_observed = base::Time::FromDoubleT(sts_observed); | 
| } else { | 
| // We're migrating an old entry with no creation date. Make sure we | 
| 
 
wtc
2013/12/12 23:20:44
Nit: should we change "creation date" in this comm
 
palmer
2013/12/13 01:42:42
Done.
 
 | 
| // write the new date back in a reasonable time frame. | 
| dirtied = true; | 
| - domain_state.created = base::Time::Now(); | 
| + domain_state.sts_observed = base::Time::Now(); | 
| + } | 
| + if (parsed->GetDouble(kPkpObserved, &pkp_observed)) { | 
| + domain_state.pkp_observed = base::Time::FromDoubleT(pkp_observed); | 
| + } else if (parsed->GetDouble(kCreated, &pkp_observed)) { | 
| + domain_state.pkp_observed = base::Time::FromDoubleT(pkp_observed); | 
| + } else { | 
| + dirtied = true; | 
| + domain_state.pkp_observed = base::Time::Now(); | 
| } | 
| if (domain_state.upgrade_expiry <= current_time && |