| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/certificate_transparency/single_tree_tracker.h" | 5 #include "components/certificate_transparency/single_tree_tracker.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <list> | 9 #include <list> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 | 214 |
| 215 SingleTreeTracker::SingleTreeTracker( | 215 SingleTreeTracker::SingleTreeTracker( |
| 216 scoped_refptr<const net::CTLogVerifier> ct_log, | 216 scoped_refptr<const net::CTLogVerifier> ct_log, |
| 217 LogDnsClient* dns_client) | 217 LogDnsClient* dns_client) |
| 218 : ct_log_(std::move(ct_log)), | 218 : ct_log_(std::move(ct_log)), |
| 219 checked_entries_(kCheckedEntriesCacheSize), | 219 checked_entries_(kCheckedEntriesCacheSize), |
| 220 dns_client_(dns_client), | 220 dns_client_(dns_client), |
| 221 weak_factory_(this) { | 221 weak_factory_(this) { |
| 222 memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind( | 222 memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind( |
| 223 &SingleTreeTracker::OnMemoryPressure, base::Unretained(this)))); | 223 &SingleTreeTracker::OnMemoryPressure, base::Unretained(this)))); |
| 224 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); |
| 224 } | 225 } |
| 225 | 226 |
| 226 SingleTreeTracker::~SingleTreeTracker() {} | 227 SingleTreeTracker::~SingleTreeTracker() { |
| 228 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); |
| 229 } |
| 227 | 230 |
| 228 void SingleTreeTracker::OnSCTVerified(net::X509Certificate* cert, | 231 void SingleTreeTracker::OnSCTVerified(net::X509Certificate* cert, |
| 229 const SignedCertificateTimestamp* sct) { | 232 const SignedCertificateTimestamp* sct) { |
| 230 DCHECK_EQ(ct_log_->key_id(), sct->log_id); | 233 DCHECK_EQ(ct_log_->key_id(), sct->log_id); |
| 231 | 234 |
| 232 EntryToAudit entry(sct->timestamp); | 235 EntryToAudit entry(sct->timestamp); |
| 233 if (!GetLogEntryLeafHash(cert, sct, &entry.leaf_hash)) | 236 if (!GetLogEntryLeafHash(cert, sct, &entry.leaf_hash)) |
| 234 return; | 237 return; |
| 235 | 238 |
| 236 // Avoid queueing multiple instances of the same entry. | 239 // Avoid queueing multiple instances of the same entry. |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 DCHECK_EQ(curr_entry->second.state, PENDING_NEWER_STH); | 322 DCHECK_EQ(curr_entry->second.state, PENDING_NEWER_STH); |
| 320 curr_entry->second.state = PENDING_INCLUSION_PROOF_REQUEST; | 323 curr_entry->second.state = PENDING_INCLUSION_PROOF_REQUEST; |
| 321 } | 324 } |
| 322 | 325 |
| 323 if (auditable_entries_begin == auditable_entries_end) | 326 if (auditable_entries_begin == auditable_entries_end) |
| 324 return; | 327 return; |
| 325 | 328 |
| 326 ProcessPendingEntries(); | 329 ProcessPendingEntries(); |
| 327 } | 330 } |
| 328 | 331 |
| 332 void SingleTreeTracker::OnNetworkChanged( |
| 333 net::NetworkChangeNotifier::ConnectionType type) { |
| 334 pending_entries_.clear(); |
| 335 } |
| 336 |
| 329 SingleTreeTracker::SCTInclusionStatus | 337 SingleTreeTracker::SCTInclusionStatus |
| 330 SingleTreeTracker::GetLogEntryInclusionStatus( | 338 SingleTreeTracker::GetLogEntryInclusionStatus( |
| 331 net::X509Certificate* cert, | 339 net::X509Certificate* cert, |
| 332 const SignedCertificateTimestamp* sct) { | 340 const SignedCertificateTimestamp* sct) { |
| 333 EntryToAudit entry(sct->timestamp); | 341 EntryToAudit entry(sct->timestamp); |
| 334 if (!GetLogEntryLeafHash(cert, sct, &entry.leaf_hash)) | 342 if (!GetLogEntryLeafHash(cert, sct, &entry.leaf_hash)) |
| 335 return SCT_NOT_OBSERVED; | 343 return SCT_NOT_OBSERVED; |
| 336 return GetAuditedEntryInclusionStatus(entry); | 344 return GetAuditedEntryInclusionStatus(entry); |
| 337 } | 345 } |
| 338 | 346 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL: | 457 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL: |
| 450 pending_entries_.clear(); | 458 pending_entries_.clear(); |
| 451 // Fall through to clearing the other cache. | 459 // Fall through to clearing the other cache. |
| 452 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE: | 460 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE: |
| 453 checked_entries_.Clear(); | 461 checked_entries_.Clear(); |
| 454 break; | 462 break; |
| 455 } | 463 } |
| 456 } | 464 } |
| 457 | 465 |
| 458 } // namespace certificate_transparency | 466 } // namespace certificate_transparency |
| OLD | NEW |