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

Side by Side Diff: chrome/browser/browsing_data/browsing_data_remover_unittest.cc

Issue 37843003: BrowsingDataRemover, (re)use StoragePartition deletion code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments form mkwst@. Created 7 years, 1 month 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) 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 "chrome/browser/browsing_data/browsing_data_remover.h" 5 #include "chrome/browser/browsing_data/browsing_data_remover.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 26 matching lines...) Expand all
37 #include "content/public/browser/storage_partition.h" 37 #include "content/public/browser/storage_partition.h"
38 #include "content/public/test/test_browser_thread.h" 38 #include "content/public/test/test_browser_thread.h"
39 #include "content/public/test/test_browser_thread_bundle.h" 39 #include "content/public/test/test_browser_thread_bundle.h"
40 #include "net/cookies/cookie_monster.h" 40 #include "net/cookies/cookie_monster.h"
41 #include "net/ssl/server_bound_cert_service.h" 41 #include "net/ssl/server_bound_cert_service.h"
42 #include "net/ssl/server_bound_cert_store.h" 42 #include "net/ssl/server_bound_cert_store.h"
43 #include "net/ssl/ssl_client_cert_type.h" 43 #include "net/ssl/ssl_client_cert_type.h"
44 #include "net/url_request/url_request_context.h" 44 #include "net/url_request/url_request_context.h"
45 #include "net/url_request/url_request_context_getter.h" 45 #include "net/url_request/url_request_context_getter.h"
46 #include "testing/gtest/include/gtest/gtest.h" 46 #include "testing/gtest/include/gtest/gtest.h"
47 #include "webkit/browser/quota/mock_quota_manager.h"
48 #include "webkit/browser/quota/quota_manager.h"
49 #include "webkit/common/quota/quota_types.h"
50 47
51 using content::BrowserThread; 48 using content::BrowserThread;
49 using content::StoragePartition;
52 50
53 namespace { 51 namespace {
54 52
55 const char kTestOrigin1[] = "http://host1:1/"; 53 const char kTestOrigin1[] = "http://host1:1/";
56 const char kTestOrigin2[] = "http://host2:1/"; 54 const char kTestOrigin2[] = "http://host2:1/";
57 const char kTestOrigin3[] = "http://host3:1/"; 55 const char kTestOrigin3[] = "http://host3:1/";
58 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; 56 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
59 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; 57 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/";
60 58
61 // For Autofill. 59 // For Autofill.
(...skipping 11 matching lines...) Expand all
73 71
74 const base::FilePath::CharType kDomStorageOrigin2[] = 72 const base::FilePath::CharType kDomStorageOrigin2[] =
75 FILE_PATH_LITERAL("http_host2_1.localstorage"); 73 FILE_PATH_LITERAL("http_host2_1.localstorage");
76 74
77 const base::FilePath::CharType kDomStorageOrigin3[] = 75 const base::FilePath::CharType kDomStorageOrigin3[] =
78 FILE_PATH_LITERAL("http_host3_1.localstorage"); 76 FILE_PATH_LITERAL("http_host3_1.localstorage");
79 77
80 const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL( 78 const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL(
81 "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage"); 79 "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage");
82 80
83 const quota::StorageType kTemporary = quota::kStorageTypeTemporary;
84 const quota::StorageType kPersistent = quota::kStorageTypePersistent;
85
86 const quota::QuotaClient::ID kClientFile = quota::QuotaClient::kFileSystem;
87
88 void PopulateTestQuotaManagedNonBrowsingData(quota::MockQuotaManager* manager) {
89 manager->AddOrigin(kOriginDevTools, kTemporary, kClientFile, base::Time());
90 manager->AddOrigin(kOriginDevTools, kPersistent, kClientFile, base::Time());
91 manager->AddOrigin(kOriginExt, kTemporary, kClientFile, base::Time());
92 manager->AddOrigin(kOriginExt, kPersistent, kClientFile, base::Time());
93 }
94
95 void PopulateTestQuotaManagedPersistentData(quota::MockQuotaManager* manager) {
96 manager->AddOrigin(kOrigin2, kPersistent, kClientFile, base::Time());
97 manager->AddOrigin(kOrigin3, kPersistent, kClientFile,
98 base::Time::Now() - base::TimeDelta::FromDays(1));
99
100 EXPECT_FALSE(manager->OriginHasData(kOrigin1, kPersistent, kClientFile));
101 EXPECT_TRUE(manager->OriginHasData(kOrigin2, kPersistent, kClientFile));
102 EXPECT_TRUE(manager->OriginHasData(kOrigin3, kPersistent, kClientFile));
103 }
104
105 void PopulateTestQuotaManagedTemporaryData(quota::MockQuotaManager* manager) {
106 manager->AddOrigin(kOrigin1, kTemporary, kClientFile, base::Time::Now());
107 manager->AddOrigin(kOrigin3, kTemporary, kClientFile,
108 base::Time::Now() - base::TimeDelta::FromDays(1));
109
110 EXPECT_TRUE(manager->OriginHasData(kOrigin1, kTemporary, kClientFile));
111 EXPECT_FALSE(manager->OriginHasData(kOrigin2, kTemporary, kClientFile));
112 EXPECT_TRUE(manager->OriginHasData(kOrigin3, kTemporary, kClientFile));
113 }
114
115 void PopulateTestQuotaManagedData(quota::MockQuotaManager* manager) {
116 // Set up kOrigin1 with a temporary quota, kOrigin2 with a persistent
117 // quota, and kOrigin3 with both. kOrigin1 is modified now, kOrigin2
118 // is modified at the beginning of time, and kOrigin3 is modified one day
119 // ago.
120 PopulateTestQuotaManagedPersistentData(manager);
121 PopulateTestQuotaManagedTemporaryData(manager);
122 }
123
124 class AwaitCompletionHelper : public BrowsingDataRemover::Observer { 81 class AwaitCompletionHelper : public BrowsingDataRemover::Observer {
125 public: 82 public:
126 AwaitCompletionHelper() : start_(false), already_quit_(false) {} 83 AwaitCompletionHelper() : start_(false), already_quit_(false) {}
127 virtual ~AwaitCompletionHelper() {} 84 virtual ~AwaitCompletionHelper() {}
128 85
129 void BlockUntilNotified() { 86 void BlockUntilNotified() {
130 if (!already_quit_) { 87 if (!already_quit_) {
131 DCHECK(!start_); 88 DCHECK(!start_);
132 start_ = true; 89 start_ = true;
133 base::MessageLoop::current()->Run(); 90 base::MessageLoop::current()->Run();
(...skipping 22 matching lines...) Expand all
156 113
157 private: 114 private:
158 // Helps prevent from running message_loop, if the callback invoked 115 // Helps prevent from running message_loop, if the callback invoked
159 // immediately. 116 // immediately.
160 bool start_; 117 bool start_;
161 bool already_quit_; 118 bool already_quit_;
162 119
163 DISALLOW_COPY_AND_ASSIGN(AwaitCompletionHelper); 120 DISALLOW_COPY_AND_ASSIGN(AwaitCompletionHelper);
164 }; 121 };
165 122
123 struct StoragePartitionRemovalData {
124 uint32 remove_mask;
125 uint32 quota_storage_remove_mask;
126 GURL remove_origin;
127 base::Time remove_begin;
128 base::Time remove_end;
129 StoragePartition::OriginMatcherFunction origin_matcher;
130
131 StoragePartitionRemovalData() : remove_mask(0),
132 quota_storage_remove_mask(0) {}
133 };
134
135 class TestStoragePartition : public StoragePartition {
136 public:
137 TestStoragePartition() {}
138 virtual ~TestStoragePartition() {}
139
140 // content::StoragePartition implementation.
141 virtual base::FilePath GetPath() OVERRIDE { return base::FilePath(); }
142 virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE {
143 return NULL;
144 }
145 virtual net::URLRequestContextGetter* GetMediaURLRequestContext() OVERRIDE {
146 return NULL;
147 }
148 virtual quota::QuotaManager* GetQuotaManager() OVERRIDE {
149 return NULL;
150 }
151 virtual appcache::AppCacheService* GetAppCacheService() OVERRIDE {
152 return NULL;
153 }
154 virtual fileapi::FileSystemContext* GetFileSystemContext() OVERRIDE {
155 return NULL;
156 }
157 virtual webkit_database::DatabaseTracker* GetDatabaseTracker() OVERRIDE {
158 return NULL;
159 }
160 virtual content::DOMStorageContext* GetDOMStorageContext() OVERRIDE {
161 return NULL;
162 }
163 virtual content::IndexedDBContext* GetIndexedDBContext() OVERRIDE {
164 return NULL;
165 }
166
167 virtual void ClearDataForOrigin(
168 uint32 remove_mask,
169 uint32 quota_storage_remove_mask,
170 const GURL& storage_origin,
171 net::URLRequestContextGetter* rq_context) OVERRIDE {}
172
173 virtual void ClearDataForUnboundedRange(
174 uint32 remove_mask,
175 uint32 quota_storage_remove_mask) OVERRIDE {}
176
177 virtual void ClearDataForRange(uint32 remove_mask,
178 uint32 quota_storage_remove_mask,
179 const base::Time begin,
180 const base::Time end,
181 const base::Closure& callback) OVERRIDE {}
182
183 virtual void ClearDataForOriginWithinRange(
184 uint32 remove_mask,
185 uint32 quota_storage_remove_mask,
186 const GURL& storage_origin,
187 const OriginMatcherFunction& origin_matcher,
188 const base::Time begin,
189 const base::Time end,
190 const base::Closure& callback) OVERRIDE {
191 // Store stuff to verify parameters' correctness later.
192 storage_partition_removal_data_.remove_mask = remove_mask;
193 storage_partition_removal_data_.quota_storage_remove_mask =
194 quota_storage_remove_mask;
195 storage_partition_removal_data_.remove_origin = storage_origin;
196 storage_partition_removal_data_.remove_begin = begin;
197 storage_partition_removal_data_.remove_end = end;
198 storage_partition_removal_data_.origin_matcher = origin_matcher;
199
200 BrowserThread::PostTask(
201 BrowserThread::UI,
202 FROM_HERE,
203 base::Bind(&TestStoragePartition::AsyncRunCallback,
204 base::Unretained(this), callback));
205 }
206
207 StoragePartitionRemovalData GetStoragePartitionRemovalData() {
208 return storage_partition_removal_data_;
209 }
210 private:
211 void AsyncRunCallback(const base::Closure& callback) {
212 callback.Run();
213 }
214
215 StoragePartitionRemovalData storage_partition_removal_data_;
216
217 DISALLOW_COPY_AND_ASSIGN(TestStoragePartition);
218 };
219
166 } // namespace 220 } // namespace
167 221
168 // Testers ------------------------------------------------------------------- 222 // Testers -------------------------------------------------------------------
169 223
170 class RemoveCookieTester { 224 class RemoveCookieTester {
171 public: 225 public:
172 RemoveCookieTester() : get_cookie_success_(false), monster_(NULL) { 226 RemoveCookieTester() : get_cookie_success_(false), monster_(NULL) {
173 } 227 }
174 228
175 // Returns true, if the given cookie exists in the cookie store. 229 // Returns true, if the given cookie exists in the cookie store.
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 // Otherwise we leak memory. 613 // Otherwise we leak memory.
560 profile_.reset(); 614 profile_.reset();
561 base::MessageLoop::current()->RunUntilIdle(); 615 base::MessageLoop::current()->RunUntilIdle();
562 } 616 }
563 617
564 void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period, 618 void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period,
565 int remove_mask, 619 int remove_mask,
566 bool include_protected_origins) { 620 bool include_protected_origins) {
567 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod( 621 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod(
568 profile_.get(), period); 622 profile_.get(), period);
569 remover->OverrideQuotaManagerForTesting(GetMockManager());
570 623
571 AwaitCompletionHelper await_completion; 624 AwaitCompletionHelper await_completion;
572 remover->AddObserver(&await_completion); 625 remover->AddObserver(&await_completion);
573 626
574 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 627 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
575 628
576 // BrowsingDataRemover deletes itself when it completes. 629 // BrowsingDataRemover deletes itself when it completes.
577 int origin_set_mask = BrowsingDataHelper::UNPROTECTED_WEB; 630 int origin_set_mask = BrowsingDataHelper::UNPROTECTED_WEB;
578 if (include_protected_origins) 631 if (include_protected_origins)
579 origin_set_mask |= BrowsingDataHelper::PROTECTED_WEB; 632 origin_set_mask |= BrowsingDataHelper::PROTECTED_WEB;
580 remover->Remove(remove_mask, origin_set_mask); 633 remover->Remove(remove_mask, origin_set_mask);
581 await_completion.BlockUntilNotified(); 634 await_completion.BlockUntilNotified();
582 } 635 }
583 636
584 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, 637 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period,
585 int remove_mask, 638 int remove_mask,
586 const GURL& remove_origin) { 639 const GURL& remove_origin) {
587 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod( 640 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod(
588 profile_.get(), period); 641 profile_.get(), period);
589 remover->OverrideQuotaManagerForTesting(GetMockManager());
590 642
591 AwaitCompletionHelper await_completion; 643 AwaitCompletionHelper await_completion;
592 remover->AddObserver(&await_completion); 644 remover->AddObserver(&await_completion);
593 645
594 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 646 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
595 647
596 // BrowsingDataRemover deletes itself when it completes. 648 // BrowsingDataRemover deletes itself when it completes.
597 remover->RemoveImpl(remove_mask, remove_origin, 649 remover->RemoveImpl(remove_mask, remove_origin,
598 BrowsingDataHelper::UNPROTECTED_WEB); 650 BrowsingDataHelper::UNPROTECTED_WEB);
599 await_completion.BlockUntilNotified(); 651 await_completion.BlockUntilNotified();
600 } 652 }
601 653
654 void BlockUntilStoragePartitionDataRemoved(
655 BrowsingDataRemover::TimePeriod period,
656 int remove_mask,
657 bool include_protected_origins) {
658 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod(
659 profile_.get(), period);
660 TestStoragePartition storage_partition;
661 remover->OverrideStoragePartitionForTesting(&storage_partition);
662
663 AwaitCompletionHelper await_completion;
664 remover->AddObserver(&await_completion);
665
666 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
667
668 // BrowsingDataRemover deletes itself when it completes.
669 int origin_set_mask = BrowsingDataHelper::UNPROTECTED_WEB;
670 if (include_protected_origins)
671 origin_set_mask |= BrowsingDataHelper::PROTECTED_WEB;
672 remover->Remove(remove_mask, origin_set_mask);
673 await_completion.BlockUntilNotified();
674
675 // Save so we can verify later.
676 storage_partition_removal_data_ =
677 storage_partition.GetStoragePartitionRemovalData();
678 }
679
680 void BlockUntilStoragePartitionDataForOriginRemoved(
681 BrowsingDataRemover::TimePeriod period,
682 int remove_mask,
683 const GURL& remove_origin) {
684 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod(
685 profile_.get(), period);
686 TestStoragePartition storage_partition;
687 remover->OverrideStoragePartitionForTesting(&storage_partition);
688
689 AwaitCompletionHelper await_completion;
690 remover->AddObserver(&await_completion);
691
692 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
693
694 // BrowsingDataRemover deletes itself when it completes.
695 remover->RemoveImpl(remove_mask, remove_origin,
696 BrowsingDataHelper::UNPROTECTED_WEB);
697 await_completion.BlockUntilNotified();
698
699 // Save so we can verify later.
700 storage_partition_removal_data_ =
701 storage_partition.GetStoragePartitionRemovalData();
702 }
703
602 TestingProfile* GetProfile() { 704 TestingProfile* GetProfile() {
603 return profile_.get(); 705 return profile_.get();
604 } 706 }
605 707
606 base::Time GetBeginTime() { 708 base::Time GetBeginTime() {
607 return called_with_details_->removal_begin; 709 return called_with_details_->removal_begin;
608 } 710 }
609 711
610 int GetRemovalMask() { 712 int GetRemovalMask() {
611 return called_with_details_->removal_mask; 713 return called_with_details_->removal_mask;
612 } 714 }
613 715
614 int GetOriginSetMask() { 716 int GetOriginSetMask() {
615 return called_with_details_->origin_set_mask; 717 return called_with_details_->origin_set_mask;
616 } 718 }
617 719
618 quota::MockQuotaManager* GetMockManager() { 720 StoragePartitionRemovalData GetStoragePartitionRemovalData() {
619 if (!quota_manager_.get()) { 721 return storage_partition_removal_data_;
620 quota_manager_ = new quota::MockQuotaManager(
621 profile_->IsOffTheRecord(),
622 profile_->GetPath(),
623 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO).get(),
624 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB).get(),
625 profile_->GetExtensionSpecialStoragePolicy());
626 }
627 return quota_manager_.get();
628 } 722 }
629 723
630 // content::NotificationObserver implementation. 724 // content::NotificationObserver implementation.
631 virtual void Observe(int type, 725 virtual void Observe(int type,
632 const content::NotificationSource& source, 726 const content::NotificationSource& source,
633 const content::NotificationDetails& details) OVERRIDE { 727 const content::NotificationDetails& details) OVERRIDE {
634 DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED); 728 DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED);
635 729
636 // We're not taking ownership of the details object, but storing a copy of 730 // We're not taking ownership of the details object, but storing a copy of
637 // it locally. 731 // it locally.
638 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails( 732 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails(
639 *content::Details<BrowsingDataRemover::NotificationDetails>( 733 *content::Details<BrowsingDataRemover::NotificationDetails>(
640 details).ptr())); 734 details).ptr()));
641 735
642 registrar_.RemoveAll(); 736 registrar_.RemoveAll();
643 } 737 }
644 738
645 private: 739 private:
646 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_; 740 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_;
647 content::NotificationRegistrar registrar_; 741 content::NotificationRegistrar registrar_;
648 742
649 content::TestBrowserThreadBundle thread_bundle_; 743 content::TestBrowserThreadBundle thread_bundle_;
650 scoped_ptr<TestingProfile> profile_; 744 scoped_ptr<TestingProfile> profile_;
651 scoped_refptr<quota::MockQuotaManager> quota_manager_; 745
746 StoragePartitionRemovalData storage_partition_removal_data_;
652 747
653 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest); 748 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest);
654 }; 749 };
655 750
656 // Tests --------------------------------------------------------------------- 751 // Tests ---------------------------------------------------------------------
657 752
658 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) { 753 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) {
659 RemoveProfileCookieTester tester(GetProfile()); 754 RemoveProfileCookieTester tester(GetProfile());
660 755
661 tester.AddCookie(); 756 tester.AddCookie();
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 removal_mask, false); 1033 removal_mask, false);
939 EXPECT_EQ(removal_mask, GetRemovalMask()); 1034 EXPECT_EQ(removal_mask, GetRemovalMask());
940 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1035 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
941 1036
942 // Cookie should be gone; history should remain. 1037 // Cookie should be gone; history should remain.
943 EXPECT_FALSE(cookie_tester.ContainsCookie()); 1038 EXPECT_FALSE(cookie_tester.ContainsCookie());
944 EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 1039 EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
945 } 1040 }
946 #endif 1041 #endif
947 1042
948 TEST_F(BrowsingDataRemoverTest, QuotaClientMaskGeneration) {
949 EXPECT_EQ(quota::QuotaClient::kFileSystem,
950 BrowsingDataRemover::GenerateQuotaClientMask(
951 BrowsingDataRemover::REMOVE_FILE_SYSTEMS));
952 EXPECT_EQ(quota::QuotaClient::kDatabase,
953 BrowsingDataRemover::GenerateQuotaClientMask(
954 BrowsingDataRemover::REMOVE_WEBSQL));
955 EXPECT_EQ(quota::QuotaClient::kAppcache,
956 BrowsingDataRemover::GenerateQuotaClientMask(
957 BrowsingDataRemover::REMOVE_APPCACHE));
958 EXPECT_EQ(quota::QuotaClient::kIndexedDatabase,
959 BrowsingDataRemover::GenerateQuotaClientMask(
960 BrowsingDataRemover::REMOVE_INDEXEDDB));
961 EXPECT_EQ(quota::QuotaClient::kFileSystem |
962 quota::QuotaClient::kDatabase |
963 quota::QuotaClient::kAppcache |
964 quota::QuotaClient::kIndexedDatabase,
965 BrowsingDataRemover::GenerateQuotaClientMask(
966 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
967 BrowsingDataRemover::REMOVE_WEBSQL |
968 BrowsingDataRemover::REMOVE_APPCACHE |
969 BrowsingDataRemover::REMOVE_INDEXEDDB));
970 }
971
972 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) { 1043 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) {
973 PopulateTestQuotaManagedData(GetMockManager()); 1044 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
974 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
975 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1045 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
976 BrowsingDataRemover::REMOVE_WEBSQL | 1046 BrowsingDataRemover::REMOVE_WEBSQL |
977 BrowsingDataRemover::REMOVE_APPCACHE | 1047 BrowsingDataRemover::REMOVE_APPCACHE |
978 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1048 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
979 1049
980 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1050 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
981 BrowsingDataRemover::REMOVE_WEBSQL | 1051 BrowsingDataRemover::REMOVE_WEBSQL |
982 BrowsingDataRemover::REMOVE_APPCACHE | 1052 BrowsingDataRemover::REMOVE_APPCACHE |
983 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1053 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
984 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1054 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
985 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1055
986 kClientFile)); 1056 // Verify storage partition related stuffs.
987 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1057 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
988 kClientFile)); 1058 EXPECT_EQ(removal_data.remove_mask,
989 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1059 static_cast<uint32>(
990 kClientFile)); 1060 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
991 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1061 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
992 kClientFile)); 1062 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
993 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1063 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
994 kClientFile)); 1064 EXPECT_EQ(removal_data.quota_storage_remove_mask,
995 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1065 static_cast<uint32>(
996 kClientFile)); 1066 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1067 EXPECT_TRUE(removal_data.remove_origin.is_empty());
997 } 1068 }
998 1069
999 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) { 1070 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) {
1000 PopulateTestQuotaManagedTemporaryData(GetMockManager()); 1071 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1001 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1072 new MockExtensionSpecialStoragePolicy;
1073 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1074
1075 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
1002 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1076 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1003 BrowsingDataRemover::REMOVE_WEBSQL | 1077 BrowsingDataRemover::REMOVE_WEBSQL |
1004 BrowsingDataRemover::REMOVE_APPCACHE | 1078 BrowsingDataRemover::REMOVE_APPCACHE |
1005 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1079 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
1006 1080
1007 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1081 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1008 BrowsingDataRemover::REMOVE_WEBSQL | 1082 BrowsingDataRemover::REMOVE_WEBSQL |
1009 BrowsingDataRemover::REMOVE_APPCACHE | 1083 BrowsingDataRemover::REMOVE_APPCACHE |
1010 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1084 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1011 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1085 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1012 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1086
1013 kClientFile)); 1087 // Verify storage partition related stuffs.
1014 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1088 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1015 kClientFile)); 1089
1016 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1090 EXPECT_EQ(removal_data.remove_mask,
1017 kClientFile)); 1091 static_cast<uint32>(
1018 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1092 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1019 kClientFile)); 1093 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1020 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1094 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1021 kClientFile)); 1095 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1022 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1096 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1023 kClientFile)); 1097 static_cast<uint32>(
1098 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1099 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1100
1101 // Check that all related origin data would be removed, that is, origin
1102 // matcher would match these origin.
1103 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1104 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1105 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1024 } 1106 }
1025 1107
1026 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) { 1108 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) {
1027 PopulateTestQuotaManagedPersistentData(GetMockManager()); 1109 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1028 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1110 new MockExtensionSpecialStoragePolicy;
1111 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1112
1113 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
1029 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1114 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1030 BrowsingDataRemover::REMOVE_WEBSQL | 1115 BrowsingDataRemover::REMOVE_WEBSQL |
1031 BrowsingDataRemover::REMOVE_APPCACHE | 1116 BrowsingDataRemover::REMOVE_APPCACHE |
1032 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1117 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
1033 1118
1034 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1119 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1035 BrowsingDataRemover::REMOVE_WEBSQL | 1120 BrowsingDataRemover::REMOVE_WEBSQL |
1036 BrowsingDataRemover::REMOVE_APPCACHE | 1121 BrowsingDataRemover::REMOVE_APPCACHE |
1037 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1122 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1038 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1123 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1039 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1124
1040 kClientFile)); 1125 // Verify storage partition related stuffs.
1041 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1126 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1042 kClientFile)); 1127
1043 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1128 EXPECT_EQ(removal_data.remove_mask,
1044 kClientFile)); 1129 static_cast<uint32>(
1045 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1130 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1046 kClientFile)); 1131 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1047 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1132 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1048 kClientFile)); 1133 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1049 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1134 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1050 kClientFile)); 1135 static_cast<uint32>(
1136 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1137 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1138
1139 // Check that all related origin data would be removed, that is, origin
1140 // matcher would match these origin.
1141 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1142 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1143 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1051 } 1144 }
1052 1145
1053 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) { 1146 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) {
1054 GetMockManager(); // Creates the QuotaManager instance. 1147 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1148 new MockExtensionSpecialStoragePolicy;
1149 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1055 1150
1056 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1151
1152 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
1057 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1153 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1058 BrowsingDataRemover::REMOVE_WEBSQL | 1154 BrowsingDataRemover::REMOVE_WEBSQL |
1059 BrowsingDataRemover::REMOVE_APPCACHE | 1155 BrowsingDataRemover::REMOVE_APPCACHE |
1060 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1156 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
1061 1157
1062 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1158 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1063 BrowsingDataRemover::REMOVE_WEBSQL | 1159 BrowsingDataRemover::REMOVE_WEBSQL |
1064 BrowsingDataRemover::REMOVE_APPCACHE | 1160 BrowsingDataRemover::REMOVE_APPCACHE |
1065 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1161 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1066 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1162 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1067 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1163
1068 kClientFile)); 1164 // Verify storage partition related stuffs.
1069 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1165 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1070 kClientFile)); 1166
1071 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1167 EXPECT_EQ(removal_data.remove_mask,
1072 kClientFile)); 1168 static_cast<uint32>(
1073 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1169 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1074 kClientFile)); 1170 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1075 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1171 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1076 kClientFile)); 1172 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1077 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1173 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1078 kClientFile)); 1174 static_cast<uint32>(
1175 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1176 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1177
1178 // Check that all related origin data would be removed, that is, origin
1179 // matcher would match these origin.
1180 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1181 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1182 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1079 } 1183 }
1080 1184
1081 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) { 1185 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) {
1082 PopulateTestQuotaManagedData(GetMockManager());
1083
1084 // Remove Origin 1. 1186 // Remove Origin 1.
1085 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 1187 BlockUntilStoragePartitionDataForOriginRemoved(
1188 BrowsingDataRemover::EVERYTHING,
1086 BrowsingDataRemover::REMOVE_APPCACHE | 1189 BrowsingDataRemover::REMOVE_APPCACHE |
1087 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1190 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1088 BrowsingDataRemover::REMOVE_INDEXEDDB | 1191 BrowsingDataRemover::REMOVE_INDEXEDDB |
1089 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1); 1192 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1);
1090 1193
1091 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1194 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1092 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1195 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1093 BrowsingDataRemover::REMOVE_INDEXEDDB | 1196 BrowsingDataRemover::REMOVE_INDEXEDDB |
1094 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1197 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1095 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1198 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1096 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1199
1097 kClientFile)); 1200 // Verify storage partition related stuffs.
1098 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1201 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1099 kClientFile)); 1202
1100 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1203 EXPECT_EQ(removal_data.remove_mask,
1101 kClientFile)); 1204 static_cast<uint32>(
1102 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1205 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1103 kClientFile)); 1206 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1104 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1207 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1105 kClientFile)); 1208 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1106 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1209 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1107 kClientFile)); 1210 static_cast<uint32>(
1211 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1212 EXPECT_EQ(removal_data.remove_origin, kOrigin1);
1108 } 1213 }
1109 1214
1110 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) { 1215 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) {
1111 PopulateTestQuotaManagedData(GetMockManager()); 1216 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::LAST_HOUR,
1112
1113 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR,
1114 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1217 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1115 BrowsingDataRemover::REMOVE_WEBSQL | 1218 BrowsingDataRemover::REMOVE_WEBSQL |
1116 BrowsingDataRemover::REMOVE_APPCACHE | 1219 BrowsingDataRemover::REMOVE_APPCACHE |
1117 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1220 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
1118 1221
1119 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1222 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1120 BrowsingDataRemover::REMOVE_WEBSQL | 1223 BrowsingDataRemover::REMOVE_WEBSQL |
1121 BrowsingDataRemover::REMOVE_APPCACHE | 1224 BrowsingDataRemover::REMOVE_APPCACHE |
1122 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1225 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1123 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1226 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1124 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1227
1125 kClientFile)); 1228 // Verify storage partition related stuffs.
1126 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1229 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1127 kClientFile)); 1230
1128 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1231 EXPECT_EQ(removal_data.remove_mask,
1129 kClientFile)); 1232 static_cast<uint32>(
1130 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1233 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1131 kClientFile)); 1234 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1132 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1235 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1133 kClientFile)); 1236 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1134 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1237
1135 kClientFile)); 1238 // Persistent data would be left out since we are not removing from
1239 // beginning of time.
1240 uint32 expected_quota_mask =
1241 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
1242 EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask);
1243 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1244 // Check removal begin time.
1245 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
1136 } 1246 }
1137 1247
1138 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) { 1248 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) {
1139 PopulateTestQuotaManagedData(GetMockManager()); 1249 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::LAST_WEEK,
1140
1141 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK,
1142 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1250 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1143 BrowsingDataRemover::REMOVE_WEBSQL | 1251 BrowsingDataRemover::REMOVE_WEBSQL |
1144 BrowsingDataRemover::REMOVE_APPCACHE | 1252 BrowsingDataRemover::REMOVE_APPCACHE |
1145 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1253 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
1146 1254
1147 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1255 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1148 BrowsingDataRemover::REMOVE_WEBSQL | 1256 BrowsingDataRemover::REMOVE_WEBSQL |
1149 BrowsingDataRemover::REMOVE_APPCACHE | 1257 BrowsingDataRemover::REMOVE_APPCACHE |
1150 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1258 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1151 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1259 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1152 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1260
1153 kClientFile)); 1261 // Verify storage partition related stuffs.
1154 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1262 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1155 kClientFile)); 1263
1156 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1264 EXPECT_EQ(removal_data.remove_mask,
1157 kClientFile)); 1265 static_cast<uint32>(
1158 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1266 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1159 kClientFile)); 1267 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1160 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1268 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1161 kClientFile)); 1269 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1162 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1270
1163 kClientFile)); 1271 // Persistent data would be left out since we are not removing from
1272 // beginning of time.
1273 uint32 expected_quota_mask =
1274 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
1275 EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask);
1276 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1277 // Check removal begin time.
1278 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
1164 } 1279 }
1165 1280
1166 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) { 1281 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) {
1167 // Protect kOrigin1. 1282 // Protect kOrigin1.
1168 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1283 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1169 new MockExtensionSpecialStoragePolicy; 1284 new MockExtensionSpecialStoragePolicy;
1170 mock_policy->AddProtected(kOrigin1.GetOrigin()); 1285 mock_policy->AddProtected(kOrigin1.GetOrigin());
1171 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1286 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1172 1287
1173 PopulateTestQuotaManagedData(GetMockManager()); 1288 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
1174
1175 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1176 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1289 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1177 BrowsingDataRemover::REMOVE_WEBSQL | 1290 BrowsingDataRemover::REMOVE_WEBSQL |
1178 BrowsingDataRemover::REMOVE_APPCACHE | 1291 BrowsingDataRemover::REMOVE_APPCACHE |
1179 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1292 BrowsingDataRemover::REMOVE_INDEXEDDB, false);
1180 1293
1181 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1294 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1182 BrowsingDataRemover::REMOVE_WEBSQL | 1295 BrowsingDataRemover::REMOVE_WEBSQL |
1183 BrowsingDataRemover::REMOVE_APPCACHE | 1296 BrowsingDataRemover::REMOVE_APPCACHE |
1184 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1297 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1185 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1298 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1186 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1299
1187 kClientFile)); 1300 // Verify storage partition related stuffs.
1188 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1301 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1189 kClientFile)); 1302
1190 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1303 EXPECT_EQ(removal_data.remove_mask,
1191 kClientFile)); 1304 static_cast<uint32>(
1192 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1305 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1193 kClientFile)); 1306 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1194 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1307 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1195 kClientFile)); 1308 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1196 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1309 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1197 kClientFile)); 1310 static_cast<uint32>(
1311 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1312 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1313
1314 // Check OriginMatcherFunction, |kOrigin1| would not match mask since it
1315 // is protected.
1316 EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1317 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1318 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1198 } 1319 }
1199 1320
1200 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) { 1321 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) {
1201 // Protect kOrigin1. 1322 // Protect kOrigin1.
1202 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1323 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1203 new MockExtensionSpecialStoragePolicy; 1324 new MockExtensionSpecialStoragePolicy;
1204 mock_policy->AddProtected(kOrigin1.GetOrigin()); 1325 mock_policy->AddProtected(kOrigin1.GetOrigin());
1205 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1326 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1206 1327
1207 PopulateTestQuotaManagedData(GetMockManager());
1208
1209 // Try to remove kOrigin1. Expect failure. 1328 // Try to remove kOrigin1. Expect failure.
1210 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 1329 BlockUntilStoragePartitionDataForOriginRemoved(
1330 BrowsingDataRemover::EVERYTHING,
1211 BrowsingDataRemover::REMOVE_APPCACHE | 1331 BrowsingDataRemover::REMOVE_APPCACHE |
1212 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1332 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1213 BrowsingDataRemover::REMOVE_INDEXEDDB | 1333 BrowsingDataRemover::REMOVE_INDEXEDDB |
1214 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1); 1334 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1);
1215 1335
1216 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1336 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1217 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1337 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1218 BrowsingDataRemover::REMOVE_INDEXEDDB | 1338 BrowsingDataRemover::REMOVE_INDEXEDDB |
1219 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1339 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1220 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1340 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1221 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1341
1222 kClientFile)); 1342 // Verify storage partition related stuffs.
1223 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1343 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1224 kClientFile)); 1344
1225 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1345 EXPECT_EQ(removal_data.remove_mask,
1226 kClientFile)); 1346 static_cast<uint32>(
1227 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1347 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1228 kClientFile)); 1348 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1229 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1349 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1230 kClientFile)); 1350 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1231 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1351 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1232 kClientFile)); 1352 static_cast<uint32>(
1353 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1354 EXPECT_EQ(removal_data.remove_origin, kOrigin1);
1355
1356 // Check OriginMatcherFunction, |kOrigin1| would not match mask since it
1357 // is protected.
1358 EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1359 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1360 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1233 } 1361 }
1234 1362
1235 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) { 1363 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) {
1236 // Protect kOrigin1. 1364 // Protect kOrigin1.
1237 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1365 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1238 new MockExtensionSpecialStoragePolicy; 1366 new MockExtensionSpecialStoragePolicy;
1239 mock_policy->AddProtected(kOrigin1.GetOrigin()); 1367 mock_policy->AddProtected(kOrigin1.GetOrigin());
1240 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1368 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1241 1369
1242 PopulateTestQuotaManagedData(GetMockManager());
1243
1244 // Try to remove kOrigin1. Expect success. 1370 // Try to remove kOrigin1. Expect success.
1245 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1371 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
1246 BrowsingDataRemover::REMOVE_APPCACHE | 1372 BrowsingDataRemover::REMOVE_APPCACHE |
1247 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1373 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1248 BrowsingDataRemover::REMOVE_INDEXEDDB | 1374 BrowsingDataRemover::REMOVE_INDEXEDDB |
1249 BrowsingDataRemover::REMOVE_WEBSQL, true); 1375 BrowsingDataRemover::REMOVE_WEBSQL, true);
1250 1376
1251 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1377 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1252 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1378 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1253 BrowsingDataRemover::REMOVE_INDEXEDDB | 1379 BrowsingDataRemover::REMOVE_INDEXEDDB |
1254 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1380 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1255 EXPECT_EQ(BrowsingDataHelper::PROTECTED_WEB | 1381 EXPECT_EQ(BrowsingDataHelper::PROTECTED_WEB |
1256 BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1382 BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1257 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1383
1258 kClientFile)); 1384 // Verify storage partition related stuffs.
1259 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1385 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1260 kClientFile)); 1386
1261 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1387 EXPECT_EQ(removal_data.remove_mask,
1262 kClientFile)); 1388 static_cast<uint32>(
1263 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1389 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1264 kClientFile)); 1390 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1265 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1391 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1266 kClientFile)); 1392 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1267 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1393 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1268 kClientFile)); 1394 static_cast<uint32>(
1395 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1396 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1397
1398 // Check OriginMatcherFunction, |kOrigin1| would match mask since we
1399 // would have 'protected' specified in origin_set_mask.
1400 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1401 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1402 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1269 } 1403 }
1270 1404
1271 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) { 1405 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) {
1272 PopulateTestQuotaManagedNonBrowsingData(GetMockManager()); 1406 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1407 new MockExtensionSpecialStoragePolicy;
1408 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1273 1409
1274 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1410 BlockUntilStoragePartitionDataRemoved(BrowsingDataRemover::EVERYTHING,
1275 BrowsingDataRemover::REMOVE_APPCACHE | 1411 BrowsingDataRemover::REMOVE_APPCACHE |
1276 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1412 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1277 BrowsingDataRemover::REMOVE_INDEXEDDB | 1413 BrowsingDataRemover::REMOVE_INDEXEDDB |
1278 BrowsingDataRemover::REMOVE_WEBSQL, false); 1414 BrowsingDataRemover::REMOVE_WEBSQL, false);
1279 1415
1280 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1416 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1281 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1417 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1282 BrowsingDataRemover::REMOVE_INDEXEDDB | 1418 BrowsingDataRemover::REMOVE_INDEXEDDB |
1283 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1419 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1284 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1420 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1285 1421
1286 // Check that extension and devtools data isn't removed. 1422 // Verify storage partition related stuffs.
1287 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginExt, kTemporary, 1423 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1288 kClientFile)); 1424
1289 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginExt, kPersistent, 1425 EXPECT_EQ(removal_data.remove_mask,
1290 kClientFile)); 1426 static_cast<uint32>(
1291 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginDevTools, kTemporary, 1427 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1292 kClientFile)); 1428 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1293 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginDevTools, kPersistent, 1429 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1294 kClientFile)); 1430 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1431 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1432 static_cast<uint32>(
1433 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1434 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1435
1436 // Check that extension and devtools data wouldn't be removed, that is,
1437 // origin matcher would not match these origin.
1438 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy));
1439 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginDevTools, mock_policy));
1295 } 1440 }
1296 1441
1297 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { 1442 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) {
1298 RemoveHistoryTester tester; 1443 RemoveHistoryTester tester;
1299 ASSERT_TRUE(tester.Init(GetProfile())); 1444 ASSERT_TRUE(tester.Init(GetProfile()));
1300 1445
1301 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); 1446 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
1302 1447
1303 tester.AddHistory(kOrigin1, base::Time::Now()); 1448 tester.AddHistory(kOrigin1, base::Time::Now());
1304 tester.AddHistory(kOrigin2, two_hours_ago); 1449 tester.AddHistory(kOrigin2, two_hours_ago);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 BlockUntilBrowsingDataRemoved( 1529 BlockUntilBrowsingDataRemoved(
1385 BrowsingDataRemover::LAST_HOUR, 1530 BrowsingDataRemover::LAST_HOUR,
1386 BrowsingDataRemover::REMOVE_HISTORY, false); 1531 BrowsingDataRemover::REMOVE_HISTORY, false);
1387 1532
1388 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 1533 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask());
1389 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1534 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1390 EXPECT_TRUE(tester.HasOrigin(std::string())); 1535 EXPECT_TRUE(tester.HasOrigin(std::string()));
1391 EXPECT_FALSE(tester.HasOrigin(kWebOrigin)); 1536 EXPECT_FALSE(tester.HasOrigin(kWebOrigin));
1392 EXPECT_TRUE(tester.HasOrigin(kChromeOrigin)); 1537 EXPECT_TRUE(tester.HasOrigin(kChromeOrigin));
1393 } 1538 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698