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 "net/dns/host_resolver_mojo.h" | 5 #include "net/dns/host_resolver_mojo.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "mojo/public/cpp/bindings/binding.h" | 9 #include "mojo/public/cpp/bindings/binding.h" |
8 #include "net/base/address_list.h" | 10 #include "net/base/address_list.h" |
9 #include "net/base/net_errors.h" | 11 #include "net/base/net_errors.h" |
10 #include "net/dns/mojo_host_type_converters.h" | 12 #include "net/dns/mojo_host_type_converters.h" |
11 #include "net/log/net_log.h" | 13 #include "net/log/net_log.h" |
12 | 14 |
13 namespace net { | 15 namespace net { |
14 namespace { | 16 namespace { |
15 | 17 |
16 // Default TTL for successful host resolutions. | 18 // Default TTL for successful host resolutions. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 if (cached_result != ERR_DNS_CACHE_MISS) { | 73 if (cached_result != ERR_DNS_CACHE_MISS) { |
72 DVLOG(1) << "Resolved " << info.host_port_pair().ToString() | 74 DVLOG(1) << "Resolved " << info.host_port_pair().ToString() |
73 << " from cache"; | 75 << " from cache"; |
74 return cached_result; | 76 return cached_result; |
75 } | 77 } |
76 | 78 |
77 interfaces::HostResolverRequestClientPtr handle; | 79 interfaces::HostResolverRequestClientPtr handle; |
78 *request_handle = new Job(key, addresses, callback, mojo::GetProxy(&handle), | 80 *request_handle = new Job(key, addresses, callback, mojo::GetProxy(&handle), |
79 host_cache_weak_factory_.GetWeakPtr()); | 81 host_cache_weak_factory_.GetWeakPtr()); |
80 impl_->ResolveDns(interfaces::HostResolverRequestInfo::From(info), | 82 impl_->ResolveDns(interfaces::HostResolverRequestInfo::From(info), |
81 handle.Pass()); | 83 std::move(handle)); |
82 return ERR_IO_PENDING; | 84 return ERR_IO_PENDING; |
83 } | 85 } |
84 | 86 |
85 int HostResolverMojo::ResolveFromCache(const RequestInfo& info, | 87 int HostResolverMojo::ResolveFromCache(const RequestInfo& info, |
86 AddressList* addresses, | 88 AddressList* addresses, |
87 const BoundNetLog& source_net_log) { | 89 const BoundNetLog& source_net_log) { |
88 DCHECK(thread_checker_.CalledOnValidThread()); | 90 DCHECK(thread_checker_.CalledOnValidThread()); |
89 DVLOG(1) << "ResolveFromCache " << info.host_port_pair().ToString(); | 91 DVLOG(1) << "ResolveFromCache " << info.host_port_pair().ToString(); |
90 return ResolveFromCacheInternal(info, CacheKeyForRequest(info), addresses); | 92 return ResolveFromCacheInternal(info, CacheKeyForRequest(info), addresses); |
91 } | 93 } |
(...skipping 26 matching lines...) Expand all Loading... |
118 | 120 |
119 HostResolverMojo::Job::Job( | 121 HostResolverMojo::Job::Job( |
120 const HostCache::Key& key, | 122 const HostCache::Key& key, |
121 AddressList* addresses, | 123 AddressList* addresses, |
122 const CompletionCallback& callback, | 124 const CompletionCallback& callback, |
123 mojo::InterfaceRequest<interfaces::HostResolverRequestClient> request, | 125 mojo::InterfaceRequest<interfaces::HostResolverRequestClient> request, |
124 base::WeakPtr<HostCache> host_cache) | 126 base::WeakPtr<HostCache> host_cache) |
125 : key_(key), | 127 : key_(key), |
126 addresses_(addresses), | 128 addresses_(addresses), |
127 callback_(callback), | 129 callback_(callback), |
128 binding_(this, request.Pass()), | 130 binding_(this, std::move(request)), |
129 host_cache_(host_cache) { | 131 host_cache_(host_cache) { |
130 binding_.set_connection_error_handler(base::Bind( | 132 binding_.set_connection_error_handler(base::Bind( |
131 &HostResolverMojo::Job::OnConnectionError, base::Unretained(this))); | 133 &HostResolverMojo::Job::OnConnectionError, base::Unretained(this))); |
132 } | 134 } |
133 | 135 |
134 void HostResolverMojo::Job::ReportResult( | 136 void HostResolverMojo::Job::ReportResult( |
135 int32_t error, | 137 int32_t error, |
136 interfaces::AddressListPtr address_list) { | 138 interfaces::AddressListPtr address_list) { |
137 if (error == OK && address_list) | 139 if (error == OK && address_list) |
138 *addresses_ = address_list->To<AddressList>(); | 140 *addresses_ = address_list->To<AddressList>(); |
139 if (host_cache_) { | 141 if (host_cache_) { |
140 base::TimeDelta ttl = base::TimeDelta::FromSeconds( | 142 base::TimeDelta ttl = base::TimeDelta::FromSeconds( |
141 error == OK ? kCacheEntryTTLSeconds : kNegativeCacheEntryTTLSeconds); | 143 error == OK ? kCacheEntryTTLSeconds : kNegativeCacheEntryTTLSeconds); |
142 HostCache::Entry entry(error, *addresses_, ttl); | 144 HostCache::Entry entry(error, *addresses_, ttl); |
143 host_cache_->Set(key_, entry, base::TimeTicks::Now(), ttl); | 145 host_cache_->Set(key_, entry, base::TimeTicks::Now(), ttl); |
144 } | 146 } |
145 callback_.Run(error); | 147 callback_.Run(error); |
146 delete this; | 148 delete this; |
147 } | 149 } |
148 | 150 |
149 void HostResolverMojo::Job::OnConnectionError() { | 151 void HostResolverMojo::Job::OnConnectionError() { |
150 ReportResult(ERR_FAILED, interfaces::AddressListPtr()); | 152 ReportResult(ERR_FAILED, interfaces::AddressListPtr()); |
151 } | 153 } |
152 | 154 |
153 } // namespace net | 155 } // namespace net |
OLD | NEW |