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

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: rebase @tott. 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "content/public/test/test_browser_thread.h" 49 #include "content/public/test/test_browser_thread.h"
50 #include "content/public/test/test_browser_thread_bundle.h" 50 #include "content/public/test/test_browser_thread_bundle.h"
51 #include "net/cookies/cookie_monster.h" 51 #include "net/cookies/cookie_monster.h"
52 #include "net/ssl/server_bound_cert_service.h" 52 #include "net/ssl/server_bound_cert_service.h"
53 #include "net/ssl/server_bound_cert_store.h" 53 #include "net/ssl/server_bound_cert_store.h"
54 #include "net/ssl/ssl_client_cert_type.h" 54 #include "net/ssl/ssl_client_cert_type.h"
55 #include "net/url_request/url_request_context.h" 55 #include "net/url_request/url_request_context.h"
56 #include "net/url_request/url_request_context_getter.h" 56 #include "net/url_request/url_request_context_getter.h"
57 #include "testing/gmock/include/gmock/gmock.h" 57 #include "testing/gmock/include/gmock/gmock.h"
58 #include "testing/gtest/include/gtest/gtest.h" 58 #include "testing/gtest/include/gtest/gtest.h"
59 #include "webkit/browser/quota/mock_quota_manager.h"
60 #include "webkit/browser/quota/quota_manager.h"
61 #include "webkit/common/quota/quota_types.h"
62 59
63 using content::BrowserThread; 60 using content::BrowserThread;
61 using content::StoragePartition;
64 using testing::_; 62 using testing::_;
65 using testing::Invoke; 63 using testing::Invoke;
66 using testing::WithArgs; 64 using testing::WithArgs;
67 65
68 namespace { 66 namespace {
69 67
70 const char kTestOrigin1[] = "http://host1:1/"; 68 const char kTestOrigin1[] = "http://host1:1/";
71 const char kTestOrigin2[] = "http://host2:1/"; 69 const char kTestOrigin2[] = "http://host2:1/";
72 const char kTestOrigin3[] = "http://host3:1/"; 70 const char kTestOrigin3[] = "http://host3:1/";
73 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; 71 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
(...skipping 14 matching lines...) Expand all
88 86
89 const base::FilePath::CharType kDomStorageOrigin2[] = 87 const base::FilePath::CharType kDomStorageOrigin2[] =
90 FILE_PATH_LITERAL("http_host2_1.localstorage"); 88 FILE_PATH_LITERAL("http_host2_1.localstorage");
91 89
92 const base::FilePath::CharType kDomStorageOrigin3[] = 90 const base::FilePath::CharType kDomStorageOrigin3[] =
93 FILE_PATH_LITERAL("http_host3_1.localstorage"); 91 FILE_PATH_LITERAL("http_host3_1.localstorage");
94 92
95 const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL( 93 const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL(
96 "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage"); 94 "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage");
97 95
98 const quota::StorageType kTemporary = quota::kStorageTypeTemporary;
99 const quota::StorageType kPersistent = quota::kStorageTypePersistent;
100
101 const quota::QuotaClient::ID kClientFile = quota::QuotaClient::kFileSystem;
102
103 void PopulateTestQuotaManagedNonBrowsingData(quota::MockQuotaManager* manager) {
104 manager->AddOrigin(kOriginDevTools, kTemporary, kClientFile, base::Time());
105 manager->AddOrigin(kOriginDevTools, kPersistent, kClientFile, base::Time());
106 manager->AddOrigin(kOriginExt, kTemporary, kClientFile, base::Time());
107 manager->AddOrigin(kOriginExt, kPersistent, kClientFile, base::Time());
108 }
109
110 void PopulateTestQuotaManagedPersistentData(quota::MockQuotaManager* manager) {
111 manager->AddOrigin(kOrigin2, kPersistent, kClientFile, base::Time());
112 manager->AddOrigin(kOrigin3, kPersistent, kClientFile,
113 base::Time::Now() - base::TimeDelta::FromDays(1));
114
115 EXPECT_FALSE(manager->OriginHasData(kOrigin1, kPersistent, kClientFile));
116 EXPECT_TRUE(manager->OriginHasData(kOrigin2, kPersistent, kClientFile));
117 EXPECT_TRUE(manager->OriginHasData(kOrigin3, kPersistent, kClientFile));
118 }
119
120 void PopulateTestQuotaManagedTemporaryData(quota::MockQuotaManager* manager) {
121 manager->AddOrigin(kOrigin1, kTemporary, kClientFile, base::Time::Now());
122 manager->AddOrigin(kOrigin3, kTemporary, kClientFile,
123 base::Time::Now() - base::TimeDelta::FromDays(1));
124
125 EXPECT_TRUE(manager->OriginHasData(kOrigin1, kTemporary, kClientFile));
126 EXPECT_FALSE(manager->OriginHasData(kOrigin2, kTemporary, kClientFile));
127 EXPECT_TRUE(manager->OriginHasData(kOrigin3, kTemporary, kClientFile));
128 }
129
130 void PopulateTestQuotaManagedData(quota::MockQuotaManager* manager) {
131 // Set up kOrigin1 with a temporary quota, kOrigin2 with a persistent
132 // quota, and kOrigin3 with both. kOrigin1 is modified now, kOrigin2
133 // is modified at the beginning of time, and kOrigin3 is modified one day
134 // ago.
135 PopulateTestQuotaManagedPersistentData(manager);
136 PopulateTestQuotaManagedTemporaryData(manager);
137 }
138
139 class AwaitCompletionHelper : public BrowsingDataRemover::Observer { 96 class AwaitCompletionHelper : public BrowsingDataRemover::Observer {
140 public: 97 public:
141 AwaitCompletionHelper() : start_(false), already_quit_(false) {} 98 AwaitCompletionHelper() : start_(false), already_quit_(false) {}
142 virtual ~AwaitCompletionHelper() {} 99 virtual ~AwaitCompletionHelper() {}
143 100
144 void BlockUntilNotified() { 101 void BlockUntilNotified() {
145 if (!already_quit_) { 102 if (!already_quit_) {
146 DCHECK(!start_); 103 DCHECK(!start_);
147 start_ = true; 104 start_ = true;
148 base::MessageLoop::current()->Run(); 105 base::MessageLoop::current()->Run();
(...skipping 30 matching lines...) Expand all
179 }; 136 };
180 137
181 #if defined(OS_CHROMEOS) 138 #if defined(OS_CHROMEOS)
182 void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) { 139 void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) {
183 base::MessageLoop::current()->PostTask( 140 base::MessageLoop::current()->PostTask(
184 FROM_HERE, 141 FROM_HERE,
185 base::Bind(callback, chromeos::DBUS_METHOD_CALL_SUCCESS, true)); 142 base::Bind(callback, chromeos::DBUS_METHOD_CALL_SUCCESS, true));
186 } 143 }
187 #endif 144 #endif
188 145
146 struct StoragePartitionRemovalData {
147 uint32 remove_mask;
148 uint32 quota_storage_remove_mask;
149 GURL remove_origin;
150 base::Time remove_begin;
151 base::Time remove_end;
152 StoragePartition::OriginMatcherFunction origin_matcher;
153
154 StoragePartitionRemovalData() : remove_mask(0),
155 quota_storage_remove_mask(0) {}
156 };
157
158 class TestStoragePartition : public StoragePartition {
159 public:
160 TestStoragePartition() {}
161 virtual ~TestStoragePartition() {}
162
163 // content::StoragePartition implementation.
164 virtual base::FilePath GetPath() OVERRIDE { return base::FilePath(); }
165 virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE {
166 return NULL;
167 }
168 virtual net::URLRequestContextGetter* GetMediaURLRequestContext() OVERRIDE {
169 return NULL;
170 }
171 virtual quota::QuotaManager* GetQuotaManager() OVERRIDE {
172 return NULL;
173 }
174 virtual appcache::AppCacheService* GetAppCacheService() OVERRIDE {
175 return NULL;
176 }
177 virtual fileapi::FileSystemContext* GetFileSystemContext() OVERRIDE {
178 return NULL;
179 }
180 virtual webkit_database::DatabaseTracker* GetDatabaseTracker() OVERRIDE {
181 return NULL;
182 }
183 virtual content::DOMStorageContext* GetDOMStorageContext() OVERRIDE {
184 return NULL;
185 }
186 virtual content::IndexedDBContext* GetIndexedDBContext() OVERRIDE {
187 return NULL;
188 }
189
190 virtual void ClearDataForOrigin(
191 uint32 remove_mask,
192 uint32 quota_storage_remove_mask,
193 const GURL& storage_origin,
194 net::URLRequestContextGetter* rq_context) OVERRIDE {}
195
196 virtual void ClearData(uint32 remove_mask,
197 uint32 quota_storage_remove_mask,
198 const GURL* storage_origin,
199 const OriginMatcherFunction& origin_matcher,
200 const base::Time begin,
201 const base::Time end,
202 const base::Closure& callback) OVERRIDE {
203 // Store stuff to verify parameters' correctness later.
204 storage_partition_removal_data_.remove_mask = remove_mask;
205 storage_partition_removal_data_.quota_storage_remove_mask =
206 quota_storage_remove_mask;
207 storage_partition_removal_data_.remove_origin =
208 storage_origin ? *storage_origin : GURL();
209 storage_partition_removal_data_.remove_begin = begin;
210 storage_partition_removal_data_.remove_end = end;
211 storage_partition_removal_data_.origin_matcher = origin_matcher;
212
213 BrowserThread::PostTask(
214 BrowserThread::UI,
215 FROM_HERE,
216 base::Bind(&TestStoragePartition::AsyncRunCallback,
217 base::Unretained(this), callback));
218 }
219
220 StoragePartitionRemovalData GetStoragePartitionRemovalData() {
221 return storage_partition_removal_data_;
222 }
223 private:
224 void AsyncRunCallback(const base::Closure& callback) {
225 callback.Run();
226 }
227
228 StoragePartitionRemovalData storage_partition_removal_data_;
229
230 DISALLOW_COPY_AND_ASSIGN(TestStoragePartition);
231 };
232
189 } // namespace 233 } // namespace
190 234
191 // Testers ------------------------------------------------------------------- 235 // Testers -------------------------------------------------------------------
192 236
193 class RemoveCookieTester { 237 class RemoveCookieTester {
194 public: 238 public:
195 RemoveCookieTester() : get_cookie_success_(false), monster_(NULL) { 239 RemoveCookieTester() : get_cookie_success_(false), monster_(NULL) {
196 } 240 }
197 241
198 // Returns true, if the given cookie exists in the cookie store. 242 // Returns true, if the given cookie exists in the cookie store.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 await_completion_.Notify(); 279 await_completion_.Notify();
236 } 280 }
237 281
238 bool get_cookie_success_; 282 bool get_cookie_success_;
239 AwaitCompletionHelper await_completion_; 283 AwaitCompletionHelper await_completion_;
240 net::CookieStore* monster_; 284 net::CookieStore* monster_;
241 285
242 DISALLOW_COPY_AND_ASSIGN(RemoveCookieTester); 286 DISALLOW_COPY_AND_ASSIGN(RemoveCookieTester);
243 }; 287 };
244 288
245 class RemoveProfileCookieTester : public RemoveCookieTester {
246 public:
247 explicit RemoveProfileCookieTester(TestingProfile* profile) {
248 SetMonster(profile->GetRequestContext()->GetURLRequestContext()->
249 cookie_store()->GetCookieMonster());
250 }
251 };
252
253 #if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING) 289 #if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING)
254 class RemoveSafeBrowsingCookieTester : public RemoveCookieTester { 290 class RemoveSafeBrowsingCookieTester : public RemoveCookieTester {
255 public: 291 public:
256 RemoveSafeBrowsingCookieTester() 292 RemoveSafeBrowsingCookieTester()
257 : browser_process_(TestingBrowserProcess::GetGlobal()) { 293 : browser_process_(TestingBrowserProcess::GetGlobal()) {
258 scoped_refptr<SafeBrowsingService> sb_service = 294 scoped_refptr<SafeBrowsingService> sb_service =
259 SafeBrowsingService::CreateSafeBrowsingService(); 295 SafeBrowsingService::CreateSafeBrowsingService();
260 browser_process_->SetSafeBrowsingService(sb_service.get()); 296 browser_process_->SetSafeBrowsingService(sb_service.get());
261 sb_service->Initialize(); 297 sb_service->Initialize();
262 base::MessageLoop::current()->RunUntilIdle(); 298 base::MessageLoop::current()->RunUntilIdle();
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // Otherwise we leak memory. 618 // Otherwise we leak memory.
583 profile_.reset(); 619 profile_.reset();
584 base::MessageLoop::current()->RunUntilIdle(); 620 base::MessageLoop::current()->RunUntilIdle();
585 } 621 }
586 622
587 void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period, 623 void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period,
588 int remove_mask, 624 int remove_mask,
589 bool include_protected_origins) { 625 bool include_protected_origins) {
590 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod( 626 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod(
591 profile_.get(), period); 627 profile_.get(), period);
592 remover->OverrideQuotaManagerForTesting(GetMockManager()); 628
629 TestStoragePartition storage_partition;
630 remover->OverrideStoragePartitionForTesting(&storage_partition);
593 631
594 AwaitCompletionHelper await_completion; 632 AwaitCompletionHelper await_completion;
595 remover->AddObserver(&await_completion); 633 remover->AddObserver(&await_completion);
596 634
597 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 635 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
598 636
599 // BrowsingDataRemover deletes itself when it completes. 637 // BrowsingDataRemover deletes itself when it completes.
600 int origin_set_mask = BrowsingDataHelper::UNPROTECTED_WEB; 638 int origin_set_mask = BrowsingDataHelper::UNPROTECTED_WEB;
601 if (include_protected_origins) 639 if (include_protected_origins)
602 origin_set_mask |= BrowsingDataHelper::PROTECTED_WEB; 640 origin_set_mask |= BrowsingDataHelper::PROTECTED_WEB;
603 remover->Remove(remove_mask, origin_set_mask); 641 remover->Remove(remove_mask, origin_set_mask);
604 await_completion.BlockUntilNotified(); 642 await_completion.BlockUntilNotified();
643
644 // Save so we can verify later.
645 storage_partition_removal_data_ =
646 storage_partition.GetStoragePartitionRemovalData();
605 } 647 }
606 648
607 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, 649 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period,
608 int remove_mask, 650 int remove_mask,
609 const GURL& remove_origin) { 651 const GURL& remove_origin) {
610 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod( 652 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod(
611 profile_.get(), period); 653 profile_.get(), period);
612 remover->OverrideQuotaManagerForTesting(GetMockManager()); 654 TestStoragePartition storage_partition;
655 remover->OverrideStoragePartitionForTesting(&storage_partition);
613 656
614 AwaitCompletionHelper await_completion; 657 AwaitCompletionHelper await_completion;
615 remover->AddObserver(&await_completion); 658 remover->AddObserver(&await_completion);
616 659
617 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 660 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
618 661
619 // BrowsingDataRemover deletes itself when it completes. 662 // BrowsingDataRemover deletes itself when it completes.
620 remover->RemoveImpl(remove_mask, remove_origin, 663 remover->RemoveImpl(remove_mask, remove_origin,
621 BrowsingDataHelper::UNPROTECTED_WEB); 664 BrowsingDataHelper::UNPROTECTED_WEB);
622 await_completion.BlockUntilNotified(); 665 await_completion.BlockUntilNotified();
666
667 // Save so we can verify later.
668 storage_partition_removal_data_ =
669 storage_partition.GetStoragePartitionRemovalData();
623 } 670 }
624 671
625 TestingProfile* GetProfile() { 672 TestingProfile* GetProfile() {
626 return profile_.get(); 673 return profile_.get();
627 } 674 }
628 675
629 base::Time GetBeginTime() { 676 base::Time GetBeginTime() {
630 return called_with_details_->removal_begin; 677 return called_with_details_->removal_begin;
631 } 678 }
632 679
633 int GetRemovalMask() { 680 int GetRemovalMask() {
634 return called_with_details_->removal_mask; 681 return called_with_details_->removal_mask;
635 } 682 }
636 683
637 int GetOriginSetMask() { 684 int GetOriginSetMask() {
638 return called_with_details_->origin_set_mask; 685 return called_with_details_->origin_set_mask;
639 } 686 }
640 687
641 quota::MockQuotaManager* GetMockManager() { 688 StoragePartitionRemovalData GetStoragePartitionRemovalData() {
642 if (!quota_manager_.get()) { 689 return storage_partition_removal_data_;
643 quota_manager_ = new quota::MockQuotaManager(
644 profile_->IsOffTheRecord(),
645 profile_->GetPath(),
646 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO).get(),
647 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB).get(),
648 profile_->GetExtensionSpecialStoragePolicy());
649 }
650 return quota_manager_.get();
651 } 690 }
652 691
653 // content::NotificationObserver implementation. 692 // content::NotificationObserver implementation.
654 virtual void Observe(int type, 693 virtual void Observe(int type,
655 const content::NotificationSource& source, 694 const content::NotificationSource& source,
656 const content::NotificationDetails& details) OVERRIDE { 695 const content::NotificationDetails& details) OVERRIDE {
657 DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED); 696 DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED);
658 697
659 // We're not taking ownership of the details object, but storing a copy of 698 // We're not taking ownership of the details object, but storing a copy of
660 // it locally. 699 // it locally.
661 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails( 700 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails(
662 *content::Details<BrowsingDataRemover::NotificationDetails>( 701 *content::Details<BrowsingDataRemover::NotificationDetails>(
663 details).ptr())); 702 details).ptr()));
664 703
665 registrar_.RemoveAll(); 704 registrar_.RemoveAll();
666 } 705 }
667 706
668 private: 707 private:
669 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_; 708 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_;
670 content::NotificationRegistrar registrar_; 709 content::NotificationRegistrar registrar_;
671 710
672 content::TestBrowserThreadBundle thread_bundle_; 711 content::TestBrowserThreadBundle thread_bundle_;
673 scoped_ptr<TestingProfile> profile_; 712 scoped_ptr<TestingProfile> profile_;
674 scoped_refptr<quota::MockQuotaManager> quota_manager_; 713
714 StoragePartitionRemovalData storage_partition_removal_data_;
675 715
676 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest); 716 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest);
677 }; 717 };
678 718
679 // Tests --------------------------------------------------------------------- 719 // Tests ---------------------------------------------------------------------
680 720
681 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) { 721 TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) {
682 RemoveProfileCookieTester tester(GetProfile());
683
684 tester.AddCookie();
685 ASSERT_TRUE(tester.ContainsCookie());
686
687 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 722 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
688 BrowsingDataRemover::REMOVE_COOKIES, false); 723 BrowsingDataRemover::REMOVE_COOKIES,
724 false);
689 725
690 EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask()); 726 EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask());
691 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 727 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
692 EXPECT_FALSE(tester.ContainsCookie()); 728
729 // Verify that storage partition was instructed to remove the cookies.
730 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
731 EXPECT_EQ(removal_data.remove_mask,
732 static_cast<uint32>(
733 StoragePartition::REMOVE_DATA_MASK_COOKIES));
734 EXPECT_EQ(removal_data.quota_storage_remove_mask,
735 static_cast<uint32>(
736 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
737 EXPECT_TRUE(removal_data.remove_origin.is_empty());
738 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
693 } 739 }
694 740
695 TEST_F(BrowsingDataRemoverTest, RemoveCookieLastHour) { 741 TEST_F(BrowsingDataRemoverTest, RemoveCookieLastHour) {
696 RemoveProfileCookieTester tester(GetProfile());
697
698 tester.AddCookie();
699 ASSERT_TRUE(tester.ContainsCookie());
700
701 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 742 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR,
702 BrowsingDataRemover::REMOVE_COOKIES, false); 743 BrowsingDataRemover::REMOVE_COOKIES,
744 false);
703 745
704 EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask()); 746 EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask());
705 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 747 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
706 EXPECT_FALSE(tester.ContainsCookie()); 748
749 // Verify that storage partition was instructed to remove the cookies.
750 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
751 EXPECT_EQ(removal_data.remove_mask,
752 static_cast<uint32>(
753 StoragePartition::REMOVE_DATA_MASK_COOKIES));
754 // Removing with time period other than EVERYTHING should not clear
755 // persistent storage data.
756 EXPECT_EQ(removal_data.quota_storage_remove_mask,
757 static_cast<uint32>(
758 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL &
759 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT));
760 EXPECT_TRUE(removal_data.remove_origin.is_empty());
761 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
707 } 762 }
708 763
709 #if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING) 764 #if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING)
710 TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieForever) { 765 TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieForever) {
711 RemoveSafeBrowsingCookieTester tester; 766 RemoveSafeBrowsingCookieTester tester;
712 767
713 tester.AddCookie(); 768 tester.AddCookie();
714 ASSERT_TRUE(tester.ContainsCookie()); 769 ASSERT_TRUE(tester.ContainsCookie());
715 770
716 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 771 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 EXPECT_EQ(kTestOrigin2, certs.front().server_identifier()); 833 EXPECT_EQ(kTestOrigin2, certs.front().server_identifier());
779 } 834 }
780 835
781 TEST_F(BrowsingDataRemoverTest, RemoveUnprotectedLocalStorageForever) { 836 TEST_F(BrowsingDataRemoverTest, RemoveUnprotectedLocalStorageForever) {
782 // Protect kOrigin1. 837 // Protect kOrigin1.
783 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 838 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
784 new MockExtensionSpecialStoragePolicy; 839 new MockExtensionSpecialStoragePolicy;
785 mock_policy->AddProtected(kOrigin1.GetOrigin()); 840 mock_policy->AddProtected(kOrigin1.GetOrigin());
786 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 841 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
787 842
788 RemoveLocalStorageTester tester(GetProfile());
789
790 tester.AddDOMStorageTestData();
791 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin1));
792 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin2));
793 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin3));
794 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOriginExt));
795
796 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 843 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
797 BrowsingDataRemover::REMOVE_LOCAL_STORAGE, false); 844 BrowsingDataRemover::REMOVE_LOCAL_STORAGE,
845 false);
798 846
799 EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask()); 847 EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask());
800 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 848 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
801 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin1)); 849
802 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin2)); 850 // Verify that storage partition was instructed to remove the data correctly.
803 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin3)); 851 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
804 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOriginExt)); 852 EXPECT_EQ(removal_data.remove_mask,
853 static_cast<uint32>(
854 StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE));
855 EXPECT_EQ(removal_data.quota_storage_remove_mask,
856 static_cast<uint32>(
857 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
858 EXPECT_TRUE(removal_data.remove_origin.is_empty());
859 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
860
861 // Check origin matcher.
862 EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
863 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
864 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
865 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy));
805 } 866 }
806 867
807 TEST_F(BrowsingDataRemoverTest, RemoveProtectedLocalStorageForever) { 868 TEST_F(BrowsingDataRemoverTest, RemoveProtectedLocalStorageForever) {
808 // Protect kOrigin1. 869 // Protect kOrigin1.
809 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 870 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
810 new MockExtensionSpecialStoragePolicy; 871 new MockExtensionSpecialStoragePolicy;
811 mock_policy->AddProtected(kOrigin1.GetOrigin()); 872 mock_policy->AddProtected(kOrigin1.GetOrigin());
812 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 873 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
813 874
814 RemoveLocalStorageTester tester(GetProfile());
815
816 tester.AddDOMStorageTestData();
817 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin1));
818 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin2));
819 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin3));
820 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOriginExt));
821
822 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 875 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
823 BrowsingDataRemover::REMOVE_LOCAL_STORAGE, true); 876 BrowsingDataRemover::REMOVE_LOCAL_STORAGE,
877 true);
824 878
825 EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask()); 879 EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask());
826 EXPECT_EQ(BrowsingDataHelper::PROTECTED_WEB | 880 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB |
827 BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 881 BrowsingDataHelper::PROTECTED_WEB, GetOriginSetMask());
828 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin1)); 882
829 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin2)); 883 // Verify that storage partition was instructed to remove the data correctly.
830 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin3)); 884 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
831 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOriginExt)); 885 EXPECT_EQ(removal_data.remove_mask,
886 static_cast<uint32>(
887 StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE));
888 EXPECT_EQ(removal_data.quota_storage_remove_mask,
889 static_cast<uint32>(
890 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
891 EXPECT_TRUE(removal_data.remove_origin.is_empty());
892 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
893
894 // Check origin matcher all http origin will match since we specified
895 // both protected and unprotected.
896 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
897 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
898 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
899 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy));
832 } 900 }
833 901
834 TEST_F(BrowsingDataRemoverTest, RemoveLocalStorageForLastWeek) { 902 TEST_F(BrowsingDataRemoverTest, RemoveLocalStorageForLastWeek) {
835 RemoveLocalStorageTester tester(GetProfile()); 903 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
836 904 new MockExtensionSpecialStoragePolicy;
837 tester.AddDOMStorageTestData(); 905 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
838 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin1));
839 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin2));
840 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin3));
841 906
842 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK, 907 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK,
843 BrowsingDataRemover::REMOVE_LOCAL_STORAGE, false); 908 BrowsingDataRemover::REMOVE_LOCAL_STORAGE,
909 false);
844 910
845 EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask()); 911 EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask());
846 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 912 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
847 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin1)); 913
848 EXPECT_FALSE(tester.DOMStorageExistsForOrigin(kOrigin2)); 914 // Verify that storage partition was instructed to remove the data correctly.
849 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOrigin3)); 915 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
850 EXPECT_TRUE(tester.DOMStorageExistsForOrigin(kOriginExt)); 916 EXPECT_EQ(removal_data.remove_mask,
917 static_cast<uint32>(
918 StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE));
919 // Persistent storage won't be deleted.
920 EXPECT_EQ(removal_data.quota_storage_remove_mask,
921 static_cast<uint32>(
922 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL &
923 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT));
924 EXPECT_TRUE(removal_data.remove_origin.is_empty());
925 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
926
927 // Check origin matcher.
928 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
929 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
930 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
931 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy));
851 } 932 }
852 933
853 TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) { 934 TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) {
854 RemoveHistoryTester tester; 935 RemoveHistoryTester tester;
855 ASSERT_TRUE(tester.Init(GetProfile())); 936 ASSERT_TRUE(tester.Init(GetProfile()));
856 937
857 tester.AddHistory(kOrigin1, base::Time::Now()); 938 tester.AddHistory(kOrigin1, base::Time::Now());
858 ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1)); 939 ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
859 940
860 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 941 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 } 993 }
913 #endif 994 #endif
914 995
915 TEST_F(BrowsingDataRemoverTest, RemoveMultipleTypes) { 996 TEST_F(BrowsingDataRemoverTest, RemoveMultipleTypes) {
916 // Add some history. 997 // Add some history.
917 RemoveHistoryTester history_tester; 998 RemoveHistoryTester history_tester;
918 ASSERT_TRUE(history_tester.Init(GetProfile())); 999 ASSERT_TRUE(history_tester.Init(GetProfile()));
919 history_tester.AddHistory(kOrigin1, base::Time::Now()); 1000 history_tester.AddHistory(kOrigin1, base::Time::Now());
920 ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 1001 ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
921 1002
922 // Add some cookies.
923 RemoveProfileCookieTester cookie_tester(GetProfile());
924 cookie_tester.AddCookie();
925 ASSERT_TRUE(cookie_tester.ContainsCookie());
926
927 int removal_mask = BrowsingDataRemover::REMOVE_HISTORY | 1003 int removal_mask = BrowsingDataRemover::REMOVE_HISTORY |
928 BrowsingDataRemover::REMOVE_COOKIES; 1004 BrowsingDataRemover::REMOVE_COOKIES;
929 1005
930 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1006 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
931 removal_mask, false); 1007 removal_mask, false);
932 1008
933 EXPECT_EQ(removal_mask, GetRemovalMask()); 1009 EXPECT_EQ(removal_mask, GetRemovalMask());
934 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1010 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
935 EXPECT_FALSE(history_tester.HistoryContainsURL(kOrigin1)); 1011 EXPECT_FALSE(history_tester.HistoryContainsURL(kOrigin1));
936 EXPECT_FALSE(cookie_tester.ContainsCookie()); 1012
1013 // The cookie would be deleted throught the StorageParition, check if the
1014 // partition was requested to remove cookie.
1015 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1016 EXPECT_EQ(removal_data.remove_mask,
1017 static_cast<uint32>(
1018 StoragePartition::REMOVE_DATA_MASK_COOKIES));
1019 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1020 static_cast<uint32>(
1021 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
937 } 1022 }
938 1023
939 // This should crash (DCHECK) in Debug, but death tests don't work properly 1024 // This should crash (DCHECK) in Debug, but death tests don't work properly
940 // here. 1025 // here.
941 #if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) 1026 #if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON)
942 TEST_F(BrowsingDataRemoverTest, RemoveMultipleTypesHistoryProhibited) { 1027 TEST_F(BrowsingDataRemoverTest, RemoveMultipleTypesHistoryProhibited) {
943 PrefService* prefs = GetProfile()->GetPrefs(); 1028 PrefService* prefs = GetProfile()->GetPrefs();
944 prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false); 1029 prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false);
945 1030
946 // Add some history. 1031 // Add some history.
947 RemoveHistoryTester history_tester; 1032 RemoveHistoryTester history_tester;
948 ASSERT_TRUE(history_tester.Init(GetProfile())); 1033 ASSERT_TRUE(history_tester.Init(GetProfile()));
949 history_tester.AddHistory(kOrigin1, base::Time::Now()); 1034 history_tester.AddHistory(kOrigin1, base::Time::Now());
950 ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 1035 ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
951 1036
952 // Add some cookies.
953 RemoveProfileCookieTester cookie_tester(GetProfile());
954 cookie_tester.AddCookie();
955 ASSERT_TRUE(cookie_tester.ContainsCookie());
956
957 int removal_mask = BrowsingDataRemover::REMOVE_HISTORY | 1037 int removal_mask = BrowsingDataRemover::REMOVE_HISTORY |
958 BrowsingDataRemover::REMOVE_COOKIES; 1038 BrowsingDataRemover::REMOVE_COOKIES;
959 1039
960 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 1040 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR,
961 removal_mask, false); 1041 removal_mask, false);
962 EXPECT_EQ(removal_mask, GetRemovalMask()); 1042 EXPECT_EQ(removal_mask, GetRemovalMask());
963 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1043 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
964 1044
965 // Cookie should be gone; history should remain. 1045 // 1/2. History should remain.
966 EXPECT_FALSE(cookie_tester.ContainsCookie());
967 EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 1046 EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
1047
1048 // 2/2. The cookie(s) would be deleted throught the StorageParition, check if
1049 // the partition was requested to remove cookie.
1050 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1051 EXPECT_EQ(removal_data.remove_mask,
1052 static_cast<uint32>(
1053 StoragePartition::REMOVE_DATA_MASK_COOKIES));
1054 // Persistent storage won't be deleted, since EVERYTHING was not specified.
1055 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1056 static_cast<uint32>(
1057 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL &
1058 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT));
968 } 1059 }
969 #endif 1060 #endif
970 1061
971 TEST_F(BrowsingDataRemoverTest, QuotaClientMaskGeneration) {
972 EXPECT_EQ(quota::QuotaClient::kFileSystem,
973 BrowsingDataRemover::GenerateQuotaClientMask(
974 BrowsingDataRemover::REMOVE_FILE_SYSTEMS));
975 EXPECT_EQ(quota::QuotaClient::kDatabase,
976 BrowsingDataRemover::GenerateQuotaClientMask(
977 BrowsingDataRemover::REMOVE_WEBSQL));
978 EXPECT_EQ(quota::QuotaClient::kAppcache,
979 BrowsingDataRemover::GenerateQuotaClientMask(
980 BrowsingDataRemover::REMOVE_APPCACHE));
981 EXPECT_EQ(quota::QuotaClient::kIndexedDatabase,
982 BrowsingDataRemover::GenerateQuotaClientMask(
983 BrowsingDataRemover::REMOVE_INDEXEDDB));
984 EXPECT_EQ(quota::QuotaClient::kFileSystem |
985 quota::QuotaClient::kDatabase |
986 quota::QuotaClient::kAppcache |
987 quota::QuotaClient::kIndexedDatabase,
988 BrowsingDataRemover::GenerateQuotaClientMask(
989 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
990 BrowsingDataRemover::REMOVE_WEBSQL |
991 BrowsingDataRemover::REMOVE_APPCACHE |
992 BrowsingDataRemover::REMOVE_INDEXEDDB));
993 }
994
995 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) { 1062 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) {
996 PopulateTestQuotaManagedData(GetMockManager()); 1063 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
997 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1064 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
998 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1065 BrowsingDataRemover::REMOVE_WEBSQL |
999 BrowsingDataRemover::REMOVE_WEBSQL | 1066 BrowsingDataRemover::REMOVE_APPCACHE |
1000 BrowsingDataRemover::REMOVE_APPCACHE | 1067 BrowsingDataRemover::REMOVE_INDEXEDDB,
1001 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1068 false);
1002 1069
1003 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1070 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1004 BrowsingDataRemover::REMOVE_WEBSQL | 1071 BrowsingDataRemover::REMOVE_WEBSQL |
1005 BrowsingDataRemover::REMOVE_APPCACHE | 1072 BrowsingDataRemover::REMOVE_APPCACHE |
1006 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1073 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1007 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1074 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1008 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1075
1009 kClientFile)); 1076 // Verify storage partition related stuffs.
1010 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1077 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1011 kClientFile)); 1078 EXPECT_EQ(removal_data.remove_mask,
1012 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1079 static_cast<uint32>(
1013 kClientFile)); 1080 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1014 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1081 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1015 kClientFile)); 1082 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1016 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1083 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1017 kClientFile)); 1084 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1018 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1085 static_cast<uint32>(
1019 kClientFile)); 1086 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1087 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1020 } 1088 }
1021 1089
1022 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) { 1090 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) {
1023 PopulateTestQuotaManagedTemporaryData(GetMockManager()); 1091 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1024 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1092 new MockExtensionSpecialStoragePolicy;
1025 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1093 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1026 BrowsingDataRemover::REMOVE_WEBSQL | 1094
1027 BrowsingDataRemover::REMOVE_APPCACHE | 1095 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1028 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1096 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1029 1097 BrowsingDataRemover::REMOVE_WEBSQL |
1030 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1098 BrowsingDataRemover::REMOVE_APPCACHE |
1031 BrowsingDataRemover::REMOVE_WEBSQL | 1099 BrowsingDataRemover::REMOVE_INDEXEDDB,
1032 BrowsingDataRemover::REMOVE_APPCACHE | 1100 false);
1033 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1101
1034 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1102 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1035 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1103 BrowsingDataRemover::REMOVE_WEBSQL |
1036 kClientFile)); 1104 BrowsingDataRemover::REMOVE_APPCACHE |
1037 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1105 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1038 kClientFile)); 1106 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1039 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1107
1040 kClientFile)); 1108 // Verify storage partition related stuffs.
1041 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1109 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1042 kClientFile)); 1110
1043 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1111 EXPECT_EQ(removal_data.remove_mask,
1044 kClientFile)); 1112 static_cast<uint32>(
1045 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1113 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1046 kClientFile)); 1114 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1115 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1116 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1117 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1118 static_cast<uint32>(
1119 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1120 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1121
1122 // Check that all related origin data would be removed, that is, origin
1123 // matcher would match these origin.
1124 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1125 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1126 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1047 } 1127 }
1048 1128
1049 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) { 1129 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) {
1050 PopulateTestQuotaManagedPersistentData(GetMockManager()); 1130 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1051 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1131 new MockExtensionSpecialStoragePolicy;
1052 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1132 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1053 BrowsingDataRemover::REMOVE_WEBSQL | 1133
1054 BrowsingDataRemover::REMOVE_APPCACHE | 1134 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1055 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1135 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1056 1136 BrowsingDataRemover::REMOVE_WEBSQL |
1057 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1137 BrowsingDataRemover::REMOVE_APPCACHE |
1058 BrowsingDataRemover::REMOVE_WEBSQL | 1138 BrowsingDataRemover::REMOVE_INDEXEDDB,
1059 BrowsingDataRemover::REMOVE_APPCACHE | 1139 false);
1060 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1140
1061 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1141 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1062 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1142 BrowsingDataRemover::REMOVE_WEBSQL |
1063 kClientFile)); 1143 BrowsingDataRemover::REMOVE_APPCACHE |
1064 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1144 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1065 kClientFile)); 1145 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1066 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1146
1067 kClientFile)); 1147 // Verify storage partition related stuffs.
1068 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1148 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1069 kClientFile)); 1149
1070 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1150 EXPECT_EQ(removal_data.remove_mask,
1071 kClientFile)); 1151 static_cast<uint32>(
1072 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1152 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1073 kClientFile)); 1153 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1154 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1155 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1156 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1157 static_cast<uint32>(
1158 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1159 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1160
1161 // Check that all related origin data would be removed, that is, origin
1162 // matcher would match these origin.
1163 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1164 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1165 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1074 } 1166 }
1075 1167
1076 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) { 1168 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) {
1077 GetMockManager(); // Creates the QuotaManager instance. 1169 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1078 1170 new MockExtensionSpecialStoragePolicy;
1079 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1171 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1080 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1172
1081 BrowsingDataRemover::REMOVE_WEBSQL | 1173
1082 BrowsingDataRemover::REMOVE_APPCACHE | 1174 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1083 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1175 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1084 1176 BrowsingDataRemover::REMOVE_WEBSQL |
1085 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1177 BrowsingDataRemover::REMOVE_APPCACHE |
1086 BrowsingDataRemover::REMOVE_WEBSQL | 1178 BrowsingDataRemover::REMOVE_INDEXEDDB,
1087 BrowsingDataRemover::REMOVE_APPCACHE | 1179 false);
1088 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1180
1089 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1181 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1090 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1182 BrowsingDataRemover::REMOVE_WEBSQL |
1091 kClientFile)); 1183 BrowsingDataRemover::REMOVE_APPCACHE |
1092 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1184 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1093 kClientFile)); 1185 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1094 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1186
1095 kClientFile)); 1187 // Verify storage partition related stuffs.
1096 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1188 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1097 kClientFile)); 1189
1098 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1190 EXPECT_EQ(removal_data.remove_mask,
1099 kClientFile)); 1191 static_cast<uint32>(
1100 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1192 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1101 kClientFile)); 1193 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1194 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1195 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1196 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1197 static_cast<uint32>(
1198 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1199 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1200
1201 // Check that all related origin data would be removed, that is, origin
1202 // matcher would match these origin.
1203 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1204 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1205 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1102 } 1206 }
1103 1207
1104 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) { 1208 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) {
1105 PopulateTestQuotaManagedData(GetMockManager());
1106
1107 // Remove Origin 1. 1209 // Remove Origin 1.
1108 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 1210 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
1109 BrowsingDataRemover::REMOVE_APPCACHE | 1211 BrowsingDataRemover::REMOVE_APPCACHE |
1110 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1212 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1111 BrowsingDataRemover::REMOVE_INDEXEDDB | 1213 BrowsingDataRemover::REMOVE_INDEXEDDB |
1112 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1); 1214 BrowsingDataRemover::REMOVE_WEBSQL,
1215 kOrigin1);
1113 1216
1114 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1217 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1115 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1218 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1116 BrowsingDataRemover::REMOVE_INDEXEDDB | 1219 BrowsingDataRemover::REMOVE_INDEXEDDB |
1117 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1220 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1118 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1221 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1119 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1222
1120 kClientFile)); 1223 // Verify storage partition related stuffs.
1121 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1224 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1122 kClientFile)); 1225
1123 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1226 EXPECT_EQ(removal_data.remove_mask,
1124 kClientFile)); 1227 static_cast<uint32>(
1125 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1228 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1126 kClientFile)); 1229 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1127 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1230 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1128 kClientFile)); 1231 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1129 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1232 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1130 kClientFile)); 1233 static_cast<uint32>(
1234 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1235 EXPECT_EQ(removal_data.remove_origin, kOrigin1);
1131 } 1236 }
1132 1237
1133 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) { 1238 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) {
1134 PopulateTestQuotaManagedData(GetMockManager());
1135
1136 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 1239 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR,
1137 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1240 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1138 BrowsingDataRemover::REMOVE_WEBSQL | 1241 BrowsingDataRemover::REMOVE_WEBSQL |
1139 BrowsingDataRemover::REMOVE_APPCACHE | 1242 BrowsingDataRemover::REMOVE_APPCACHE |
1140 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1243 BrowsingDataRemover::REMOVE_INDEXEDDB,
1141 1244 false);
1142 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1245
1143 BrowsingDataRemover::REMOVE_WEBSQL | 1246 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1144 BrowsingDataRemover::REMOVE_APPCACHE | 1247 BrowsingDataRemover::REMOVE_WEBSQL |
1145 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1248 BrowsingDataRemover::REMOVE_APPCACHE |
1146 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1249 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1147 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1250 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1148 kClientFile)); 1251
1149 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1252 // Verify storage partition related stuffs.
1150 kClientFile)); 1253 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1151 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1254
1152 kClientFile)); 1255 EXPECT_EQ(removal_data.remove_mask,
1153 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1256 static_cast<uint32>(
1154 kClientFile)); 1257 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1155 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1258 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1156 kClientFile)); 1259 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1157 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1260 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1158 kClientFile)); 1261
1262 // Persistent data would be left out since we are not removing from
1263 // beginning of time.
1264 uint32 expected_quota_mask =
1265 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
1266 EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask);
1267 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1268 // Check removal begin time.
1269 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
1159 } 1270 }
1160 1271
1161 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) { 1272 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) {
1162 PopulateTestQuotaManagedData(GetMockManager());
1163
1164 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK, 1273 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK,
1165 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1274 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1166 BrowsingDataRemover::REMOVE_WEBSQL | 1275 BrowsingDataRemover::REMOVE_WEBSQL |
1167 BrowsingDataRemover::REMOVE_APPCACHE | 1276 BrowsingDataRemover::REMOVE_APPCACHE |
1168 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1277 BrowsingDataRemover::REMOVE_INDEXEDDB,
1169 1278 false);
1170 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1279
1171 BrowsingDataRemover::REMOVE_WEBSQL | 1280 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1172 BrowsingDataRemover::REMOVE_APPCACHE | 1281 BrowsingDataRemover::REMOVE_WEBSQL |
1173 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1282 BrowsingDataRemover::REMOVE_APPCACHE |
1174 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1283 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1175 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1284 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1176 kClientFile)); 1285
1177 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1286 // Verify storage partition related stuffs.
1178 kClientFile)); 1287 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1179 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1288
1180 kClientFile)); 1289 EXPECT_EQ(removal_data.remove_mask,
1181 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1290 static_cast<uint32>(
1182 kClientFile)); 1291 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1183 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1292 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1184 kClientFile)); 1293 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1185 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1294 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1186 kClientFile)); 1295
1296 // Persistent data would be left out since we are not removing from
1297 // beginning of time.
1298 uint32 expected_quota_mask =
1299 ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
1300 EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask);
1301 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1302 // Check removal begin time.
1303 EXPECT_EQ(removal_data.remove_begin, GetBeginTime());
1187 } 1304 }
1188 1305
1189 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) { 1306 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) {
1190 // Protect kOrigin1. 1307 // Protect kOrigin1.
1191 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1308 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1192 new MockExtensionSpecialStoragePolicy; 1309 new MockExtensionSpecialStoragePolicy;
1193 mock_policy->AddProtected(kOrigin1.GetOrigin()); 1310 mock_policy->AddProtected(kOrigin1.GetOrigin());
1194 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1311 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1195 1312
1196 PopulateTestQuotaManagedData(GetMockManager());
1197
1198 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1313 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1199 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1314 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1200 BrowsingDataRemover::REMOVE_WEBSQL | 1315 BrowsingDataRemover::REMOVE_WEBSQL |
1201 BrowsingDataRemover::REMOVE_APPCACHE | 1316 BrowsingDataRemover::REMOVE_APPCACHE |
1202 BrowsingDataRemover::REMOVE_INDEXEDDB, false); 1317 BrowsingDataRemover::REMOVE_INDEXEDDB,
1318 false);
1203 1319
1204 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1320 EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1205 BrowsingDataRemover::REMOVE_WEBSQL | 1321 BrowsingDataRemover::REMOVE_WEBSQL |
1206 BrowsingDataRemover::REMOVE_APPCACHE | 1322 BrowsingDataRemover::REMOVE_APPCACHE |
1207 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 1323 BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask());
1208 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1324 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1209 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1325
1210 kClientFile)); 1326 // Verify storage partition related stuffs.
1211 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1327 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1212 kClientFile)); 1328
1213 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1329 EXPECT_EQ(removal_data.remove_mask,
1214 kClientFile)); 1330 static_cast<uint32>(
1215 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1331 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1216 kClientFile)); 1332 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1217 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1333 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1218 kClientFile)); 1334 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1219 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1335 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1220 kClientFile)); 1336 static_cast<uint32>(
1337 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1338 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1339
1340 // Check OriginMatcherFunction, |kOrigin1| would not match mask since it
1341 // is protected.
1342 EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1343 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1344 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1221 } 1345 }
1222 1346
1223 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) { 1347 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) {
1224 // Protect kOrigin1. 1348 // Protect kOrigin1.
1225 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1349 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1226 new MockExtensionSpecialStoragePolicy; 1350 new MockExtensionSpecialStoragePolicy;
1227 mock_policy->AddProtected(kOrigin1.GetOrigin()); 1351 mock_policy->AddProtected(kOrigin1.GetOrigin());
1228 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1352 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1229 1353
1230 PopulateTestQuotaManagedData(GetMockManager());
1231
1232 // Try to remove kOrigin1. Expect failure. 1354 // Try to remove kOrigin1. Expect failure.
1233 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 1355 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING,
1234 BrowsingDataRemover::REMOVE_APPCACHE | 1356 BrowsingDataRemover::REMOVE_APPCACHE |
1235 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1357 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1236 BrowsingDataRemover::REMOVE_INDEXEDDB | 1358 BrowsingDataRemover::REMOVE_INDEXEDDB |
1237 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1); 1359 BrowsingDataRemover::REMOVE_WEBSQL,
1360 kOrigin1);
1238 1361
1239 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1362 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1240 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1363 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1241 BrowsingDataRemover::REMOVE_INDEXEDDB | 1364 BrowsingDataRemover::REMOVE_INDEXEDDB |
1242 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1365 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1243 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1366 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1244 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1367
1245 kClientFile)); 1368 // Verify storage partition related stuffs.
1246 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1369 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1247 kClientFile)); 1370
1248 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1371 EXPECT_EQ(removal_data.remove_mask,
1249 kClientFile)); 1372 static_cast<uint32>(
1250 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1373 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1251 kClientFile)); 1374 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1252 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1375 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1253 kClientFile)); 1376 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1254 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1377 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1255 kClientFile)); 1378 static_cast<uint32>(
1379 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1380 EXPECT_EQ(removal_data.remove_origin, kOrigin1);
1381
1382 // Check OriginMatcherFunction, |kOrigin1| would not match mask since it
1383 // is protected.
1384 EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1385 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1386 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1256 } 1387 }
1257 1388
1258 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) { 1389 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) {
1259 // Protect kOrigin1. 1390 // Protect kOrigin1.
1260 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1391 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1261 new MockExtensionSpecialStoragePolicy; 1392 new MockExtensionSpecialStoragePolicy;
1262 mock_policy->AddProtected(kOrigin1.GetOrigin()); 1393 mock_policy->AddProtected(kOrigin1.GetOrigin());
1263 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1394 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1264 1395
1265 PopulateTestQuotaManagedData(GetMockManager());
1266
1267 // Try to remove kOrigin1. Expect success. 1396 // Try to remove kOrigin1. Expect success.
1268 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1397 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1269 BrowsingDataRemover::REMOVE_APPCACHE | 1398 BrowsingDataRemover::REMOVE_APPCACHE |
1270 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1399 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1271 BrowsingDataRemover::REMOVE_INDEXEDDB | 1400 BrowsingDataRemover::REMOVE_INDEXEDDB |
1272 BrowsingDataRemover::REMOVE_WEBSQL, true); 1401 BrowsingDataRemover::REMOVE_WEBSQL,
1402 true);
1273 1403
1274 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1404 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1275 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1405 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1276 BrowsingDataRemover::REMOVE_INDEXEDDB | 1406 BrowsingDataRemover::REMOVE_INDEXEDDB |
1277 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1407 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1278 EXPECT_EQ(BrowsingDataHelper::PROTECTED_WEB | 1408 EXPECT_EQ(BrowsingDataHelper::PROTECTED_WEB |
1279 BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1409 BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1280 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, 1410
1281 kClientFile)); 1411 // Verify storage partition related stuffs.
1282 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, 1412 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1283 kClientFile)); 1413
1284 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, 1414 EXPECT_EQ(removal_data.remove_mask,
1285 kClientFile)); 1415 static_cast<uint32>(
1286 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, 1416 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1287 kClientFile)); 1417 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1288 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, 1418 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1289 kClientFile)); 1419 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1290 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, 1420 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1291 kClientFile)); 1421 static_cast<uint32>(
1422 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1423 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1424
1425 // Check OriginMatcherFunction, |kOrigin1| would match mask since we
1426 // would have 'protected' specified in origin_set_mask.
1427 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy));
1428 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy));
1429 EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy));
1292 } 1430 }
1293 1431
1294 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) { 1432 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) {
1295 PopulateTestQuotaManagedNonBrowsingData(GetMockManager()); 1433 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
1434 new MockExtensionSpecialStoragePolicy;
1435 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get());
1296 1436
1297 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1437 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
1298 BrowsingDataRemover::REMOVE_APPCACHE | 1438 BrowsingDataRemover::REMOVE_APPCACHE |
1299 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1439 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1300 BrowsingDataRemover::REMOVE_INDEXEDDB | 1440 BrowsingDataRemover::REMOVE_INDEXEDDB |
1301 BrowsingDataRemover::REMOVE_WEBSQL, false); 1441 BrowsingDataRemover::REMOVE_WEBSQL,
1442 false);
1302 1443
1303 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 1444 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE |
1304 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1445 BrowsingDataRemover::REMOVE_FILE_SYSTEMS |
1305 BrowsingDataRemover::REMOVE_INDEXEDDB | 1446 BrowsingDataRemover::REMOVE_INDEXEDDB |
1306 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 1447 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask());
1307 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1448 EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
1308 1449
1309 // Check that extension and devtools data isn't removed. 1450 // Verify storage partition related stuffs.
1310 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginExt, kTemporary, 1451 StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData();
1311 kClientFile)); 1452
1312 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginExt, kPersistent, 1453 EXPECT_EQ(removal_data.remove_mask,
1313 kClientFile)); 1454 static_cast<uint32>(
1314 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginDevTools, kTemporary, 1455 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
1315 kClientFile)); 1456 StoragePartition::REMOVE_DATA_MASK_WEBSQL |
1316 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginDevTools, kPersistent, 1457 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
1317 kClientFile)); 1458 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB));
1459 EXPECT_EQ(removal_data.quota_storage_remove_mask,
1460 static_cast<uint32>(
1461 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL));
1462 EXPECT_TRUE(removal_data.remove_origin.is_empty());
1463
1464 // Check that extension and devtools data wouldn't be removed, that is,
1465 // origin matcher would not match these origin.
1466 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy));
1467 EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginDevTools, mock_policy));
1318 } 1468 }
1319 1469
1320 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { 1470 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) {
1321 RemoveHistoryTester tester; 1471 RemoveHistoryTester tester;
1322 ASSERT_TRUE(tester.Init(GetProfile())); 1472 ASSERT_TRUE(tester.Init(GetProfile()));
1323 1473
1324 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); 1474 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
1325 1475
1326 tester.AddHistory(kOrigin1, base::Time::Now()); 1476 tester.AddHistory(kOrigin1, base::Time::Now());
1327 tester.AddHistory(kOrigin2, two_hours_ago); 1477 tester.AddHistory(kOrigin2, two_hours_ago);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 // Expect exactly one call. No calls means no attempt to delete keys and more 1581 // Expect exactly one call. No calls means no attempt to delete keys and more
1432 // than one call means a significant performance problem. 1582 // than one call means a significant performance problem.
1433 EXPECT_CALL(*cryptohome_client, TpmAttestationDeleteKeys(_, _, _, _)) 1583 EXPECT_CALL(*cryptohome_client, TpmAttestationDeleteKeys(_, _, _, _))
1434 .WillOnce(WithArgs<3>(Invoke(FakeDBusCall))); 1584 .WillOnce(WithArgs<3>(Invoke(FakeDBusCall)));
1435 1585
1436 BlockUntilBrowsingDataRemoved( 1586 BlockUntilBrowsingDataRemoved(
1437 BrowsingDataRemover::EVERYTHING, 1587 BrowsingDataRemover::EVERYTHING,
1438 BrowsingDataRemover::REMOVE_CONTENT_LICENSES, false); 1588 BrowsingDataRemover::REMOVE_CONTENT_LICENSES, false);
1439 } 1589 }
1440 #endif 1590 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698