15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browsing_data/browsing_data_remover.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind_helpers.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/guid.h" 159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/platform_file.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/testing_pref_service.h" 18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/autofill/personal_data_manager_factory.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browsing_data/browsing_data_helper.h" 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_CHROMEOS) 230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/chromeos/login/mock_user_manager.h" 240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/chromeos/login/user_manager.h" 250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h" 260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h" 270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/mock_extension_special_storage_policy.h" 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/history/history_service.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/history_service_factory.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/safe_browsing/safe_browsing_service.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_browser_process.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_CHROMEOS) 360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chromeos/dbus/fake_dbus_thread_manager.h" 380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chromeos/dbus/mock_cryptohome_client.h" 390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_profile.h" 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/autofill/core/browser/autofill_test_utils.h" 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/credit_card.h" 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/personal_data_manager.h" 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/personal_data_manager_observer.h" 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/dom_storage_context.h" 46bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "content/public/browser/local_storage_usage_info.h" 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/storage_partition.h" 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h" 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/public/test/test_browser_thread_bundle.h" 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/cookie_monster.h" 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/ssl/server_bound_cert_service.h" 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/ssl/server_bound_cert_store.h" 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/ssl/ssl_client_cert_type.h" 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_context.h" 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_context_getter.h" 570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using content::StoragePartition; 620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)using testing::_; 630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)using testing::Invoke; 640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)using testing::WithArgs; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOrigin1[] = "http://host1:1/"; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOrigin2[] = "http://host2:1/"; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOrigin3[] = "http://host3:1/"; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// For Autofill. 7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kChromeOrigin[] = "Chrome settings"; 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kWebOrigin[] = "https://www.example.com/"; 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOrigin1(kTestOrigin1); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOrigin2(kTestOrigin2); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOrigin3(kTestOrigin3); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOriginExt(kTestOriginExt); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOriginDevTools(kTestOriginDevTools); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const base::FilePath::CharType kDomStorageOrigin1[] = 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("http_host1_1.localstorage"); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const base::FilePath::CharType kDomStorageOrigin2[] = 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("http_host2_1.localstorage"); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const base::FilePath::CharType kDomStorageOrigin3[] = 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("http_host3_1.localstorage"); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const base::FilePath::CharType kDomStorageExt[] = FILE_PATH_LITERAL( 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "chrome-extension_abcdefghijklmnopqrstuvwxyz_0.localstorage"); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AwaitCompletionHelper : public BrowsingDataRemover::Observer { 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwaitCompletionHelper() : start_(false), already_quit_(false) {} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AwaitCompletionHelper() {} 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilNotified() { 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!already_quit_) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!start_); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) start_ = true; 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->Run(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!start_); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) already_quit_ = false; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Notify() { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (start_) { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!already_quit_); 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->Quit(); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) start_ = false; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!already_quit_); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) already_quit_ = true; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BrowsingDataRemover::Observer implementation. 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnBrowsingDataRemoverDone() OVERRIDE { 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Notify(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helps prevent from running message_loop, if the callback invoked 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // immediately. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool start_; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool already_quit_; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AwaitCompletionHelper); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_CHROMEOS) 1390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)void FakeDBusCall(const chromeos::BoolDBusMethodCallback& callback) { 1400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::MessageLoop::current()->PostTask( 1410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) FROM_HERE, 1420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::Bind(callback, chromeos::DBUS_METHOD_CALL_SUCCESS, true)); 1430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 1440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif 1450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct StoragePartitionRemovalData { 147f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 remove_mask; 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 quota_storage_remove_mask; 149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GURL remove_origin; 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Time remove_begin; 151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Time remove_end; 152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::OriginMatcherFunction origin_matcher; 153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData() : remove_mask(0), 155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) quota_storage_remove_mask(0) {} 156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class TestStoragePartition : public StoragePartition { 159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TestStoragePartition() {} 161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~TestStoragePartition() {} 162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // content::StoragePartition implementation. 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual base::FilePath GetPath() OVERRIDE { return base::FilePath(); } 165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE { 166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaURLRequestContext() OVERRIDE { 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual quota::QuotaManager* GetQuotaManager() OVERRIDE { 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual appcache::AppCacheService* GetAppCacheService() OVERRIDE { 175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual fileapi::FileSystemContext* GetFileSystemContext() OVERRIDE { 178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual webkit_database::DatabaseTracker* GetDatabaseTracker() OVERRIDE { 181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual content::DOMStorageContext* GetDOMStorageContext() OVERRIDE { 184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual content::IndexedDBContext* GetIndexedDBContext() OVERRIDE { 187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return NULL; 188f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void ClearDataForOrigin( 191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 remove_mask, 192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 quota_storage_remove_mask, 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const GURL& storage_origin, 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::URLRequestContextGetter* rq_context) OVERRIDE {} 195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void ClearData(uint32 remove_mask, 197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 quota_storage_remove_mask, 198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const GURL* storage_origin, 199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const OriginMatcherFunction& origin_matcher, 200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const base::Time begin, 201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const base::Time end, 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const base::Closure& callback) OVERRIDE { 203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Store stuff to verify parameters' correctness later. 204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_.remove_mask = remove_mask; 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_.quota_storage_remove_mask = 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) quota_storage_remove_mask; 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_.remove_origin = 208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_origin ? *storage_origin : GURL(); 209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_.remove_begin = begin; 210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_.remove_end = end; 211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_.origin_matcher = origin_matcher; 212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowserThread::PostTask( 214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowserThread::UI, 215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FROM_HERE, 216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Bind(&TestStoragePartition::AsyncRunCallback, 217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Unretained(this), callback)); 218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData GetStoragePartitionRemovalData() { 221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return storage_partition_removal_data_; 222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void AsyncRunCallback(const base::Closure& callback) { 225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) callback.Run(); 226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData storage_partition_removal_data_; 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestStoragePartition); 231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Testers ------------------------------------------------------------------- 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RemoveCookieTester { 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 2393240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch RemoveCookieTester() : get_cookie_success_(false), monster_(NULL) { 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true, if the given cookie exists in the cookie store. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ContainsCookie() { 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get_cookie_success_ = false; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) monster_->GetCookiesWithOptionsAsync( 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kOrigin1, net::CookieOptions(), 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&RemoveCookieTester::GetCookieCallback, 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.BlockUntilNotified(); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return get_cookie_success_; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddCookie() { 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) monster_->SetCookieWithOptionsAsync( 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kOrigin1, "A=1", net::CookieOptions(), 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&RemoveCookieTester::SetCookieCallback, 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.BlockUntilNotified(); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetMonster(net::CookieStore* monster) { 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) monster_ = monster; 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetCookieCallback(const std::string& cookies) { 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (cookies == "A=1") { 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get_cookie_success_ = true; 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("", cookies); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get_cookie_success_ = false; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.Notify(); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCookieCallback(bool result) { 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(result); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.Notify(); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool get_cookie_success_; 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwaitCompletionHelper await_completion_; 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::CookieStore* monster_; 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RemoveCookieTester); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RemoveSafeBrowsingCookieTester : public RemoveCookieTester { 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveSafeBrowsingCookieTester() 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : browser_process_(TestingBrowserProcess::GetGlobal()) { 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<SafeBrowsingService> sb_service = 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SafeBrowsingService::CreateSafeBrowsingService(); 296868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser_process_->SetSafeBrowsingService(sb_service.get()); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sb_service->Initialize(); 29890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create a cookiemonster that does not have persistant storage, and replace 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the SafeBrowsingService created one with it. 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::CookieStore* monster = new net::CookieMonster(NULL, NULL); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sb_service->url_request_context()->GetURLRequestContext()-> 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_cookie_store(monster); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetMonster(monster); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~RemoveSafeBrowsingCookieTester() { 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_process_->safe_browsing_service()->ShutDown(); 31090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_process_->SetSafeBrowsingService(NULL); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingBrowserProcess* browser_process_; 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RemoveSafeBrowsingCookieTester); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RemoveServerBoundCertTester : public net::SSLConfigService::Observer { 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit RemoveServerBoundCertTester(TestingProfile* profile) 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : ssl_config_changed_count_(0) { 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_bound_cert_service_ = profile->GetRequestContext()-> 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetURLRequestContext()->server_bound_cert_service(); 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ssl_config_service_ = profile->GetSSLConfigService(); 3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ssl_config_service_->AddObserver(this); 3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~RemoveServerBoundCertTester() { 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ssl_config_service_->RemoveObserver(this); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ServerBoundCertCount() { 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return server_bound_cert_service_->cert_count(); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a server bound cert for |server| with specific creation and expiry 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // times. The cert and key data will be filled with dummy values. 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddServerBoundCertWithTimes(const std::string& server_identifier, 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time creation_time, 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time expiration_time) { 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCertStore()->SetServerBoundCert(server_identifier, 345bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch creation_time, 346bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch expiration_time, 347bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch "a", 348bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch "b"); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a server bound cert for |server|, with the current time as the 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // creation time. The cert and key data will be filled with dummy values. 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddServerBoundCert(const std::string& server_identifier) { 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time now = base::Time::Now(); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddServerBoundCertWithTimes(server_identifier, 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) now, 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) now + base::TimeDelta::FromDays(1)); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetCertList(net::ServerBoundCertStore::ServerBoundCertList* certs) { 3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetCertStore()->GetAllServerBoundCerts( 3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&RemoveServerBoundCertTester::GetAllCertsCallback, certs)); 3632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::ServerBoundCertStore* GetCertStore() { 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return server_bound_cert_service_->GetCertStore(); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int ssl_config_changed_count() const { 3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ssl_config_changed_count_; 3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // net::SSLConfigService::Observer implementation: 3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnSSLConfigChanged() OVERRIDE { 3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ssl_config_changed_count_++; 3762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void GetAllCertsCallback( 3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net::ServerBoundCertStore::ServerBoundCertList* dest, 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const net::ServerBoundCertStore::ServerBoundCertList& result) { 3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *dest = result; 3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net::ServerBoundCertService* server_bound_cert_service_; 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<net::SSLConfigService> ssl_config_service_; 3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int ssl_config_changed_count_; 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RemoveServerBoundCertTester); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RemoveHistoryTester { 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 394bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester() : query_url_success_(false), history_service_(NULL) {} 395bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 396bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch bool Init(TestingProfile* profile) WARN_UNUSED_RESULT { 397bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch if (!profile->CreateHistoryService(true, false)) 398bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return false; 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) history_service_ = HistoryServiceFactory::GetForProfile( 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile, Profile::EXPLICIT_ACCESS); 401bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return true; 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true, if the given URL exists in the history service. 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool HistoryContainsURL(const GURL& url) { 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) history_service_->QueryURL( 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) url, 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &consumer_, 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&RemoveHistoryTester::SaveResultAndQuit, 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.BlockUntilNotified(); 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return query_url_success_; 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddHistory(const GURL& url, base::Time time) { 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) history_service_->AddPage(url, time, NULL, 0, GURL(), 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) history::RedirectList(), content::PAGE_TRANSITION_LINK, 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) history::SOURCE_BROWSED, false); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callback for HistoryService::QueryURL. 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SaveResultAndQuit(HistoryService::Handle, 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool success, 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const history::URLRow*, 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) history::VisitVector*) { 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) query_url_success_ = success; 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.Notify(); 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For History requests. 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CancelableRequestConsumer consumer_; 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool query_url_success_; 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TestingProfile owns the history service; we shouldn't delete it. 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HistoryService* history_service_; 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwaitCompletionHelper await_completion_; 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RemoveHistoryTester); 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class RemoveAutofillTester : public autofill::PersonalDataManagerObserver { 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit RemoveAutofillTester(TestingProfile* profile) 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : personal_data_manager_( 448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) autofill::PersonalDataManagerFactory::GetForProfile(profile)) { 449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) autofill::test::DisableSystemServices(profile); 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) personal_data_manager_->AddObserver(this); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~RemoveAutofillTester() { 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager_->RemoveObserver(this); 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if there are autofill profiles. 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool HasProfile() { 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return !personal_data_manager_->GetProfiles().empty() && 460c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) !personal_data_manager_->GetCreditCards().empty(); 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool HasOrigin(const std::string& origin) { 46490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::vector<autofill::AutofillProfile*>& profiles = 46590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) personal_data_manager_->GetProfiles(); 46690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) for (std::vector<autofill::AutofillProfile*>::const_iterator it = 46790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profiles.begin(); 46890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) it != profiles.end(); ++it) { 46990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if ((*it)->origin() == origin) 47090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return true; 47190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 47290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 47390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::vector<autofill::CreditCard*>& credit_cards = 47490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) personal_data_manager_->GetCreditCards(); 47590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) for (std::vector<autofill::CreditCard*>::const_iterator it = 47690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) credit_cards.begin(); 47790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) it != credit_cards.end(); ++it) { 47890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if ((*it)->origin() == origin) 47990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return true; 48090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 48190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 48290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return false; 48390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 48490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 48590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Add two profiles and two credit cards to the database. In each pair, one 48690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // entry has a web origin and the other has a Chrome origin. 48790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void AddProfilesAndCards() { 48890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<autofill::AutofillProfile> profiles; 489c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) autofill::AutofillProfile profile; 49090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile.set_guid(base::GenerateGUID()); 49190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile.set_origin(kWebOrigin); 492c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) profile.SetRawInfo(autofill::NAME_FIRST, ASCIIToUTF16("Bob")); 493c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) profile.SetRawInfo(autofill::NAME_LAST, ASCIIToUTF16("Smith")); 494c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) profile.SetRawInfo(autofill::ADDRESS_HOME_ZIP, ASCIIToUTF16("94043")); 495c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) profile.SetRawInfo(autofill::EMAIL_ADDRESS, 496c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASCIIToUTF16("sue@example.com")); 497c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) profile.SetRawInfo(autofill::COMPANY_NAME, ASCIIToUTF16("Company X")); 49890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profiles.push_back(profile); 499c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 50090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile.set_guid(base::GenerateGUID()); 50190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile.set_origin(kChromeOrigin); 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profiles.push_back(profile); 50390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager_->SetProfiles(&profiles); 50590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->Run(); 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<autofill::CreditCard> cards; 508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) autofill::CreditCard card; 50990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) card.set_guid(base::GenerateGUID()); 51090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) card.set_origin(kWebOrigin); 511c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) card.SetRawInfo(autofill::CREDIT_CARD_NUMBER, 512c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASCIIToUTF16("1234-5678-9012-3456")); 51390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) cards.push_back(card); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) card.set_guid(base::GenerateGUID()); 51690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) card.set_origin(kChromeOrigin); 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cards.push_back(card); 51890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personal_data_manager_->SetCreditCards(&cards); 52090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->Run(); 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnPersonalDataChanged() OVERRIDE { 52590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->Quit(); 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 528c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) autofill::PersonalDataManager* personal_data_manager_; 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RemoveAutofillTester); 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RemoveLocalStorageTester { 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit RemoveLocalStorageTester(TestingProfile* profile) 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : profile_(profile), dom_storage_context_(NULL) { 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dom_storage_context_ = 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserContext::GetDefaultStoragePartition(profile)-> 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDOMStorageContext(); 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true, if the given origin URL exists. 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool DOMStorageExistsForOrigin(const GURL& origin) { 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetLocalStorageUsage(); 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.BlockUntilNotified(); 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < infos_.size(); ++i) { 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (origin == infos_[i].origin) 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddDOMStorageTestData() { 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Note: This test depends on details of how the dom_storage library 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // stores data in the host file system. 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath storage_path = 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_->GetPath().AppendASCII("Local Storage"); 557a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::CreateDirectory(storage_path); 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Write some files. 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_util::WriteFile(storage_path.Append(kDomStorageOrigin1), NULL, 0); 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_util::WriteFile(storage_path.Append(kDomStorageOrigin2), NULL, 0); 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_util::WriteFile(storage_path.Append(kDomStorageOrigin3), NULL, 0); 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_util::WriteFile(storage_path.Append(kDomStorageExt), NULL, 0); 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tweak their dates. 566a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Time now = base::Time::Now(); 567a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::TouchFile(storage_path.Append(kDomStorageOrigin1), now, now); 568a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 569a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Time one_day_ago = now - base::TimeDelta::FromDays(1); 570a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::TouchFile(storage_path.Append(kDomStorageOrigin2), 571a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) one_day_ago, one_day_ago); 572a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 573a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Time sixty_days_ago = now - base::TimeDelta::FromDays(60); 574a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::TouchFile(storage_path.Append(kDomStorageOrigin3), 575a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) sixty_days_ago, sixty_days_ago); 576a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 577a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::TouchFile(storage_path.Append(kDomStorageExt), now, now); 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetLocalStorageUsage() { 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dom_storage_context_->GetLocalStorageUsage( 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&RemoveLocalStorageTester::OnGotLocalStorageUsage, 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGotLocalStorageUsage( 587bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch const std::vector<content::LocalStorageUsageInfo>& infos) { 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) infos_ = infos; 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion_.Notify(); 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We don't own these pointers. 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile* profile_; 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::DOMStorageContext* dom_storage_context_; 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 596bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch std::vector<content::LocalStorageUsageInfo> infos_; 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwaitCompletionHelper await_completion_; 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RemoveLocalStorageTester); 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test Class ---------------------------------------------------------------- 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowsingDataRemoverTest : public testing::Test, 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public content::NotificationObserver { 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemoverTest() 609eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : profile_(new TestingProfile()) { 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_BROWSING_DATA_REMOVED, 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<Profile>(profile_.get())); 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~BrowsingDataRemoverTest() { 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void TearDown() { 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TestingProfile contains a DOMStorageContext. BrowserContext's destructor 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // posts a message to the WEBKIT thread to delete some of its member 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // variables. We need to ensure that the profile is destroyed, and that 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the message loop is cleared out, before destroying the threads and loop. 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Otherwise we leak memory. 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_.reset(); 624eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::MessageLoop::current()->RunUntilIdle(); 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilBrowsingDataRemoved(BrowsingDataRemover::TimePeriod period, 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int remove_mask, 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool include_protected_origins) { 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod( 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_.get(), period); 632f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 633f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TestStoragePartition storage_partition; 634f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) remover->OverrideStoragePartitionForTesting(&storage_partition); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwaitCompletionHelper await_completion; 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remover->AddObserver(&await_completion); 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BrowsingDataRemover deletes itself when it completes. 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int origin_set_mask = BrowsingDataHelper::UNPROTECTED_WEB; 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (include_protected_origins) 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) origin_set_mask |= BrowsingDataHelper::PROTECTED_WEB; 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remover->Remove(remove_mask, origin_set_mask); 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion.BlockUntilNotified(); 647f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 648f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Save so we can verify later. 649f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_ = 650f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition.GetStoragePartitionRemovalData(); 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int remove_mask, 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& remove_origin) { 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover* remover = BrowsingDataRemover::CreateForPeriod( 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_.get(), period); 658f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TestStoragePartition storage_partition; 659f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) remover->OverrideStoragePartitionForTesting(&storage_partition); 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwaitCompletionHelper await_completion; 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remover->AddObserver(&await_completion); 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BrowsingDataRemover deletes itself when it completes. 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) remover->RemoveImpl(remove_mask, remove_origin, 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataHelper::UNPROTECTED_WEB); 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) await_completion.BlockUntilNotified(); 670f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 671f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Save so we can verify later. 672f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition_removal_data_ = 673f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) storage_partition.GetStoragePartitionRemovalData(); 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile* GetProfile() { 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return profile_.get(); 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time GetBeginTime() { 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return called_with_details_->removal_begin; 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetRemovalMask() { 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return called_with_details_->removal_mask; 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetOriginSetMask() { 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return called_with_details_->origin_set_mask; 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 692f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData GetStoragePartitionRemovalData() { 693f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return storage_partition_removal_data_; 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::NotificationObserver implementation. 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE { 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(type, chrome::NOTIFICATION_BROWSING_DATA_REMOVED); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We're not taking ownership of the details object, but storing a copy of 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it locally. 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) called_with_details_.reset(new BrowsingDataRemover::NotificationDetails( 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *content::Details<BrowsingDataRemover::NotificationDetails>( 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) details).ptr())); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.RemoveAll(); 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_; 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar_; 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::TestBrowserThreadBundle thread_bundle_; 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestingProfile> profile_; 717f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 718f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData storage_partition_removal_data_; 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest); 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests --------------------------------------------------------------------- 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) { 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 727f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_COOKIES, 728f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask()); 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 732f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 733f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify that storage partition was instructed to remove the cookies. 734f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 735f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 736f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 737f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_COOKIES)); 738f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 739f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 740f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 741f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 742f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveCookieLastHour) { 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 747f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_COOKIES, 748f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask()); 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 752f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 753f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify that storage partition was instructed to remove the cookies. 754f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 755f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 756f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 757f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_COOKIES)); 758f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Removing with time period other than EVERYTHING should not clear 759f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // persistent storage data. 760f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 761f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 762f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL & 763f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT)); 764f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 765f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(FULL_SAFE_BROWSING) || defined(MOBILE_SAFE_BROWSING) 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieForever) { 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveSafeBrowsingCookieTester tester; 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddCookie(); 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.ContainsCookie()); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_COOKIES, false); 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask()); 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(tester.ContainsCookie()); 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveSafeBrowsingCookieLastHour) { 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveSafeBrowsingCookieTester tester; 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddCookie(); 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.ContainsCookie()); 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_COOKIES, false); 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask()); 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removing with time period other than EVERYTHING should not clear safe 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browsing cookies. 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(tester.ContainsCookie()); 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveServerBoundCertForever) { 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveServerBoundCertTester tester(GetProfile()); 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddServerBoundCert(kTestOrigin1); 8042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(0, tester.ssl_config_changed_count()); 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1, tester.ServerBoundCertCount()); 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, false); 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, GetRemovalMask()); 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 8122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, tester.ssl_config_changed_count()); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0, tester.ServerBoundCertCount()); 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveServerBoundCertLastHour) { 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveServerBoundCertTester tester(GetProfile()); 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time now = base::Time::Now(); 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddServerBoundCert(kTestOrigin1); 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddServerBoundCertWithTimes(kTestOrigin2, 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) now - base::TimeDelta::FromHours(2), 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) now); 8242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(0, tester.ssl_config_changed_count()); 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(2, tester.ServerBoundCertCount()); 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, false); 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, GetRemovalMask()); 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 8322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, tester.ssl_config_changed_count()); 8332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tester.ServerBoundCertCount()); 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::ServerBoundCertStore::ServerBoundCertList certs; 8352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tester.GetCertList(&certs); 8362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1U, certs.size()); 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(kTestOrigin2, certs.front().server_identifier()); 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveUnprotectedLocalStorageForever) { 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Protect kOrigin1. 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new MockExtensionSpecialStoragePolicy; 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock_policy->AddProtected(kOrigin1.GetOrigin()); 845868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 848f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_LOCAL_STORAGE, 849f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask()); 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 853f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 854f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify that storage partition was instructed to remove the data correctly. 855f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 856f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 857f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 858f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE)); 859f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 860f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 861f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 862f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 863f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 864f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 865f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check origin matcher. 866f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 867f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 868f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 869f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy)); 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveProtectedLocalStorageForever) { 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Protect kOrigin1. 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new MockExtensionSpecialStoragePolicy; 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock_policy->AddProtected(kOrigin1.GetOrigin()); 877868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 880f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_LOCAL_STORAGE, 881f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true); 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask()); 884f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB | 885f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataHelper::PROTECTED_WEB, GetOriginSetMask()); 886f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 887f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify that storage partition was instructed to remove the data correctly. 888f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 889f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 890f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 891f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE)); 892f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 893f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 894f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 895f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 896f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 897f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 898f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check origin matcher all http origin will match since we specified 899f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // both protected and unprotected. 900f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 901f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 902f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 903f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy)); 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveLocalStorageForLastWeek) { 907f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 908f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new MockExtensionSpecialStoragePolicy; 909f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK, 912f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_LOCAL_STORAGE, 913f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_LOCAL_STORAGE, GetRemovalMask()); 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 917f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 918f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify that storage partition was instructed to remove the data correctly. 919f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 920f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 921f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 922f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE)); 923f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Persistent storage won't be deleted. 924f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 925f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 926f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL & 927f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT)); 928f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 929f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 930f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 931f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check origin matcher. 932f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 933f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 934f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 935f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy)); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) { 939bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester tester; 940bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(tester.Init(GetProfile())); 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin1, base::Time::Now()); 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1)); 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_HISTORY, false); 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1)); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveHistoryForLastHour) { 954bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester tester; 955bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(tester.Init(GetProfile())); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin1, base::Time::Now()); 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin2, two_hours_ago); 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1)); 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2)); 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_HISTORY, false); 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1)); 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2)); 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This should crash (DCHECK) in Debug, but death tests don't work properly 9742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// here. 9752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) 9762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveHistoryProhibited) { 977bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester tester; 978bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(tester.Init(GetProfile())); 9792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* prefs = GetProfile()->GetPrefs(); 9802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false); 9812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); 9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tester.AddHistory(kOrigin1, base::Time::Now()); 9852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tester.AddHistory(kOrigin2, two_hours_ago); 9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1)); 9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2)); 9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 9902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowsingDataRemover::REMOVE_HISTORY, false); 9912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 9922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 9932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Nothing should have been deleted. 9952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1)); 9962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2)); 9972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 9982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 9992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveMultipleTypes) { 10012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add some history. 1002bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester history_tester; 1003bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(history_tester.Init(GetProfile())); 10042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) history_tester.AddHistory(kOrigin1, base::Time::Now()); 10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 10062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int removal_mask = BrowsingDataRemover::REMOVE_HISTORY | 10082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowsingDataRemover::REMOVE_COOKIES; 10092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 10112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) removal_mask, false); 10122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(removal_mask, GetRemovalMask()); 10142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 10152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(history_tester.HistoryContainsURL(kOrigin1)); 1016f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1017f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The cookie would be deleted throught the StorageParition, check if the 1018f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // partition was requested to remove cookie. 1019f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1020f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1021f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1022f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_COOKIES)); 1023f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1024f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1025f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 10262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 10272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This should crash (DCHECK) in Debug, but death tests don't work properly 10292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// here. 10302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) 10312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveMultipleTypesHistoryProhibited) { 10322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* prefs = GetProfile()->GetPrefs(); 10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false); 10342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add some history. 1036bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester history_tester; 1037bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(history_tester.Init(GetProfile())); 10382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) history_tester.AddHistory(kOrigin1, base::Time::Now()); 10392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 10402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int removal_mask = BrowsingDataRemover::REMOVE_HISTORY | 10422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowsingDataRemover::REMOVE_COOKIES; 10432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 10452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) removal_mask, false); 10462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(removal_mask, GetRemovalMask()); 10472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 10482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1049f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // 1/2. History should remain. 10502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1)); 10512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1052f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // 2/2. The cookie(s) would be deleted throught the StorageParition, check if 1053f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // the partition was requested to remove cookie. 1054f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1055f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1056f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1057f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_COOKIES)); 1058f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Persistent storage won't be deleted, since EVERYTHING was not specified. 1059f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1060f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1061f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL & 1062f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT)); 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1064f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) { 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1068f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1069f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1070f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1071f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1072f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1079f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1080f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1081f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1082f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1083f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1084f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1085f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1086f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1087f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1088f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1089f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1090f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1091f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) { 1095f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1096f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new MockExtensionSpecialStoragePolicy; 1097f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1098f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check that all related origin data would be removed, that is, origin 1127f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // matcher would match these origin. 1128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 1129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 1130f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) { 1134f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1135f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new MockExtensionSpecialStoragePolicy; 1136f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1140f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1141f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1142f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1143f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check that all related origin data would be removed, that is, origin 1166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // matcher would match these origin. 1167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 1168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 1169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) { 1173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new MockExtensionSpecialStoragePolicy; 1175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 1176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check that all related origin data would be removed, that is, origin 1206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // matcher would match these origin. 1207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 1208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 1209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) { 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove Origin 1. 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 1215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 1218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, 1219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) kOrigin1); 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1233f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1234f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1235f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1236f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1237f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1238f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1239f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_origin, kOrigin1); 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) { 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, 1244f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1245f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1246f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1247f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1248f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1255f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1256f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1257f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1258f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1259f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1260f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1261f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1262f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1263f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1264f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1265f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1266f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Persistent data would be left out since we are not removing from 1267f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // beginning of time. 1268f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 expected_quota_mask = 1269f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT; 1270f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask); 1271f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1272f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check removal begin time. 1273f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) { 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK, 1278f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1279f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1280f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1281f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1282f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1289f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1290f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1291f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1292f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1293f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1294f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1295f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1296f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1297f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1298f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1299f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1300f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Persistent data would be left out since we are not removing from 1301f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // beginning of time. 1302f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 expected_quota_mask = 1303f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT; 1304f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, expected_quota_mask); 1305f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1306f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check removal begin time. 1307f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_begin, GetBeginTime()); 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) { 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Protect kOrigin1. 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new MockExtensionSpecialStoragePolicy; 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock_policy->AddProtected(kOrigin1.GetOrigin()); 1315868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1318f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1319f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 1320f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1321f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, 1322f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL | 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB, GetRemovalMask()); 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1329f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1330f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1331f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1332f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1333f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1334f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1335f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1336f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1337f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1338f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1339f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1340f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1341f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1342f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1343f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1344f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check OriginMatcherFunction, |kOrigin1| would not match mask since it 1345f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // is protected. 1346f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 1347f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 1348f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) { 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Protect kOrigin1. 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new MockExtensionSpecialStoragePolicy; 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock_policy->AddProtected(kOrigin1.GetOrigin()); 1356868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Try to remove kOrigin1. Expect failure. 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 1360f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1361f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1362f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 1363f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, 1364f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) kOrigin1); 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1371f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1372f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1373f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1374f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1375f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1376f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1377f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1378f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1379f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1380f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1381f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1382f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1383f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1384f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_origin, kOrigin1); 1385f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1386f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check OriginMatcherFunction, |kOrigin1| would not match mask since it 1387f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // is protected. 1388f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 1389f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 1390f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedOrigins) { 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Protect kOrigin1. 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new MockExtensionSpecialStoragePolicy; 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock_policy->AddProtected(kOrigin1.GetOrigin()); 1398868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Try to remove kOrigin1. Expect success. 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1402f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1403f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1404f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 1405f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, 1406f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true); 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::PROTECTED_WEB | 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 1414f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1415f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1416f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1417f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1418f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1419f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1420f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1421f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1422f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1423f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1424f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1425f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1426f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1427f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1428f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1429f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check OriginMatcherFunction, |kOrigin1| would match mask since we 1430f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // would have 'protected' specified in origin_set_mask. 1431f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin1, mock_policy)); 1432f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin2, mock_policy)); 1433f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.origin_matcher.Run(kOrigin3, mock_policy)); 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) { 1437f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = 1438f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new MockExtensionSpecialStoragePolicy; 1439f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy.get()); 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, 1442f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_APPCACHE | 1443f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 1444f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 1445f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, 1446f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false); 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_FILE_SYSTEMS | 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_INDEXEDDB | 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1454f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Verify storage partition related stuffs. 1455f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartitionRemovalData removal_data = GetStoragePartitionRemovalData(); 1456f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1457f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.remove_mask, 1458f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1459f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 1460f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_WEBSQL | 1461f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_APPCACHE | 1462f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::REMOVE_DATA_MASK_INDEXEDDB)); 1463f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(removal_data.quota_storage_remove_mask, 1464f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static_cast<uint32>( 1465f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL)); 1466f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(removal_data.remove_origin.is_empty()); 1467f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1468f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Check that extension and devtools data wouldn't be removed, that is, 1469f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // origin matcher would not match these origin. 1470f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginExt, mock_policy)); 1471f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(removal_data.origin_matcher.Run(kOriginDevTools, mock_policy)); 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { 1475bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester tester; 1476bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(tester.Init(GetProfile())); 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin1, base::Time::Now()); 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin2, two_hours_ago); 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1)); 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2)); 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_HISTORY, kOrigin2); 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 14902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 14912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Nothing should have been deleted. 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1)); 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(tester.HistoryContainsURL(kOrigin2)); 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, OriginAndTimeBasedHistoryRemoval) { 1497bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch RemoveHistoryTester tester; 1498bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch ASSERT_TRUE(tester.Init(GetProfile())); 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin1, base::Time::Now()); 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tester.AddHistory(kOrigin2, two_hours_ago); 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1)); 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2)); 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_HISTORY, kOrigin2); 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1)); 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2)); 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Verify that clearing autofill form data works. 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, AutofillRemovalLastHour) { 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProfile()->CreateWebDataService(); 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveAutofillTester tester(GetProfile()); 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tester.HasProfile()); 152290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) tester.AddProfilesAndCards(); 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HasProfile()); 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved( 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::LAST_HOUR, 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_FORM_DATA, false); 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FORM_DATA, GetRemovalMask()); 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tester.HasProfile()); 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, AutofillRemovalEverything) { 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProfile()->CreateWebDataService(); 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveAutofillTester tester(GetProfile()); 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tester.HasProfile()); 153990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) tester.AddProfilesAndCards(); 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tester.HasProfile()); 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BlockUntilBrowsingDataRemoved( 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::EVERYTHING, 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowsingDataRemover::REMOVE_FORM_DATA, false); 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_FORM_DATA, GetRemovalMask()); 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tester.HasProfile()); 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 155090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 155190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Verify that clearing autofill form data works. 155290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST_F(BrowsingDataRemoverTest, AutofillOriginsRemovedWithHistory) { 155390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetProfile()->CreateWebDataService(); 155490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) RemoveAutofillTester tester(GetProfile()); 155590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 155690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) tester.AddProfilesAndCards(); 155790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_FALSE(tester.HasOrigin(std::string())); 155890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_TRUE(tester.HasOrigin(kWebOrigin)); 155990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_TRUE(tester.HasOrigin(kChromeOrigin)); 156090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 156190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BlockUntilBrowsingDataRemoved( 156290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowsingDataRemover::LAST_HOUR, 156390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowsingDataRemover::REMOVE_HISTORY, false); 156490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 156590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); 156690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask()); 156790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_TRUE(tester.HasOrigin(std::string())); 156890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_FALSE(tester.HasOrigin(kWebOrigin)); 156990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_TRUE(tester.HasOrigin(kChromeOrigin)); 157090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 15710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 15720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#if defined(OS_CHROMEOS) 15730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(BrowsingDataRemoverTest, ContentProtectionPlatformKeysRemoval) { 15740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chromeos::ScopedTestDeviceSettingsService test_device_settings_service; 15750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chromeos::ScopedTestCrosSettings test_cros_settings; 15760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chromeos::MockUserManager* mock_user_manager = 15770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) new testing::NiceMock<chromeos::MockUserManager>(); 15780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) mock_user_manager->SetActiveUser("test@example.com"); 15790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chromeos::ScopedUserManagerEnabler user_manager_enabler(mock_user_manager); 1580f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1581f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chromeos::FakeDBusThreadManager* fake_dbus_manager = 1582f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new chromeos::FakeDBusThreadManager; 15830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chromeos::MockCryptohomeClient* cryptohome_client = 1584f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new chromeos::MockCryptohomeClient; 1585f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) fake_dbus_manager->SetCryptohomeClient( 1586f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<chromeos::CryptohomeClient>(cryptohome_client)); 1587f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chromeos::DBusThreadManager::InitializeForTesting(fake_dbus_manager); 15880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 15890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // Expect exactly one call. No calls means no attempt to delete keys and more 15900f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // than one call means a significant performance problem. 15910f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(*cryptohome_client, TpmAttestationDeleteKeys(_, _, _, _)) 15920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) .WillOnce(WithArgs<3>(Invoke(FakeDBusCall))); 15930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 15940f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BlockUntilBrowsingDataRemoved( 15950f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BrowsingDataRemover::EVERYTHING, 15960f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BrowsingDataRemover::REMOVE_CONTENT_LICENSES, false); 1597f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1598f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chromeos::DBusThreadManager::Shutdown(); 15990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 16000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#endif 1601