| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/net/sqlite_server_bound_cert_store.h" | 5 #include "chrome/browser/net/sqlite_server_bound_cert_store.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 BatchOperation(PendingOperation::CERT_DELETE, cert); | 472 BatchOperation(PendingOperation::CERT_DELETE, cert); |
| 473 } | 473 } |
| 474 | 474 |
| 475 void SQLiteServerBoundCertStore::Backend::BatchOperation( | 475 void SQLiteServerBoundCertStore::Backend::BatchOperation( |
| 476 PendingOperation::OperationType op, | 476 PendingOperation::OperationType op, |
| 477 const net::DefaultServerBoundCertStore::ServerBoundCert& cert) { | 477 const net::DefaultServerBoundCertStore::ServerBoundCert& cert) { |
| 478 // Commit every 30 seconds. | 478 // Commit every 30 seconds. |
| 479 static const int kCommitIntervalMs = 30 * 1000; | 479 static const int kCommitIntervalMs = 30 * 1000; |
| 480 // Commit right away if we have more than 512 outstanding operations. | 480 // Commit right away if we have more than 512 outstanding operations. |
| 481 static const size_t kCommitAfterBatchSize = 512; | 481 static const size_t kCommitAfterBatchSize = 512; |
| 482 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::DB)); | |
| 483 | 482 |
| 484 // We do a full copy of the cert here, and hopefully just here. | 483 // We do a full copy of the cert here, and hopefully just here. |
| 485 scoped_ptr<PendingOperation> po(new PendingOperation(op, cert)); | 484 scoped_ptr<PendingOperation> po(new PendingOperation(op, cert)); |
| 486 | 485 |
| 487 PendingOperationsList::size_type num_pending; | 486 PendingOperationsList::size_type num_pending; |
| 488 { | 487 { |
| 489 base::AutoLock locked(lock_); | 488 base::AutoLock locked(lock_); |
| 490 pending_.push_back(po.release()); | 489 pending_.push_back(po.release()); |
| 491 num_pending = ++num_pending_; | 490 num_pending = ++num_pending_; |
| 492 } | 491 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 break; | 566 break; |
| 568 } | 567 } |
| 569 } | 568 } |
| 570 transaction.Commit(); | 569 transaction.Commit(); |
| 571 } | 570 } |
| 572 | 571 |
| 573 // Fire off a close message to the background thread. We could still have a | 572 // Fire off a close message to the background thread. We could still have a |
| 574 // pending commit timer that will be holding a reference on us, but if/when | 573 // pending commit timer that will be holding a reference on us, but if/when |
| 575 // this fires we will already have been cleaned up and it will be ignored. | 574 // this fires we will already have been cleaned up and it will be ignored. |
| 576 void SQLiteServerBoundCertStore::Backend::Close() { | 575 void SQLiteServerBoundCertStore::Backend::Close() { |
| 577 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::DB)); | |
| 578 // Must close the backend on the background thread. | 576 // Must close the backend on the background thread. |
| 579 BrowserThread::PostTask( | 577 BrowserThread::PostTask( |
| 580 BrowserThread::DB, FROM_HERE, | 578 BrowserThread::DB, FROM_HERE, |
| 581 base::Bind(&Backend::InternalBackgroundClose, this)); | 579 base::Bind(&Backend::InternalBackgroundClose, this)); |
| 582 } | 580 } |
| 583 | 581 |
| 584 void SQLiteServerBoundCertStore::Backend::InternalBackgroundClose() { | 582 void SQLiteServerBoundCertStore::Backend::InternalBackgroundClose() { |
| 585 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 583 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 586 // Commit any pending operations | 584 // Commit any pending operations |
| 587 Commit(); | 585 Commit(); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 | 661 |
| 664 void SQLiteServerBoundCertStore::SetForceKeepSessionState() { | 662 void SQLiteServerBoundCertStore::SetForceKeepSessionState() { |
| 665 backend_->SetForceKeepSessionState(); | 663 backend_->SetForceKeepSessionState(); |
| 666 } | 664 } |
| 667 | 665 |
| 668 SQLiteServerBoundCertStore::~SQLiteServerBoundCertStore() { | 666 SQLiteServerBoundCertStore::~SQLiteServerBoundCertStore() { |
| 669 backend_->Close(); | 667 backend_->Close(); |
| 670 // We release our reference to the Backend, though it will probably still have | 668 // We release our reference to the Backend, though it will probably still have |
| 671 // a reference if the background thread has not run Close() yet. | 669 // a reference if the background thread has not run Close() yet. |
| 672 } | 670 } |
| OLD | NEW |