| 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()
|
|
|