Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/domain_reliability/context_manager.h" | 5 #include "components/domain_reliability/context_manager.h" |
| 6 | 6 |
| 7 namespace domain_reliability { | 7 namespace domain_reliability { |
| 8 | 8 |
| 9 DomainReliabilityContextManager::DomainReliabilityContextManager( | 9 DomainReliabilityContextManager::DomainReliabilityContextManager( |
| 10 DomainReliabilityContext::Factory* context_factory) | 10 DomainReliabilityContext::Factory* context_factory) |
| 11 : context_factory_(context_factory) { | 11 : context_factory_(context_factory) { |
| 12 } | 12 } |
| 13 | 13 |
| 14 DomainReliabilityContextManager::~DomainReliabilityContextManager() { | 14 DomainReliabilityContextManager::~DomainReliabilityContextManager() { |
| 15 RemoveAllContexts(); | 15 RemoveAllContexts(); |
| 16 } | 16 } |
| 17 | 17 |
| 18 void DomainReliabilityContextManager::RouteBeacon( | 18 void DomainReliabilityContextManager::RouteBeacon( |
| 19 const GURL& url, | 19 scoped_ptr<DomainReliabilityBeacon> beacon) { |
| 20 const DomainReliabilityBeacon& beacon) { | 20 DomainReliabilityContext* context = GetContextForHost(beacon->url.host()); |
| 21 DomainReliabilityContext* context = GetContextForHost(url.host()); | |
| 22 if (!context) | 21 if (!context) |
| 23 return; | 22 return; |
| 24 | 23 |
| 25 context->OnBeacon(url, beacon); | 24 context->OnBeacon(beacon.Pass()); |
| 26 } | 25 } |
| 27 | 26 |
| 28 void DomainReliabilityContextManager::ClearBeaconsInAllContexts() { | 27 void DomainReliabilityContextManager::ClearBeaconsInAllContexts() { |
| 29 for (auto& context_entry : contexts_) | 28 for (auto& context_entry : contexts_) |
| 30 context_entry.second->ClearBeacons(); | 29 context_entry.second->ClearBeacons(); |
| 31 } | 30 } |
| 32 | 31 |
| 33 DomainReliabilityContext* DomainReliabilityContextManager::AddContextForConfig( | 32 DomainReliabilityContext* DomainReliabilityContextManager::AddContextForConfig( |
| 34 scoped_ptr<const DomainReliabilityConfig> config) { | 33 scoped_ptr<const DomainReliabilityConfig> config) { |
| 35 std::string domain = config->domain; | 34 // TODO(ttuttle): Convert this to actual origin. |
| 35 | |
| 36 // For some reason, initializing |wildcard_prefix| with a ternary operator | |
| 37 // makes ASAN mad. | |
|
Randy Smith (Not in Mondays)
2015/10/29 22:36:11
You'll hate me for this, but that's what reviewers
Deprecated (see juliatuttle)
2015/11/02 23:19:30
Do you know how to run standalone binaries against
Randy Smith (Not in Mondays)
2015/11/03 21:48:12
Sorry, I don't.
I thought we decided you'd remo
Randy Smith (Not in Mondays)
2015/11/09 21:23:24
Ping?
| |
| 38 std::string wildcard_prefix = ""; | |
| 39 if (config->include_subdomains) | |
| 40 wildcard_prefix = "*."; | |
|
Randy Smith (Not in Mondays)
2015/10/29 22:36:11
Why doesn't this result in only seeing subdomains
Deprecated (see juliatuttle)
2015/11/02 23:19:30
Because GetContextForHost("foo.bar") looks for "fo
Randy Smith (Not in Mondays)
2015/11/03 21:48:12
Oh, and the only thing that wildcard_prefix is use
| |
| 41 | |
| 42 std::string domain = wildcard_prefix + config->origin.host(); | |
| 36 scoped_ptr<DomainReliabilityContext> context = | 43 scoped_ptr<DomainReliabilityContext> context = |
| 37 context_factory_->CreateContextForConfig(config.Pass()); | 44 context_factory_->CreateContextForConfig(config.Pass()); |
| 38 DomainReliabilityContext** entry = &contexts_[domain]; | 45 DomainReliabilityContext** entry = &contexts_[domain]; |
| 39 if (*entry) | 46 if (*entry) |
| 40 delete *entry; | 47 delete *entry; |
| 41 *entry = context.release(); | 48 *entry = context.release(); |
| 42 return *entry; | 49 return *entry; |
| 43 } | 50 } |
| 44 | 51 |
| 45 void DomainReliabilityContextManager::RemoveAllContexts() { | 52 void DomainReliabilityContextManager::RemoveAllContexts() { |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 76 | 83 |
| 77 std::string parent_with_asterisk = "*." + host.substr(dot_pos + 1); | 84 std::string parent_with_asterisk = "*." + host.substr(dot_pos + 1); |
| 78 context_it = contexts_.find(parent_with_asterisk); | 85 context_it = contexts_.find(parent_with_asterisk); |
| 79 if (context_it != contexts_.end()) | 86 if (context_it != contexts_.end()) |
| 80 return context_it->second; | 87 return context_it->second; |
| 81 | 88 |
| 82 return nullptr; | 89 return nullptr; |
| 83 } | 90 } |
| 84 | 91 |
| 85 } // namespace domain_reliability | 92 } // namespace domain_reliability |
| OLD | NEW |