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 std::string wildcard_prefix = ""; |
| 37 if (config->include_subdomains) |
| 38 wildcard_prefix = "*."; |
| 39 |
| 40 std::string domain = wildcard_prefix + config->origin.host(); |
36 scoped_ptr<DomainReliabilityContext> context = | 41 scoped_ptr<DomainReliabilityContext> context = |
37 context_factory_->CreateContextForConfig(config.Pass()); | 42 context_factory_->CreateContextForConfig(config.Pass()); |
38 DomainReliabilityContext** entry = &contexts_[domain]; | 43 DomainReliabilityContext** entry = &contexts_[domain]; |
39 if (*entry) | 44 if (*entry) |
40 delete *entry; | 45 delete *entry; |
41 *entry = context.release(); | 46 *entry = context.release(); |
42 return *entry; | 47 return *entry; |
43 } | 48 } |
44 | 49 |
45 void DomainReliabilityContextManager::RemoveAllContexts() { | 50 void DomainReliabilityContextManager::RemoveAllContexts() { |
(...skipping 30 matching lines...) Expand all Loading... |
76 | 81 |
77 std::string parent_with_asterisk = "*." + host.substr(dot_pos + 1); | 82 std::string parent_with_asterisk = "*." + host.substr(dot_pos + 1); |
78 context_it = contexts_.find(parent_with_asterisk); | 83 context_it = contexts_.find(parent_with_asterisk); |
79 if (context_it != contexts_.end()) | 84 if (context_it != contexts_.end()) |
80 return context_it->second; | 85 return context_it->second; |
81 | 86 |
82 return nullptr; | 87 return nullptr; |
83 } | 88 } |
84 | 89 |
85 } // namespace domain_reliability | 90 } // namespace domain_reliability |
OLD | NEW |