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

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

Issue 1549113002: Switch to standard integer types in content/browser/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 12 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_backing_store.h" 5 #include "content/browser/indexed_db/indexed_db_backing_store.h"
6 6
7 #include <stddef.h>
8 #include <stdint.h>
9
7 #include "base/callback.h" 10 #include "base/callback.h"
8 #include "base/files/file_util.h" 11 #include "base/files/file_util.h"
9 #include "base/files/scoped_temp_dir.h" 12 #include "base/files/scoped_temp_dir.h"
10 #include "base/logging.h" 13 #include "base/logging.h"
11 #include "base/macros.h" 14 #include "base/macros.h"
12 #include "base/sequenced_task_runner.h" 15 #include "base/sequenced_task_runner.h"
13 #include "base/strings/string16.h" 16 #include "base/strings/string16.h"
14 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
15 #include "base/test/test_simple_task_runner.h" 18 #include "base/test/test_simple_task_runner.h"
16 #include "content/browser/indexed_db/indexed_db_context_impl.h" 19 #include "content/browser/indexed_db/indexed_db_context_impl.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 return scoped_refptr<TestableIndexedDBBackingStore>(); 105 return scoped_refptr<TestableIndexedDBBackingStore>();
103 106
104 return backing_store; 107 return backing_store;
105 } 108 }
106 109
107 const std::vector<IndexedDBBackingStore::Transaction::WriteDescriptor>& 110 const std::vector<IndexedDBBackingStore::Transaction::WriteDescriptor>&
108 writes() const { 111 writes() const {
109 return writes_; 112 return writes_;
110 } 113 }
111 void ClearWrites() { writes_.clear(); } 114 void ClearWrites() { writes_.clear(); }
112 const std::vector<int64>& removals() const { return removals_; } 115 const std::vector<int64_t>& removals() const { return removals_; }
113 void ClearRemovals() { removals_.clear(); } 116 void ClearRemovals() { removals_.clear(); }
114 117
115 protected: 118 protected:
116 ~TestableIndexedDBBackingStore() override {} 119 ~TestableIndexedDBBackingStore() override {}
117 120
118 bool WriteBlobFile( 121 bool WriteBlobFile(
119 int64 database_id, 122 int64_t database_id,
120 const Transaction::WriteDescriptor& descriptor, 123 const Transaction::WriteDescriptor& descriptor,
121 Transaction::ChainedBlobWriter* chained_blob_writer) override { 124 Transaction::ChainedBlobWriter* chained_blob_writer) override {
122 if (KeyPrefix::IsValidDatabaseId(database_id_)) { 125 if (KeyPrefix::IsValidDatabaseId(database_id_)) {
123 if (database_id_ != database_id) { 126 if (database_id_ != database_id) {
124 return false; 127 return false;
125 } 128 }
126 } else { 129 } else {
127 database_id_ = database_id; 130 database_id_ = database_id;
128 } 131 }
129 writes_.push_back(descriptor); 132 writes_.push_back(descriptor);
130 task_runner()->PostTask( 133 task_runner()->PostTask(
131 FROM_HERE, 134 FROM_HERE,
132 base::Bind(&Transaction::ChainedBlobWriter::ReportWriteCompletion, 135 base::Bind(&Transaction::ChainedBlobWriter::ReportWriteCompletion,
133 chained_blob_writer, 136 chained_blob_writer,
134 true, 137 true,
135 1)); 138 1));
136 return true; 139 return true;
137 } 140 }
138 141
139 bool RemoveBlobFile(int64 database_id, int64 key) const override { 142 bool RemoveBlobFile(int64_t database_id, int64_t key) const override {
140 if (database_id_ != database_id || 143 if (database_id_ != database_id ||
141 !KeyPrefix::IsValidDatabaseId(database_id)) { 144 !KeyPrefix::IsValidDatabaseId(database_id)) {
142 return false; 145 return false;
143 } 146 }
144 removals_.push_back(key); 147 removals_.push_back(key);
145 return true; 148 return true;
146 } 149 }
147 150
148 // Timers don't play nicely with unit tests. 151 // Timers don't play nicely with unit tests.
149 void StartJournalCleaningTimer() override { 152 void StartJournalCleaningTimer() override {
(...skipping 10 matching lines...) Expand all
160 base::SequencedTaskRunner* task_runner) 163 base::SequencedTaskRunner* task_runner)
161 : IndexedDBBackingStore(indexed_db_factory, 164 : IndexedDBBackingStore(indexed_db_factory,
162 origin_url, 165 origin_url,
163 blob_path, 166 blob_path,
164 request_context, 167 request_context,
165 db.Pass(), 168 db.Pass(),
166 comparator.Pass(), 169 comparator.Pass(),
167 task_runner), 170 task_runner),
168 database_id_(0) {} 171 database_id_(0) {}
169 172
170 int64 database_id_; 173 int64_t database_id_;
171 std::vector<Transaction::WriteDescriptor> writes_; 174 std::vector<Transaction::WriteDescriptor> writes_;
172 175
173 // This is modified in an overridden virtual function that is properly const 176 // This is modified in an overridden virtual function that is properly const
174 // in the real implementation, therefore must be mutable here. 177 // in the real implementation, therefore must be mutable here.
175 mutable std::vector<int64> removals_; 178 mutable std::vector<int64_t> removals_;
176 179
177 DISALLOW_COPY_AND_ASSIGN(TestableIndexedDBBackingStore); 180 DISALLOW_COPY_AND_ASSIGN(TestableIndexedDBBackingStore);
178 }; 181 };
179 182
180 class TestIDBFactory : public IndexedDBFactoryImpl { 183 class TestIDBFactory : public IndexedDBFactoryImpl {
181 public: 184 public:
182 explicit TestIDBFactory(IndexedDBContextImpl* idb_context) 185 explicit TestIDBFactory(IndexedDBContextImpl* idb_context)
183 : IndexedDBFactoryImpl(idb_context) {} 186 : IndexedDBFactoryImpl(idb_context) {}
184 187
185 scoped_refptr<TestableIndexedDBBackingStore> OpenBackingStoreForTest( 188 scoped_refptr<TestableIndexedDBBackingStore> OpenBackingStoreForTest(
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 return false; 291 return false;
289 } 292 }
290 } 293 }
291 return true; 294 return true;
292 } 295 }
293 296
294 bool CheckBlobReadsMatchWrites( 297 bool CheckBlobReadsMatchWrites(
295 const std::vector<IndexedDBBlobInfo>& reads) const { 298 const std::vector<IndexedDBBlobInfo>& reads) const {
296 if (backing_store_->writes().size() != reads.size()) 299 if (backing_store_->writes().size() != reads.size())
297 return false; 300 return false;
298 std::set<int64> ids; 301 std::set<int64_t> ids;
299 for (size_t i = 0; i < backing_store_->writes().size(); ++i) 302 for (size_t i = 0; i < backing_store_->writes().size(); ++i)
300 ids.insert(backing_store_->writes()[i].key()); 303 ids.insert(backing_store_->writes()[i].key());
301 if (ids.size() != backing_store_->writes().size()) 304 if (ids.size() != backing_store_->writes().size())
302 return false; 305 return false;
303 for (size_t i = 0; i < reads.size(); ++i) { 306 for (size_t i = 0; i < reads.size(); ++i) {
304 if (ids.count(reads[i].key()) != 1) 307 if (ids.count(reads[i].key()) != 1)
305 return false; 308 return false;
306 } 309 }
307 return true; 310 return true;
308 } 311 }
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 } 749 }
747 task_runner_->RunUntilIdle(); 750 task_runner_->RunUntilIdle();
748 EXPECT_NE(0U, backing_store_->removals().size()); 751 EXPECT_NE(0U, backing_store_->removals().size());
749 EXPECT_TRUE(CheckBlobRemovals()); 752 EXPECT_TRUE(CheckBlobRemovals());
750 } 753 }
751 } 754 }
752 755
753 // Make sure that using very high ( more than 32 bit ) values for database_id 756 // Make sure that using very high ( more than 32 bit ) values for database_id
754 // and object_store_id still work. 757 // and object_store_id still work.
755 TEST_F(IndexedDBBackingStoreTest, HighIds) { 758 TEST_F(IndexedDBBackingStoreTest, HighIds) {
756 const int64 high_database_id = 1ULL << 35; 759 const int64_t high_database_id = 1ULL << 35;
757 const int64 high_object_store_id = 1ULL << 39; 760 const int64_t high_object_store_id = 1ULL << 39;
758 // index_ids are capped at 32 bits for storage purposes. 761 // index_ids are capped at 32 bits for storage purposes.
759 const int64 high_index_id = 1ULL << 29; 762 const int64_t high_index_id = 1ULL << 29;
760 763
761 const int64 invalid_high_index_id = 1ULL << 37; 764 const int64_t invalid_high_index_id = 1ULL << 37;
762 765
763 const IndexedDBKey& index_key = m_key2; 766 const IndexedDBKey& index_key = m_key2;
764 std::string index_key_raw; 767 std::string index_key_raw;
765 EncodeIDBKey(index_key, &index_key_raw); 768 EncodeIDBKey(index_key, &index_key_raw);
766 { 769 {
767 IndexedDBBackingStore::Transaction transaction1(backing_store_.get()); 770 IndexedDBBackingStore::Transaction transaction1(backing_store_.get());
768 transaction1.Begin(); 771 transaction1.Begin();
769 ScopedVector<storage::BlobDataHandle> handles; 772 ScopedVector<storage::BlobDataHandle> handles;
770 IndexedDBBackingStore::RecordIdentifier record; 773 IndexedDBBackingStore::RecordIdentifier record;
771 leveldb::Status s = backing_store_->PutRecord(&transaction1, 774 leveldb::Status s = backing_store_->PutRecord(&transaction1,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 EXPECT_TRUE(callback->called); 841 EXPECT_TRUE(callback->called);
839 EXPECT_TRUE(callback->succeeded); 842 EXPECT_TRUE(callback->succeeded);
840 s = transaction2.CommitPhaseTwo(); 843 s = transaction2.CommitPhaseTwo();
841 EXPECT_TRUE(s.ok()); 844 EXPECT_TRUE(s.ok());
842 } 845 }
843 } 846 }
844 847
845 // Make sure that other invalid ids do not crash. 848 // Make sure that other invalid ids do not crash.
846 TEST_F(IndexedDBBackingStoreTest, InvalidIds) { 849 TEST_F(IndexedDBBackingStoreTest, InvalidIds) {
847 // valid ids for use when testing invalid ids 850 // valid ids for use when testing invalid ids
848 const int64 database_id = 1; 851 const int64_t database_id = 1;
849 const int64 object_store_id = 1; 852 const int64_t object_store_id = 1;
850 const int64 index_id = kMinimumIndexId; 853 const int64_t index_id = kMinimumIndexId;
851 const int64 invalid_low_index_id = 19; // index_ids must be > kMinimumIndexId 854 const int64_t invalid_low_index_id =
855 19; // index_ids must be > kMinimumIndexId
852 856
853 IndexedDBValue result_value; 857 IndexedDBValue result_value;
854 858
855 IndexedDBBackingStore::Transaction transaction1(backing_store_.get()); 859 IndexedDBBackingStore::Transaction transaction1(backing_store_.get());
856 transaction1.Begin(); 860 transaction1.Begin();
857 861
858 ScopedVector<storage::BlobDataHandle> handles; 862 ScopedVector<storage::BlobDataHandle> handles;
859 IndexedDBBackingStore::RecordIdentifier record; 863 IndexedDBBackingStore::RecordIdentifier record;
860 leveldb::Status s = backing_store_->PutRecord(&transaction1, 864 leveldb::Status s = backing_store_->PutRecord(&transaction1,
861 database_id, 865 database_id,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 database_id, 930 database_id,
927 KeyPrefix::kInvalidId, 931 KeyPrefix::kInvalidId,
928 index_id, 932 index_id,
929 m_key1, 933 m_key1,
930 &new_primary_key); 934 &new_primary_key);
931 EXPECT_FALSE(s.ok()); 935 EXPECT_FALSE(s.ok());
932 } 936 }
933 937
934 TEST_F(IndexedDBBackingStoreTest, CreateDatabase) { 938 TEST_F(IndexedDBBackingStoreTest, CreateDatabase) {
935 const base::string16 database_name(ASCIIToUTF16("db1")); 939 const base::string16 database_name(ASCIIToUTF16("db1"));
936 int64 database_id; 940 int64_t database_id;
937 const base::string16 version(ASCIIToUTF16("old_string_version")); 941 const base::string16 version(ASCIIToUTF16("old_string_version"));
938 const int64 int_version = 9; 942 const int64_t int_version = 9;
939 943
940 const int64 object_store_id = 99; 944 const int64_t object_store_id = 99;
941 const base::string16 object_store_name(ASCIIToUTF16("object_store1")); 945 const base::string16 object_store_name(ASCIIToUTF16("object_store1"));
942 const bool auto_increment = true; 946 const bool auto_increment = true;
943 const IndexedDBKeyPath object_store_key_path( 947 const IndexedDBKeyPath object_store_key_path(
944 ASCIIToUTF16("object_store_key")); 948 ASCIIToUTF16("object_store_key"));
945 949
946 const int64 index_id = 999; 950 const int64_t index_id = 999;
947 const base::string16 index_name(ASCIIToUTF16("index1")); 951 const base::string16 index_name(ASCIIToUTF16("index1"));
948 const bool unique = true; 952 const bool unique = true;
949 const bool multi_entry = true; 953 const bool multi_entry = true;
950 const IndexedDBKeyPath index_key_path(ASCIIToUTF16("index_key")); 954 const IndexedDBKeyPath index_key_path(ASCIIToUTF16("index_key"));
951 955
952 { 956 {
953 leveldb::Status s = backing_store_->CreateIDBDatabaseMetaData( 957 leveldb::Status s = backing_store_->CreateIDBDatabaseMetaData(
954 database_name, version, int_version, &database_id); 958 database_name, version, int_version, &database_id);
955 EXPECT_TRUE(s.ok()); 959 EXPECT_TRUE(s.ok());
956 EXPECT_GT(database_id, 0); 960 EXPECT_GT(database_id, 0);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 EXPECT_EQ(index_key_path, index.key_path); 1018 EXPECT_EQ(index_key_path, index.key_path);
1015 EXPECT_EQ(unique, index.unique); 1019 EXPECT_EQ(unique, index.unique);
1016 EXPECT_EQ(multi_entry, index.multi_entry); 1020 EXPECT_EQ(multi_entry, index.multi_entry);
1017 } 1021 }
1018 } 1022 }
1019 1023
1020 TEST_F(IndexedDBBackingStoreTest, GetDatabaseNames) { 1024 TEST_F(IndexedDBBackingStoreTest, GetDatabaseNames) {
1021 const base::string16 string_version(ASCIIToUTF16("string_version")); 1025 const base::string16 string_version(ASCIIToUTF16("string_version"));
1022 1026
1023 const base::string16 db1_name(ASCIIToUTF16("db1")); 1027 const base::string16 db1_name(ASCIIToUTF16("db1"));
1024 const int64 db1_version = 1LL; 1028 const int64_t db1_version = 1LL;
1025 int64 db1_id; 1029 int64_t db1_id;
1026 1030
1027 // Database records with DEFAULT_INT_VERSION represent stale data, 1031 // Database records with DEFAULT_INT_VERSION represent stale data,
1028 // and should not be enumerated. 1032 // and should not be enumerated.
1029 const base::string16 db2_name(ASCIIToUTF16("db2")); 1033 const base::string16 db2_name(ASCIIToUTF16("db2"));
1030 const int64 db2_version = IndexedDBDatabaseMetadata::DEFAULT_INT_VERSION; 1034 const int64_t db2_version = IndexedDBDatabaseMetadata::DEFAULT_INT_VERSION;
1031 int64 db2_id; 1035 int64_t db2_id;
1032 1036
1033 leveldb::Status s = backing_store_->CreateIDBDatabaseMetaData( 1037 leveldb::Status s = backing_store_->CreateIDBDatabaseMetaData(
1034 db1_name, string_version, db1_version, &db1_id); 1038 db1_name, string_version, db1_version, &db1_id);
1035 EXPECT_TRUE(s.ok()); 1039 EXPECT_TRUE(s.ok());
1036 EXPECT_GT(db1_id, 0LL); 1040 EXPECT_GT(db1_id, 0LL);
1037 1041
1038 s = backing_store_->CreateIDBDatabaseMetaData( 1042 s = backing_store_->CreateIDBDatabaseMetaData(
1039 db2_name, string_version, db2_version, &db2_id); 1043 db2_name, string_version, db2_version, &db2_id);
1040 EXPECT_TRUE(s.ok()); 1044 EXPECT_TRUE(s.ok());
1041 EXPECT_GT(db2_id, db1_id); 1045 EXPECT_GT(db2_id, db1_id);
1042 1046
1043 std::vector<base::string16> names = backing_store_->GetDatabaseNames(&s); 1047 std::vector<base::string16> names = backing_store_->GetDatabaseNames(&s);
1044 EXPECT_TRUE(s.ok()); 1048 EXPECT_TRUE(s.ok());
1045 EXPECT_EQ(names.size(), 1ULL); 1049 EXPECT_EQ(names.size(), 1ULL);
1046 EXPECT_EQ(names[0], db1_name); 1050 EXPECT_EQ(names[0], db1_name);
1047 } 1051 }
1048 1052
1049 } // namespace 1053 } // namespace
1050 1054
1051 } // namespace content 1055 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_backing_store.cc ('k') | content/browser/indexed_db/indexed_db_blob_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698