| OLD | NEW |
| 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 "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 public: | 33 public: |
| 34 virtual int Compare(const base::StringPiece& a, | 34 virtual int Compare(const base::StringPiece& a, |
| 35 const base::StringPiece& b) const OVERRIDE { | 35 const base::StringPiece& b) const OVERRIDE { |
| 36 return content::Compare(a, b, false /*index_keys*/); | 36 return content::Compare(a, b, false /*index_keys*/); |
| 37 } | 37 } |
| 38 virtual const char* Name() const OVERRIDE { return "idb_cmp1"; } | 38 virtual const char* Name() const OVERRIDE { return "idb_cmp1"; } |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 class DefaultLevelDBFactory : public LevelDBFactory { | 41 class DefaultLevelDBFactory : public LevelDBFactory { |
| 42 public: | 42 public: |
| 43 DefaultLevelDBFactory() {} |
| 43 virtual leveldb::Status OpenLevelDB(const base::FilePath& file_name, | 44 virtual leveldb::Status OpenLevelDB(const base::FilePath& file_name, |
| 44 const LevelDBComparator* comparator, | 45 const LevelDBComparator* comparator, |
| 45 scoped_ptr<LevelDBDatabase>* db, | 46 scoped_ptr<LevelDBDatabase>* db, |
| 46 bool* is_disk_full) OVERRIDE { | 47 bool* is_disk_full) OVERRIDE { |
| 47 return LevelDBDatabase::Open(file_name, comparator, db, is_disk_full); | 48 return LevelDBDatabase::Open(file_name, comparator, db, is_disk_full); |
| 48 } | 49 } |
| 49 virtual leveldb::Status DestroyLevelDB( | 50 virtual leveldb::Status DestroyLevelDB( |
| 50 const base::FilePath& file_name) OVERRIDE { | 51 const base::FilePath& file_name) OVERRIDE { |
| 51 return LevelDBDatabase::Destroy(file_name); | 52 return LevelDBDatabase::Destroy(file_name); |
| 52 } | 53 } |
| 54 |
| 55 private: |
| 56 DISALLOW_COPY_AND_ASSIGN(DefaultLevelDBFactory); |
| 53 }; | 57 }; |
| 54 | 58 |
| 55 class TestableIndexedDBBackingStore : public IndexedDBBackingStore { | 59 class TestableIndexedDBBackingStore : public IndexedDBBackingStore { |
| 56 public: | 60 public: |
| 57 static scoped_refptr<TestableIndexedDBBackingStore> Open( | 61 static scoped_refptr<TestableIndexedDBBackingStore> Open( |
| 58 IndexedDBFactory* indexed_db_factory, | 62 IndexedDBFactory* indexed_db_factory, |
| 59 const GURL& origin_url, | 63 const GURL& origin_url, |
| 60 const base::FilePath& path_base, | 64 const base::FilePath& path_base, |
| 61 net::URLRequestContext* request_context, | 65 net::URLRequestContext* request_context, |
| 62 LevelDBFactory* leveldb_factory, | 66 LevelDBFactory* leveldb_factory, |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 blob_path, | 157 blob_path, |
| 154 request_context, | 158 request_context, |
| 155 db.Pass(), | 159 db.Pass(), |
| 156 comparator.Pass(), | 160 comparator.Pass(), |
| 157 task_runner), | 161 task_runner), |
| 158 database_id_(0) {} | 162 database_id_(0) {} |
| 159 | 163 |
| 160 int64 database_id_; | 164 int64 database_id_; |
| 161 std::vector<Transaction::WriteDescriptor> writes_; | 165 std::vector<Transaction::WriteDescriptor> writes_; |
| 162 std::vector<int64> removals_; | 166 std::vector<int64> removals_; |
| 167 |
| 168 DISALLOW_COPY_AND_ASSIGN(TestableIndexedDBBackingStore); |
| 163 }; | 169 }; |
| 164 | 170 |
| 165 class TestIDBFactory : public IndexedDBFactory { | 171 class TestIDBFactory : public IndexedDBFactory { |
| 166 public: | 172 public: |
| 167 TestIDBFactory(IndexedDBContextImpl* idb_context) | 173 TestIDBFactory(IndexedDBContextImpl* idb_context) |
| 168 : IndexedDBFactory(idb_context) {} | 174 : IndexedDBFactory(idb_context) {} |
| 169 | 175 |
| 170 scoped_refptr<TestableIndexedDBBackingStore> OpenBackingStoreForTest( | 176 scoped_refptr<TestableIndexedDBBackingStore> OpenBackingStoreForTest( |
| 171 const GURL& origin, | 177 const GURL& origin, |
| 172 net::URLRequestContext* url_request_context) { | 178 net::URLRequestContext* url_request_context) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 197 bool* disk_full, | 203 bool* disk_full, |
| 198 bool first_time) OVERRIDE { | 204 bool first_time) OVERRIDE { |
| 199 DefaultLevelDBFactory leveldb_factory; | 205 DefaultLevelDBFactory leveldb_factory; |
| 200 return TestableIndexedDBBackingStore::Open(this, | 206 return TestableIndexedDBBackingStore::Open(this, |
| 201 origin_url, | 207 origin_url, |
| 202 data_directory, | 208 data_directory, |
| 203 request_context, | 209 request_context, |
| 204 &leveldb_factory, | 210 &leveldb_factory, |
| 205 context()->TaskRunner()); | 211 context()->TaskRunner()); |
| 206 } | 212 } |
| 213 |
| 214 private: |
| 215 DISALLOW_COPY_AND_ASSIGN(TestIDBFactory); |
| 207 }; | 216 }; |
| 208 | 217 |
| 209 class IndexedDBBackingStoreTest : public testing::Test { | 218 class IndexedDBBackingStoreTest : public testing::Test { |
| 210 public: | 219 public: |
| 211 IndexedDBBackingStoreTest() {} | 220 IndexedDBBackingStoreTest() {} |
| 212 virtual void SetUp() { | 221 virtual void SetUp() { |
| 213 const GURL origin("http://localhost:81"); | 222 const GURL origin("http://localhost:81"); |
| 214 task_runner_ = new base::TestSimpleTaskRunner(); | 223 task_runner_ = new base::TestSimpleTaskRunner(); |
| 215 special_storage_policy_ = new MockSpecialStoragePolicy(); | 224 special_storage_policy_ = new MockSpecialStoragePolicy(); |
| 216 special_storage_policy_->SetAllUnlimited(true); | 225 special_storage_policy_->SetAllUnlimited(true); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 TestCallback() : called(false), succeeded(false) {} | 345 TestCallback() : called(false), succeeded(false) {} |
| 337 virtual void Run(bool succeeded_in) OVERRIDE { | 346 virtual void Run(bool succeeded_in) OVERRIDE { |
| 338 called = true; | 347 called = true; |
| 339 succeeded = succeeded_in; | 348 succeeded = succeeded_in; |
| 340 } | 349 } |
| 341 bool called; | 350 bool called; |
| 342 bool succeeded; | 351 bool succeeded; |
| 343 | 352 |
| 344 protected: | 353 protected: |
| 345 virtual ~TestCallback() {} | 354 virtual ~TestCallback() {} |
| 355 |
| 356 private: |
| 357 DISALLOW_COPY_AND_ASSIGN(TestCallback); |
| 346 }; | 358 }; |
| 347 | 359 |
| 348 TEST_F(IndexedDBBackingStoreTest, PutGetConsistency) { | 360 TEST_F(IndexedDBBackingStoreTest, PutGetConsistency) { |
| 349 { | 361 { |
| 350 IndexedDBBackingStore::Transaction transaction1(backing_store_); | 362 IndexedDBBackingStore::Transaction transaction1(backing_store_); |
| 351 transaction1.Begin(); | 363 transaction1.Begin(); |
| 352 ScopedVector<webkit_blob::BlobDataHandle> handles; | 364 ScopedVector<webkit_blob::BlobDataHandle> handles; |
| 353 IndexedDBBackingStore::RecordIdentifier record; | 365 IndexedDBBackingStore::RecordIdentifier record; |
| 354 leveldb::Status s = backing_store_->PutRecord( | 366 leveldb::Status s = backing_store_->PutRecord( |
| 355 &transaction1, 1, 1, m_key1, m_value1, &handles, &record); | 367 &transaction1, 1, 1, m_key1, m_value1, &handles, &record); |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 EXPECT_EQ(index_name, index.name); | 953 EXPECT_EQ(index_name, index.name); |
| 942 EXPECT_EQ(index_key_path, index.key_path); | 954 EXPECT_EQ(index_key_path, index.key_path); |
| 943 EXPECT_EQ(unique, index.unique); | 955 EXPECT_EQ(unique, index.unique); |
| 944 EXPECT_EQ(multi_entry, index.multi_entry); | 956 EXPECT_EQ(multi_entry, index.multi_entry); |
| 945 } | 957 } |
| 946 } | 958 } |
| 947 | 959 |
| 948 } // namespace | 960 } // namespace |
| 949 | 961 |
| 950 } // namespace content | 962 } // namespace content |
| OLD | NEW |