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

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

Issue 2894863002: Rename TaskRunner::RunsTasksOnCurrentThread() in //net (Closed)
Patch Set: for Requirements 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::InitializeOnNetworkThread() {
Ryan Sleevi 2017/05/22 17:22:13 OnNetworkSequence?
Yeol Park 2017/05/23 05:26:33 Done.
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 // UpdateCacheFromPrefsOnPrefThread() 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(&HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread,
116 pref_weak_ptr_), 116 pref_weak_ptr_),
117 base::Bind(&HttpServerPropertiesManager::SetInitialized, 117 base::Bind(&HttpServerPropertiesManager::SetInitialized,
118 network_weak_ptr_factory_->GetWeakPtr())); 118 network_weak_ptr_factory_->GetWeakPtr()));
119 } 119 }
120 120
121 void HttpServerPropertiesManager::ShutdownOnPrefThread() { 121 void HttpServerPropertiesManager::ShutdownOnPrefThread() {
Ryan Sleevi 2017/05/22 17:22:13 OnPrefSequence?
Yeol Park 2017/05/23 05:26:33 Done.
122 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 122 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
123 // Cancel any pending updates, and stop listening for pref change updates. 123 // Cancel any pending updates, and stop listening for pref change updates.
124 pref_cache_update_timer_->Stop(); 124 pref_cache_update_timer_->Stop();
125 pref_weak_ptr_factory_.reset(); 125 pref_weak_ptr_factory_.reset();
126 pref_delegate_->StopListeningForUpdates(); 126 pref_delegate_->StopListeningForUpdates();
127 } 127 }
128 128
129 // static 129 // static
130 void HttpServerPropertiesManager::SetVersion( 130 void HttpServerPropertiesManager::SetVersion(
131 base::DictionaryValue* http_server_properties_dict, 131 base::DictionaryValue* http_server_properties_dict,
132 int version_number) { 132 int version_number) {
133 if (version_number < 0) 133 if (version_number < 0)
134 version_number = kVersionNumber; 134 version_number = kVersionNumber;
135 DCHECK_LE(version_number, kVersionNumber); 135 DCHECK_LE(version_number, kVersionNumber);
136 if (version_number <= kVersionNumber) 136 if (version_number <= kVersionNumber)
137 http_server_properties_dict->SetInteger(kVersionKey, version_number); 137 http_server_properties_dict->SetInteger(kVersionKey, version_number);
138 } 138 }
139 139
140 void HttpServerPropertiesManager::Clear() { 140 void HttpServerPropertiesManager::Clear() {
141 Clear(base::Closure()); 141 Clear(base::Closure());
142 } 142 }
143 143
144 void HttpServerPropertiesManager::Clear(const base::Closure& completion) { 144 void HttpServerPropertiesManager::Clear(const base::Closure& completion) {
145 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 145 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
146 146
147 http_server_properties_impl_->Clear(); 147 http_server_properties_impl_->Clear();
148 UpdatePrefsFromCacheOnNetworkThread(completion); 148 UpdatePrefsFromCacheOnNetworkThread(completion);
149 } 149 }
150 150
151 bool HttpServerPropertiesManager::SupportsRequestPriority( 151 bool HttpServerPropertiesManager::SupportsRequestPriority(
152 const url::SchemeHostPort& server) { 152 const url::SchemeHostPort& server) {
153 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 153 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
154 return http_server_properties_impl_->SupportsRequestPriority(server); 154 return http_server_properties_impl_->SupportsRequestPriority(server);
155 } 155 }
156 156
157 bool HttpServerPropertiesManager::GetSupportsSpdy( 157 bool HttpServerPropertiesManager::GetSupportsSpdy(
158 const url::SchemeHostPort& server) { 158 const url::SchemeHostPort& server) {
159 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 159 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
160 return http_server_properties_impl_->GetSupportsSpdy(server); 160 return http_server_properties_impl_->GetSupportsSpdy(server);
161 } 161 }
162 162
163 void HttpServerPropertiesManager::SetSupportsSpdy( 163 void HttpServerPropertiesManager::SetSupportsSpdy(
164 const url::SchemeHostPort& server, 164 const url::SchemeHostPort& server,
165 bool support_spdy) { 165 bool support_spdy) {
166 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 166 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
167 167
168 bool old_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server); 168 bool old_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server);
169 http_server_properties_impl_->SetSupportsSpdy(server, support_spdy); 169 http_server_properties_impl_->SetSupportsSpdy(server, support_spdy);
170 bool new_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server); 170 bool new_support_spdy = http_server_properties_impl_->GetSupportsSpdy(server);
171 if (old_support_spdy != new_support_spdy) 171 if (old_support_spdy != new_support_spdy)
172 ScheduleUpdatePrefsOnNetworkThread(SUPPORTS_SPDY); 172 ScheduleUpdatePrefsOnNetworkThread(SUPPORTS_SPDY);
173 } 173 }
174 174
175 bool HttpServerPropertiesManager::RequiresHTTP11(const HostPortPair& server) { 175 bool HttpServerPropertiesManager::RequiresHTTP11(const HostPortPair& server) {
176 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 176 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
177 return http_server_properties_impl_->RequiresHTTP11(server); 177 return http_server_properties_impl_->RequiresHTTP11(server);
178 } 178 }
179 179
180 void HttpServerPropertiesManager::SetHTTP11Required( 180 void HttpServerPropertiesManager::SetHTTP11Required(
181 const HostPortPair& server) { 181 const HostPortPair& server) {
182 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 182 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
183 183
184 http_server_properties_impl_->SetHTTP11Required(server); 184 http_server_properties_impl_->SetHTTP11Required(server);
185 ScheduleUpdatePrefsOnNetworkThread(HTTP_11_REQUIRED); 185 ScheduleUpdatePrefsOnNetworkThread(HTTP_11_REQUIRED);
186 } 186 }
187 187
188 void HttpServerPropertiesManager::MaybeForceHTTP11(const HostPortPair& server, 188 void HttpServerPropertiesManager::MaybeForceHTTP11(const HostPortPair& server,
189 SSLConfig* ssl_config) { 189 SSLConfig* ssl_config) {
190 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 190 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
191 http_server_properties_impl_->MaybeForceHTTP11(server, ssl_config); 191 http_server_properties_impl_->MaybeForceHTTP11(server, ssl_config);
192 } 192 }
193 193
194 AlternativeServiceVector HttpServerPropertiesManager::GetAlternativeServices( 194 AlternativeServiceVector HttpServerPropertiesManager::GetAlternativeServices(
195 const url::SchemeHostPort& origin) { 195 const url::SchemeHostPort& origin) {
196 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 196 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
197 return http_server_properties_impl_->GetAlternativeServices(origin); 197 return http_server_properties_impl_->GetAlternativeServices(origin);
198 } 198 }
199 199
200 bool HttpServerPropertiesManager::SetAlternativeService( 200 bool HttpServerPropertiesManager::SetAlternativeService(
201 const url::SchemeHostPort& origin, 201 const url::SchemeHostPort& origin,
202 const AlternativeService& alternative_service, 202 const AlternativeService& alternative_service,
203 base::Time expiration) { 203 base::Time expiration) {
204 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 204 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
205 const bool changed = http_server_properties_impl_->SetAlternativeService( 205 const bool changed = http_server_properties_impl_->SetAlternativeService(
206 origin, alternative_service, expiration); 206 origin, alternative_service, expiration);
207 if (changed) { 207 if (changed) {
208 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICES); 208 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICES);
209 } 209 }
210 return changed; 210 return changed;
211 } 211 }
212 212
213 bool HttpServerPropertiesManager::SetAlternativeServices( 213 bool HttpServerPropertiesManager::SetAlternativeServices(
214 const url::SchemeHostPort& origin, 214 const url::SchemeHostPort& origin,
215 const AlternativeServiceInfoVector& alternative_service_info_vector) { 215 const AlternativeServiceInfoVector& alternative_service_info_vector) {
216 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 216 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
217 const bool changed = http_server_properties_impl_->SetAlternativeServices( 217 const bool changed = http_server_properties_impl_->SetAlternativeServices(
218 origin, alternative_service_info_vector); 218 origin, alternative_service_info_vector);
219 if (changed) { 219 if (changed) {
220 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICES); 220 ScheduleUpdatePrefsOnNetworkThread(SET_ALTERNATIVE_SERVICES);
221 } 221 }
222 return changed; 222 return changed;
223 } 223 }
224 224
225 void HttpServerPropertiesManager::MarkAlternativeServiceBroken( 225 void HttpServerPropertiesManager::MarkAlternativeServiceBroken(
226 const AlternativeService& alternative_service) { 226 const AlternativeService& alternative_service) {
227 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 227 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
228 http_server_properties_impl_->MarkAlternativeServiceBroken( 228 http_server_properties_impl_->MarkAlternativeServiceBroken(
229 alternative_service); 229 alternative_service);
230 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_BROKEN); 230 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_BROKEN);
231 } 231 }
232 232
233 void HttpServerPropertiesManager::MarkAlternativeServiceRecentlyBroken( 233 void HttpServerPropertiesManager::MarkAlternativeServiceRecentlyBroken(
234 const AlternativeService& alternative_service) { 234 const AlternativeService& alternative_service) {
235 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 235 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
236 http_server_properties_impl_->MarkAlternativeServiceRecentlyBroken( 236 http_server_properties_impl_->MarkAlternativeServiceRecentlyBroken(
237 alternative_service); 237 alternative_service);
238 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_RECENTLY_BROKEN); 238 ScheduleUpdatePrefsOnNetworkThread(MARK_ALTERNATIVE_SERVICE_RECENTLY_BROKEN);
239 } 239 }
240 240
241 bool HttpServerPropertiesManager::IsAlternativeServiceBroken( 241 bool HttpServerPropertiesManager::IsAlternativeServiceBroken(
242 const AlternativeService& alternative_service) const { 242 const AlternativeService& alternative_service) const {
243 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 243 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
244 return http_server_properties_impl_->IsAlternativeServiceBroken( 244 return http_server_properties_impl_->IsAlternativeServiceBroken(
245 alternative_service); 245 alternative_service);
246 } 246 }
247 247
248 bool HttpServerPropertiesManager::WasAlternativeServiceRecentlyBroken( 248 bool HttpServerPropertiesManager::WasAlternativeServiceRecentlyBroken(
249 const AlternativeService& alternative_service) { 249 const AlternativeService& alternative_service) {
250 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 250 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
251 return http_server_properties_impl_->WasAlternativeServiceRecentlyBroken( 251 return http_server_properties_impl_->WasAlternativeServiceRecentlyBroken(
252 alternative_service); 252 alternative_service);
253 } 253 }
254 254
255 void HttpServerPropertiesManager::ConfirmAlternativeService( 255 void HttpServerPropertiesManager::ConfirmAlternativeService(
256 const AlternativeService& alternative_service) { 256 const AlternativeService& alternative_service) {
257 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 257 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
258 bool old_value = http_server_properties_impl_->IsAlternativeServiceBroken( 258 bool old_value = http_server_properties_impl_->IsAlternativeServiceBroken(
259 alternative_service); 259 alternative_service);
260 http_server_properties_impl_->ConfirmAlternativeService(alternative_service); 260 http_server_properties_impl_->ConfirmAlternativeService(alternative_service);
261 bool new_value = http_server_properties_impl_->IsAlternativeServiceBroken( 261 bool new_value = http_server_properties_impl_->IsAlternativeServiceBroken(
262 alternative_service); 262 alternative_service);
263 // For persisting, we only care about the value returned by 263 // For persisting, we only care about the value returned by
264 // IsAlternativeServiceBroken. If that value changes, then call persist. 264 // IsAlternativeServiceBroken. If that value changes, then call persist.
265 if (old_value != new_value) 265 if (old_value != new_value)
266 ScheduleUpdatePrefsOnNetworkThread(CONFIRM_ALTERNATIVE_SERVICE); 266 ScheduleUpdatePrefsOnNetworkThread(CONFIRM_ALTERNATIVE_SERVICE);
267 } 267 }
268 268
269 const AlternativeServiceMap& 269 const AlternativeServiceMap&
270 HttpServerPropertiesManager::alternative_service_map() const { 270 HttpServerPropertiesManager::alternative_service_map() const {
271 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 271 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
272 return http_server_properties_impl_->alternative_service_map(); 272 return http_server_properties_impl_->alternative_service_map();
273 } 273 }
274 274
275 std::unique_ptr<base::Value> 275 std::unique_ptr<base::Value>
276 HttpServerPropertiesManager::GetAlternativeServiceInfoAsValue() const { 276 HttpServerPropertiesManager::GetAlternativeServiceInfoAsValue() const {
277 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 277 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
278 return http_server_properties_impl_->GetAlternativeServiceInfoAsValue(); 278 return http_server_properties_impl_->GetAlternativeServiceInfoAsValue();
279 } 279 }
280 280
281 bool HttpServerPropertiesManager::GetSupportsQuic( 281 bool HttpServerPropertiesManager::GetSupportsQuic(
282 IPAddress* last_address) const { 282 IPAddress* last_address) const {
283 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 283 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
284 return http_server_properties_impl_->GetSupportsQuic(last_address); 284 return http_server_properties_impl_->GetSupportsQuic(last_address);
285 } 285 }
286 286
287 void HttpServerPropertiesManager::SetSupportsQuic(bool used_quic, 287 void HttpServerPropertiesManager::SetSupportsQuic(bool used_quic,
288 const IPAddress& address) { 288 const IPAddress& address) {
289 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 289 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
290 IPAddress old_last_quic_addr; 290 IPAddress old_last_quic_addr;
291 http_server_properties_impl_->GetSupportsQuic(&old_last_quic_addr); 291 http_server_properties_impl_->GetSupportsQuic(&old_last_quic_addr);
292 http_server_properties_impl_->SetSupportsQuic(used_quic, address); 292 http_server_properties_impl_->SetSupportsQuic(used_quic, address);
293 IPAddress new_last_quic_addr; 293 IPAddress new_last_quic_addr;
294 http_server_properties_impl_->GetSupportsQuic(&new_last_quic_addr); 294 http_server_properties_impl_->GetSupportsQuic(&new_last_quic_addr);
295 if (old_last_quic_addr != new_last_quic_addr) 295 if (old_last_quic_addr != new_last_quic_addr)
296 ScheduleUpdatePrefsOnNetworkThread(SET_SUPPORTS_QUIC); 296 ScheduleUpdatePrefsOnNetworkThread(SET_SUPPORTS_QUIC);
297 } 297 }
298 298
299 void HttpServerPropertiesManager::SetServerNetworkStats( 299 void HttpServerPropertiesManager::SetServerNetworkStats(
300 const url::SchemeHostPort& server, 300 const url::SchemeHostPort& server,
301 ServerNetworkStats stats) { 301 ServerNetworkStats stats) {
302 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 302 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
303 ServerNetworkStats old_stats; 303 ServerNetworkStats old_stats;
304 const ServerNetworkStats* old_stats_ptr = 304 const ServerNetworkStats* old_stats_ptr =
305 http_server_properties_impl_->GetServerNetworkStats(server); 305 http_server_properties_impl_->GetServerNetworkStats(server);
306 if (http_server_properties_impl_->GetServerNetworkStats(server)) 306 if (http_server_properties_impl_->GetServerNetworkStats(server))
307 old_stats = *old_stats_ptr; 307 old_stats = *old_stats_ptr;
308 http_server_properties_impl_->SetServerNetworkStats(server, stats); 308 http_server_properties_impl_->SetServerNetworkStats(server, stats);
309 ServerNetworkStats new_stats = 309 ServerNetworkStats new_stats =
310 *(http_server_properties_impl_->GetServerNetworkStats(server)); 310 *(http_server_properties_impl_->GetServerNetworkStats(server));
311 if (old_stats != new_stats) 311 if (old_stats != new_stats)
312 ScheduleUpdatePrefsOnNetworkThread(SET_SERVER_NETWORK_STATS); 312 ScheduleUpdatePrefsOnNetworkThread(SET_SERVER_NETWORK_STATS);
313 } 313 }
314 314
315 void HttpServerPropertiesManager::ClearServerNetworkStats( 315 void HttpServerPropertiesManager::ClearServerNetworkStats(
316 const url::SchemeHostPort& server) { 316 const url::SchemeHostPort& server) {
317 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 317 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
318 bool need_update = 318 bool need_update =
319 http_server_properties_impl_->GetServerNetworkStats(server) != nullptr; 319 http_server_properties_impl_->GetServerNetworkStats(server) != nullptr;
320 http_server_properties_impl_->ClearServerNetworkStats(server); 320 http_server_properties_impl_->ClearServerNetworkStats(server);
321 if (need_update) 321 if (need_update)
322 ScheduleUpdatePrefsOnNetworkThread(CLEAR_SERVER_NETWORK_STATS); 322 ScheduleUpdatePrefsOnNetworkThread(CLEAR_SERVER_NETWORK_STATS);
323 } 323 }
324 324
325 const ServerNetworkStats* HttpServerPropertiesManager::GetServerNetworkStats( 325 const ServerNetworkStats* HttpServerPropertiesManager::GetServerNetworkStats(
326 const url::SchemeHostPort& server) { 326 const url::SchemeHostPort& server) {
327 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 327 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
328 return http_server_properties_impl_->GetServerNetworkStats(server); 328 return http_server_properties_impl_->GetServerNetworkStats(server);
329 } 329 }
330 330
331 const ServerNetworkStatsMap& 331 const ServerNetworkStatsMap&
332 HttpServerPropertiesManager::server_network_stats_map() const { 332 HttpServerPropertiesManager::server_network_stats_map() const {
333 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 333 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
334 return http_server_properties_impl_->server_network_stats_map(); 334 return http_server_properties_impl_->server_network_stats_map();
335 } 335 }
336 336
337 bool HttpServerPropertiesManager::SetQuicServerInfo( 337 bool HttpServerPropertiesManager::SetQuicServerInfo(
338 const QuicServerId& server_id, 338 const QuicServerId& server_id,
339 const std::string& server_info) { 339 const std::string& server_info) {
340 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 340 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
341 bool changed = 341 bool changed =
342 http_server_properties_impl_->SetQuicServerInfo(server_id, server_info); 342 http_server_properties_impl_->SetQuicServerInfo(server_id, server_info);
343 if (changed) 343 if (changed)
344 ScheduleUpdatePrefsOnNetworkThread(SET_QUIC_SERVER_INFO); 344 ScheduleUpdatePrefsOnNetworkThread(SET_QUIC_SERVER_INFO);
345 return changed; 345 return changed;
346 } 346 }
347 347
348 const std::string* HttpServerPropertiesManager::GetQuicServerInfo( 348 const std::string* HttpServerPropertiesManager::GetQuicServerInfo(
349 const QuicServerId& server_id) { 349 const QuicServerId& server_id) {
350 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 350 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
351 return http_server_properties_impl_->GetQuicServerInfo(server_id); 351 return http_server_properties_impl_->GetQuicServerInfo(server_id);
352 } 352 }
353 353
354 const QuicServerInfoMap& HttpServerPropertiesManager::quic_server_info_map() 354 const QuicServerInfoMap& HttpServerPropertiesManager::quic_server_info_map()
355 const { 355 const {
356 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 356 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
357 return http_server_properties_impl_->quic_server_info_map(); 357 return http_server_properties_impl_->quic_server_info_map();
358 } 358 }
359 359
360 size_t HttpServerPropertiesManager::max_server_configs_stored_in_properties() 360 size_t HttpServerPropertiesManager::max_server_configs_stored_in_properties()
361 const { 361 const {
362 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 362 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
363 return http_server_properties_impl_ 363 return http_server_properties_impl_
364 ->max_server_configs_stored_in_properties(); 364 ->max_server_configs_stored_in_properties();
365 } 365 }
366 366
367 void HttpServerPropertiesManager::SetMaxServerConfigsStoredInProperties( 367 void HttpServerPropertiesManager::SetMaxServerConfigsStoredInProperties(
368 size_t max_server_configs_stored_in_properties) { 368 size_t max_server_configs_stored_in_properties) {
369 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 369 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
370 return http_server_properties_impl_->SetMaxServerConfigsStoredInProperties( 370 return http_server_properties_impl_->SetMaxServerConfigsStoredInProperties(
371 max_server_configs_stored_in_properties); 371 max_server_configs_stored_in_properties);
372 } 372 }
373 373
374 bool HttpServerPropertiesManager::IsInitialized() const { 374 bool HttpServerPropertiesManager::IsInitialized() const {
375 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 375 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
376 376
377 return is_initialized_; 377 return is_initialized_;
378 } 378 }
379 379
380 // static 380 // static
381 base::TimeDelta HttpServerPropertiesManager::GetUpdateCacheDelayForTesting() { 381 base::TimeDelta HttpServerPropertiesManager::GetUpdateCacheDelayForTesting() {
382 return kUpdateCacheDelay; 382 return kUpdateCacheDelay;
383 } 383 }
384 384
385 // static 385 // static
386 base::TimeDelta HttpServerPropertiesManager::GetUpdatePrefsDelayForTesting() { 386 base::TimeDelta HttpServerPropertiesManager::GetUpdatePrefsDelayForTesting() {
387 return kUpdatePrefsDelay; 387 return kUpdatePrefsDelay;
388 } 388 }
389 389
390 // 390 //
391 // Update the HttpServerPropertiesImpl's cache with data from preferences. 391 // Update the HttpServerPropertiesImpl's cache with data from preferences.
392 // 392 //
393 void HttpServerPropertiesManager::ScheduleUpdateCacheOnPrefThread() { 393 void HttpServerPropertiesManager::ScheduleUpdateCacheOnPrefThread() {
Ryan Sleevi 2017/05/22 17:22:13 OnPrefSequence
Yeol Park 2017/05/23 05:26:33 Done.
394 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 394 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
395 // Do not schedule a new update if there is already one scheduled. 395 // Do not schedule a new update if there is already one scheduled.
396 if (pref_cache_update_timer_->IsRunning()) 396 if (pref_cache_update_timer_->IsRunning())
397 return; 397 return;
398 398
399 pref_cache_update_timer_->Start( 399 pref_cache_update_timer_->Start(
400 FROM_HERE, kUpdateCacheDelay, this, 400 FROM_HERE, kUpdateCacheDelay, this,
401 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread); 401 &HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread);
402 } 402 }
403 403
404 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() { 404 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() {
Ryan Sleevi 2017/05/22 17:22:13 OnPrefSequence
Yeol Park 2017/05/23 05:26:33 Done.
405 // The preferences can only be read on the pref thread. 405 // The preferences can only be read on the pref thread.
406 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 406 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
407 407
408 if (!pref_delegate_->HasServerProperties()) 408 if (!pref_delegate_->HasServerProperties())
409 return; 409 return;
410 410
411 bool detected_corrupted_prefs = false; 411 bool detected_corrupted_prefs = false;
412 const base::DictionaryValue& http_server_properties_dict = 412 const base::DictionaryValue& http_server_properties_dict =
413 pref_delegate_->GetServerProperties(); 413 pref_delegate_->GetServerProperties();
414 414
415 int version = kMissingVersion; 415 int version = kMissingVersion;
416 if (!http_server_properties_dict.GetIntegerWithoutPathExpansion(kVersionKey, 416 if (!http_server_properties_dict.GetIntegerWithoutPathExpansion(kVersionKey,
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 DVLOG(1) << "Malformed http_server_properties quic server info: " 764 DVLOG(1) << "Malformed http_server_properties quic server info: "
765 << quic_server_id_str; 765 << quic_server_id_str;
766 detected_corrupted_prefs = true; 766 detected_corrupted_prefs = true;
767 continue; 767 continue;
768 } 768 }
769 quic_server_info_map->Put(quic_server_id, quic_server_info); 769 quic_server_info_map->Put(quic_server_id, quic_server_info);
770 } 770 }
771 return !detected_corrupted_prefs; 771 return !detected_corrupted_prefs;
772 } 772 }
773 773
774 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread( 774 void HttpServerPropertiesManager::UpdateCacheFromPrefsOnNetworkThread(
Ryan Sleevi 2017/05/22 17:22:13 OnNetworkSequence
Yeol Park 2017/05/23 05:26:33 Done.
775 ServerList* spdy_servers, 775 ServerList* spdy_servers,
776 AlternativeServiceMap* alternative_service_map, 776 AlternativeServiceMap* alternative_service_map,
777 IPAddress* last_quic_address, 777 IPAddress* last_quic_address,
778 ServerNetworkStatsMap* server_network_stats_map, 778 ServerNetworkStatsMap* server_network_stats_map,
779 QuicServerInfoMap* quic_server_info_map, 779 QuicServerInfoMap* quic_server_info_map,
780 bool detected_corrupted_prefs) { 780 bool detected_corrupted_prefs) {
781 // Preferences have the master data because admins might have pushed new 781 // Preferences have the master data because admins might have pushed new
782 // preferences. Update the cached data with new data from preferences. 782 // preferences. Update the cached data with new data from preferences.
783 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 783 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
784 784
785 UMA_HISTOGRAM_COUNTS("Net.CountOfSpdyServers", spdy_servers->size()); 785 UMA_HISTOGRAM_COUNTS("Net.CountOfSpdyServers", spdy_servers->size());
786 http_server_properties_impl_->SetSpdyServers(spdy_servers, true); 786 http_server_properties_impl_->SetSpdyServers(spdy_servers, true);
787 787
788 // Update the cached data and use the new alternative service list from 788 // Update the cached data and use the new alternative service list from
789 // preferences. 789 // preferences.
790 UMA_HISTOGRAM_COUNTS("Net.CountOfAlternateProtocolServers", 790 UMA_HISTOGRAM_COUNTS("Net.CountOfAlternateProtocolServers",
791 alternative_service_map->size()); 791 alternative_service_map->size());
792 http_server_properties_impl_->SetAlternativeServiceServers( 792 http_server_properties_impl_->SetAlternativeServiceServers(
793 alternative_service_map); 793 alternative_service_map);
794 794
795 http_server_properties_impl_->SetSupportsQuic(last_quic_address); 795 http_server_properties_impl_->SetSupportsQuic(last_quic_address);
796 796
797 http_server_properties_impl_->SetServerNetworkStats(server_network_stats_map); 797 http_server_properties_impl_->SetServerNetworkStats(server_network_stats_map);
798 798
799 UMA_HISTOGRAM_COUNTS_1000("Net.CountOfQuicServerInfos", 799 UMA_HISTOGRAM_COUNTS_1000("Net.CountOfQuicServerInfos",
800 quic_server_info_map->size()); 800 quic_server_info_map->size());
801 801
802 http_server_properties_impl_->SetQuicServerInfoMap(quic_server_info_map); 802 http_server_properties_impl_->SetQuicServerInfoMap(quic_server_info_map);
803 803
804 // Update the prefs with what we have read (delete all corrupted prefs). 804 // Update the prefs with what we have read (delete all corrupted prefs).
805 if (detected_corrupted_prefs) 805 if (detected_corrupted_prefs)
806 ScheduleUpdatePrefsOnNetworkThread(DETECTED_CORRUPTED_PREFS); 806 ScheduleUpdatePrefsOnNetworkThread(DETECTED_CORRUPTED_PREFS);
807 } 807 }
808 808
809 // 809 //
810 // Update Preferences with data from the cached data. 810 // Update Preferences with data from the cached data.
811 // 811 //
812 void HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread( 812 void HttpServerPropertiesManager::ScheduleUpdatePrefsOnNetworkThread(
Ryan Sleevi 2017/05/22 17:22:13 OnNetworkSequence
Yeol Park 2017/05/23 05:27:22 Done.
813 Location location) { 813 Location location) {
814 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 814 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
815 // Do not schedule a new update if there is already one scheduled. 815 // Do not schedule a new update if there is already one scheduled.
816 if (network_prefs_update_timer_->IsRunning()) 816 if (network_prefs_update_timer_->IsRunning())
817 return; 817 return;
818 818
819 network_prefs_update_timer_->Start( 819 network_prefs_update_timer_->Start(
820 FROM_HERE, kUpdatePrefsDelay, this, 820 FROM_HERE, kUpdatePrefsDelay, this,
821 &HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread); 821 &HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread);
822 822
823 // TODO(rtenneti): Delete the following histogram after collecting some data. 823 // TODO(rtenneti): Delete the following histogram after collecting some data.
824 UMA_HISTOGRAM_ENUMERATION("Net.HttpServerProperties.UpdatePrefs", location, 824 UMA_HISTOGRAM_ENUMERATION("Net.HttpServerProperties.UpdatePrefs", location,
825 HttpServerPropertiesManager::NUM_LOCATIONS); 825 HttpServerPropertiesManager::NUM_LOCATIONS);
826 } 826 }
827 827
828 // This is required so we can set this as the callback for a timer. 828 // This is required so we can set this as the callback for a timer.
829 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread() { 829 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread() {
830 UpdatePrefsFromCacheOnNetworkThread(base::Closure()); 830 UpdatePrefsFromCacheOnNetworkThread(base::Closure());
831 } 831 }
832 832
833 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread( 833 void HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread(
Ryan Sleevi 2017/05/22 17:22:14 OnNetworkSequence
Yeol Park 2017/05/23 05:26:33 Done.
834 const base::Closure& completion) { 834 const base::Closure& completion) {
835 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 835 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
836 836
837 // It is in MRU order. 837 // It is in MRU order.
838 base::ListValue* spdy_server_list = new base::ListValue; 838 base::ListValue* spdy_server_list = new base::ListValue;
839 http_server_properties_impl_->GetSpdyServerList( 839 http_server_properties_impl_->GetSpdyServerList(
840 spdy_server_list, kMaxSupportsSpdyServerHostsToPersist); 840 spdy_server_list, kMaxSupportsSpdyServerHostsToPersist);
841 841
842 AlternativeServiceMap* alternative_service_map = 842 AlternativeServiceMap* alternative_service_map =
843 new AlternativeServiceMap(kMaxAlternateProtocolHostsToPersist); 843 new AlternativeServiceMap(kMaxAlternateProtocolHostsToPersist);
844 const AlternativeServiceMap& map = 844 const AlternativeServiceMap& map =
845 http_server_properties_impl_->alternative_service_map(); 845 http_server_properties_impl_->alternative_service_map();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 void HttpServerPropertiesManager::UpdatePrefsOnPrefThread( 956 void HttpServerPropertiesManager::UpdatePrefsOnPrefThread(
957 base::ListValue* spdy_server_list, 957 base::ListValue* spdy_server_list,
958 AlternativeServiceMap* alternative_service_map, 958 AlternativeServiceMap* alternative_service_map,
959 IPAddress* last_quic_address, 959 IPAddress* last_quic_address,
960 ServerNetworkStatsMap* server_network_stats_map, 960 ServerNetworkStatsMap* server_network_stats_map,
961 QuicServerInfoMap* quic_server_info_map, 961 QuicServerInfoMap* quic_server_info_map,
962 const base::Closure& completion) { 962 const base::Closure& completion) {
963 typedef base::MRUCache<url::SchemeHostPort, ServerPref> ServerPrefMap; 963 typedef base::MRUCache<url::SchemeHostPort, ServerPref> ServerPrefMap;
964 ServerPrefMap server_pref_map(ServerPrefMap::NO_AUTO_EVICT); 964 ServerPrefMap server_pref_map(ServerPrefMap::NO_AUTO_EVICT);
965 965
966 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 966 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
967 967
968 // Add servers that support spdy to server_pref_map in the MRU order. 968 // Add servers that support spdy to server_pref_map in the MRU order.
969 for (size_t index = spdy_server_list->GetSize(); index > 0; --index) { 969 for (size_t index = spdy_server_list->GetSize(); index > 0; --index) {
970 std::string server_str; 970 std::string server_str;
971 if (spdy_server_list->GetString(index - 1, &server_str)) { 971 if (spdy_server_list->GetString(index - 1, &server_str)) {
972 url::SchemeHostPort server((GURL(server_str))); 972 url::SchemeHostPort server((GURL(server_str)));
973 ServerPrefMap::iterator it = server_pref_map.Get(server); 973 ServerPrefMap::iterator it = server_pref_map.Get(server);
974 if (it == server_pref_map.end()) { 974 if (it == server_pref_map.end()) {
975 ServerPref server_pref; 975 ServerPref server_pref;
976 server_pref.supports_spdy = true; 976 server_pref.supports_spdy = true;
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 quic_server_pref_dict->SetStringWithoutPathExpansion(kServerInfoKey, 1135 quic_server_pref_dict->SetStringWithoutPathExpansion(kServerInfoKey,
1136 entry.second); 1136 entry.second);
1137 quic_servers_dict->SetWithoutPathExpansion(server_id.ToString(), 1137 quic_servers_dict->SetWithoutPathExpansion(server_id.ToString(),
1138 quic_server_pref_dict); 1138 quic_server_pref_dict);
1139 } 1139 }
1140 http_server_properties_dict->SetWithoutPathExpansion(kQuicServers, 1140 http_server_properties_dict->SetWithoutPathExpansion(kQuicServers,
1141 quic_servers_dict); 1141 quic_servers_dict);
1142 } 1142 }
1143 1143
1144 void HttpServerPropertiesManager::OnHttpServerPropertiesChanged() { 1144 void HttpServerPropertiesManager::OnHttpServerPropertiesChanged() {
1145 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread()); 1145 DCHECK(pref_task_runner_->RunsTasksInCurrentSequence());
1146 if (!setting_prefs_) 1146 if (!setting_prefs_)
1147 ScheduleUpdateCacheOnPrefThread(); 1147 ScheduleUpdateCacheOnPrefThread();
1148 } 1148 }
1149 1149
1150 void HttpServerPropertiesManager::SetInitialized() { 1150 void HttpServerPropertiesManager::SetInitialized() {
1151 DCHECK(network_task_runner_->RunsTasksOnCurrentThread()); 1151 DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
1152 is_initialized_ = true; 1152 is_initialized_ = true;
1153 } 1153 }
1154 1154
1155 } // namespace net 1155 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698