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

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

Issue 138703002: IndexedDB: Replace passing identically-sized vectors with pairs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased again Created 6 years, 11 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 | Annotate | Revision Log
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 #include <set> 8 #include <set>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 check_current); 691 check_current);
692 } 692 }
693 693
694 struct IndexedDBDatabase::PutOperationParams { 694 struct IndexedDBDatabase::PutOperationParams {
695 PutOperationParams() {} 695 PutOperationParams() {}
696 int64 object_store_id; 696 int64 object_store_id;
697 std::string value; 697 std::string value;
698 scoped_ptr<IndexedDBKey> key; 698 scoped_ptr<IndexedDBKey> key;
699 IndexedDBDatabase::PutMode put_mode; 699 IndexedDBDatabase::PutMode put_mode;
700 scoped_refptr<IndexedDBCallbacks> callbacks; 700 scoped_refptr<IndexedDBCallbacks> callbacks;
701 std::vector<int64> index_ids;
702 std::vector<IndexKeys> index_keys; 701 std::vector<IndexKeys> index_keys;
703 702
704 DISALLOW_COPY_AND_ASSIGN(PutOperationParams); 703 DISALLOW_COPY_AND_ASSIGN(PutOperationParams);
705 }; 704 };
706 705
707 void IndexedDBDatabase::Put(int64 transaction_id, 706 void IndexedDBDatabase::Put(int64 transaction_id,
708 int64 object_store_id, 707 int64 object_store_id,
709 std::string* value, 708 std::string* value,
710 scoped_ptr<IndexedDBKey> key, 709 scoped_ptr<IndexedDBKey> key,
711 PutMode put_mode, 710 PutMode put_mode,
712 scoped_refptr<IndexedDBCallbacks> callbacks, 711 scoped_refptr<IndexedDBCallbacks> callbacks,
713 const std::vector<int64>& index_ids,
714 const std::vector<IndexKeys>& index_keys) { 712 const std::vector<IndexKeys>& index_keys) {
715 IDB_TRACE("IndexedDBDatabase::Put"); 713 IDB_TRACE("IndexedDBDatabase::Put");
716 IndexedDBTransaction* transaction = GetTransaction(transaction_id); 714 IndexedDBTransaction* transaction = GetTransaction(transaction_id);
717 if (!transaction) 715 if (!transaction)
718 return; 716 return;
719 DCHECK_NE(transaction->mode(), indexed_db::TRANSACTION_READ_ONLY); 717 DCHECK_NE(transaction->mode(), indexed_db::TRANSACTION_READ_ONLY);
720 718
721 if (!ValidateObjectStoreId(object_store_id)) 719 if (!ValidateObjectStoreId(object_store_id))
722 return; 720 return;
723 721
724 DCHECK(key); 722 DCHECK(key);
725 scoped_ptr<PutOperationParams> params(new PutOperationParams()); 723 scoped_ptr<PutOperationParams> params(new PutOperationParams());
726 params->object_store_id = object_store_id; 724 params->object_store_id = object_store_id;
727 params->value.swap(*value); 725 params->value.swap(*value);
728 params->key = key.Pass(); 726 params->key = key.Pass();
729 params->put_mode = put_mode; 727 params->put_mode = put_mode;
730 params->callbacks = callbacks; 728 params->callbacks = callbacks;
731 params->index_ids = index_ids;
732 params->index_keys = index_keys; 729 params->index_keys = index_keys;
733 transaction->ScheduleTask(base::Bind( 730 transaction->ScheduleTask(base::Bind(
734 &IndexedDBDatabase::PutOperation, this, base::Passed(&params))); 731 &IndexedDBDatabase::PutOperation, this, base::Passed(&params)));
735 } 732 }
736 733
737 void IndexedDBDatabase::PutOperation(scoped_ptr<PutOperationParams> params, 734 void IndexedDBDatabase::PutOperation(scoped_ptr<PutOperationParams> params,
738 IndexedDBTransaction* transaction) { 735 IndexedDBTransaction* transaction) {
739 IDB_TRACE("IndexedDBDatabase::PutOperation"); 736 IDB_TRACE("IndexedDBDatabase::PutOperation");
740 DCHECK_NE(transaction->mode(), indexed_db::TRANSACTION_READ_ONLY); 737 DCHECK_NE(transaction->mode(), indexed_db::TRANSACTION_READ_ONLY);
741 DCHECK_EQ(params->index_ids.size(), params->index_keys.size());
742 bool key_was_generated = false; 738 bool key_was_generated = false;
743 739
744 DCHECK(metadata_.object_stores.find(params->object_store_id) != 740 DCHECK(metadata_.object_stores.find(params->object_store_id) !=
745 metadata_.object_stores.end()); 741 metadata_.object_stores.end());
746 const IndexedDBObjectStoreMetadata& object_store = 742 const IndexedDBObjectStoreMetadata& object_store =
747 metadata_.object_stores[params->object_store_id]; 743 metadata_.object_stores[params->object_store_id];
748 DCHECK(object_store.auto_increment || params->key->IsValid()); 744 DCHECK(object_store.auto_increment || params->key->IsValid());
749 745
750 scoped_ptr<IndexedDBKey> key; 746 scoped_ptr<IndexedDBKey> key;
751 if (params->put_mode != IndexedDBDatabase::CURSOR_UPDATE && 747 if (params->put_mode != IndexedDBDatabase::CURSOR_UPDATE &&
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 788
793 ScopedVector<IndexWriter> index_writers; 789 ScopedVector<IndexWriter> index_writers;
794 base::string16 error_message; 790 base::string16 error_message;
795 bool obeys_constraints = false; 791 bool obeys_constraints = false;
796 bool backing_store_success = MakeIndexWriters(transaction, 792 bool backing_store_success = MakeIndexWriters(transaction,
797 backing_store_.get(), 793 backing_store_.get(),
798 id(), 794 id(),
799 object_store, 795 object_store,
800 *key, 796 *key,
801 key_was_generated, 797 key_was_generated,
802 params->index_ids,
803 params->index_keys, 798 params->index_keys,
804 &index_writers, 799 &index_writers,
805 &error_message, 800 &error_message,
806 &obeys_constraints); 801 &obeys_constraints);
807 if (!backing_store_success) { 802 if (!backing_store_success) {
808 params->callbacks->OnError(IndexedDBDatabaseError( 803 params->callbacks->OnError(IndexedDBDatabaseError(
809 blink::WebIDBDatabaseExceptionUnknownError, 804 blink::WebIDBDatabaseExceptionUnknownError,
810 "Internal error: backing store error updating index keys.")); 805 "Internal error: backing store error updating index keys."));
811 return; 806 return;
812 } 807 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 return; 852 return;
858 } 853 }
859 } 854 }
860 855
861 params->callbacks->OnSuccess(*key); 856 params->callbacks->OnSuccess(*key);
862 } 857 }
863 858
864 void IndexedDBDatabase::SetIndexKeys(int64 transaction_id, 859 void IndexedDBDatabase::SetIndexKeys(int64 transaction_id,
865 int64 object_store_id, 860 int64 object_store_id,
866 scoped_ptr<IndexedDBKey> primary_key, 861 scoped_ptr<IndexedDBKey> primary_key,
867 const std::vector<int64>& index_ids,
868 const std::vector<IndexKeys>& index_keys) { 862 const std::vector<IndexKeys>& index_keys) {
869 IDB_TRACE("IndexedDBDatabase::SetIndexKeys"); 863 IDB_TRACE("IndexedDBDatabase::SetIndexKeys");
870 IndexedDBTransaction* transaction = GetTransaction(transaction_id); 864 IndexedDBTransaction* transaction = GetTransaction(transaction_id);
871 if (!transaction) 865 if (!transaction)
872 return; 866 return;
873 DCHECK_EQ(transaction->mode(), indexed_db::TRANSACTION_VERSION_CHANGE); 867 DCHECK_EQ(transaction->mode(), indexed_db::TRANSACTION_VERSION_CHANGE);
874 868
875 // TODO(alecflett): This method could be asynchronous, but we need to 869 // TODO(alecflett): This method could be asynchronous, but we need to
876 // evaluate if it's worth the extra complexity. 870 // evaluate if it's worth the extra complexity.
877 IndexedDBBackingStore::RecordIdentifier record_identifier; 871 IndexedDBBackingStore::RecordIdentifier record_identifier;
(...skipping 24 matching lines...) Expand all
902 DCHECK(metadata_.object_stores.find(object_store_id) != 896 DCHECK(metadata_.object_stores.find(object_store_id) !=
903 metadata_.object_stores.end()); 897 metadata_.object_stores.end());
904 const IndexedDBObjectStoreMetadata& object_store_metadata = 898 const IndexedDBObjectStoreMetadata& object_store_metadata =
905 metadata_.object_stores[object_store_id]; 899 metadata_.object_stores[object_store_id];
906 bool backing_store_success = MakeIndexWriters(transaction, 900 bool backing_store_success = MakeIndexWriters(transaction,
907 backing_store_, 901 backing_store_,
908 id(), 902 id(),
909 object_store_metadata, 903 object_store_metadata,
910 *primary_key, 904 *primary_key,
911 false, 905 false,
912 index_ids,
913 index_keys, 906 index_keys,
914 &index_writers, 907 &index_writers,
915 &error_message, 908 &error_message,
916 &obeys_constraints); 909 &obeys_constraints);
917 if (!backing_store_success) { 910 if (!backing_store_success) {
918 transaction->Abort(IndexedDBDatabaseError( 911 transaction->Abort(IndexedDBDatabaseError(
919 blink::WebIDBDatabaseExceptionUnknownError, 912 blink::WebIDBDatabaseExceptionUnknownError,
920 "Internal error: backing store error updating index keys.")); 913 "Internal error: backing store error updating index keys."));
921 return; 914 return;
922 } 915 }
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after
1671 const base::string16& previous_version, 1664 const base::string16& previous_version,
1672 int64 previous_int_version, 1665 int64 previous_int_version,
1673 IndexedDBTransaction* transaction) { 1666 IndexedDBTransaction* transaction) {
1674 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation"); 1667 IDB_TRACE("IndexedDBDatabase::VersionChangeAbortOperation");
1675 DCHECK(!transaction); 1668 DCHECK(!transaction);
1676 metadata_.version = previous_version; 1669 metadata_.version = previous_version;
1677 metadata_.int_version = previous_int_version; 1670 metadata_.int_version = previous_int_version;
1678 } 1671 }
1679 1672
1680 } // namespace content 1673 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_database.h ('k') | content/browser/indexed_db/indexed_db_dispatcher_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698