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 "base/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
11 #include "base/platform_file.h" | 11 #include "base/platform_file.h" |
12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
13 #include "base/time.h" | 13 #include "base/time.h" |
14 #include "net/base/net_errors.h" | 14 #include "net/base/net_errors.h" |
15 #include "net/base/test_completion_callback.h" | 15 #include "net/base/test_completion_callback.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "third_party/sqlite/sqlite3.h" | 17 #include "third_party/sqlite/sqlite3.h" |
18 #include "webkit/base/origin_url_conversions.h" | |
19 #include "webkit/browser/database/database_tracker.h" | 18 #include "webkit/browser/database/database_tracker.h" |
20 #include "webkit/browser/quota/mock_special_storage_policy.h" | 19 #include "webkit/browser/quota/mock_special_storage_policy.h" |
21 #include "webkit/browser/quota/quota_manager.h" | 20 #include "webkit/browser/quota/quota_manager.h" |
| 21 #include "webkit/common/database/database_identifier.h" |
22 | 22 |
23 namespace { | 23 namespace { |
24 | 24 |
25 const char kOrigin1Url[] = "http://origin1"; | 25 const char kOrigin1Url[] = "http://origin1"; |
26 const char kOrigin2Url[] = "http://protected_origin2"; | 26 const char kOrigin2Url[] = "http://protected_origin2"; |
27 | 27 |
28 class TestObserver : public webkit_database::DatabaseTracker::Observer { | 28 class TestObserver : public webkit_database::DatabaseTracker::Observer { |
29 public: | 29 public: |
30 TestObserver() | 30 TestObserver() |
31 : new_notification_received_(false), | 31 : new_notification_received_(false), |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 scoped_refptr<DatabaseTracker> tracker( | 198 scoped_refptr<DatabaseTracker> tracker( |
199 new DatabaseTracker(temp_dir.path(), | 199 new DatabaseTracker(temp_dir.path(), |
200 incognito_mode, | 200 incognito_mode, |
201 special_storage_policy.get(), | 201 special_storage_policy.get(), |
202 NULL, | 202 NULL, |
203 NULL)); | 203 NULL)); |
204 | 204 |
205 // Create and open three databases. | 205 // Create and open three databases. |
206 int64 database_size = 0; | 206 int64 database_size = 0; |
207 const std::string kOrigin1 = | 207 const std::string kOrigin1 = |
208 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); | 208 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); |
209 const std::string kOrigin2 = | 209 const std::string kOrigin2 = |
210 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); | 210 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); |
211 const base::string16 kDB1 = ASCIIToUTF16("db1"); | 211 const base::string16 kDB1 = ASCIIToUTF16("db1"); |
212 const base::string16 kDB2 = ASCIIToUTF16("db2"); | 212 const base::string16 kDB2 = ASCIIToUTF16("db2"); |
213 const base::string16 kDB3 = ASCIIToUTF16("db3"); | 213 const base::string16 kDB3 = ASCIIToUTF16("db3"); |
214 const base::string16 kDescription = ASCIIToUTF16("database_description"); | 214 const base::string16 kDescription = ASCIIToUTF16("database_description"); |
215 | 215 |
216 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, | 216 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, |
217 &database_size); | 217 &database_size); |
218 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, | 218 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, |
219 &database_size); | 219 &database_size); |
220 tracker->DatabaseOpened(kOrigin2, kDB3, kDescription, 0, | 220 tracker->DatabaseOpened(kOrigin2, kDB3, kDescription, 0, |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 | 312 |
313 // Add two observers. | 313 // Add two observers. |
314 TestObserver observer1; | 314 TestObserver observer1; |
315 TestObserver observer2; | 315 TestObserver observer2; |
316 tracker->AddObserver(&observer1); | 316 tracker->AddObserver(&observer1); |
317 tracker->AddObserver(&observer2); | 317 tracker->AddObserver(&observer2); |
318 | 318 |
319 // Open three new databases. | 319 // Open three new databases. |
320 int64 database_size = 0; | 320 int64 database_size = 0; |
321 const std::string kOrigin1 = | 321 const std::string kOrigin1 = |
322 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); | 322 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); |
323 const std::string kOrigin2 = | 323 const std::string kOrigin2 = |
324 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); | 324 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); |
325 const base::string16 kDB1 = ASCIIToUTF16("db1"); | 325 const base::string16 kDB1 = ASCIIToUTF16("db1"); |
326 const base::string16 kDB2 = ASCIIToUTF16("db2"); | 326 const base::string16 kDB2 = ASCIIToUTF16("db2"); |
327 const base::string16 kDB3 = ASCIIToUTF16("db3"); | 327 const base::string16 kDB3 = ASCIIToUTF16("db3"); |
328 const base::string16 kDescription = ASCIIToUTF16("database_description"); | 328 const base::string16 kDescription = ASCIIToUTF16("database_description"); |
329 | 329 |
330 // Get the info for kOrigin1 and kOrigin2 | 330 // Get the info for kOrigin1 and kOrigin2 |
331 DatabaseTracker::CachedOriginInfo* origin1_info = | 331 DatabaseTracker::CachedOriginInfo* origin1_info = |
332 tracker->GetCachedOriginInfo(kOrigin1); | 332 tracker->GetCachedOriginInfo(kOrigin1); |
333 DatabaseTracker::CachedOriginInfo* origin2_info = | 333 DatabaseTracker::CachedOriginInfo* origin2_info = |
334 tracker->GetCachedOriginInfo(kOrigin1); | 334 tracker->GetCachedOriginInfo(kOrigin1); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 EXPECT_EQ(kOrigin2, origins_info[0].GetOriginIdentifier()); | 440 EXPECT_EQ(kOrigin2, origins_info[0].GetOriginIdentifier()); |
441 | 441 |
442 origin1_info = tracker->GetCachedOriginInfo(kOrigin1); | 442 origin1_info = tracker->GetCachedOriginInfo(kOrigin1); |
443 EXPECT_TRUE(origin1_info); | 443 EXPECT_TRUE(origin1_info); |
444 EXPECT_EQ(0, origin1_info->TotalSize()); | 444 EXPECT_EQ(0, origin1_info->TotalSize()); |
445 } | 445 } |
446 | 446 |
447 static void DatabaseTrackerQuotaIntegration() { | 447 static void DatabaseTrackerQuotaIntegration() { |
448 const GURL kOrigin(kOrigin1Url); | 448 const GURL kOrigin(kOrigin1Url); |
449 const std::string kOriginId = | 449 const std::string kOriginId = |
450 webkit_base::GetOriginIdentifierFromURL(kOrigin); | 450 webkit_database::GetIdentifierFromOrigin(kOrigin); |
451 const base::string16 kName = ASCIIToUTF16("name"); | 451 const base::string16 kName = ASCIIToUTF16("name"); |
452 const base::string16 kDescription = ASCIIToUTF16("description"); | 452 const base::string16 kDescription = ASCIIToUTF16("description"); |
453 | 453 |
454 base::ScopedTempDir temp_dir; | 454 base::ScopedTempDir temp_dir; |
455 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 455 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
456 | 456 |
457 // Initialize the tracker with a QuotaManagerProxy | 457 // Initialize the tracker with a QuotaManagerProxy |
458 scoped_refptr<TestQuotaManagerProxy> test_quota_proxy( | 458 scoped_refptr<TestQuotaManagerProxy> test_quota_proxy( |
459 new TestQuotaManagerProxy); | 459 new TestQuotaManagerProxy); |
460 scoped_refptr<DatabaseTracker> tracker( | 460 scoped_refptr<DatabaseTracker> tracker( |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 100)); | 538 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 100)); |
539 | 539 |
540 // Cleanup. | 540 // Cleanup. |
541 crashed_renderer_connections.RemoveAllConnections(); | 541 crashed_renderer_connections.RemoveAllConnections(); |
542 test_quota_proxy->SimulateQuotaManagerDestroyed(); | 542 test_quota_proxy->SimulateQuotaManagerDestroyed(); |
543 } | 543 } |
544 | 544 |
545 static void DatabaseTrackerClearSessionOnlyDatabasesOnExit() { | 545 static void DatabaseTrackerClearSessionOnlyDatabasesOnExit() { |
546 int64 database_size = 0; | 546 int64 database_size = 0; |
547 const std::string kOrigin1 = | 547 const std::string kOrigin1 = |
548 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); | 548 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); |
549 const std::string kOrigin2 = | 549 const std::string kOrigin2 = |
550 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); | 550 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); |
551 const base::string16 kDB1 = ASCIIToUTF16("db1"); | 551 const base::string16 kDB1 = ASCIIToUTF16("db1"); |
552 const base::string16 kDB2 = ASCIIToUTF16("db2"); | 552 const base::string16 kDB2 = ASCIIToUTF16("db2"); |
553 const base::string16 kDescription = ASCIIToUTF16("database_description"); | 553 const base::string16 kDescription = ASCIIToUTF16("database_description"); |
554 | 554 |
555 // Initialize the tracker database. | 555 // Initialize the tracker database. |
556 base::MessageLoop message_loop; | 556 base::MessageLoop message_loop; |
557 base::ScopedTempDir temp_dir; | 557 base::ScopedTempDir temp_dir; |
558 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 558 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
559 base::FilePath origin1_db_dir; | 559 base::FilePath origin1_db_dir; |
560 base::FilePath origin2_db_dir; | 560 base::FilePath origin2_db_dir; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 | 618 |
619 // The origin directory of kOrigin1 remains, but the origin directory of | 619 // The origin directory of kOrigin1 remains, but the origin directory of |
620 // kOrigin2 is deleted. | 620 // kOrigin2 is deleted. |
621 EXPECT_TRUE(file_util::PathExists(origin1_db_dir)); | 621 EXPECT_TRUE(file_util::PathExists(origin1_db_dir)); |
622 EXPECT_FALSE(file_util::PathExists(origin2_db_dir)); | 622 EXPECT_FALSE(file_util::PathExists(origin2_db_dir)); |
623 } | 623 } |
624 | 624 |
625 static void DatabaseTrackerSetForceKeepSessionState() { | 625 static void DatabaseTrackerSetForceKeepSessionState() { |
626 int64 database_size = 0; | 626 int64 database_size = 0; |
627 const std::string kOrigin1 = | 627 const std::string kOrigin1 = |
628 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); | 628 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); |
629 const std::string kOrigin2 = | 629 const std::string kOrigin2 = |
630 webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); | 630 webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); |
631 const base::string16 kDB1 = ASCIIToUTF16("db1"); | 631 const base::string16 kDB1 = ASCIIToUTF16("db1"); |
632 const base::string16 kDB2 = ASCIIToUTF16("db2"); | 632 const base::string16 kDB2 = ASCIIToUTF16("db2"); |
633 const base::string16 kDescription = ASCIIToUTF16("database_description"); | 633 const base::string16 kDescription = ASCIIToUTF16("database_description"); |
634 | 634 |
635 // Initialize the tracker database. | 635 // Initialize the tracker database. |
636 base::MessageLoop message_loop; | 636 base::MessageLoop message_loop; |
637 base::ScopedTempDir temp_dir; | 637 base::ScopedTempDir temp_dir; |
638 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 638 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
639 base::FilePath origin1_db_dir; | 639 base::FilePath origin1_db_dir; |
640 base::FilePath origin2_db_dir; | 640 base::FilePath origin2_db_dir; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 EXPECT_TRUE( | 696 EXPECT_TRUE( |
697 file_util::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2))); | 697 file_util::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2))); |
698 | 698 |
699 EXPECT_TRUE(file_util::PathExists(origin1_db_dir)); | 699 EXPECT_TRUE(file_util::PathExists(origin1_db_dir)); |
700 EXPECT_TRUE(file_util::PathExists(origin2_db_dir)); | 700 EXPECT_TRUE(file_util::PathExists(origin2_db_dir)); |
701 } | 701 } |
702 | 702 |
703 static void EmptyDatabaseNameIsValid() { | 703 static void EmptyDatabaseNameIsValid() { |
704 const GURL kOrigin(kOrigin1Url); | 704 const GURL kOrigin(kOrigin1Url); |
705 const std::string kOriginId = | 705 const std::string kOriginId = |
706 webkit_base::GetOriginIdentifierFromURL(kOrigin); | 706 webkit_database::GetIdentifierFromOrigin(kOrigin); |
707 const base::string16 kEmptyName; | 707 const base::string16 kEmptyName; |
708 const base::string16 kDescription(ASCIIToUTF16("description")); | 708 const base::string16 kDescription(ASCIIToUTF16("description")); |
709 const base::string16 kChangedDescription( | 709 const base::string16 kChangedDescription( |
710 ASCIIToUTF16("changed_description")); | 710 ASCIIToUTF16("changed_description")); |
711 | 711 |
712 // Initialize a tracker database, no need to put it on disk. | 712 // Initialize a tracker database, no need to put it on disk. |
713 const bool kUseInMemoryTrackerDatabase = true; | 713 const bool kUseInMemoryTrackerDatabase = true; |
714 base::ScopedTempDir temp_dir; | 714 base::ScopedTempDir temp_dir; |
715 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 715 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
716 scoped_refptr<DatabaseTracker> tracker( | 716 scoped_refptr<DatabaseTracker> tracker( |
(...skipping 28 matching lines...) Expand all Loading... |
745 EXPECT_EQ(net::OK, tracker->DeleteDatabase(kOriginId, kEmptyName, | 745 EXPECT_EQ(net::OK, tracker->DeleteDatabase(kOriginId, kEmptyName, |
746 net::CompletionCallback())); | 746 net::CompletionCallback())); |
747 infos.clear(); | 747 infos.clear(); |
748 EXPECT_TRUE(tracker->GetAllOriginsInfo(&infos)); | 748 EXPECT_TRUE(tracker->GetAllOriginsInfo(&infos)); |
749 EXPECT_TRUE(infos.empty()); | 749 EXPECT_TRUE(infos.empty()); |
750 } | 750 } |
751 | 751 |
752 static void HandleSqliteError() { | 752 static void HandleSqliteError() { |
753 const GURL kOrigin(kOrigin1Url); | 753 const GURL kOrigin(kOrigin1Url); |
754 const std::string kOriginId = | 754 const std::string kOriginId = |
755 webkit_base::GetOriginIdentifierFromURL(kOrigin); | 755 webkit_database::GetIdentifierFromOrigin(kOrigin); |
756 const base::string16 kName(ASCIIToUTF16("name")); | 756 const base::string16 kName(ASCIIToUTF16("name")); |
757 const base::string16 kDescription(ASCIIToUTF16("description")); | 757 const base::string16 kDescription(ASCIIToUTF16("description")); |
758 | 758 |
759 // Initialize a tracker database, no need to put it on disk. | 759 // Initialize a tracker database, no need to put it on disk. |
760 const bool kUseInMemoryTrackerDatabase = true; | 760 const bool kUseInMemoryTrackerDatabase = true; |
761 base::ScopedTempDir temp_dir; | 761 base::ScopedTempDir temp_dir; |
762 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 762 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
763 scoped_refptr<DatabaseTracker> tracker( | 763 scoped_refptr<DatabaseTracker> tracker( |
764 new DatabaseTracker(temp_dir.path(), kUseInMemoryTrackerDatabase, | 764 new DatabaseTracker(temp_dir.path(), kUseInMemoryTrackerDatabase, |
765 NULL, NULL, NULL)); | 765 NULL, NULL, NULL)); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 | 859 |
860 TEST(DatabaseTrackerTest, EmptyDatabaseNameIsValid) { | 860 TEST(DatabaseTrackerTest, EmptyDatabaseNameIsValid) { |
861 DatabaseTracker_TestHelper_Test::EmptyDatabaseNameIsValid(); | 861 DatabaseTracker_TestHelper_Test::EmptyDatabaseNameIsValid(); |
862 } | 862 } |
863 | 863 |
864 TEST(DatabaseTrackerTest, HandleSqliteError) { | 864 TEST(DatabaseTrackerTest, HandleSqliteError) { |
865 DatabaseTracker_TestHelper_Test::HandleSqliteError(); | 865 DatabaseTracker_TestHelper_Test::HandleSqliteError(); |
866 } | 866 } |
867 | 867 |
868 } // namespace webkit_database | 868 } // namespace webkit_database |
OLD | NEW |