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

Side by Side Diff: net/ssl/default_channel_id_store.cc

Issue 2910473005: Deprecate NonThreadSafe in net/ in favor of SequenceChecker/ThreadChecker. (Closed)
Patch Set: rebase on r476634 Created 3 years, 6 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
« no previous file with comments | « net/ssl/channel_id_store.cc ('k') | net/url_request/sdch_dictionary_fetcher.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/ssl/default_channel_id_store.h" 5 #include "net/ssl/default_channel_id_store.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 PersistentStore* store) 220 PersistentStore* store)
221 : initialized_(false), 221 : initialized_(false),
222 loaded_(false), 222 loaded_(false),
223 store_(store), 223 store_(store),
224 weak_ptr_factory_(this) {} 224 weak_ptr_factory_(this) {}
225 225
226 int DefaultChannelIDStore::GetChannelID( 226 int DefaultChannelIDStore::GetChannelID(
227 const std::string& server_identifier, 227 const std::string& server_identifier,
228 std::unique_ptr<crypto::ECPrivateKey>* key_result, 228 std::unique_ptr<crypto::ECPrivateKey>* key_result,
229 const GetChannelIDCallback& callback) { 229 const GetChannelIDCallback& callback) {
230 DCHECK(CalledOnValidThread()); 230 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
231 InitIfNecessary(); 231 InitIfNecessary();
232 232
233 if (!loaded_) { 233 if (!loaded_) {
234 EnqueueTask(std::unique_ptr<Task>( 234 EnqueueTask(std::unique_ptr<Task>(
235 new GetChannelIDTask(server_identifier, callback))); 235 new GetChannelIDTask(server_identifier, callback)));
236 return ERR_IO_PENDING; 236 return ERR_IO_PENDING;
237 } 237 }
238 238
239 ChannelIDMap::iterator it = channel_ids_.find(server_identifier); 239 ChannelIDMap::iterator it = channel_ids_.find(server_identifier);
240 240
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 void DefaultChannelIDStore::GetAllChannelIDs( 278 void DefaultChannelIDStore::GetAllChannelIDs(
279 const GetChannelIDListCallback& callback) { 279 const GetChannelIDListCallback& callback) {
280 RunOrEnqueueTask(std::unique_ptr<Task>(new GetAllChannelIDsTask(callback))); 280 RunOrEnqueueTask(std::unique_ptr<Task>(new GetAllChannelIDsTask(callback)));
281 } 281 }
282 282
283 void DefaultChannelIDStore::Flush() { 283 void DefaultChannelIDStore::Flush() {
284 store_->Flush(); 284 store_->Flush();
285 } 285 }
286 286
287 int DefaultChannelIDStore::GetChannelIDCount() { 287 int DefaultChannelIDStore::GetChannelIDCount() {
288 DCHECK(CalledOnValidThread()); 288 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
289 289
290 return channel_ids_.size(); 290 return channel_ids_.size();
291 } 291 }
292 292
293 void DefaultChannelIDStore::SetForceKeepSessionState() { 293 void DefaultChannelIDStore::SetForceKeepSessionState() {
294 DCHECK(CalledOnValidThread()); 294 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
295 InitIfNecessary(); 295 InitIfNecessary();
296 296
297 if (store_) 297 if (store_)
298 store_->SetForceKeepSessionState(); 298 store_->SetForceKeepSessionState();
299 } 299 }
300 300
301 DefaultChannelIDStore::~DefaultChannelIDStore() { 301 DefaultChannelIDStore::~DefaultChannelIDStore() {
302 DeleteAllInMemory(); 302 DeleteAllInMemory();
303 } 303 }
304 304
305 void DefaultChannelIDStore::DeleteAllInMemory() { 305 void DefaultChannelIDStore::DeleteAllInMemory() {
306 DCHECK(CalledOnValidThread()); 306 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
307 307
308 for (ChannelIDMap::iterator it = channel_ids_.begin(); 308 for (ChannelIDMap::iterator it = channel_ids_.begin();
309 it != channel_ids_.end(); ++it) { 309 it != channel_ids_.end(); ++it) {
310 delete it->second; 310 delete it->second;
311 } 311 }
312 channel_ids_.clear(); 312 channel_ids_.clear();
313 } 313 }
314 314
315 void DefaultChannelIDStore::InitStore() { 315 void DefaultChannelIDStore::InitStore() {
316 DCHECK(CalledOnValidThread()); 316 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
317 DCHECK(store_) << "Store must exist to initialize"; 317 DCHECK(store_) << "Store must exist to initialize";
318 DCHECK(!loaded_); 318 DCHECK(!loaded_);
319 319
320 store_->Load(base::Bind(&DefaultChannelIDStore::OnLoaded, 320 store_->Load(base::Bind(&DefaultChannelIDStore::OnLoaded,
321 weak_ptr_factory_.GetWeakPtr())); 321 weak_ptr_factory_.GetWeakPtr()));
322 } 322 }
323 323
324 void DefaultChannelIDStore::OnLoaded( 324 void DefaultChannelIDStore::OnLoaded(
325 std::unique_ptr<std::vector<std::unique_ptr<ChannelID>>> channel_ids) { 325 std::unique_ptr<std::vector<std::unique_ptr<ChannelID>>> channel_ids) {
326 DCHECK(CalledOnValidThread()); 326 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
327 for (std::vector<std::unique_ptr<ChannelID>>::iterator it = 327 for (std::vector<std::unique_ptr<ChannelID>>::iterator it =
328 channel_ids->begin(); 328 channel_ids->begin();
329 it != channel_ids->end(); ++it) { 329 it != channel_ids->end(); ++it) {
330 DCHECK(channel_ids_.find((*it)->server_identifier()) == 330 DCHECK(channel_ids_.find((*it)->server_identifier()) ==
331 channel_ids_.end()); 331 channel_ids_.end());
332 std::string ident = (*it)->server_identifier(); 332 std::string ident = (*it)->server_identifier();
333 channel_ids_[ident] = it->release(); 333 channel_ids_[ident] = it->release();
334 } 334 }
335 channel_ids->clear(); 335 channel_ids->clear();
336 336
337 loaded_ = true; 337 loaded_ = true;
338 338
339 for (std::unique_ptr<Task>& i : waiting_tasks_) 339 for (std::unique_ptr<Task>& i : waiting_tasks_)
340 i->Run(this); 340 i->Run(this);
341 waiting_tasks_.clear(); 341 waiting_tasks_.clear();
342 } 342 }
343 343
344 void DefaultChannelIDStore::SyncSetChannelID( 344 void DefaultChannelIDStore::SyncSetChannelID(
345 std::unique_ptr<ChannelID> channel_id) { 345 std::unique_ptr<ChannelID> channel_id) {
346 DCHECK(CalledOnValidThread()); 346 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
347 DCHECK(loaded_); 347 DCHECK(loaded_);
348 348
349 InternalDeleteChannelID(channel_id->server_identifier()); 349 InternalDeleteChannelID(channel_id->server_identifier());
350 InternalInsertChannelID(std::move(channel_id)); 350 InternalInsertChannelID(std::move(channel_id));
351 } 351 }
352 352
353 void DefaultChannelIDStore::SyncDeleteChannelID( 353 void DefaultChannelIDStore::SyncDeleteChannelID(
354 const std::string& server_identifier) { 354 const std::string& server_identifier) {
355 DCHECK(CalledOnValidThread()); 355 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
356 DCHECK(loaded_); 356 DCHECK(loaded_);
357 InternalDeleteChannelID(server_identifier); 357 InternalDeleteChannelID(server_identifier);
358 } 358 }
359 359
360 void DefaultChannelIDStore::SyncDeleteForDomainsCreatedBetween( 360 void DefaultChannelIDStore::SyncDeleteForDomainsCreatedBetween(
361 const base::Callback<bool(const std::string&)>& domain_predicate, 361 const base::Callback<bool(const std::string&)>& domain_predicate,
362 base::Time delete_begin, 362 base::Time delete_begin,
363 base::Time delete_end) { 363 base::Time delete_end) {
364 DCHECK(CalledOnValidThread()); 364 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
365 DCHECK(loaded_); 365 DCHECK(loaded_);
366 for (ChannelIDMap::iterator it = channel_ids_.begin(); 366 for (ChannelIDMap::iterator it = channel_ids_.begin();
367 it != channel_ids_.end();) { 367 it != channel_ids_.end();) {
368 ChannelIDMap::iterator cur = it; 368 ChannelIDMap::iterator cur = it;
369 ++it; 369 ++it;
370 ChannelID* channel_id = cur->second; 370 ChannelID* channel_id = cur->second;
371 371
372 if ((delete_begin.is_null() || 372 if ((delete_begin.is_null() ||
373 channel_id->creation_time() >= delete_begin) && 373 channel_id->creation_time() >= delete_begin) &&
374 (delete_end.is_null() || channel_id->creation_time() < delete_end) && 374 (delete_end.is_null() || channel_id->creation_time() < delete_end) &&
375 domain_predicate.Run(channel_id->server_identifier())) { 375 domain_predicate.Run(channel_id->server_identifier())) {
376 if (store_) 376 if (store_)
377 store_->DeleteChannelID(*channel_id); 377 store_->DeleteChannelID(*channel_id);
378 delete channel_id; 378 delete channel_id;
379 channel_ids_.erase(cur); 379 channel_ids_.erase(cur);
380 } 380 }
381 } 381 }
382 } 382 }
383 383
384 void DefaultChannelIDStore::SyncGetAllChannelIDs( 384 void DefaultChannelIDStore::SyncGetAllChannelIDs(
385 ChannelIDList* channel_id_list) { 385 ChannelIDList* channel_id_list) {
386 DCHECK(CalledOnValidThread()); 386 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
387 DCHECK(loaded_); 387 DCHECK(loaded_);
388 for (ChannelIDMap::iterator it = channel_ids_.begin(); 388 for (ChannelIDMap::iterator it = channel_ids_.begin();
389 it != channel_ids_.end(); ++it) 389 it != channel_ids_.end(); ++it)
390 channel_id_list->push_back(*it->second); 390 channel_id_list->push_back(*it->second);
391 } 391 }
392 392
393 void DefaultChannelIDStore::EnqueueTask(std::unique_ptr<Task> task) { 393 void DefaultChannelIDStore::EnqueueTask(std::unique_ptr<Task> task) {
394 DCHECK(CalledOnValidThread()); 394 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
395 DCHECK(!loaded_); 395 DCHECK(!loaded_);
396 waiting_tasks_.push_back(std::move(task)); 396 waiting_tasks_.push_back(std::move(task));
397 } 397 }
398 398
399 void DefaultChannelIDStore::RunOrEnqueueTask(std::unique_ptr<Task> task) { 399 void DefaultChannelIDStore::RunOrEnqueueTask(std::unique_ptr<Task> task) {
400 DCHECK(CalledOnValidThread()); 400 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
401 InitIfNecessary(); 401 InitIfNecessary();
402 402
403 if (!loaded_) { 403 if (!loaded_) {
404 EnqueueTask(std::move(task)); 404 EnqueueTask(std::move(task));
405 return; 405 return;
406 } 406 }
407 407
408 task->Run(this); 408 task->Run(this);
409 } 409 }
410 410
411 void DefaultChannelIDStore::InternalDeleteChannelID( 411 void DefaultChannelIDStore::InternalDeleteChannelID(
412 const std::string& server_identifier) { 412 const std::string& server_identifier) {
413 DCHECK(CalledOnValidThread()); 413 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
414 DCHECK(loaded_); 414 DCHECK(loaded_);
415 415
416 ChannelIDMap::iterator it = channel_ids_.find(server_identifier); 416 ChannelIDMap::iterator it = channel_ids_.find(server_identifier);
417 if (it == channel_ids_.end()) 417 if (it == channel_ids_.end())
418 return; // There is nothing to delete. 418 return; // There is nothing to delete.
419 419
420 ChannelID* channel_id = it->second; 420 ChannelID* channel_id = it->second;
421 if (store_) 421 if (store_)
422 store_->DeleteChannelID(*channel_id); 422 store_->DeleteChannelID(*channel_id);
423 channel_ids_.erase(it); 423 channel_ids_.erase(it);
424 delete channel_id; 424 delete channel_id;
425 } 425 }
426 426
427 void DefaultChannelIDStore::InternalInsertChannelID( 427 void DefaultChannelIDStore::InternalInsertChannelID(
428 std::unique_ptr<ChannelID> channel_id) { 428 std::unique_ptr<ChannelID> channel_id) {
429 DCHECK(CalledOnValidThread()); 429 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
430 DCHECK(loaded_); 430 DCHECK(loaded_);
431 431
432 if (store_) 432 if (store_)
433 store_->AddChannelID(*channel_id); 433 store_->AddChannelID(*channel_id);
434 const std::string& server_identifier = channel_id->server_identifier(); 434 const std::string& server_identifier = channel_id->server_identifier();
435 channel_ids_[server_identifier] = channel_id.release(); 435 channel_ids_[server_identifier] = channel_id.release();
436 } 436 }
437 437
438 bool DefaultChannelIDStore::IsEphemeral() { 438 bool DefaultChannelIDStore::IsEphemeral() {
439 return !store_; 439 return !store_;
440 } 440 }
441 441
442 DefaultChannelIDStore::PersistentStore::PersistentStore() {} 442 DefaultChannelIDStore::PersistentStore::PersistentStore() {}
443 443
444 DefaultChannelIDStore::PersistentStore::~PersistentStore() {} 444 DefaultChannelIDStore::PersistentStore::~PersistentStore() {}
445 445
446 } // namespace net 446 } // namespace net
OLDNEW
« no previous file with comments | « net/ssl/channel_id_store.cc ('k') | net/url_request/sdch_dictionary_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698