| 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/scoped_temp_dir.h" | 8 #include "base/scoped_temp_dir.h" |
| 9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "sql/connection.h" | 10 #include "sql/connection.h" |
| 11 #include "sql/meta_table.h" | 11 #include "sql/meta_table.h" |
| 12 #include "sql/statement.h" | 12 #include "sql/statement.h" |
| 13 #include "sql/transaction.h" | 13 #include "sql/transaction.h" |
| 14 #include "webkit/appcache/appcache_database.h" | 14 #include "webkit/appcache/appcache_database.h" |
| 15 #include "webkit/appcache/appcache_entry.h" | 15 #include "webkit/appcache/appcache_entry.h" |
| 16 | 16 |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 const base::Time kZeroTime; | 19 const base::Time kZeroTime; |
| 20 | 20 |
| 21 class TestErrorDelegate : public sql::ErrorDelegate { | 21 class TestErrorDelegate : public sql::ErrorDelegate { |
| 22 public: | 22 public: |
| 23 TestErrorDelegate() {} |
| 24 virtual ~TestErrorDelegate() {} |
| 25 |
| 23 virtual int OnError(int error, | 26 virtual int OnError(int error, |
| 24 sql::Connection* connection, | 27 sql::Connection* connection, |
| 25 sql::Statement* stmt) OVERRIDE { | 28 sql::Statement* stmt) OVERRIDE { |
| 26 return error; | 29 return error; |
| 27 } | 30 } |
| 28 | 31 |
| 29 private: | 32 private: |
| 30 virtual ~TestErrorDelegate() {} | 33 DISALLOW_COPY_AND_ASSIGN(TestErrorDelegate); |
| 31 }; | 34 }; |
| 32 | 35 |
| 33 } // namespace | 36 } // namespace |
| 34 | 37 |
| 35 namespace appcache { | 38 namespace appcache { |
| 36 | 39 |
| 37 class AppCacheDatabaseTest {}; | 40 class AppCacheDatabaseTest {}; |
| 38 | 41 |
| 39 TEST(AppCacheDatabaseTest, LazyOpen) { | 42 TEST(AppCacheDatabaseTest, LazyOpen) { |
| 40 // Use an empty file path to use an in-memory sqlite database. | 43 // Use an empty file path to use an in-memory sqlite database. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 EXPECT_FALSE(file_util::DirectoryExists(kNestedDir)); | 85 EXPECT_FALSE(file_util::DirectoryExists(kNestedDir)); |
| 83 EXPECT_FALSE(file_util::PathExists(kOtherFile)); | 86 EXPECT_FALSE(file_util::PathExists(kOtherFile)); |
| 84 } | 87 } |
| 85 | 88 |
| 86 TEST(AppCacheDatabaseTest, EntryRecords) { | 89 TEST(AppCacheDatabaseTest, EntryRecords) { |
| 87 const FilePath kEmptyPath; | 90 const FilePath kEmptyPath; |
| 88 AppCacheDatabase db(kEmptyPath); | 91 AppCacheDatabase db(kEmptyPath); |
| 89 EXPECT_TRUE(db.LazyOpen(true)); | 92 EXPECT_TRUE(db.LazyOpen(true)); |
| 90 | 93 |
| 91 // Set an error delegate that will make all operations return false on error. | 94 // Set an error delegate that will make all operations return false on error. |
| 92 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 95 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 93 db.db_->set_error_delegate(error_delegate); | |
| 94 | 96 |
| 95 AppCacheDatabase::EntryRecord entry; | 97 AppCacheDatabase::EntryRecord entry; |
| 96 | 98 |
| 97 entry.cache_id = 1; | 99 entry.cache_id = 1; |
| 98 entry.url = GURL("http://blah/1"); | 100 entry.url = GURL("http://blah/1"); |
| 99 entry.flags = AppCacheEntry::MASTER; | 101 entry.flags = AppCacheEntry::MASTER; |
| 100 entry.response_id = 1; | 102 entry.response_id = 1; |
| 101 entry.response_size = 100; | 103 entry.response_size = 100; |
| 102 EXPECT_TRUE(db.InsertEntry(&entry)); | 104 EXPECT_TRUE(db.InsertEntry(&entry)); |
| 103 EXPECT_FALSE(db.InsertEntry(&entry)); | 105 EXPECT_FALSE(db.InsertEntry(&entry)); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 EXPECT_TRUE(db.DeleteEntriesForCache(1)); | 158 EXPECT_TRUE(db.DeleteEntriesForCache(1)); |
| 157 EXPECT_FALSE(db.AddEntryFlags(GURL("http://blah/1"), 1, | 159 EXPECT_FALSE(db.AddEntryFlags(GURL("http://blah/1"), 1, |
| 158 AppCacheEntry::FOREIGN)); | 160 AppCacheEntry::FOREIGN)); |
| 159 } | 161 } |
| 160 | 162 |
| 161 TEST(AppCacheDatabaseTest, CacheRecords) { | 163 TEST(AppCacheDatabaseTest, CacheRecords) { |
| 162 const FilePath kEmptyPath; | 164 const FilePath kEmptyPath; |
| 163 AppCacheDatabase db(kEmptyPath); | 165 AppCacheDatabase db(kEmptyPath); |
| 164 EXPECT_TRUE(db.LazyOpen(true)); | 166 EXPECT_TRUE(db.LazyOpen(true)); |
| 165 | 167 |
| 166 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 168 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 167 db.db_->set_error_delegate(error_delegate); | |
| 168 | 169 |
| 169 const AppCacheDatabase::CacheRecord kZeroRecord; | 170 const AppCacheDatabase::CacheRecord kZeroRecord; |
| 170 AppCacheDatabase::CacheRecord record; | 171 AppCacheDatabase::CacheRecord record; |
| 171 EXPECT_FALSE(db.FindCache(1, &record)); | 172 EXPECT_FALSE(db.FindCache(1, &record)); |
| 172 | 173 |
| 173 record.cache_id = 1; | 174 record.cache_id = 1; |
| 174 record.group_id = 1; | 175 record.group_id = 1; |
| 175 record.online_wildcard = true; | 176 record.online_wildcard = true; |
| 176 record.update_time = kZeroTime; | 177 record.update_time = kZeroTime; |
| 177 record.cache_size = 100; | 178 record.cache_size = 100; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 199 EXPECT_FALSE(db.FindCacheForGroup(1, &record)); | 200 EXPECT_FALSE(db.FindCacheForGroup(1, &record)); |
| 200 | 201 |
| 201 EXPECT_TRUE(db.DeleteCache(1)); | 202 EXPECT_TRUE(db.DeleteCache(1)); |
| 202 } | 203 } |
| 203 | 204 |
| 204 TEST(AppCacheDatabaseTest, GroupRecords) { | 205 TEST(AppCacheDatabaseTest, GroupRecords) { |
| 205 const FilePath kEmptyPath; | 206 const FilePath kEmptyPath; |
| 206 AppCacheDatabase db(kEmptyPath); | 207 AppCacheDatabase db(kEmptyPath); |
| 207 EXPECT_TRUE(db.LazyOpen(true)); | 208 EXPECT_TRUE(db.LazyOpen(true)); |
| 208 | 209 |
| 209 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 210 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 210 db.db_->set_error_delegate(error_delegate); | |
| 211 | 211 |
| 212 const GURL kManifestUrl("http://blah/manifest"); | 212 const GURL kManifestUrl("http://blah/manifest"); |
| 213 const GURL kOrigin(kManifestUrl.GetOrigin()); | 213 const GURL kOrigin(kManifestUrl.GetOrigin()); |
| 214 const base::Time kLastAccessTime = base::Time::Now(); | 214 const base::Time kLastAccessTime = base::Time::Now(); |
| 215 const base::Time kCreationTime = | 215 const base::Time kCreationTime = |
| 216 kLastAccessTime - base::TimeDelta::FromDays(7); | 216 kLastAccessTime - base::TimeDelta::FromDays(7); |
| 217 | 217 |
| 218 const AppCacheDatabase::GroupRecord kZeroRecord; | 218 const AppCacheDatabase::GroupRecord kZeroRecord; |
| 219 AppCacheDatabase::GroupRecord record; | 219 AppCacheDatabase::GroupRecord record; |
| 220 std::vector<AppCacheDatabase::GroupRecord> records; | 220 std::vector<AppCacheDatabase::GroupRecord> records; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 EXPECT_EQ(1, record.group_id); | 327 EXPECT_EQ(1, record.group_id); |
| 328 EXPECT_EQ(kManifest2, record.manifest_url); | 328 EXPECT_EQ(kManifest2, record.manifest_url); |
| 329 EXPECT_EQ(kOrigin2, record.origin); | 329 EXPECT_EQ(kOrigin2, record.origin); |
| 330 } | 330 } |
| 331 | 331 |
| 332 TEST(AppCacheDatabaseTest, NamespaceRecords) { | 332 TEST(AppCacheDatabaseTest, NamespaceRecords) { |
| 333 const FilePath kEmptyPath; | 333 const FilePath kEmptyPath; |
| 334 AppCacheDatabase db(kEmptyPath); | 334 AppCacheDatabase db(kEmptyPath); |
| 335 EXPECT_TRUE(db.LazyOpen(true)); | 335 EXPECT_TRUE(db.LazyOpen(true)); |
| 336 | 336 |
| 337 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 337 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 338 db.db_->set_error_delegate(error_delegate); | |
| 339 | 338 |
| 340 const GURL kFooNameSpace1("http://foo/namespace1"); | 339 const GURL kFooNameSpace1("http://foo/namespace1"); |
| 341 const GURL kFooNameSpace2("http://foo/namespace2"); | 340 const GURL kFooNameSpace2("http://foo/namespace2"); |
| 342 const GURL kFooFallbackEntry("http://foo/entry"); | 341 const GURL kFooFallbackEntry("http://foo/entry"); |
| 343 const GURL kFooOrigin(kFooNameSpace1.GetOrigin()); | 342 const GURL kFooOrigin(kFooNameSpace1.GetOrigin()); |
| 344 const GURL kBarNameSpace1("http://bar/namespace1"); | 343 const GURL kBarNameSpace1("http://bar/namespace1"); |
| 345 const GURL kBarNameSpace2("http://bar/namespace2"); | 344 const GURL kBarNameSpace2("http://bar/namespace2"); |
| 346 const GURL kBarFallbackEntry("http://bar/entry"); | 345 const GURL kBarFallbackEntry("http://bar/entry"); |
| 347 const GURL kBarOrigin(kBarNameSpace1.GetOrigin()); | 346 const GURL kBarOrigin(kBarNameSpace1.GetOrigin()); |
| 348 | 347 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 fallbacks.clear(); | 427 fallbacks.clear(); |
| 429 EXPECT_TRUE(db.FindNamespacesForOrigin(kBarOrigin, &intercepts, &fallbacks)); | 428 EXPECT_TRUE(db.FindNamespacesForOrigin(kBarOrigin, &intercepts, &fallbacks)); |
| 430 EXPECT_EQ(2U, fallbacks.size()); | 429 EXPECT_EQ(2U, fallbacks.size()); |
| 431 } | 430 } |
| 432 | 431 |
| 433 TEST(AppCacheDatabaseTest, OnlineWhiteListRecords) { | 432 TEST(AppCacheDatabaseTest, OnlineWhiteListRecords) { |
| 434 const FilePath kEmptyPath; | 433 const FilePath kEmptyPath; |
| 435 AppCacheDatabase db(kEmptyPath); | 434 AppCacheDatabase db(kEmptyPath); |
| 436 EXPECT_TRUE(db.LazyOpen(true)); | 435 EXPECT_TRUE(db.LazyOpen(true)); |
| 437 | 436 |
| 438 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 437 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 439 db.db_->set_error_delegate(error_delegate); | |
| 440 | 438 |
| 441 const GURL kFooNameSpace1("http://foo/namespace1"); | 439 const GURL kFooNameSpace1("http://foo/namespace1"); |
| 442 const GURL kFooNameSpace2("http://foo/namespace2"); | 440 const GURL kFooNameSpace2("http://foo/namespace2"); |
| 443 const GURL kBarNameSpace1("http://bar/namespace1"); | 441 const GURL kBarNameSpace1("http://bar/namespace1"); |
| 444 | 442 |
| 445 const AppCacheDatabase::OnlineWhiteListRecord kZeroRecord; | 443 const AppCacheDatabase::OnlineWhiteListRecord kZeroRecord; |
| 446 AppCacheDatabase::OnlineWhiteListRecord record; | 444 AppCacheDatabase::OnlineWhiteListRecord record; |
| 447 std::vector<AppCacheDatabase::OnlineWhiteListRecord> records; | 445 std::vector<AppCacheDatabase::OnlineWhiteListRecord> records; |
| 448 | 446 |
| 449 // Behavior with an empty table | 447 // Behavior with an empty table |
| (...skipping 25 matching lines...) Expand all Loading... |
| 475 records.clear(); | 473 records.clear(); |
| 476 EXPECT_TRUE(db.FindOnlineWhiteListForCache(1, &records)); | 474 EXPECT_TRUE(db.FindOnlineWhiteListForCache(1, &records)); |
| 477 EXPECT_TRUE(records.empty()); | 475 EXPECT_TRUE(records.empty()); |
| 478 } | 476 } |
| 479 | 477 |
| 480 TEST(AppCacheDatabaseTest, DeletableResponseIds) { | 478 TEST(AppCacheDatabaseTest, DeletableResponseIds) { |
| 481 const FilePath kEmptyPath; | 479 const FilePath kEmptyPath; |
| 482 AppCacheDatabase db(kEmptyPath); | 480 AppCacheDatabase db(kEmptyPath); |
| 483 EXPECT_TRUE(db.LazyOpen(true)); | 481 EXPECT_TRUE(db.LazyOpen(true)); |
| 484 | 482 |
| 485 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 483 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 486 db.db_->set_error_delegate(error_delegate); | |
| 487 | 484 |
| 488 std::vector<int64> ids; | 485 std::vector<int64> ids; |
| 489 | 486 |
| 490 EXPECT_TRUE(db.GetDeletableResponseIds(&ids, kint64max, 100)); | 487 EXPECT_TRUE(db.GetDeletableResponseIds(&ids, kint64max, 100)); |
| 491 EXPECT_TRUE(ids.empty()); | 488 EXPECT_TRUE(ids.empty()); |
| 492 ids.push_back(0); | 489 ids.push_back(0); |
| 493 EXPECT_TRUE(db.DeleteDeletableResponseIds(ids)); | 490 EXPECT_TRUE(db.DeleteDeletableResponseIds(ids)); |
| 494 EXPECT_TRUE(db.InsertDeletableResponseIds(ids)); | 491 EXPECT_TRUE(db.InsertDeletableResponseIds(ids)); |
| 495 | 492 |
| 496 ids.clear(); | 493 ids.clear(); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 const GURL kManifestUrl("http://blah/manifest"); | 549 const GURL kManifestUrl("http://blah/manifest"); |
| 553 const GURL kManifestUrl2("http://blah/manifest2"); | 550 const GURL kManifestUrl2("http://blah/manifest2"); |
| 554 const GURL kOrigin(kManifestUrl.GetOrigin()); | 551 const GURL kOrigin(kManifestUrl.GetOrigin()); |
| 555 const GURL kOtherOriginManifestUrl("http://other/manifest"); | 552 const GURL kOtherOriginManifestUrl("http://other/manifest"); |
| 556 const GURL kOtherOrigin(kOtherOriginManifestUrl.GetOrigin()); | 553 const GURL kOtherOrigin(kOtherOriginManifestUrl.GetOrigin()); |
| 557 | 554 |
| 558 const FilePath kEmptyPath; | 555 const FilePath kEmptyPath; |
| 559 AppCacheDatabase db(kEmptyPath); | 556 AppCacheDatabase db(kEmptyPath); |
| 560 EXPECT_TRUE(db.LazyOpen(true)); | 557 EXPECT_TRUE(db.LazyOpen(true)); |
| 561 | 558 |
| 562 scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate); | 559 db.db_->set_error_delegate(new TestErrorDelegate()); |
| 563 db.db_->set_error_delegate(error_delegate); | |
| 564 | 560 |
| 565 std::vector<AppCacheDatabase::CacheRecord> cache_records; | 561 std::vector<AppCacheDatabase::CacheRecord> cache_records; |
| 566 EXPECT_EQ(0, db.GetOriginUsage(kOrigin)); | 562 EXPECT_EQ(0, db.GetOriginUsage(kOrigin)); |
| 567 EXPECT_TRUE(db.FindCachesForOrigin(kOrigin, &cache_records)); | 563 EXPECT_TRUE(db.FindCachesForOrigin(kOrigin, &cache_records)); |
| 568 EXPECT_TRUE(cache_records.empty()); | 564 EXPECT_TRUE(cache_records.empty()); |
| 569 | 565 |
| 570 AppCacheDatabase::GroupRecord group_record; | 566 AppCacheDatabase::GroupRecord group_record; |
| 571 group_record.group_id = 1; | 567 group_record.group_id = 1; |
| 572 group_record.manifest_url = kManifestUrl; | 568 group_record.manifest_url = kManifestUrl; |
| 573 group_record.origin = kOrigin; | 569 group_record.origin = kOrigin; |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 | 827 |
| 832 EXPECT_EQ(i, fallbacks[i].cache_id); | 828 EXPECT_EQ(i, fallbacks[i].cache_id); |
| 833 EXPECT_EQ(FALLBACK_NAMESPACE, fallbacks[i].type); | 829 EXPECT_EQ(FALLBACK_NAMESPACE, fallbacks[i].type); |
| 834 EXPECT_EQ(kMockOrigin, fallbacks[i].origin); | 830 EXPECT_EQ(kMockOrigin, fallbacks[i].origin); |
| 835 EXPECT_EQ(expected_namespace_url, fallbacks[i].namespace_url); | 831 EXPECT_EQ(expected_namespace_url, fallbacks[i].namespace_url); |
| 836 EXPECT_EQ(expected_target_url, fallbacks[i].target_url); | 832 EXPECT_EQ(expected_target_url, fallbacks[i].target_url); |
| 837 } | 833 } |
| 838 } | 834 } |
| 839 | 835 |
| 840 } // namespace appcache | 836 } // namespace appcache |
| OLD | NEW |