Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Unified Diff: components/domain_reliability/context_manager.cc

Issue 2132563003: Implement origin-based deletion for the domain reliability service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated DomainReliabilityMonitorTest Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/domain_reliability/context_manager.h ('k') | components/domain_reliability/monitor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/domain_reliability/context_manager.cc
diff --git a/components/domain_reliability/context_manager.cc b/components/domain_reliability/context_manager.cc
index 54d5eaa176e7f978770bec4df59c9f2b2565d3d0..bcdb530de64d7b639438cf5a11e4fec6af57598c 100644
--- a/components/domain_reliability/context_manager.cc
+++ b/components/domain_reliability/context_manager.cc
@@ -14,7 +14,8 @@ DomainReliabilityContextManager::DomainReliabilityContextManager(
}
DomainReliabilityContextManager::~DomainReliabilityContextManager() {
- RemoveAllContexts();
+ RemoveContexts(
+ base::Callback<bool(const GURL&)>() /* no filter - delete everything */);
}
void DomainReliabilityContextManager::RouteBeacon(
@@ -69,9 +70,14 @@ void DomainReliabilityContextManager::ClearConfig(const GURL& origin) {
}
}
-void DomainReliabilityContextManager::ClearBeaconsInAllContexts() {
- for (auto& context_entry : contexts_)
- context_entry.second->ClearBeacons();
+void DomainReliabilityContextManager::ClearBeacons(
+ const base::Callback<bool(const GURL&)>& origin_filter) {
+ for (auto& context_entry : contexts_) {
+ if (origin_filter.is_null() ||
+ origin_filter.Run(context_entry.second->config().origin)) {
+ context_entry.second->ClearBeacons();
+ }
+ }
}
DomainReliabilityContext* DomainReliabilityContextManager::AddContextForConfig(
@@ -89,10 +95,18 @@ DomainReliabilityContext* DomainReliabilityContextManager::AddContextForConfig(
return *entry;
}
-void DomainReliabilityContextManager::RemoveAllContexts() {
- STLDeleteContainerPairSecondPointers(
- contexts_.begin(), contexts_.end());
- contexts_.clear();
+void DomainReliabilityContextManager::RemoveContexts(
+ const base::Callback<bool(const GURL&)>& origin_filter) {
+ for (ContextMap::iterator it = contexts_.begin(); it != contexts_.end(); ) {
+ if (!origin_filter.is_null() &&
+ !origin_filter.Run(it->second->config().origin)) {
+ ++it;
+ continue;
+ }
+
+ delete it->second;
+ it = contexts_.erase(it);
+ }
}
std::unique_ptr<base::Value> DomainReliabilityContextManager::GetWebUIData()
« no previous file with comments | « components/domain_reliability/context_manager.h ('k') | components/domain_reliability/monitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698