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

Side by Side Diff: content/browser/indexed_db/indexed_db_database.cc

Issue 2941353002: Indexed DB: Use BindOnce / OnceCallback / OnceClosure where applicable (Closed)
Patch Set: 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/browser/indexed_db/indexed_db_database.h" 5 #include "content/browser/indexed_db/indexed_db_database.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 pending_->child_process_id); 235 pending_->child_process_id);
236 DCHECK_EQ(db_->connections_.count(connection_.get()), 1UL); 236 DCHECK_EQ(db_->connections_.count(connection_.get()), 1UL);
237 237
238 std::vector<int64_t> object_store_ids; 238 std::vector<int64_t> object_store_ids;
239 IndexedDBTransaction* transaction = db_->CreateTransaction( 239 IndexedDBTransaction* transaction = db_->CreateTransaction(
240 pending_->transaction_id, connection_.get(), object_store_ids, 240 pending_->transaction_id, connection_.get(), object_store_ids,
241 blink::kWebIDBTransactionModeVersionChange); 241 blink::kWebIDBTransactionModeVersionChange);
242 242
243 DCHECK(db_->transaction_coordinator_.IsRunningVersionChangeTransaction()); 243 DCHECK(db_->transaction_coordinator_.IsRunningVersionChangeTransaction());
244 transaction->ScheduleTask( 244 transaction->ScheduleTask(
245 base::Bind(&IndexedDBDatabase::VersionChangeOperation, db_, 245 base::BindOnce(&IndexedDBDatabase::VersionChangeOperation, db_,
246 pending_->version, pending_->callbacks)); 246 pending_->version, pending_->callbacks));
247 } 247 }
248 248
249 // Called when the upgrade transaction has started executing. 249 // Called when the upgrade transaction has started executing.
250 void UpgradeTransactionStarted(int64_t old_version) override { 250 void UpgradeTransactionStarted(int64_t old_version) override {
251 DCHECK(connection_); 251 DCHECK(connection_);
252 pending_->callbacks->OnUpgradeNeeded(old_version, std::move(connection_), 252 pending_->callbacks->OnUpgradeNeeded(old_version, std::move(connection_),
253 db_->metadata_, 253 db_->metadata_,
254 pending_->data_loss_info); 254 pending_->data_loss_info);
255 } 255 }
256 256
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 object_store_metadata.name, 584 object_store_metadata.name,
585 object_store_metadata.key_path, 585 object_store_metadata.key_path,
586 object_store_metadata.auto_increment); 586 object_store_metadata.auto_increment);
587 if (!s.ok()) { 587 if (!s.ok()) {
588 ReportErrorWithDetails(s, "Internal error creating object store."); 588 ReportErrorWithDetails(s, "Internal error creating object store.");
589 return; 589 return;
590 } 590 }
591 591
592 AddObjectStore(object_store_metadata, object_store_id); 592 AddObjectStore(object_store_metadata, object_store_id);
593 transaction->ScheduleAbortTask( 593 transaction->ScheduleAbortTask(
594 base::Bind(&IndexedDBDatabase::CreateObjectStoreAbortOperation, 594 base::BindOnce(&IndexedDBDatabase::CreateObjectStoreAbortOperation, this,
595 this, 595 object_store_id));
596 object_store_id));
597 } 596 }
598 597
599 void IndexedDBDatabase::DeleteObjectStore(IndexedDBTransaction* transaction, 598 void IndexedDBDatabase::DeleteObjectStore(IndexedDBTransaction* transaction,
600 int64_t object_store_id) { 599 int64_t object_store_id) {
601 DCHECK(transaction); 600 DCHECK(transaction);
602 IDB_TRACE1("IndexedDBDatabase::DeleteObjectStore", "txn.id", 601 IDB_TRACE1("IndexedDBDatabase::DeleteObjectStore", "txn.id",
603 transaction->id()); 602 transaction->id());
604 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange); 603 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange);
605 604
606 if (!ValidateObjectStoreId(object_store_id)) 605 if (!ValidateObjectStoreId(object_store_id))
607 return; 606 return;
608 607
609 transaction->ScheduleTask( 608 transaction->ScheduleTask(base::BindOnce(
610 base::Bind(&IndexedDBDatabase::DeleteObjectStoreOperation, 609 &IndexedDBDatabase::DeleteObjectStoreOperation, this, object_store_id));
611 this,
612 object_store_id));
613 } 610 }
614 611
615 void IndexedDBDatabase::RenameObjectStore(IndexedDBTransaction* transaction, 612 void IndexedDBDatabase::RenameObjectStore(IndexedDBTransaction* transaction,
616 int64_t object_store_id, 613 int64_t object_store_id,
617 const base::string16& new_name) { 614 const base::string16& new_name) {
618 DCHECK(transaction); 615 DCHECK(transaction);
619 IDB_TRACE1("IndexedDBDatabase::RenameObjectStore", "txn.id", 616 IDB_TRACE1("IndexedDBDatabase::RenameObjectStore", "txn.id",
620 transaction->id()); 617 transaction->id());
621 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange); 618 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange);
622 619
623 if (!ValidateObjectStoreId(object_store_id)) 620 if (!ValidateObjectStoreId(object_store_id))
624 return; 621 return;
625 622
626 // Store renaming is done synchronously, as it may be followed by 623 // Store renaming is done synchronously, as it may be followed by
627 // index creation (also sync) since preemptive OpenCursor/SetIndexKeys 624 // index creation (also sync) since preemptive OpenCursor/SetIndexKeys
628 // may follow. 625 // may follow.
629 const IndexedDBObjectStoreMetadata object_store_metadata = 626 const IndexedDBObjectStoreMetadata object_store_metadata =
630 metadata_.object_stores[object_store_id]; 627 metadata_.object_stores[object_store_id];
631 628
632 leveldb::Status s = 629 leveldb::Status s =
633 backing_store_->RenameObjectStore(transaction->BackingStoreTransaction(), 630 backing_store_->RenameObjectStore(transaction->BackingStoreTransaction(),
634 transaction->database()->id(), 631 transaction->database()->id(),
635 object_store_metadata.id, new_name); 632 object_store_metadata.id, new_name);
636 if (!s.ok()) { 633 if (!s.ok()) {
637 ReportErrorWithDetails(s, "Internal error renaming object store."); 634 ReportErrorWithDetails(s, "Internal error renaming object store.");
638 return; 635 return;
639 } 636 }
640 637
641 transaction->ScheduleAbortTask( 638 transaction->ScheduleAbortTask(
642 base::Bind(&IndexedDBDatabase::RenameObjectStoreAbortOperation, 639 base::BindOnce(&IndexedDBDatabase::RenameObjectStoreAbortOperation, this,
643 this, 640 object_store_id, object_store_metadata.name));
644 object_store_id,
645 object_store_metadata.name));
646 SetObjectStoreName(object_store_id, new_name); 641 SetObjectStoreName(object_store_id, new_name);
647 } 642 }
648 643
649 void IndexedDBDatabase::CreateIndex(IndexedDBTransaction* transaction, 644 void IndexedDBDatabase::CreateIndex(IndexedDBTransaction* transaction,
650 int64_t object_store_id, 645 int64_t object_store_id,
651 int64_t index_id, 646 int64_t index_id,
652 const base::string16& name, 647 const base::string16& name,
653 const IndexedDBKeyPath& key_path, 648 const IndexedDBKeyPath& key_path,
654 bool unique, 649 bool unique,
655 bool multi_entry) { 650 bool multi_entry) {
(...skipping 26 matching lines...) Expand all
682 base::string16 error_string = 677 base::string16 error_string =
683 ASCIIToUTF16("Internal error creating index '") + 678 ASCIIToUTF16("Internal error creating index '") +
684 index_metadata.name + ASCIIToUTF16("'."); 679 index_metadata.name + ASCIIToUTF16("'.");
685 transaction->Abort(IndexedDBDatabaseError( 680 transaction->Abort(IndexedDBDatabaseError(
686 blink::kWebIDBDatabaseExceptionUnknownError, error_string)); 681 blink::kWebIDBDatabaseExceptionUnknownError, error_string));
687 return; 682 return;
688 } 683 }
689 684
690 AddIndex(object_store_id, index_metadata, index_id); 685 AddIndex(object_store_id, index_metadata, index_id);
691 transaction->ScheduleAbortTask( 686 transaction->ScheduleAbortTask(
692 base::Bind(&IndexedDBDatabase::CreateIndexAbortOperation, 687 base::BindOnce(&IndexedDBDatabase::CreateIndexAbortOperation, this,
693 this, 688 object_store_id, index_id));
694 object_store_id,
695 index_id));
696 } 689 }
697 690
698 void IndexedDBDatabase::CreateIndexAbortOperation(int64_t object_store_id, 691 void IndexedDBDatabase::CreateIndexAbortOperation(int64_t object_store_id,
699 int64_t index_id) { 692 int64_t index_id) {
700 IDB_TRACE("IndexedDBDatabase::CreateIndexAbortOperation"); 693 IDB_TRACE("IndexedDBDatabase::CreateIndexAbortOperation");
701 RemoveIndex(object_store_id, index_id); 694 RemoveIndex(object_store_id, index_id);
702 } 695 }
703 696
704 void IndexedDBDatabase::DeleteIndex(IndexedDBTransaction* transaction, 697 void IndexedDBDatabase::DeleteIndex(IndexedDBTransaction* transaction,
705 int64_t object_store_id, 698 int64_t object_store_id,
706 int64_t index_id) { 699 int64_t index_id) {
707 DCHECK(transaction); 700 DCHECK(transaction);
708 IDB_TRACE1("IndexedDBDatabase::DeleteIndex", "txn.id", transaction->id()); 701 IDB_TRACE1("IndexedDBDatabase::DeleteIndex", "txn.id", transaction->id());
709 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange); 702 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange);
710 703
711 if (!ValidateObjectStoreIdAndIndexId(object_store_id, index_id)) 704 if (!ValidateObjectStoreIdAndIndexId(object_store_id, index_id))
712 return; 705 return;
713 706
714 transaction->ScheduleTask( 707 transaction->ScheduleTask(
715 base::Bind(&IndexedDBDatabase::DeleteIndexOperation, 708 base::BindOnce(&IndexedDBDatabase::DeleteIndexOperation, this,
716 this, 709 object_store_id, index_id));
717 object_store_id,
718 index_id));
719 } 710 }
720 711
721 leveldb::Status IndexedDBDatabase::DeleteIndexOperation( 712 leveldb::Status IndexedDBDatabase::DeleteIndexOperation(
722 int64_t object_store_id, 713 int64_t object_store_id,
723 int64_t index_id, 714 int64_t index_id,
724 IndexedDBTransaction* transaction) { 715 IndexedDBTransaction* transaction) {
725 IDB_TRACE1( 716 IDB_TRACE1(
726 "IndexedDBDatabase::DeleteIndexOperation", "txn.id", transaction->id()); 717 "IndexedDBDatabase::DeleteIndexOperation", "txn.id", transaction->id());
727 718
728 const IndexedDBIndexMetadata index_metadata = 719 const IndexedDBIndexMetadata index_metadata =
729 metadata_.object_stores[object_store_id].indexes[index_id]; 720 metadata_.object_stores[object_store_id].indexes[index_id];
730 721
731 leveldb::Status s = 722 leveldb::Status s =
732 backing_store_->DeleteIndex(transaction->BackingStoreTransaction(), 723 backing_store_->DeleteIndex(transaction->BackingStoreTransaction(),
733 transaction->database()->id(), 724 transaction->database()->id(),
734 object_store_id, 725 object_store_id,
735 index_id); 726 index_id);
736 if (!s.ok()) 727 if (!s.ok())
737 return s; 728 return s;
738 729
739 RemoveIndex(object_store_id, index_id); 730 RemoveIndex(object_store_id, index_id);
740 transaction->ScheduleAbortTask( 731 transaction->ScheduleAbortTask(
741 base::Bind(&IndexedDBDatabase::DeleteIndexAbortOperation, 732 base::BindOnce(&IndexedDBDatabase::DeleteIndexAbortOperation, this,
742 this, 733 object_store_id, index_metadata));
743 object_store_id,
744 index_metadata));
745 return s; 734 return s;
746 } 735 }
747 736
748 void IndexedDBDatabase::DeleteIndexAbortOperation( 737 void IndexedDBDatabase::DeleteIndexAbortOperation(
749 int64_t object_store_id, 738 int64_t object_store_id,
750 const IndexedDBIndexMetadata& index_metadata) { 739 const IndexedDBIndexMetadata& index_metadata) {
751 IDB_TRACE("IndexedDBDatabase::DeleteIndexAbortOperation"); 740 IDB_TRACE("IndexedDBDatabase::DeleteIndexAbortOperation");
752 AddIndex(object_store_id, index_metadata, IndexedDBIndexMetadata::kInvalidId); 741 AddIndex(object_store_id, index_metadata, IndexedDBIndexMetadata::kInvalidId);
753 } 742 }
754 743
(...skipping 19 matching lines...) Expand all
774 transaction->database()->id(), 763 transaction->database()->id(),
775 object_store_id, 764 object_store_id,
776 index_id, 765 index_id,
777 new_name); 766 new_name);
778 if (!s.ok()) { 767 if (!s.ok()) {
779 ReportErrorWithDetails(s, "Internal error renaming index."); 768 ReportErrorWithDetails(s, "Internal error renaming index.");
780 return; 769 return;
781 } 770 }
782 771
783 transaction->ScheduleAbortTask( 772 transaction->ScheduleAbortTask(
784 base::Bind(&IndexedDBDatabase::RenameIndexAbortOperation, 773 base::BindOnce(&IndexedDBDatabase::RenameIndexAbortOperation, this,
785 this, 774 object_store_id, index_id, index_metadata.name));
786 object_store_id,
787 index_id,
788 index_metadata.name));
789 SetIndexName(object_store_id, index_id, new_name); 775 SetIndexName(object_store_id, index_id, new_name);
790 } 776 }
791 777
792 void IndexedDBDatabase::RenameIndexAbortOperation( 778 void IndexedDBDatabase::RenameIndexAbortOperation(
793 int64_t object_store_id, 779 int64_t object_store_id,
794 int64_t index_id, 780 int64_t index_id,
795 const base::string16& old_name) { 781 const base::string16& old_name) {
796 IDB_TRACE("IndexedDBDatabase::RenameIndexAbortOperation"); 782 IDB_TRACE("IndexedDBDatabase::RenameIndexAbortOperation");
797 SetIndexName(object_store_id, index_id, old_name); 783 SetIndexName(object_store_id, index_id, old_name);
798 } 784 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 std::unique_ptr<IndexedDBKeyRange> key_range, 888 std::unique_ptr<IndexedDBKeyRange> key_range,
903 bool key_only, 889 bool key_only,
904 int64_t max_count, 890 int64_t max_count,
905 scoped_refptr<IndexedDBCallbacks> callbacks) { 891 scoped_refptr<IndexedDBCallbacks> callbacks) {
906 DCHECK(transaction); 892 DCHECK(transaction);
907 IDB_TRACE1("IndexedDBDatabase::GetAll", "txn.id", transaction->id()); 893 IDB_TRACE1("IndexedDBDatabase::GetAll", "txn.id", transaction->id());
908 894
909 if (!ValidateObjectStoreId(object_store_id)) 895 if (!ValidateObjectStoreId(object_store_id))
910 return; 896 return;
911 897
912 transaction->ScheduleTask(base::Bind( 898 transaction->ScheduleTask(base::BindOnce(
913 &IndexedDBDatabase::GetAllOperation, this, object_store_id, index_id, 899 &IndexedDBDatabase::GetAllOperation, this, object_store_id, index_id,
914 base::Passed(&key_range), 900 base::Passed(&key_range),
915 key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE, 901 key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE,
916 max_count, callbacks)); 902 max_count, callbacks));
917 } 903 }
918 904
919 void IndexedDBDatabase::Get(IndexedDBTransaction* transaction, 905 void IndexedDBDatabase::Get(IndexedDBTransaction* transaction,
920 int64_t object_store_id, 906 int64_t object_store_id,
921 int64_t index_id, 907 int64_t index_id,
922 std::unique_ptr<IndexedDBKeyRange> key_range, 908 std::unique_ptr<IndexedDBKeyRange> key_range,
923 bool key_only, 909 bool key_only,
924 scoped_refptr<IndexedDBCallbacks> callbacks) { 910 scoped_refptr<IndexedDBCallbacks> callbacks) {
925 DCHECK(transaction); 911 DCHECK(transaction);
926 IDB_TRACE1("IndexedDBDatabase::Get", "txn.id", transaction->id()); 912 IDB_TRACE1("IndexedDBDatabase::Get", "txn.id", transaction->id());
927 913
928 if (!ValidateObjectStoreIdAndOptionalIndexId(object_store_id, index_id)) 914 if (!ValidateObjectStoreIdAndOptionalIndexId(object_store_id, index_id))
929 return; 915 return;
930 916
931 transaction->ScheduleTask(base::Bind( 917 transaction->ScheduleTask(base::BindOnce(
932 &IndexedDBDatabase::GetOperation, this, object_store_id, index_id, 918 &IndexedDBDatabase::GetOperation, this, object_store_id, index_id,
933 base::Passed(&key_range), 919 base::Passed(&key_range),
934 key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE, 920 key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE,
935 callbacks)); 921 callbacks));
936 } 922 }
937 923
938 leveldb::Status IndexedDBDatabase::GetOperation( 924 leveldb::Status IndexedDBDatabase::GetOperation(
939 int64_t object_store_id, 925 int64_t object_store_id,
940 int64_t index_id, 926 int64_t index_id,
941 std::unique_ptr<IndexedDBKeyRange> key_range, 927 std::unique_ptr<IndexedDBKeyRange> key_range,
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 DCHECK(value); 1252 DCHECK(value);
1267 std::unique_ptr<PutOperationParams> params( 1253 std::unique_ptr<PutOperationParams> params(
1268 base::MakeUnique<PutOperationParams>()); 1254 base::MakeUnique<PutOperationParams>());
1269 params->object_store_id = object_store_id; 1255 params->object_store_id = object_store_id;
1270 params->value.swap(*value); 1256 params->value.swap(*value);
1271 params->handles.swap(*handles); 1257 params->handles.swap(*handles);
1272 params->key = std::move(key); 1258 params->key = std::move(key);
1273 params->put_mode = put_mode; 1259 params->put_mode = put_mode;
1274 params->callbacks = callbacks; 1260 params->callbacks = callbacks;
1275 params->index_keys = index_keys; 1261 params->index_keys = index_keys;
1276 transaction->ScheduleTask(base::Bind( 1262 transaction->ScheduleTask(base::BindOnce(&IndexedDBDatabase::PutOperation,
1277 &IndexedDBDatabase::PutOperation, this, base::Passed(&params))); 1263 this, base::Passed(&params)));
1278 } 1264 }
1279 1265
1280 leveldb::Status IndexedDBDatabase::PutOperation( 1266 leveldb::Status IndexedDBDatabase::PutOperation(
1281 std::unique_ptr<PutOperationParams> params, 1267 std::unique_ptr<PutOperationParams> params,
1282 IndexedDBTransaction* transaction) { 1268 IndexedDBTransaction* transaction) {
1283 IDB_TRACE1("IndexedDBDatabase::PutOperation", "txn.id", transaction->id()); 1269 IDB_TRACE1("IndexedDBDatabase::PutOperation", "txn.id", transaction->id());
1284 DCHECK_NE(transaction->mode(), blink::kWebIDBTransactionModeReadOnly); 1270 DCHECK_NE(transaction->mode(), blink::kWebIDBTransactionModeReadOnly);
1285 bool key_was_generated = false; 1271 bool key_was_generated = false;
1286 leveldb::Status s = leveldb::Status::OK(); 1272 leveldb::Status s = leveldb::Status::OK();
1287 1273
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1464 } 1450 }
1465 1451
1466 void IndexedDBDatabase::SetIndexesReady(IndexedDBTransaction* transaction, 1452 void IndexedDBDatabase::SetIndexesReady(IndexedDBTransaction* transaction,
1467 int64_t, 1453 int64_t,
1468 const std::vector<int64_t>& index_ids) { 1454 const std::vector<int64_t>& index_ids) {
1469 DCHECK(transaction); 1455 DCHECK(transaction);
1470 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange); 1456 DCHECK_EQ(transaction->mode(), blink::kWebIDBTransactionModeVersionChange);
1471 1457
1472 transaction->ScheduleTask( 1458 transaction->ScheduleTask(
1473 blink::kWebIDBTaskTypePreemptive, 1459 blink::kWebIDBTaskTypePreemptive,
1474 base::Bind(&IndexedDBDatabase::SetIndexesReadyOperation, this, 1460 base::BindOnce(&IndexedDBDatabase::SetIndexesReadyOperation, this,
1475 index_ids.size())); 1461 index_ids.size()));
1476 } 1462 }
1477 1463
1478 leveldb::Status IndexedDBDatabase::SetIndexesReadyOperation( 1464 leveldb::Status IndexedDBDatabase::SetIndexesReadyOperation(
1479 size_t index_count, 1465 size_t index_count,
1480 IndexedDBTransaction* transaction) { 1466 IndexedDBTransaction* transaction) {
1481 for (size_t i = 0; i < index_count; ++i) 1467 for (size_t i = 0; i < index_count; ++i)
1482 transaction->DidCompletePreemptiveEvent(); 1468 transaction->DidCompletePreemptiveEvent();
1483 return leveldb::Status::OK(); 1469 return leveldb::Status::OK();
1484 } 1470 }
1485 1471
(...skipping 29 matching lines...) Expand all
1515 std::unique_ptr<OpenCursorOperationParams> params( 1501 std::unique_ptr<OpenCursorOperationParams> params(
1516 base::MakeUnique<OpenCursorOperationParams>()); 1502 base::MakeUnique<OpenCursorOperationParams>());
1517 params->object_store_id = object_store_id; 1503 params->object_store_id = object_store_id;
1518 params->index_id = index_id; 1504 params->index_id = index_id;
1519 params->key_range = std::move(key_range); 1505 params->key_range = std::move(key_range);
1520 params->direction = direction; 1506 params->direction = direction;
1521 params->cursor_type = 1507 params->cursor_type =
1522 key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE; 1508 key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE;
1523 params->task_type = task_type; 1509 params->task_type = task_type;
1524 params->callbacks = callbacks; 1510 params->callbacks = callbacks;
1525 transaction->ScheduleTask(base::Bind( 1511 transaction->ScheduleTask(base::BindOnce(
1526 &IndexedDBDatabase::OpenCursorOperation, this, base::Passed(&params))); 1512 &IndexedDBDatabase::OpenCursorOperation, this, base::Passed(&params)));
1527 } 1513 }
1528 1514
1529 leveldb::Status IndexedDBDatabase::OpenCursorOperation( 1515 leveldb::Status IndexedDBDatabase::OpenCursorOperation(
1530 std::unique_ptr<OpenCursorOperationParams> params, 1516 std::unique_ptr<OpenCursorOperationParams> params,
1531 IndexedDBTransaction* transaction) { 1517 IndexedDBTransaction* transaction) {
1532 IDB_TRACE1( 1518 IDB_TRACE1(
1533 "IndexedDBDatabase::OpenCursorOperation", "txn.id", transaction->id()); 1519 "IndexedDBDatabase::OpenCursorOperation", "txn.id", transaction->id());
1534 1520
1535 // The frontend has begun indexing, so this pauses the transaction 1521 // The frontend has begun indexing, so this pauses the transaction
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 int64_t object_store_id, 1594 int64_t object_store_id,
1609 int64_t index_id, 1595 int64_t index_id,
1610 std::unique_ptr<IndexedDBKeyRange> key_range, 1596 std::unique_ptr<IndexedDBKeyRange> key_range,
1611 scoped_refptr<IndexedDBCallbacks> callbacks) { 1597 scoped_refptr<IndexedDBCallbacks> callbacks) {
1612 DCHECK(transaction); 1598 DCHECK(transaction);
1613 IDB_TRACE1("IndexedDBDatabase::Count", "txn.id", transaction->id()); 1599 IDB_TRACE1("IndexedDBDatabase::Count", "txn.id", transaction->id());
1614 1600
1615 if (!ValidateObjectStoreIdAndOptionalIndexId(object_store_id, index_id)) 1601 if (!ValidateObjectStoreIdAndOptionalIndexId(object_store_id, index_id))
1616 return; 1602 return;
1617 1603
1618 transaction->ScheduleTask(base::Bind(&IndexedDBDatabase::CountOperation, 1604 transaction->ScheduleTask(
1619 this, 1605 base::BindOnce(&IndexedDBDatabase::CountOperation, this, object_store_id,
1620 object_store_id, 1606 index_id, base::Passed(&key_range), callbacks));
1621 index_id,
1622 base::Passed(&key_range),
1623 callbacks));
1624 } 1607 }
1625 1608
1626 leveldb::Status IndexedDBDatabase::CountOperation( 1609 leveldb::Status IndexedDBDatabase::CountOperation(
1627 int64_t object_store_id, 1610 int64_t object_store_id,
1628 int64_t index_id, 1611 int64_t index_id,
1629 std::unique_ptr<IndexedDBKeyRange> key_range, 1612 std::unique_ptr<IndexedDBKeyRange> key_range,
1630 scoped_refptr<IndexedDBCallbacks> callbacks, 1613 scoped_refptr<IndexedDBCallbacks> callbacks,
1631 IndexedDBTransaction* transaction) { 1614 IndexedDBTransaction* transaction) {
1632 IDB_TRACE1("IndexedDBDatabase::CountOperation", "txn.id", transaction->id()); 1615 IDB_TRACE1("IndexedDBDatabase::CountOperation", "txn.id", transaction->id());
1633 uint32_t count = 0; 1616 uint32_t count = 0;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 int64_t object_store_id, 1650 int64_t object_store_id,
1668 std::unique_ptr<IndexedDBKeyRange> key_range, 1651 std::unique_ptr<IndexedDBKeyRange> key_range,
1669 scoped_refptr<IndexedDBCallbacks> callbacks) { 1652 scoped_refptr<IndexedDBCallbacks> callbacks) {
1670 DCHECK(transaction); 1653 DCHECK(transaction);
1671 IDB_TRACE1("IndexedDBDatabase::DeleteRange", "txn.id", transaction->id()); 1654 IDB_TRACE1("IndexedDBDatabase::DeleteRange", "txn.id", transaction->id());
1672 DCHECK_NE(transaction->mode(), blink::kWebIDBTransactionModeReadOnly); 1655 DCHECK_NE(transaction->mode(), blink::kWebIDBTransactionModeReadOnly);
1673 1656
1674 if (!ValidateObjectStoreId(object_store_id)) 1657 if (!ValidateObjectStoreId(object_store_id))
1675 return; 1658 return;
1676 1659
1677 transaction->ScheduleTask(base::Bind(&IndexedDBDatabase::DeleteRangeOperation, 1660 transaction->ScheduleTask(
1678 this, 1661 base::BindOnce(&IndexedDBDatabase::DeleteRangeOperation, this,
1679 object_store_id, 1662 object_store_id, base::Passed(&key_range), callbacks));
1680 base::Passed(&key_range),
1681 callbacks));
1682 } 1663 }
1683 1664
1684 leveldb::Status IndexedDBDatabase::DeleteRangeOperation( 1665 leveldb::Status IndexedDBDatabase::DeleteRangeOperation(
1685 int64_t object_store_id, 1666 int64_t object_store_id,
1686 std::unique_ptr<IndexedDBKeyRange> key_range, 1667 std::unique_ptr<IndexedDBKeyRange> key_range,
1687 scoped_refptr<IndexedDBCallbacks> callbacks, 1668 scoped_refptr<IndexedDBCallbacks> callbacks,
1688 IndexedDBTransaction* transaction) { 1669 IndexedDBTransaction* transaction) {
1689 IDB_TRACE1("IndexedDBDatabase::DeleteRangeOperation", "txn.id", 1670 IDB_TRACE1("IndexedDBDatabase::DeleteRangeOperation", "txn.id",
1690 transaction->id()); 1671 transaction->id());
1691 leveldb::Status s = 1672 leveldb::Status s =
(...skipping 10 matching lines...) Expand all
1702 void IndexedDBDatabase::Clear(IndexedDBTransaction* transaction, 1683 void IndexedDBDatabase::Clear(IndexedDBTransaction* transaction,
1703 int64_t object_store_id, 1684 int64_t object_store_id,
1704 scoped_refptr<IndexedDBCallbacks> callbacks) { 1685 scoped_refptr<IndexedDBCallbacks> callbacks) {
1705 DCHECK(transaction); 1686 DCHECK(transaction);
1706 IDB_TRACE1("IndexedDBDatabase::Clear", "txn.id", transaction->id()); 1687 IDB_TRACE1("IndexedDBDatabase::Clear", "txn.id", transaction->id());
1707 DCHECK_NE(transaction->mode(), blink::kWebIDBTransactionModeReadOnly); 1688 DCHECK_NE(transaction->mode(), blink::kWebIDBTransactionModeReadOnly);
1708 1689
1709 if (!ValidateObjectStoreId(object_store_id)) 1690 if (!ValidateObjectStoreId(object_store_id))
1710 return; 1691 return;
1711 1692
1712 transaction->ScheduleTask(base::Bind( 1693 transaction->ScheduleTask(base::BindOnce(&IndexedDBDatabase::ClearOperation,
1713 &IndexedDBDatabase::ClearOperation, this, object_store_id, callbacks)); 1694 this, object_store_id, callbacks));
1714 } 1695 }
1715 1696
1716 leveldb::Status IndexedDBDatabase::ClearOperation( 1697 leveldb::Status IndexedDBDatabase::ClearOperation(
1717 int64_t object_store_id, 1698 int64_t object_store_id,
1718 scoped_refptr<IndexedDBCallbacks> callbacks, 1699 scoped_refptr<IndexedDBCallbacks> callbacks,
1719 IndexedDBTransaction* transaction) { 1700 IndexedDBTransaction* transaction) {
1720 IDB_TRACE1("IndexedDBDatabase::ClearOperation", "txn.id", transaction->id()); 1701 IDB_TRACE1("IndexedDBDatabase::ClearOperation", "txn.id", transaction->id());
1721 leveldb::Status s = backing_store_->ClearObjectStore( 1702 leveldb::Status s = backing_store_->ClearObjectStore(
1722 transaction->BackingStoreTransaction(), id(), object_store_id); 1703 transaction->BackingStoreTransaction(), id(), object_store_id);
1723 if (!s.ok()) 1704 if (!s.ok())
(...skipping 16 matching lines...) Expand all
1740 metadata_.object_stores[object_store_id]; 1721 metadata_.object_stores[object_store_id];
1741 leveldb::Status s = 1722 leveldb::Status s =
1742 backing_store_->DeleteObjectStore(transaction->BackingStoreTransaction(), 1723 backing_store_->DeleteObjectStore(transaction->BackingStoreTransaction(),
1743 transaction->database()->id(), 1724 transaction->database()->id(),
1744 object_store_id); 1725 object_store_id);
1745 if (!s.ok()) 1726 if (!s.ok())
1746 return s; 1727 return s;
1747 1728
1748 RemoveObjectStore(object_store_id); 1729 RemoveObjectStore(object_store_id);
1749 transaction->ScheduleAbortTask( 1730 transaction->ScheduleAbortTask(
1750 base::Bind(&IndexedDBDatabase::DeleteObjectStoreAbortOperation, 1731 base::BindOnce(&IndexedDBDatabase::DeleteObjectStoreAbortOperation, this,
1751 this, 1732 object_store_metadata));
1752 object_store_metadata));
1753 return s; 1733 return s;
1754 } 1734 }
1755 1735
1756 leveldb::Status IndexedDBDatabase::VersionChangeOperation( 1736 leveldb::Status IndexedDBDatabase::VersionChangeOperation(
1757 int64_t version, 1737 int64_t version,
1758 scoped_refptr<IndexedDBCallbacks> callbacks, 1738 scoped_refptr<IndexedDBCallbacks> callbacks,
1759 IndexedDBTransaction* transaction) { 1739 IndexedDBTransaction* transaction) {
1760 IDB_TRACE1( 1740 IDB_TRACE1(
1761 "IndexedDBDatabase::VersionChangeOperation", "txn.id", transaction->id()); 1741 "IndexedDBDatabase::VersionChangeOperation", "txn.id", transaction->id());
1762 int64_t old_version = metadata_.version; 1742 int64_t old_version = metadata_.version;
1763 DCHECK_GT(version, old_version); 1743 DCHECK_GT(version, old_version);
1764 1744
1765 backing_store_->UpdateIDBDatabaseIntVersion( 1745 backing_store_->UpdateIDBDatabaseIntVersion(
1766 transaction->BackingStoreTransaction(), id(), version); 1746 transaction->BackingStoreTransaction(), id(), version);
1767 1747
1768 transaction->ScheduleAbortTask( 1748 transaction->ScheduleAbortTask(
1769 base::Bind(&IndexedDBDatabase::VersionChangeAbortOperation, this, 1749 base::BindOnce(&IndexedDBDatabase::VersionChangeAbortOperation, this,
1770 metadata_.version)); 1750 metadata_.version));
1771 metadata_.version = version; 1751 metadata_.version = version;
1772 1752
1773 active_request_->UpgradeTransactionStarted(old_version); 1753 active_request_->UpgradeTransactionStarted(old_version);
1774 return leveldb::Status::OK(); 1754 return leveldb::Status::OK();
1775 } 1755 }
1776 1756
1777 void IndexedDBDatabase::TransactionFinished(IndexedDBTransaction* transaction, 1757 void IndexedDBDatabase::TransactionFinished(IndexedDBTransaction* transaction,
1778 bool committed) { 1758 bool committed) {
1779 IDB_TRACE1("IndexedDBTransaction::TransactionFinished", "txn.id", 1759 IDB_TRACE1("IndexedDBTransaction::TransactionFinished", "txn.id",
1780 transaction->id()); 1760 transaction->id());
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 if (status.IsCorruption()) { 1946 if (status.IsCorruption()) {
1967 IndexedDBDatabaseError error(blink::kWebIDBDatabaseExceptionUnknownError, 1947 IndexedDBDatabaseError error(blink::kWebIDBDatabaseExceptionUnknownError,
1968 message); 1948 message);
1969 factory_->HandleBackingStoreCorruption(backing_store_->origin(), error); 1949 factory_->HandleBackingStoreCorruption(backing_store_->origin(), error);
1970 } else { 1950 } else {
1971 factory_->HandleBackingStoreFailure(backing_store_->origin()); 1951 factory_->HandleBackingStoreFailure(backing_store_->origin());
1972 } 1952 }
1973 } 1953 }
1974 1954
1975 } // namespace content 1955 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_cursor.cc ('k') | content/browser/indexed_db/indexed_db_database_callbacks.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698