Commit e5de5b8e authored by Christian Dullweber's avatar Christian Dullweber Committed by Commit Bot

Convert BrowsingDataCookieHelper to use CookieManager

Make BrowsingDataCookieHelper compatible with the network service
by converting it to use CookieManager.

Bug: 843995
Change-Id: I92db772d7ab63ca51fbaabd618f6b4d77fd784b3
Reviewed-on: https://chromium-review.googlesource.com/1101022
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568007}
parent de5c1819
...@@ -624,7 +624,7 @@ class SiteDataDeleteHelper : public CookiesTreeModel::Observer { ...@@ -624,7 +624,7 @@ class SiteDataDeleteHelper : public CookiesTreeModel::Observer {
storage::FileSystemContext* file_system_context = storage::FileSystemContext* file_system_context =
storage_partition->GetFileSystemContext(); storage_partition->GetFileSystemContext();
auto container = std::make_unique<LocalDataContainer>( auto container = std::make_unique<LocalDataContainer>(
new BrowsingDataCookieHelper(profile_->GetRequestContext()), new BrowsingDataCookieHelper(storage_partition),
new BrowsingDataDatabaseHelper(profile_), new BrowsingDataDatabaseHelper(profile_),
new BrowsingDataLocalStorageHelper(profile_), nullptr, new BrowsingDataLocalStorageHelper(profile_), nullptr,
new BrowsingDataAppCacheHelper(profile_), new BrowsingDataAppCacheHelper(profile_),
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "base/logging.h" #include "base/logging.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/cookies/canonical_cookie.h" #include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_util.h" #include "net/cookies/cookie_util.h"
...@@ -23,23 +24,12 @@ ...@@ -23,23 +24,12 @@
using content::BrowserThread; using content::BrowserThread;
namespace { namespace {
const char kGlobalCookieSetURL[] = "chrome://cookieset"; const char kGlobalCookieSetURL[] = "chrome://cookieset";
void OnCookieFetchComplete(
const BrowsingDataCookieHelper::FetchCallback& callback,
const net::CookieList& cookies) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(!callback.is_null());
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(callback, cookies));
}
} // namespace } // namespace
BrowsingDataCookieHelper::BrowsingDataCookieHelper( BrowsingDataCookieHelper::BrowsingDataCookieHelper(
net::URLRequestContextGetter* request_context_getter) content::StoragePartition* storage_partition)
: request_context_getter_(request_context_getter) { : storage_partition_(storage_partition) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
} }
...@@ -49,42 +39,20 @@ BrowsingDataCookieHelper::~BrowsingDataCookieHelper() { ...@@ -49,42 +39,20 @@ BrowsingDataCookieHelper::~BrowsingDataCookieHelper() {
void BrowsingDataCookieHelper::StartFetching(const FetchCallback& callback) { void BrowsingDataCookieHelper::StartFetching(const FetchCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(!callback.is_null()); DCHECK(!callback.is_null());
BrowserThread::PostTask( storage_partition_->GetCookieManagerForBrowserProcess()->GetAllCookies(
BrowserThread::IO, FROM_HERE, callback);
base::BindOnce(&BrowsingDataCookieHelper::FetchCookiesOnIOThread, this,
callback));
} }
void BrowsingDataCookieHelper::DeleteCookie( void BrowsingDataCookieHelper::DeleteCookie(
const net::CanonicalCookie& cookie) { const net::CanonicalCookie& cookie) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
BrowserThread::PostTask( storage_partition_->GetCookieManagerForBrowserProcess()
BrowserThread::IO, FROM_HERE, ->DeleteCanonicalCookie(cookie, base::DoNothing());
base::BindOnce(&BrowsingDataCookieHelper::DeleteCookieOnIOThread, this,
cookie));
}
void BrowsingDataCookieHelper::FetchCookiesOnIOThread(
const FetchCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(!callback.is_null());
request_context_getter_->GetURLRequestContext()
->cookie_store()
->GetAllCookiesAsync(base::BindOnce(&OnCookieFetchComplete, callback));
}
void BrowsingDataCookieHelper::DeleteCookieOnIOThread(
const net::CanonicalCookie& cookie) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
request_context_getter_->GetURLRequestContext()->cookie_store()->
DeleteCanonicalCookieAsync(
cookie, net::CookieStore::DeleteCallback());
} }
CannedBrowsingDataCookieHelper::CannedBrowsingDataCookieHelper( CannedBrowsingDataCookieHelper::CannedBrowsingDataCookieHelper(
net::URLRequestContextGetter* request_context_getter) content::StoragePartition* storage_partition)
: BrowsingDataCookieHelper(request_context_getter) { : BrowsingDataCookieHelper(storage_partition) {}
}
CannedBrowsingDataCookieHelper::~CannedBrowsingDataCookieHelper() { CannedBrowsingDataCookieHelper::~CannedBrowsingDataCookieHelper() {
Reset(); Reset();
......
...@@ -20,7 +20,9 @@ class GURL; ...@@ -20,7 +20,9 @@ class GURL;
namespace net { namespace net {
class CanonicalCookie; class CanonicalCookie;
class URLRequestContextGetter; }
namespace content {
class StoragePartition;
} }
// This class fetches cookie information on behalf of a caller // This class fetches cookie information on behalf of a caller
...@@ -33,7 +35,7 @@ class BrowsingDataCookieHelper ...@@ -33,7 +35,7 @@ class BrowsingDataCookieHelper
public: public:
using FetchCallback = base::Callback<void(const net::CookieList&)>; using FetchCallback = base::Callback<void(const net::CookieList&)>;
explicit BrowsingDataCookieHelper( explicit BrowsingDataCookieHelper(
net::URLRequestContextGetter* request_context_getter); content::StoragePartition* storage_partition);
// Starts the fetching process, which will notify its completion via // Starts the fetching process, which will notify its completion via
// callback. // callback.
...@@ -48,18 +50,8 @@ class BrowsingDataCookieHelper ...@@ -48,18 +50,8 @@ class BrowsingDataCookieHelper
friend class base::RefCountedThreadSafe<BrowsingDataCookieHelper>; friend class base::RefCountedThreadSafe<BrowsingDataCookieHelper>;
virtual ~BrowsingDataCookieHelper(); virtual ~BrowsingDataCookieHelper();
net::URLRequestContextGetter* request_context_getter() {
return request_context_getter_.get();
}
private: private:
// Fetch the cookies. This must be called in the IO thread. content::StoragePartition* storage_partition_;
void FetchCookiesOnIOThread(const FetchCallback& callback);
// Delete a single cookie. This must be called in IO thread.
void DeleteCookieOnIOThread(const net::CanonicalCookie& cookie);
scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
DISALLOW_COPY_AND_ASSIGN(BrowsingDataCookieHelper); DISALLOW_COPY_AND_ASSIGN(BrowsingDataCookieHelper);
}; };
...@@ -82,7 +74,7 @@ class CannedBrowsingDataCookieHelper : public BrowsingDataCookieHelper { ...@@ -82,7 +74,7 @@ class CannedBrowsingDataCookieHelper : public BrowsingDataCookieHelper {
OriginCookieSetMap; OriginCookieSetMap;
explicit CannedBrowsingDataCookieHelper( explicit CannedBrowsingDataCookieHelper(
net::URLRequestContextGetter* request_context); content::StoragePartition* storage_partition);
// Adds the cookies from |cookie_list|. Current cookies that have the same // Adds the cookies from |cookie_list|. Current cookies that have the same
// cookie name, cookie domain, cookie path, host-only-flag tuple as passed // cookie name, cookie domain, cookie path, host-only-flag tuple as passed
......
...@@ -195,6 +195,11 @@ class BrowsingDataCookieHelperTest : public testing::Test { ...@@ -195,6 +195,11 @@ class BrowsingDataCookieHelperTest : public testing::Test {
} }
} }
content::StoragePartition* storage_partition() {
return content::BrowserContext::GetDefaultStoragePartition(
testing_profile_.get());
}
protected: protected:
content::TestBrowserThreadBundle thread_bundle_; content::TestBrowserThreadBundle thread_bundle_;
std::unique_ptr<TestingProfile> testing_profile_; std::unique_ptr<TestingProfile> testing_profile_;
...@@ -206,7 +211,7 @@ class BrowsingDataCookieHelperTest : public testing::Test { ...@@ -206,7 +211,7 @@ class BrowsingDataCookieHelperTest : public testing::Test {
TEST_F(BrowsingDataCookieHelperTest, FetchData) { TEST_F(BrowsingDataCookieHelperTest, FetchData) {
CreateCookiesForTest(); CreateCookiesForTest();
scoped_refptr<BrowsingDataCookieHelper> cookie_helper( scoped_refptr<BrowsingDataCookieHelper> cookie_helper(
new BrowsingDataCookieHelper(testing_profile_->GetRequestContext())); new BrowsingDataCookieHelper(storage_partition()));
cookie_helper->StartFetching( cookie_helper->StartFetching(
base::Bind(&BrowsingDataCookieHelperTest::FetchCallback, base::Bind(&BrowsingDataCookieHelperTest::FetchCallback,
...@@ -217,7 +222,7 @@ TEST_F(BrowsingDataCookieHelperTest, FetchData) { ...@@ -217,7 +222,7 @@ TEST_F(BrowsingDataCookieHelperTest, FetchData) {
TEST_F(BrowsingDataCookieHelperTest, DomainCookie) { TEST_F(BrowsingDataCookieHelperTest, DomainCookie) {
CreateCookiesForDomainCookieTest(); CreateCookiesForDomainCookieTest();
scoped_refptr<BrowsingDataCookieHelper> cookie_helper( scoped_refptr<BrowsingDataCookieHelper> cookie_helper(
new BrowsingDataCookieHelper(testing_profile_->GetRequestContext())); new BrowsingDataCookieHelper(storage_partition()));
cookie_helper->StartFetching( cookie_helper->StartFetching(
base::Bind(&BrowsingDataCookieHelperTest::DomainCookieCallback, base::Bind(&BrowsingDataCookieHelperTest::DomainCookieCallback,
...@@ -228,7 +233,7 @@ TEST_F(BrowsingDataCookieHelperTest, DomainCookie) { ...@@ -228,7 +233,7 @@ TEST_F(BrowsingDataCookieHelperTest, DomainCookie) {
TEST_F(BrowsingDataCookieHelperTest, DeleteCookie) { TEST_F(BrowsingDataCookieHelperTest, DeleteCookie) {
CreateCookiesForTest(); CreateCookiesForTest();
scoped_refptr<BrowsingDataCookieHelper> cookie_helper( scoped_refptr<BrowsingDataCookieHelper> cookie_helper(
new BrowsingDataCookieHelper(testing_profile_->GetRequestContext())); new BrowsingDataCookieHelper(storage_partition()));
cookie_helper->StartFetching( cookie_helper->StartFetching(
base::Bind(&BrowsingDataCookieHelperTest::FetchCallback, base::Bind(&BrowsingDataCookieHelperTest::FetchCallback,
...@@ -247,8 +252,7 @@ TEST_F(BrowsingDataCookieHelperTest, DeleteCookie) { ...@@ -247,8 +252,7 @@ TEST_F(BrowsingDataCookieHelperTest, DeleteCookie) {
TEST_F(BrowsingDataCookieHelperTest, CannedDeleteCookie) { TEST_F(BrowsingDataCookieHelperTest, CannedDeleteCookie) {
CreateCookiesForTest(); CreateCookiesForTest();
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
ASSERT_TRUE(helper->empty()); ASSERT_TRUE(helper->empty());
...@@ -284,8 +288,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedDomainCookie) { ...@@ -284,8 +288,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedDomainCookie) {
net::CookieList cookie; net::CookieList cookie;
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
ASSERT_TRUE(helper->empty()); ASSERT_TRUE(helper->empty());
std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create( std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create(
...@@ -316,8 +319,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedUnique) { ...@@ -316,8 +319,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedUnique) {
const GURL origin("http://www.google.com"); const GURL origin("http://www.google.com");
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
ASSERT_TRUE(helper->empty()); ASSERT_TRUE(helper->empty());
std::unique_ptr<net::CanonicalCookie> cookie(net::CanonicalCookie::Create( std::unique_ptr<net::CanonicalCookie> cookie(net::CanonicalCookie::Create(
...@@ -344,8 +346,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedReplaceCookie) { ...@@ -344,8 +346,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedReplaceCookie) {
const GURL origin("http://www.google.com"); const GURL origin("http://www.google.com");
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
ASSERT_TRUE(helper->empty()); ASSERT_TRUE(helper->empty());
std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create( std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create(
...@@ -415,8 +416,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedEmpty) { ...@@ -415,8 +416,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedEmpty) {
const GURL url_google("http://www.google.com"); const GURL url_google("http://www.google.com");
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
ASSERT_TRUE(helper->empty()); ASSERT_TRUE(helper->empty());
std::unique_ptr<net::CanonicalCookie> changed_cookie( std::unique_ptr<net::CanonicalCookie> changed_cookie(
...@@ -446,8 +446,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedDifferentFrames) { ...@@ -446,8 +446,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedDifferentFrames) {
GURL request_url("http://www.google.com"); GURL request_url("http://www.google.com");
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
ASSERT_TRUE(helper->empty()); ASSERT_TRUE(helper->empty());
std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create( std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create(
...@@ -479,8 +478,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedGetCookieCount) { ...@@ -479,8 +478,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedGetCookieCount) {
std::string cookie_domain(".www.google.com"); std::string cookie_domain(".www.google.com");
scoped_refptr<CannedBrowsingDataCookieHelper> helper( scoped_refptr<CannedBrowsingDataCookieHelper> helper(
new CannedBrowsingDataCookieHelper( new CannedBrowsingDataCookieHelper(storage_partition()));
testing_profile_->GetRequestContext()));
// Add two different cookies (distinguished by the tuple [cookie-name, // Add two different cookies (distinguished by the tuple [cookie-name,
// domain-value, path-value]) for a HTTP request to |frame1_url| and verify // domain-value, path-value]) for a HTTP request to |frame1_url| and verify
......
...@@ -61,7 +61,7 @@ class CookiesTreeModelTest : public testing::Test { ...@@ -61,7 +61,7 @@ class CookiesTreeModelTest : public testing::Test {
void SetUp() override { void SetUp() override {
profile_.reset(new TestingProfile()); profile_.reset(new TestingProfile());
mock_browsing_data_cookie_helper_ = mock_browsing_data_cookie_helper_ =
new MockBrowsingDataCookieHelper(profile_->GetRequestContext()); new MockBrowsingDataCookieHelper(profile_.get());
mock_browsing_data_database_helper_ = mock_browsing_data_database_helper_ =
new MockBrowsingDataDatabaseHelper(profile_.get()); new MockBrowsingDataDatabaseHelper(profile_.get());
mock_browsing_data_local_storage_helper_ = mock_browsing_data_local_storage_helper_ =
......
...@@ -9,13 +9,14 @@ ...@@ -9,13 +9,14 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/browser/profiles/profile.h"
#include "content/public/browser/browser_context.h"
#include "net/cookies/cookie_options.h" #include "net/cookies/cookie_options.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
MockBrowsingDataCookieHelper::MockBrowsingDataCookieHelper( MockBrowsingDataCookieHelper::MockBrowsingDataCookieHelper(Profile* profile)
net::URLRequestContextGetter* request_context_getter) : BrowsingDataCookieHelper(
: BrowsingDataCookieHelper(request_context_getter) { content::BrowserContext::GetDefaultStoragePartition(profile)) {}
}
MockBrowsingDataCookieHelper::~MockBrowsingDataCookieHelper() { MockBrowsingDataCookieHelper::~MockBrowsingDataCookieHelper() {
} }
......
...@@ -12,11 +12,12 @@ ...@@ -12,11 +12,12 @@
#include "chrome/browser/browsing_data/browsing_data_cookie_helper.h" #include "chrome/browser/browsing_data/browsing_data_cookie_helper.h"
#include "net/cookies/canonical_cookie.h" #include "net/cookies/canonical_cookie.h"
class Profile;
// Mock for BrowsingDataCookieHelper. // Mock for BrowsingDataCookieHelper.
class MockBrowsingDataCookieHelper : public BrowsingDataCookieHelper { class MockBrowsingDataCookieHelper : public BrowsingDataCookieHelper {
public: public:
explicit MockBrowsingDataCookieHelper( explicit MockBrowsingDataCookieHelper(Profile* profile);
net::URLRequestContextGetter* request_context_getter);
// BrowsingDataCookieHelper methods. // BrowsingDataCookieHelper methods.
void StartFetching(const FetchCallback& callback) override; void StartFetching(const FetchCallback& callback) override;
......
...@@ -43,7 +43,7 @@ class SiteDataSizeCollectorTest : public testing::Test { ...@@ -43,7 +43,7 @@ class SiteDataSizeCollectorTest : public testing::Test {
void SetUp() override { void SetUp() override {
profile_.reset(new TestingProfile()); profile_.reset(new TestingProfile());
mock_browsing_data_cookie_helper_ = mock_browsing_data_cookie_helper_ =
new MockBrowsingDataCookieHelper(profile_->GetRequestContext()); new MockBrowsingDataCookieHelper(profile_.get());
mock_browsing_data_database_helper_ = mock_browsing_data_database_helper_ =
new MockBrowsingDataDatabaseHelper(profile_.get()); new MockBrowsingDataDatabaseHelper(profile_.get());
mock_browsing_data_local_storage_helper_ = mock_browsing_data_local_storage_helper_ =
......
...@@ -38,8 +38,8 @@ bool SameDomainOrHost(const GURL& gurl1, const GURL& gurl2) { ...@@ -38,8 +38,8 @@ bool SameDomainOrHost(const GURL& gurl1, const GURL& gurl2) {
LocalSharedObjectsContainer::LocalSharedObjectsContainer(Profile* profile) LocalSharedObjectsContainer::LocalSharedObjectsContainer(Profile* profile)
: appcaches_(new CannedBrowsingDataAppCacheHelper(profile)), : appcaches_(new CannedBrowsingDataAppCacheHelper(profile)),
channel_ids_(new CannedBrowsingDataChannelIDHelper()), channel_ids_(new CannedBrowsingDataChannelIDHelper()),
cookies_( cookies_(new CannedBrowsingDataCookieHelper(
new CannedBrowsingDataCookieHelper(profile->GetRequestContext())), content::BrowserContext::GetDefaultStoragePartition(profile))),
databases_(new CannedBrowsingDataDatabaseHelper(profile)), databases_(new CannedBrowsingDataDatabaseHelper(profile)),
file_systems_(new CannedBrowsingDataFileSystemHelper(profile)), file_systems_(new CannedBrowsingDataFileSystemHelper(profile)),
indexed_dbs_(new CannedBrowsingDataIndexedDBHelper( indexed_dbs_(new CannedBrowsingDataIndexedDBHelper(
......
...@@ -104,8 +104,6 @@ void SessionDataDeleter::Run(content::StoragePartition* storage_partition) { ...@@ -104,8 +104,6 @@ void SessionDataDeleter::Run(content::StoragePartition* storage_partition) {
void SessionDataDeleter::DeleteSessionOnlyOriginCookies( void SessionDataDeleter::DeleteSessionOnlyOriginCookies(
const std::vector<net::CanonicalCookie>& cookies) { const std::vector<net::CanonicalCookie>& cookies) {
base::Time yesterday(base::Time::Now() - base::TimeDelta::FromDays(1));
auto delete_cookie_predicate = auto delete_cookie_predicate =
storage_policy_->CreateDeleteCookieOnExitPredicate(); storage_policy_->CreateDeleteCookieOnExitPredicate();
DCHECK(delete_cookie_predicate); DCHECK(delete_cookie_predicate);
...@@ -114,17 +112,8 @@ void SessionDataDeleter::DeleteSessionOnlyOriginCookies( ...@@ -114,17 +112,8 @@ void SessionDataDeleter::DeleteSessionOnlyOriginCookies(
if (!delete_cookie_predicate.Run(cookie.Domain(), cookie.IsSecure())) { if (!delete_cookie_predicate.Run(cookie.Domain(), cookie.IsSecure())) {
continue; continue;
} }
// Fire and forget.
// Delete a single cookie by setting its expiration time into the past. cookie_manager_->DeleteCanonicalCookie(cookie, base::DoNothing());
cookie_manager_->SetCanonicalCookie(
net::CanonicalCookie(cookie.Name(), cookie.Value(), cookie.Domain(),
cookie.Path(), cookie.CreationDate(), yesterday,
cookie.LastAccessDate(), cookie.IsSecure(),
cookie.IsHttpOnly(), cookie.SameSite(),
cookie.Priority()),
true /* secure_source */, true /* modify_http_only */,
// Fire and forget
network::mojom::CookieManager::SetCanonicalCookieCallback());
} }
} }
......
...@@ -244,7 +244,7 @@ void StorageHandler::UpdateBrowsingDataSize() { ...@@ -244,7 +244,7 @@ void StorageHandler::UpdateBrowsingDataSize() {
content::BrowserContext::GetDefaultStoragePartition(profile); content::BrowserContext::GetDefaultStoragePartition(profile);
site_data_size_collector_.reset(new SiteDataSizeCollector( site_data_size_collector_.reset(new SiteDataSizeCollector(
storage_partition->GetPath(), storage_partition->GetPath(),
new BrowsingDataCookieHelper(profile->GetRequestContext()), new BrowsingDataCookieHelper(storage_partition),
new BrowsingDataDatabaseHelper(profile), new BrowsingDataDatabaseHelper(profile),
new BrowsingDataLocalStorageHelper(profile), new BrowsingDataLocalStorageHelper(profile),
new BrowsingDataAppCacheHelper(profile), new BrowsingDataAppCacheHelper(profile),
......
...@@ -269,7 +269,7 @@ void CookiesViewHandler::EnsureCookiesTreeModelCreated() { ...@@ -269,7 +269,7 @@ void CookiesViewHandler::EnsureCookiesTreeModelCreated() {
storage::FileSystemContext* file_system_context = storage::FileSystemContext* file_system_context =
storage_partition->GetFileSystemContext(); storage_partition->GetFileSystemContext();
auto container = std::make_unique<LocalDataContainer>( auto container = std::make_unique<LocalDataContainer>(
new BrowsingDataCookieHelper(profile->GetRequestContext()), new BrowsingDataCookieHelper(storage_partition),
new BrowsingDataDatabaseHelper(profile), new BrowsingDataDatabaseHelper(profile),
new BrowsingDataLocalStorageHelper(profile), new BrowsingDataLocalStorageHelper(profile),
/*session_storage_helper=*/nullptr, /*session_storage_helper=*/nullptr,
......
...@@ -382,8 +382,6 @@ void DeleteFilteredCookies(network::mojom::CookieManager* cookie_manager, ...@@ -382,8 +382,6 @@ void DeleteFilteredCookies(network::mojom::CookieManager* cookie_manager,
const std::string& path, const std::string& path,
std::unique_ptr<DeleteCookiesCallback> callback, std::unique_ptr<DeleteCookiesCallback> callback,
const std::vector<net::CanonicalCookie>& cookies) { const std::vector<net::CanonicalCookie>& cookies) {
base::Time yesterday(base::Time::Now() - base::TimeDelta::FromDays(1));
std::vector<net::CanonicalCookie> filtered_list = std::vector<net::CanonicalCookie> filtered_list =
FilterCookies(cookies, name, normalized_domain, path); FilterCookies(cookies, name, normalized_domain, path);
...@@ -392,17 +390,10 @@ void DeleteFilteredCookies(network::mojom::CookieManager* cookie_manager, ...@@ -392,17 +390,10 @@ void DeleteFilteredCookies(network::mojom::CookieManager* cookie_manager,
base::BindOnce(&DeleteCookiesCallback::sendSuccess, std::move(callback))); base::BindOnce(&DeleteCookiesCallback::sendSuccess, std::move(callback)));
for (auto& cookie : filtered_list) { for (auto& cookie : filtered_list) {
// Delete a single cookie by setting its expiration time into the past. cookie_manager->DeleteCanonicalCookie(
cookie_manager->SetCanonicalCookie( cookie, base::BindOnce([](base::RepeatingClosure callback,
net::CanonicalCookie(cookie.Name(), cookie.Value(), cookie.Domain(), bool) { callback.Run(); },
cookie.Path(), cookie.CreationDate(), yesterday, barrier_closure));
cookie.LastAccessDate(), cookie.IsSecure(),
cookie.IsHttpOnly(), cookie.SameSite(),
cookie.Priority()),
true /* secure_source */, true /* modify_http_only */,
base::BindOnce(
[](base::RepeatingClosure callback, bool) { callback.Run(); },
barrier_closure));
} }
} }
......
...@@ -94,6 +94,18 @@ void CookieManager::SetCanonicalCookie(const net::CanonicalCookie& cookie, ...@@ -94,6 +94,18 @@ void CookieManager::SetCanonicalCookie(const net::CanonicalCookie& cookie,
modify_http_only, std::move(callback)); modify_http_only, std::move(callback));
} }
void CookieManager::DeleteCanonicalCookie(
const net::CanonicalCookie& cookie,
DeleteCanonicalCookieCallback callback) {
cookie_store_->DeleteCanonicalCookieAsync(
cookie,
base::BindOnce(
[](DeleteCanonicalCookieCallback callback, uint32_t num_deleted) {
std::move(callback).Run(num_deleted > 0);
},
std::move(callback)));
}
void CookieManager::SetContentSettings( void CookieManager::SetContentSettings(
const ContentSettingsForOneType& settings) { const ContentSettingsForOneType& settings) {
cookie_settings_.set_content_settings(settings); cookie_settings_.set_content_settings(settings);
......
...@@ -59,6 +59,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieManager ...@@ -59,6 +59,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieManager
bool secure_source, bool secure_source,
bool modify_http_only, bool modify_http_only,
SetCanonicalCookieCallback callback) override; SetCanonicalCookieCallback callback) override;
void DeleteCanonicalCookie(const net::CanonicalCookie& cookie,
DeleteCanonicalCookieCallback callback) override;
void SetContentSettings(const ContentSettingsForOneType& settings) override; void SetContentSettings(const ContentSettingsForOneType& settings) override;
void DeleteCookies(mojom::CookieDeletionFilterPtr filter, void DeleteCookies(mojom::CookieDeletionFilterPtr filter,
DeleteCookiesCallback callback) override; DeleteCookiesCallback callback) override;
......
...@@ -102,6 +102,16 @@ class SynchronousCookieManager { ...@@ -102,6 +102,16 @@ class SynchronousCookieManager {
return result; return result;
} }
bool DeleteCanonicalCookie(const net::CanonicalCookie& cookie) {
base::RunLoop run_loop;
bool result;
cookie_service_->DeleteCanonicalCookie(
cookie, base::BindOnce(&SynchronousCookieManager::SetCookieCallback,
&run_loop, &result));
run_loop.Run();
return result;
}
uint32_t DeleteCookies(mojom::CookieDeletionFilter filter) { uint32_t DeleteCookies(mojom::CookieDeletionFilter filter) {
base::RunLoop run_loop; base::RunLoop run_loop;
uint32_t num_deleted = 0u; uint32_t num_deleted = 0u;
...@@ -513,6 +523,20 @@ TEST_F(CookieManagerTest, GetCookieListAccessTime) { ...@@ -513,6 +523,20 @@ TEST_F(CookieManagerTest, GetCookieListAccessTime) {
EXPECT_LE(cookies[0].LastAccessDate(), base::Time::Now()); EXPECT_LE(cookies[0].LastAccessDate(), base::Time::Now());
} }
TEST_F(CookieManagerTest, DeleteCanonicalCookie) {
EXPECT_TRUE(SetCanonicalCookie(
net::CanonicalCookie(
"A", "B", "foo_host", "/", base::Time(), base::Time(), base::Time(),
/*secure=*/false, /*httponly=*/false,
net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_MEDIUM),
true, true));
std::vector<net::CanonicalCookie> cookies =
service_wrapper()->GetAllCookies();
ASSERT_EQ(1U, cookies.size());
EXPECT_TRUE(service_wrapper()->DeleteCanonicalCookie(cookies[0]));
EXPECT_EQ(0U, service_wrapper()->GetAllCookies().size());
}
TEST_F(CookieManagerTest, DeleteThroughSet) { TEST_F(CookieManagerTest, DeleteThroughSet) {
// Set some cookies for the test to play with. // Set some cookies for the test to play with.
EXPECT_TRUE(SetCanonicalCookie( EXPECT_TRUE(SetCanonicalCookie(
......
...@@ -171,9 +171,10 @@ interface CookieManager { ...@@ -171,9 +171,10 @@ interface CookieManager {
CanonicalCookie cookie, bool secure_source, bool modify_http_only) => CanonicalCookie cookie, bool secure_source, bool modify_http_only) =>
(bool success); (bool success);
// Delete a cookie. Returns true if a cookie was deleted.
DeleteCanonicalCookie(CanonicalCookie cookie) => (bool success);
// Delete a set of cookies matching the passed filter. // Delete a set of cookies matching the passed filter.
// To delete a single cookie, use SetCanonicalCookie with an expiry
// time in the past.
// Returns the number of cookies deleted. // Returns the number of cookies deleted.
DeleteCookies(CookieDeletionFilter filter) => (uint32 num_deleted); DeleteCookies(CookieDeletionFilter filter) => (uint32 num_deleted);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment