Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: net/http/http_server_properties_manager.cc

Issue 2894863002: Rename TaskRunner::RunsTasksOnCurrentThread() in //net (Closed)
Patch Set: fixed build error Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/http/http_server_properties_manager.h" 5 #include "net/http/http_server_properties_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 HttpServerPropertiesManager::HttpServerPropertiesManager( 75 HttpServerPropertiesManager::HttpServerPropertiesManager(
76 PrefDelegate* pref_delegate, 76 PrefDelegate* pref_delegate,
77 scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner, 77 scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner,
78 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner) 78 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner)
79 : pref_task_runner_(std::move(pref_task_runner)), 79 : pref_task_runner_(std::move(pref_task_runner)),
80 pref_delegate_(pref_delegate), 80 pref_delegate_(pref_delegate),
81 setting_prefs_(false), 81 setting_prefs_(false),
82 is_initialized_(false), 82 is_initialized_(false),
83 network_task_runner_(std::move(network_task_runner)) { 83 network_task_runner_(std::move(network_task_runner)) {
84 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 84 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
85 DCHECK(pref_delegate_); 85 DCHECK(pref_delegate_);
86 pref_weak_ptr_factory_.reset( 86 pref_weak_ptr_factory_.reset(
87 new base::WeakPtrFactory<HttpServerPropertiesManager>(this)); 87 new base::WeakPtrFactory<HttpServerPropertiesManager>(this));
88 pref_weak_ptr_ = pref_weak_ptr_factory_->GetWeakPtr(); 88 pref_weak_ptr_ = pref_weak_ptr_factory_->GetWeakPtr();
89 pref_cache_update_timer_.reset(new base::OneShotTimer); 89 pref_cache_update_timer_.reset(new base::OneShotTimer);
90 pref_cache_update_timer_->SetTaskRunner(pref_task_runner_); 90 pref_cache_update_timer_->SetTaskRunner(pref_task_runner_);
91 pref_delegate_->StartListeningForUpdates( 91 pref_delegate_->StartListeningForUpdates(
92 base::Bind(&HttpServerPropertiesManager::OnHttpServerPropertiesChanged, 92 base::Bind(&HttpServerPropertiesManager::OnHttpServerPropertiesChanged,
93 base::Unretained(this))); 93 base::Unretained(this)));
94 } 94 }
95 95
96 HttpServerPropertiesManager::~HttpServerPropertiesManager() { 96 HttpServerPropertiesManager::~HttpServerPropertiesManager() {
97 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 97 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
98 network_weak_ptr_factory_.reset(); 98 network_weak_ptr_factory_.reset();
99 } 99 }
100 100
101 void HttpServerPropertiesManager::InitializeOnNetworkThread() { 101 void HttpServerPropertiesManager::InitializeOnNetworkSequence() {
102 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 102 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
103 103
104 network_weak_ptr_factory_.reset( 104 network_weak_ptr_factory_.reset(
105 new base::WeakPtrFactory<HttpServerPropertiesManager>(this)); 105 new base::WeakPtrFactory<HttpServerPropertiesManager>(this));
106 http_server_properties_impl_.reset(new HttpServerPropertiesImpl()); 106 http_server_properties_impl_.reset(new HttpServerPropertiesImpl());
107 107
108 network_prefs_update_timer_.reset(new base::OneShotTimer); 108 network_prefs_update_timer_.reset(new base::OneShotTimer);
109 network_prefs_update_timer_->SetTaskRunner(network_task_runner_); 109 network_prefs_update_timer_->SetTaskRunner(network_task_runner_);
110 // UpdateCacheFromPrefsOnPrefThread() will post a task to network thread to 110 // UpdateCacheFromPrefsOnPrefSequence() will post a task to network thread to
111 // update server properties. SetInitialized() will be run after that task is 111 // update server properties. SetInitialized() will be run after that task is
112 // run as |network_task_runner_| is single threaded. 112 // run as |network_task_runner_| is single threaded.
113 pref_task_runner_->PostTaskAndReply( 113 pref_task_runner_->PostTaskAndReply(
114 FROM_HERE, 114 FROM_HERE,
115 base::Bind(&HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread, 115 base::Bind(
116 pref_weak_ptr_), 116 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefSequence,
117 pref_weak_ptr_),
117 base::Bind(&HttpServerPropertiesManager::SetInitialized, 118 base::Bind(&HttpServerPropertiesManager::SetInitialized,
118 network_weak_ptr_factory_->GetWeakPtr())); 119 network_weak_ptr_factory_->GetWeakPtr()));
119 } 120 }
120 121
121 void HttpServerPropertiesManager::ShutdownOnPrefThread() { 122 void HttpServerPropertiesManager::ShutdownOnPrefSequence() {
122 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 123 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
123 // Cancel any pending updates, and stop listening for pref change updates. 124 // Cancel any pending updates, and stop listening for pref change updates.
124 pref_cache_update_timer_->Stop(); 125 pref_cache_update_timer_->Stop();
125 pref_weak_ptr_factory_.reset(); 126 pref_weak_ptr_factory_.reset();
126 pref_delegate_->StopListeningForUpdates(); 127 pref_delegate_->StopListeningForUpdates();
127 } 128 }
128 129
129 // static 130 // static
130 void HttpServerPropertiesManager::SetVersion( 131 void HttpServerPropertiesManager::SetVersion(
131 base::DictionaryValue* http_server_properties_dict, 132 base::DictionaryValue* http_server_properties_dict,
132 int version_number) { 133 int version_number) {
133 if (version_number < 0) 134 if (version_number < 0)
134 version_number = kVersionNumber; 135 version_number = kVersionNumber;
135 DCHECK_LE(version_number, kVersionNumber); 136 DCHECK_LE(version_number, kVersionNumber);
136 if (version_number <= kVersionNumber) 137 if (version_number <= kVersionNumber)
137 http_server_properties_dict->SetInteger(kVersionKey, version_number); 138 http_server_properties_dict->SetInteger(kVersionKey, version_number);
138 } 139 }
139 140
140 void HttpServerPropertiesManager::Clear() { 141 void HttpServerPropertiesManager::Clear() {
141 Clear(base::Closure()); 142 Clear(base::Closure());
142 } 143 }
143 144
144 void HttpServerPropertiesManager::Clear(const base::Closure& completion) { 145 void HttpServerPropertiesManager::Clear(const base::Closure& completion) {
145 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 146 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
146 147
147 http_server_properties_impl_->Clear(); 148 http_server_properties_impl_->Clear();
148 UpdatePrefsFromCacheOnNetworkThread(completion); 149 UpdatePrefsFromCacheOnNetworkSequence(completion);
149 } 150 }
150 151
151 bool HttpServerPropertiesManager::SupportsRequestPriority( 152 bool HttpServerPropertiesManager::SupportsRequestPriority(
152 const url::SchemeHostPort& server) { 153 const url::SchemeHostPort& server) {
153 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 154 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
154 return http_server_properties_impl_->SupportsRequestPriority(server); 155 return http_server_properties_impl_->SupportsRequestPriority(server);
155 } 156 }
156 157
157 bool HttpServerPropertiesManager::GetSupportsSpdy( 158 bool HttpServerPropertiesManager::GetSupportsSpdy(
158 const url::SchemeHostPort& server) { 159 const url::SchemeHostPort& server) {
159 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 160 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
160 return http_server_properties_impl_->GetSupportsSpdy(server); 161 return http_server_properties_impl_->GetSupportsSpdy(server);
161 } 162 }
162 163
163 void HttpServerPropertiesManager::SetSupportsSpdy( 164 void HttpServerPropertiesManager::SetSupportsSpdy(
164 const url::SchemeHostPort& server, 165 const url::SchemeHostPort& server,
165 bool support_spdy) { 166 bool support_spdy) {
166 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 167 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
167 168
168 bool old_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server); 169 bool old_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server);
169 http_server_properties_impl_->SetSupportsSpdy(server, support_spdy); 170 http_server_properties_impl_->SetSupportsSpdy(server, support_spdy);
170 bool new_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server); 171 bool new_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server);
171 if (old_support_spdy != new_support_spdy) 172 if (old_support_spdy != new_support_spdy)
172 ScheduleUpdatePrefsOnNetworkThread(SUPPORTS_SPDY); 173 ScheduleUpdatePrefsOnNetworkSequence(SUPPORTS_SPDY);
173 } 174 }
174 175
175 bool HttpServerPropertiesManager::RequiresHTTP11(const HostPortPair& server) { 176 bool HttpServerPropertiesManager::RequiresHTTP11(const HostPortPair& server) {
176 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 177 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
177 return http_server_properties_impl_->RequiresHTTP11(server); 178 return http_server_properties_impl_->RequiresHTTP11(server);
178 } 179 }
179 180
180 void HttpServerPropertiesManager::SetHTTP11Required( 181 void HttpServerPropertiesManager::SetHTTP11Required(
181 const HostPortPair& server) { 182 const HostPortPair& server) {
182 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 183 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
183 184
184 http_server_properties_impl_->SetHTTP11Required(server); 185 http_server_properties_impl_->SetHTTP11Required(server);
185 ScheduleUpdatePrefsOnNetworkThread(HTTP_11_REQUIRED); 186 ScheduleUpdatePrefsOnNetworkSequence(HTTP_11_REQUIRED);
186 } 187 }
187 188
188 void HttpServerPropertiesManager::MaybeForceHTTP11(const HostPortPair& server, 189 void HttpServerPropertiesManager::MaybeForceHTTP11(const HostPortPair& server,
189 SSLConfig* ssl_config) { 190 SSLConfig* ssl_config) {
190 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 191 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
191 http_server_properties_impl_->MaybeForceHTTP11(server, ssl_config); 192 http_server_properties_impl_->MaybeForceHTTP11(server, ssl_config);
192 } 193 }
193 194
194 AlternativeServiceInfoVector 195 AlternativeServiceInfoVector
195 HttpServerPropertiesManager::GetAlternativeServiceInfos( 196 HttpServerPropertiesManager::GetAlternativeServiceInfos(
196 const url::SchemeHostPort& origin) { 197 const url::SchemeHostPort& origin) {
197 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 198 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
198 return http_server_properties_impl_->GetAlternativeServiceInfos(origin); 199 return http_server_properties_impl_->GetAlternativeServiceInfos(origin);
199 } 200 }
200 201
201 bool HttpServerPropertiesManager::SetAlternativeService( 202 bool HttpServerPropertiesManager::SetAlternativeService(
202 const url::SchemeHostPort& origin, 203 const url::SchemeHostPort& origin,
203 const AlternativeService& alternative_service, 204 const AlternativeService& alternative_service,
204 base::Time expiration) { 205 base::Time expiration) {
205 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 206 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
206 const bool changed = http_server_properties_impl_->SetAlternativeService( 207 const bool changed = http_server_properties_impl_->SetAlternativeService(
207 origin, alternative_service, expiration); 208 origin, alternative_service, expiration);
208 if (changed) { 209 if (changed) {
209 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICES); 210 ScheduleUpdatePrefsOnNetworkSequence(SET_ALTERNATIVE_SERVICES);
210 } 211 }
211 return changed; 212 return changed;
212 } 213 }
213 214
214 bool HttpServerPropertiesManager::SetAlternativeServices( 215 bool HttpServerPropertiesManager::SetAlternativeServices(
215 const url::SchemeHostPort& origin, 216 const url::SchemeHostPort& origin,
216 const AlternativeServiceInfoVector& alternative_service_info_vector) { 217 const AlternativeServiceInfoVector& alternative_service_info_vector) {
217 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 218 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
218 const bool changed = http_server_properties_impl_->SetAlternativeServices( 219 const bool changed = http_server_properties_impl_->SetAlternativeServices(
219 origin, alternative_service_info_vector); 220 origin, alternative_service_info_vector);
220 if (changed) { 221 if (changed) {
221 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICES); 222 ScheduleUpdatePrefsOnNetworkSequence(SET_ALTERNATIVE_SERVICES);
222 } 223 }
223 return changed; 224 return changed;
224 } 225 }
225 226
226 void HttpServerPropertiesManager::MarkAlternativeServiceBroken( 227 void HttpServerPropertiesManager::MarkAlternativeServiceBroken(
227 const AlternativeService& alternative_service) { 228 const AlternativeService& alternative_service) {
228 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 229 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
229 http_server_properties_impl_->MarkAlternativeServiceBroken( 230 http_server_properties_impl_->MarkAlternativeServiceBroken(
230 alternative_service); 231 alternative_service);
231 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_BROKEN); 232 ScheduleUpdatePrefsOnNetworkSequence(MARK_ALTERNATIVE_SERVICE_BROKEN);
232 } 233 }
233 234
234 void HttpServerPropertiesManager::MarkAlternativeServiceRecentlyBroken( 235 void HttpServerPropertiesManager::MarkAlternativeServiceRecentlyBroken(
235 const AlternativeService& alternative_service) { 236 const AlternativeService& alternative_service) {
236 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 237 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
237 http_server_properties_impl_->MarkAlternativeServiceRecentlyBroken( 238 http_server_properties_impl_->MarkAlternativeServiceRecentlyBroken(
238 alternative_service); 239 alternative_service);
239 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_RECENTLY_BROKEN); 240 ScheduleUpdatePrefsOnNetworkSequence(
241 MARK_ALTERNATIVE_SERVICE_RECENTLY_BROKEN);
240 } 242 }
241 243
242 bool HttpServerPropertiesManager::IsAlternativeServiceBroken( 244 bool HttpServerPropertiesManager::IsAlternativeServiceBroken(
243 const AlternativeService& alternative_service) const { 245 const AlternativeService& alternative_service) const {
244 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 246 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
245 return http_server_properties_impl_->IsAlternativeServiceBroken( 247 return http_server_properties_impl_->IsAlternativeServiceBroken(
246 alternative_service); 248 alternative_service);
247 } 249 }
248 250
249 bool HttpServerPropertiesManager::WasAlternativeServiceRecentlyBroken( 251 bool HttpServerPropertiesManager::WasAlternativeServiceRecentlyBroken(
250 const AlternativeService& alternative_service) { 252 const AlternativeService& alternative_service) {
251 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 253 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
252 return http_server_properties_impl_->WasAlternativeServiceRecentlyBroken( 254 return http_server_properties_impl_->WasAlternativeServiceRecentlyBroken(
253 alternative_service); 255 alternative_service);
254 } 256 }
255 257
256 void HttpServerPropertiesManager::ConfirmAlternativeService( 258 void HttpServerPropertiesManager::ConfirmAlternativeService(
257 const AlternativeService& alternative_service) { 259 const AlternativeService& alternative_service) {
258 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 260 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
259 bool old_value = http_server_properties_impl_->IsAlternativeServiceBroken( 261 bool old_value = http_server_properties_impl_->IsAlternativeServiceBroken(
260 alternative_service); 262 alternative_service);
261 http_server_properties_impl_->ConfirmAlternativeService(alternative_service); 263 http_server_properties_impl_->ConfirmAlternativeService(alternative_service);
262 bool new_value = http_server_properties_impl_->IsAlternativeServiceBroken( 264 bool new_value = http_server_properties_impl_->IsAlternativeServiceBroken(
263 alternative_service); 265 alternative_service);
264 // For persisting, we only care about the value returned by 266 // For persisting, we only care about the value returned by
265 // IsAlternativeServiceBroken. If that value changes, then call persist. 267 // IsAlternativeServiceBroken. If that value changes, then call persist.
266 if (old_value != new_value) 268 if (old_value != new_value)
267 ScheduleUpdatePrefsOnNetworkThread(CONFIRM_ALTERNATIVE_SERVICE); 269 ScheduleUpdatePrefsOnNetworkSequence(CONFIRM_ALTERNATIVE_SERVICE);
268 } 270 }
269 271
270 const AlternativeServiceMap& 272 const AlternativeServiceMap&
271 HttpServerPropertiesManager::alternative_service_map() const { 273 HttpServerPropertiesManager::alternative_service_map() const {
272 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 274 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
273 return http_server_properties_impl_->alternative_service_map(); 275 return http_server_properties_impl_->alternative_service_map();
274 } 276 }
275 277
276 std::unique_ptr<base::Value> 278 std::unique_ptr<base::Value>
277 HttpServerPropertiesManager::GetAlternativeServiceInfoAsValue() const { 279 HttpServerPropertiesManager::GetAlternativeServiceInfoAsValue() const {
278 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 280 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
279 return http_server_properties_impl_->GetAlternativeServiceInfoAsValue(); 281 return http_server_properties_impl_->GetAlternativeServiceInfoAsValue();
280 } 282 }
281 283
282 bool HttpServerPropertiesManager::GetSupportsQuic( 284 bool HttpServerPropertiesManager::GetSupportsQuic(
283 IPAddress* last_address) const { 285 IPAddress* last_address) const {
284 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 286 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
285 return http_server_properties_impl_->GetSupportsQuic(last_address); 287 return http_server_properties_impl_->GetSupportsQuic(last_address);
286 } 288 }
287 289
288 void HttpServerPropertiesManager::SetSupportsQuic(bool used_quic, 290 void HttpServerPropertiesManager::SetSupportsQuic(bool used_quic,
289 const IPAddress& address) { 291 const IPAddress& address) {
290 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 292 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
291 IPAddress old_last_quic_addr; 293 IPAddress old_last_quic_addr;
292 http_server_properties_impl_->GetSupportsQuic(&old_last_quic_addr); 294 http_server_properties_impl_->GetSupportsQuic(&old_last_quic_addr);
293 http_server_properties_impl_->SetSupportsQuic(used_quic, address); 295 http_server_properties_impl_->SetSupportsQuic(used_quic, address);
294 IPAddress new_last_quic_addr; 296 IPAddress new_last_quic_addr;
295 http_server_properties_impl_->GetSupportsQuic(&new_last_quic_addr); 297 http_server_properties_impl_->GetSupportsQuic(&new_last_quic_addr);
296 if (old_last_quic_addr != new_last_quic_addr) 298 if (old_last_quic_addr != new_last_quic_addr)
297 ScheduleUpdatePrefsOnNetworkThread(SET_SUPPORTS_QUIC); 299 ScheduleUpdatePrefsOnNetworkSequence(SET_SUPPORTS_QUIC);
298 } 300 }
299 301
300 void HttpServerPropertiesManager::SetServerNetworkStats( 302 void HttpServerPropertiesManager::SetServerNetworkStats(
301 const url::SchemeHostPort& server, 303 const url::SchemeHostPort& server,
302 ServerNetworkStats stats) { 304 ServerNetworkStats stats) {
303 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 305 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
304 ServerNetworkStats old_stats; 306 ServerNetworkStats old_stats;
305 const ServerNetworkStats* old_stats_ptr = 307 const ServerNetworkStats* old_stats_ptr =
306 http_server_properties_impl_->GetServerNetworkStats(server); 308 http_server_properties_impl_->GetServerNetworkStats(server);
307 if (http_server_properties_impl_->GetServerNetworkStats(server)) 309 if (http_server_properties_impl_->GetServerNetworkStats(server))
308 old_stats = *old_stats_ptr; 310 old_stats = *old_stats_ptr;
309 http_server_properties_impl_->SetServerNetworkStats(server, stats); 311 http_server_properties_impl_->SetServerNetworkStats(server, stats);
310 ServerNetworkStats new_stats = 312 ServerNetworkStats new_stats =
311 *(http_server_properties_impl_->GetServerNetworkStats(server)); 313 *(http_server_properties_impl_->GetServerNetworkStats(server));
312 if (old_stats != new_stats) 314 if (old_stats != new_stats)
313 ScheduleUpdatePrefsOnNetworkThread(SET_SERVER_NETWORK_STATS); 315 ScheduleUpdatePrefsOnNetworkSequence(SET_SERVER_NETWORK_STATS);
314 } 316 }
315 317
316 void HttpServerPropertiesManager::ClearServerNetworkStats( 318 void HttpServerPropertiesManager::ClearServerNetworkStats(
317 const url::SchemeHostPort& server) { 319 const url::SchemeHostPort& server) {
318 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 320 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
319 bool need_update = 321 bool need_update =
320 http_server_properties_impl_->GetServerNetworkStats(server) != nullptr; 322 http_server_properties_impl_->GetServerNetworkStats(server) != nullptr;
321 http_server_properties_impl_->ClearServerNetworkStats(server); 323 http_server_properties_impl_->ClearServerNetworkStats(server);
322 if (need_update) 324 if (need_update)
323 ScheduleUpdatePrefsOnNetworkThread(CLEAR_SERVER_NETWORK_STATS); 325 ScheduleUpdatePrefsOnNetworkSequence(CLEAR_SERVER_NETWORK_STATS);
324 } 326 }
325 327
326 const ServerNetworkStats* HttpServerPropertiesManager::GetServerNetworkStats( 328 const ServerNetworkStats* HttpServerPropertiesManager::GetServerNetworkStats(
327 const url::SchemeHostPort& server) { 329 const url::SchemeHostPort& server) {
328 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 330 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
329 return http_server_properties_impl_->GetServerNetworkStats(server); 331 return http_server_properties_impl_->GetServerNetworkStats(server);
330 } 332 }
331 333
332 const ServerNetworkStatsMap& 334 const ServerNetworkStatsMap&
333 HttpServerPropertiesManager::server_network_stats_map() const { 335 HttpServerPropertiesManager::server_network_stats_map() const {
334 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 336 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
335 return http_server_properties_impl_->server_network_stats_map(); 337 return http_server_properties_impl_->server_network_stats_map();
336 } 338 }
337 339
338 bool HttpServerPropertiesManager::SetQuicServerInfo( 340 bool HttpServerPropertiesManager::SetQuicServerInfo(
339 const QuicServerId& server_id, 341 const QuicServerId& server_id,
340 const std::string& server_info) { 342 const std::string& server_info) {
341 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 343 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
342 bool changed = 344 bool changed =
343 http_server_properties_impl_->SetQuicServerInfo(server_id, server_info); 345 http_server_properties_impl_->SetQuicServerInfo(server_id, server_info);
344 if (changed) 346 if (changed)
345 ScheduleUpdatePrefsOnNetworkThread(SET_QUIC_SERVER_INFO); 347 ScheduleUpdatePrefsOnNetworkSequence(SET_QUIC_SERVER_INFO);
346 return changed; 348 return changed;
347 } 349 }
348 350
349 const std::string* HttpServerPropertiesManager::GetQuicServerInfo( 351 const std::string* HttpServerPropertiesManager::GetQuicServerInfo(
350 const QuicServerId& server_id) { 352 const QuicServerId& server_id) {
351 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 353 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
352 return http_server_properties_impl_->GetQuicServerInfo(server_id); 354 return http_server_properties_impl_->GetQuicServerInfo(server_id);
353 } 355 }
354 356
355 const QuicServerInfoMap& HttpServerPropertiesManager::quic_server_info_map() 357 const QuicServerInfoMap& HttpServerPropertiesManager::quic_server_info_map()
356 const { 358 const {
357 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 359 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
358 return http_server_properties_impl_->quic_server_info_map(); 360 return http_server_properties_impl_->quic_server_info_map();
359 } 361 }
360 362
361 size_t HttpServerPropertiesManager::max_server_configs_stored_in_properties() 363 size_t HttpServerPropertiesManager::max_server_configs_stored_in_properties()
362 const { 364 const {
363 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 365 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
364 return http_server_properties_impl_ 366 return http_server_properties_impl_
365 ->max_server_configs_stored_in_properties(); 367 ->max_server_configs_stored_in_properties();
366 } 368 }
367 369
368 void HttpServerPropertiesManager::SetMaxServerConfigsStoredInProperties( 370 void HttpServerPropertiesManager::SetMaxServerConfigsStoredInProperties(
369 size_t max_server_configs_stored_in_properties) { 371 size_t max_server_configs_stored_in_properties) {
370 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 372 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
371 return http_server_properties_impl_->SetMaxServerConfigsStoredInProperties( 373 return http_server_properties_impl_->SetMaxServerConfigsStoredInProperties(
372 max_server_configs_stored_in_properties); 374 max_server_configs_stored_in_properties);
373 } 375 }
374 376
375 bool HttpServerPropertiesManager::IsInitialized() const { 377 bool HttpServerPropertiesManager::IsInitialized() const {
376 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 378 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
377 379
378 return is_initialized_; 380 return is_initialized_;
379 } 381 }
380 382
381 // static 383 // static
382 base::TimeDelta HttpServerPropertiesManager::GetUpdateCacheDelayForTesting() { 384 base::TimeDelta HttpServerPropertiesManager::GetUpdateCacheDelayForTesting() {
383 return kUpdateCacheDelay; 385 return kUpdateCacheDelay;
384 } 386 }
385 387
386 // static 388 // static
387 base::TimeDelta HttpServerPropertiesManager::GetUpdatePrefsDelayForTesting() { 389 base::TimeDelta HttpServerPropertiesManager::GetUpdatePrefsDelayForTesting() {
388 return kUpdatePrefsDelay; 390 return kUpdatePrefsDelay;
389 } 391 }
390 392
391 // 393 //
392 // Update the HttpServerPropertiesImpl's cache with data from preferences. 394 // Update the HttpServerPropertiesImpl's cache with data from preferences.
393 // 395 //
394 void HttpServerPropertiesManager::ScheduleUpdateCacheOnPrefThread() { 396 void HttpServerPropertiesManager::ScheduleUpdateCacheOnPrefThread() {
395 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 397 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
396 // Do not schedule a new update if there is already one scheduled. 398 // Do not schedule a new update if there is already one scheduled.
397 if (pref_cache_update_timer_->IsRunning()) 399 if (pref_cache_update_timer_->IsRunning())
398 return; 400 return;
399 401
400 pref_cache_update_timer_->Start( 402 pref_cache_update_timer_->Start(
401 FROM_HERE, kUpdateCacheDelay, this, 403 FROM_HERE, kUpdateCacheDelay, this,
402 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread); 404 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefSequence);
403 } 405 }
404 406
405 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() { 407 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefSequence() {
406 // The preferences can only be read on the pref thread. 408 // The preferences can only be read on the pref thread.
407 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 409 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
408 410
409 if (!pref_delegate_->HasServerProperties()) 411 if (!pref_delegate_->HasServerProperties())
410 return; 412 return;
411 413
412 bool detected_corrupted_prefs = false; 414 bool detected_corrupted_prefs = false;
413 const base::DictionaryValue& http_server_properties_dict = 415 const base::DictionaryValue& http_server_properties_dict =
414 pref_delegate_->GetServerProperties(); 416 pref_delegate_->GetServerProperties();
415 417
416 int version = kMissingVersion; 418 int version = kMissingVersion;
417 if (!http_server_properties_dict.GetIntegerWithoutPathExpansion(kVersionKey, 419 if (!http_server_properties_dict.GetIntegerWithoutPathExpansion(kVersionKey,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 } 510 }
509 511
510 if (!AddToQuicServerInfoMap(http_server_properties_dict, 512 if (!AddToQuicServerInfoMap(http_server_properties_dict,
511 quic_server_info_map.get())) { 513 quic_server_info_map.get())) {
512 detected_corrupted_prefs = true; 514 detected_corrupted_prefs = true;
513 } 515 }
514 516
515 network_task_runner_->PostTask( 517 network_task_runner_->PostTask(
516 FROM_HERE, 518 FROM_HERE,
517 base::Bind( 519 base::Bind(
518 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread, 520 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkSequence,
519 base::Unretained(this), base::Owned(spdy_servers.release()), 521 base::Unretained(this), base::Owned(spdy_servers.release()),
520 base::Owned(alternative_service_map.release()), base::Owned(addr), 522 base::Owned(alternative_service_map.release()), base::Owned(addr),
521 base::Owned(server_network_stats_map.release()), 523 base::Owned(server_network_stats_map.release()),
522 base::Owned(quic_server_info_map.release()), 524 base::Owned(quic_server_info_map.release()),
523 detected_corrupted_prefs)); 525 detected_corrupted_prefs));
524 } 526 }
525 527
526 bool HttpServerPropertiesManager::AddServersData( 528 bool HttpServerPropertiesManager::AddServersData(
527 const base::DictionaryValue& servers_dict, 529 const base::DictionaryValue& servers_dict,
528 ServerList* spdy_servers, 530 ServerList* spdy_servers,
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 DVLOG(1) << "Malformed http_server_properties quic server info: " 767 DVLOG(1) << "Malformed http_server_properties quic server info: "
766 << quic_server_id_str; 768 << quic_server_id_str;
767 detected_corrupted_prefs = true; 769 detected_corrupted_prefs = true;
768 continue; 770 continue;
769 } 771 }
770 quic_server_info_map->Put(quic_server_id, quic_server_info); 772 quic_server_info_map->Put(quic_server_id, quic_server_info);
771 } 773 }
772 return !detected_corrupted_prefs; 774 return !detected_corrupted_prefs;
773 } 775 }
774 776
775 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread( 777 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkSequence(
776 ServerList* spdy_servers, 778 ServerList* spdy_servers,
777 AlternativeServiceMap* alternative_service_map, 779 AlternativeServiceMap* alternative_service_map,
778 IPAddress* last_quic_address, 780 IPAddress* last_quic_address,
779 ServerNetworkStatsMap* server_network_stats_map, 781 ServerNetworkStatsMap* server_network_stats_map,
780 QuicServerInfoMap* quic_server_info_map, 782 QuicServerInfoMap* quic_server_info_map,
781 bool detected_corrupted_prefs) { 783 bool detected_corrupted_prefs) {
782 // Preferences have the master data because admins might have pushed new 784 // Preferences have the master data because admins might have pushed new
783 // preferences. Update the cached data with new data from preferences. 785 // preferences. Update the cached data with new data from preferences.
784 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 786 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
785 787
786 UMA_HISTOGRAM_COUNTS("Net.CountOfSpdyServers", spdy_servers->size()); 788 UMA_HISTOGRAM_COUNTS("Net.CountOfSpdyServers", spdy_servers->size());
787 http_server_properties_impl_->SetSpdyServers(spdy_servers, true); 789 http_server_properties_impl_->SetSpdyServers(spdy_servers, true);
788 790
789 // Update the cached data and use the new alternative service list from 791 // Update the cached data and use the new alternative service list from
790 // preferences. 792 // preferences.
791 UMA_HISTOGRAM_COUNTS("Net.CountOfAlternateProtocolServers", 793 UMA_HISTOGRAM_COUNTS("Net.CountOfAlternateProtocolServers",
792 alternative_service_map->size()); 794 alternative_service_map->size());
793 http_server_properties_impl_->SetAlternativeServiceServers( 795 http_server_properties_impl_->SetAlternativeServiceServers(
794 alternative_service_map); 796 alternative_service_map);
795 797
796 http_server_properties_impl_->SetSupportsQuic(last_quic_address); 798 http_server_properties_impl_->SetSupportsQuic(last_quic_address);
797 799
798 http_server_properties_impl_->SetServerNetworkStats(server_network_stats_map); 800 http_server_properties_impl_->SetServerNetworkStats(server_network_stats_map);
799 801
800 UMA_HISTOGRAM_COUNTS_1000("Net.CountOfQuicServerInfos", 802 UMA_HISTOGRAM_COUNTS_1000("Net.CountOfQuicServerInfos",
801 quic_server_info_map->size()); 803 quic_server_info_map->size());
802 804
803 http_server_properties_impl_->SetQuicServerInfoMap(quic_server_info_map); 805 http_server_properties_impl_->SetQuicServerInfoMap(quic_server_info_map);
804 806
805 // Update the prefs with what we have read (delete all corrupted prefs). 807 // Update the prefs with what we have read (delete all corrupted prefs).
806 if (detected_corrupted_prefs) 808 if (detected_corrupted_prefs)
807 ScheduleUpdatePrefsOnNetworkThread(DETECTED_CORRUPTED_PREFS); 809 ScheduleUpdatePrefsOnNetworkSequence(DETECTED_CORRUPTED_PREFS);
808 } 810 }
809 811
810 // 812 //
811 // Update Preferences with data from the cached data. 813 // Update Preferences with data from the cached data.
812 // 814 //
813 void HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread( 815 void HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkSequence(
814 Location location) { 816 Location location) {
815 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 817 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
816 // Do not schedule a new update if there is already one scheduled. 818 // Do not schedule a new update if there is already one scheduled.
817 if (network_prefs_update_timer_->IsRunning()) 819 if (network_prefs_update_timer_->IsRunning())
818 return; 820 return;
819 821
820 network_prefs_update_timer_->Start( 822 network_prefs_update_timer_->Start(
821 FROM_HERE, kUpdatePrefsDelay, this, 823 FROM_HERE, kUpdatePrefsDelay, this,
822 &HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread); 824 &HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkSequence);
823 825
824 // TODO(rtenneti): Delete the following histogram after collecting some data. 826 // TODO(rtenneti): Delete the following histogram after collecting some data.
825 UMA_HISTOGRAM_ENUMERATION("Net.HttpServerProperties.UpdatePrefs", location, 827 UMA_HISTOGRAM_ENUMERATION("Net.HttpServerProperties.UpdatePrefs", location,
826 HttpServerPropertiesManager::NUM_LOCATIONS); 828 HttpServerPropertiesManager::NUM_LOCATIONS);
827 } 829 }
828 830
829 // This is required so we can set this as the callback for a timer. 831 // This is required so we can set this as the callback for a timer.
830 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread() { 832 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkSequence() {
831 UpdatePrefsFromCacheOnNetworkThread(base::Closure()); 833 UpdatePrefsFromCacheOnNetworkSequence(base::Closure());
832 } 834 }
833 835
834 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread( 836 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkSequence(
835 const base::Closure& completion) { 837 const base::Closure& completion) {
836 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 838 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
837 839
838 // It is in MRU order. 840 // It is in MRU order.
839 base::ListValue* spdy_server_list = new base::ListValue; 841 base::ListValue* spdy_server_list = new base::ListValue;
840 http_server_properties_impl_->GetSpdyServerList( 842 http_server_properties_impl_->GetSpdyServerList(
841 spdy_server_list, kMaxSupportsSpdyServerHostsToPersist); 843 spdy_server_list, kMaxSupportsSpdyServerHostsToPersist);
842 844
843 AlternativeServiceMap* alternative_service_map = 845 AlternativeServiceMap* alternative_service_map =
844 new AlternativeServiceMap(kMaxAlternateProtocolHostsToPersist); 846 new AlternativeServiceMap(kMaxAlternateProtocolHostsToPersist);
845 const AlternativeServiceMap& map = 847 const AlternativeServiceMap& map =
846 http_server_properties_impl_->alternative_service_map(); 848 http_server_properties_impl_->alternative_service_map();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 void HttpServerPropertiesManager::UpdatePrefsOnPrefThread( 959 void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
958 base::ListValue* spdy_server_list, 960 base::ListValue* spdy_server_list,
959 AlternativeServiceMap* alternative_service_map, 961 AlternativeServiceMap* alternative_service_map,
960 IPAddress* last_quic_address, 962 IPAddress* last_quic_address,
961 ServerNetworkStatsMap* server_network_stats_map, 963 ServerNetworkStatsMap* server_network_stats_map,
962 QuicServerInfoMap* quic_server_info_map, 964 QuicServerInfoMap* quic_server_info_map,
963 const base::Closure& completion) { 965 const base::Closure& completion) {
964 typedef base::MRUCache<url::SchemeHostPort, ServerPref> ServerPrefMap; 966 typedef base::MRUCache<url::SchemeHostPort, ServerPref> ServerPrefMap;
965 ServerPrefMap server_pref_map(ServerPrefMap::NO_AUTO_EVICT); 967 ServerPrefMap server_pref_map(ServerPrefMap::NO_AUTO_EVICT);
966 968
967 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 969 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
968 970
969 // Add servers that support spdy to server_pref_map in the MRU order. 971 // Add servers that support spdy to server_pref_map in the MRU order.
970 for (size_t index = spdy_server_list->GetSize(); index > 0; --index) { 972 for (size_t index = spdy_server_list->GetSize(); index > 0; --index) {
971 std::string server_str; 973 std::string server_str;
972 if (spdy_server_list->GetString(index - 1, &server_str)) { 974 if (spdy_server_list->GetString(index - 1, &server_str)) {
973 url::SchemeHostPort server((GURL(server_str))); 975 url::SchemeHostPort server((GURL(server_str)));
974 ServerPrefMap::iterator it = server_pref_map.Get(server); 976 ServerPrefMap::iterator it = server_pref_map.Get(server);
975 if (it == server_pref_map.end()) { 977 if (it == server_pref_map.end()) {
976 ServerPref server_pref; 978 ServerPref server_pref;
977 server_pref.supports_spdy = true; 979 server_pref.supports_spdy = true;
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 quic_server_pref_dict->SetStringWithoutPathExpansion(kServerInfoKey, 1138 quic_server_pref_dict->SetStringWithoutPathExpansion(kServerInfoKey,
1137 entry.second); 1139 entry.second);
1138 quic_servers_dict->SetWithoutPathExpansion( 1140 quic_servers_dict->SetWithoutPathExpansion(
1139 server_id.ToString(), std::move(quic_server_pref_dict)); 1141 server_id.ToString(), std::move(quic_server_pref_dict));
1140 } 1142 }
1141 http_server_properties_dict->SetWithoutPathExpansion( 1143 http_server_properties_dict->SetWithoutPathExpansion(
1142 kQuicServers, std::move(quic_servers_dict)); 1144 kQuicServers, std::move(quic_servers_dict));
1143 } 1145 }
1144 1146
1145 void HttpServerPropertiesManager::OnHttpServerPropertiesChanged() { 1147 void HttpServerPropertiesManager::OnHttpServerPropertiesChanged() {
1146 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 1148 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
1147 if (!setting_prefs_) 1149 if (!setting_prefs_)
1148 ScheduleUpdateCacheOnPrefThread(); 1150 ScheduleUpdateCacheOnPrefThread();
1149 } 1151 }
1150 1152
1151 void HttpServerPropertiesManager::SetInitialized() { 1153 void HttpServerPropertiesManager::SetInitialized() {
1152 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 1154 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
1153 is_initialized_ = true; 1155 is_initialized_ = true;
1154 } 1156 }
1155 1157
1156 } // namespace net 1158 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_server_properties_manager.h ('k') | net/http/http_server_properties_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698