| OLD | NEW |
| 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> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 9 #include "base/metrics/histogram_macros.h" | 11 #include "base/metrics/histogram_macros.h" |
| 10 #include "crypto/ec_private_key.h" | 12 #include "crypto/ec_private_key.h" |
| 11 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
| 12 | 14 |
| 13 namespace net { | 15 namespace net { |
| 14 | 16 |
| 15 // -------------------------------------------------------------------------- | 17 // -------------------------------------------------------------------------- |
| 16 // Task | 18 // Task |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 } | 63 } |
| 62 | 64 |
| 63 void DefaultChannelIDStore::GetChannelIDTask::Run( | 65 void DefaultChannelIDStore::GetChannelIDTask::Run( |
| 64 DefaultChannelIDStore* store) { | 66 DefaultChannelIDStore* store) { |
| 65 scoped_ptr<crypto::ECPrivateKey> key_result; | 67 scoped_ptr<crypto::ECPrivateKey> key_result; |
| 66 int err = store->GetChannelID(server_identifier_, &key_result, | 68 int err = store->GetChannelID(server_identifier_, &key_result, |
| 67 GetChannelIDCallback()); | 69 GetChannelIDCallback()); |
| 68 DCHECK(err != ERR_IO_PENDING); | 70 DCHECK(err != ERR_IO_PENDING); |
| 69 | 71 |
| 70 InvokeCallback(base::Bind(callback_, err, server_identifier_, | 72 InvokeCallback(base::Bind(callback_, err, server_identifier_, |
| 71 base::Passed(key_result.Pass()))); | 73 base::Passed(std::move(key_result)))); |
| 72 } | 74 } |
| 73 | 75 |
| 74 // -------------------------------------------------------------------------- | 76 // -------------------------------------------------------------------------- |
| 75 // SetChannelIDTask | 77 // SetChannelIDTask |
| 76 class DefaultChannelIDStore::SetChannelIDTask | 78 class DefaultChannelIDStore::SetChannelIDTask |
| 77 : public DefaultChannelIDStore::Task { | 79 : public DefaultChannelIDStore::Task { |
| 78 public: | 80 public: |
| 79 SetChannelIDTask(scoped_ptr<ChannelID> channel_id); | 81 SetChannelIDTask(scoped_ptr<ChannelID> channel_id); |
| 80 ~SetChannelIDTask() override; | 82 ~SetChannelIDTask() override; |
| 81 void Run(DefaultChannelIDStore* store) override; | 83 void Run(DefaultChannelIDStore* store) override; |
| 82 | 84 |
| 83 private: | 85 private: |
| 84 scoped_ptr<ChannelID> channel_id_; | 86 scoped_ptr<ChannelID> channel_id_; |
| 85 }; | 87 }; |
| 86 | 88 |
| 87 DefaultChannelIDStore::SetChannelIDTask::SetChannelIDTask( | 89 DefaultChannelIDStore::SetChannelIDTask::SetChannelIDTask( |
| 88 scoped_ptr<ChannelID> channel_id) | 90 scoped_ptr<ChannelID> channel_id) |
| 89 : channel_id_(channel_id.Pass()) { | 91 : channel_id_(std::move(channel_id)) {} |
| 90 } | |
| 91 | 92 |
| 92 DefaultChannelIDStore::SetChannelIDTask::~SetChannelIDTask() { | 93 DefaultChannelIDStore::SetChannelIDTask::~SetChannelIDTask() { |
| 93 } | 94 } |
| 94 | 95 |
| 95 void DefaultChannelIDStore::SetChannelIDTask::Run( | 96 void DefaultChannelIDStore::SetChannelIDTask::Run( |
| 96 DefaultChannelIDStore* store) { | 97 DefaultChannelIDStore* store) { |
| 97 store->SyncSetChannelID(channel_id_.Pass()); | 98 store->SyncSetChannelID(std::move(channel_id_)); |
| 98 } | 99 } |
| 99 | 100 |
| 100 // -------------------------------------------------------------------------- | 101 // -------------------------------------------------------------------------- |
| 101 // DeleteChannelIDTask | 102 // DeleteChannelIDTask |
| 102 class DefaultChannelIDStore::DeleteChannelIDTask | 103 class DefaultChannelIDStore::DeleteChannelIDTask |
| 103 : public DefaultChannelIDStore::Task { | 104 : public DefaultChannelIDStore::Task { |
| 104 public: | 105 public: |
| 105 DeleteChannelIDTask(const std::string& server_identifier, | 106 DeleteChannelIDTask(const std::string& server_identifier, |
| 106 const base::Closure& callback); | 107 const base::Closure& callback); |
| 107 ~DeleteChannelIDTask() override; | 108 ~DeleteChannelIDTask() override; |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 if (it == channel_ids_.end()) | 229 if (it == channel_ids_.end()) |
| 229 return ERR_FILE_NOT_FOUND; | 230 return ERR_FILE_NOT_FOUND; |
| 230 | 231 |
| 231 ChannelID* channel_id = it->second; | 232 ChannelID* channel_id = it->second; |
| 232 key_result->reset(channel_id->key()->Copy()); | 233 key_result->reset(channel_id->key()->Copy()); |
| 233 | 234 |
| 234 return OK; | 235 return OK; |
| 235 } | 236 } |
| 236 | 237 |
| 237 void DefaultChannelIDStore::SetChannelID(scoped_ptr<ChannelID> channel_id) { | 238 void DefaultChannelIDStore::SetChannelID(scoped_ptr<ChannelID> channel_id) { |
| 238 auto task = new SetChannelIDTask(channel_id.Pass()); | 239 auto task = new SetChannelIDTask(std::move(channel_id)); |
| 239 RunOrEnqueueTask(scoped_ptr<Task>(task)); | 240 RunOrEnqueueTask(scoped_ptr<Task>(task)); |
| 240 } | 241 } |
| 241 | 242 |
| 242 void DefaultChannelIDStore::DeleteChannelID( | 243 void DefaultChannelIDStore::DeleteChannelID( |
| 243 const std::string& server_identifier, | 244 const std::string& server_identifier, |
| 244 const base::Closure& callback) { | 245 const base::Closure& callback) { |
| 245 RunOrEnqueueTask(scoped_ptr<Task>( | 246 RunOrEnqueueTask(scoped_ptr<Task>( |
| 246 new DeleteChannelIDTask(server_identifier, callback))); | 247 new DeleteChannelIDTask(server_identifier, callback))); |
| 247 } | 248 } |
| 248 | 249 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 for (scoped_ptr<Task>& i : waiting_tasks_) | 331 for (scoped_ptr<Task>& i : waiting_tasks_) |
| 331 i->Run(this); | 332 i->Run(this); |
| 332 waiting_tasks_.clear(); | 333 waiting_tasks_.clear(); |
| 333 } | 334 } |
| 334 | 335 |
| 335 void DefaultChannelIDStore::SyncSetChannelID(scoped_ptr<ChannelID> channel_id) { | 336 void DefaultChannelIDStore::SyncSetChannelID(scoped_ptr<ChannelID> channel_id) { |
| 336 DCHECK(CalledOnValidThread()); | 337 DCHECK(CalledOnValidThread()); |
| 337 DCHECK(loaded_); | 338 DCHECK(loaded_); |
| 338 | 339 |
| 339 InternalDeleteChannelID(channel_id->server_identifier()); | 340 InternalDeleteChannelID(channel_id->server_identifier()); |
| 340 InternalInsertChannelID(channel_id.Pass()); | 341 InternalInsertChannelID(std::move(channel_id)); |
| 341 } | 342 } |
| 342 | 343 |
| 343 void DefaultChannelIDStore::SyncDeleteChannelID( | 344 void DefaultChannelIDStore::SyncDeleteChannelID( |
| 344 const std::string& server_identifier) { | 345 const std::string& server_identifier) { |
| 345 DCHECK(CalledOnValidThread()); | 346 DCHECK(CalledOnValidThread()); |
| 346 DCHECK(loaded_); | 347 DCHECK(loaded_); |
| 347 InternalDeleteChannelID(server_identifier); | 348 InternalDeleteChannelID(server_identifier); |
| 348 } | 349 } |
| 349 | 350 |
| 350 void DefaultChannelIDStore::SyncDeleteAllCreatedBetween( | 351 void DefaultChannelIDStore::SyncDeleteAllCreatedBetween( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 375 for (ChannelIDMap::iterator it = channel_ids_.begin(); | 376 for (ChannelIDMap::iterator it = channel_ids_.begin(); |
| 376 it != channel_ids_.end(); ++it) | 377 it != channel_ids_.end(); ++it) |
| 377 channel_id_list->push_back(*it->second); | 378 channel_id_list->push_back(*it->second); |
| 378 } | 379 } |
| 379 | 380 |
| 380 void DefaultChannelIDStore::EnqueueTask(scoped_ptr<Task> task) { | 381 void DefaultChannelIDStore::EnqueueTask(scoped_ptr<Task> task) { |
| 381 DCHECK(CalledOnValidThread()); | 382 DCHECK(CalledOnValidThread()); |
| 382 DCHECK(!loaded_); | 383 DCHECK(!loaded_); |
| 383 if (waiting_tasks_.empty()) | 384 if (waiting_tasks_.empty()) |
| 384 waiting_tasks_start_time_ = base::TimeTicks::Now(); | 385 waiting_tasks_start_time_ = base::TimeTicks::Now(); |
| 385 waiting_tasks_.push_back(task.Pass()); | 386 waiting_tasks_.push_back(std::move(task)); |
| 386 } | 387 } |
| 387 | 388 |
| 388 void DefaultChannelIDStore::RunOrEnqueueTask(scoped_ptr<Task> task) { | 389 void DefaultChannelIDStore::RunOrEnqueueTask(scoped_ptr<Task> task) { |
| 389 DCHECK(CalledOnValidThread()); | 390 DCHECK(CalledOnValidThread()); |
| 390 InitIfNecessary(); | 391 InitIfNecessary(); |
| 391 | 392 |
| 392 if (!loaded_) { | 393 if (!loaded_) { |
| 393 EnqueueTask(task.Pass()); | 394 EnqueueTask(std::move(task)); |
| 394 return; | 395 return; |
| 395 } | 396 } |
| 396 | 397 |
| 397 task->Run(this); | 398 task->Run(this); |
| 398 } | 399 } |
| 399 | 400 |
| 400 void DefaultChannelIDStore::InternalDeleteChannelID( | 401 void DefaultChannelIDStore::InternalDeleteChannelID( |
| 401 const std::string& server_identifier) { | 402 const std::string& server_identifier) { |
| 402 DCHECK(CalledOnValidThread()); | 403 DCHECK(CalledOnValidThread()); |
| 403 DCHECK(loaded_); | 404 DCHECK(loaded_); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 422 store_->AddChannelID(*(channel_id.get())); | 423 store_->AddChannelID(*(channel_id.get())); |
| 423 const std::string& server_identifier = channel_id->server_identifier(); | 424 const std::string& server_identifier = channel_id->server_identifier(); |
| 424 channel_ids_[server_identifier] = channel_id.release(); | 425 channel_ids_[server_identifier] = channel_id.release(); |
| 425 } | 426 } |
| 426 | 427 |
| 427 DefaultChannelIDStore::PersistentStore::PersistentStore() {} | 428 DefaultChannelIDStore::PersistentStore::PersistentStore() {} |
| 428 | 429 |
| 429 DefaultChannelIDStore::PersistentStore::~PersistentStore() {} | 430 DefaultChannelIDStore::PersistentStore::~PersistentStore() {} |
| 430 | 431 |
| 431 } // namespace net | 432 } // namespace net |
| OLD | NEW |