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 |