Commit 0aa1d243 authored by Reilly Grant's avatar Reilly Grant Committed by Commit Bot

Use network::mojom::CookieManager in RemoveSafeBrowsingCookieTester

This change updates RemoveSafeBrowsingCookieTester and its base class
RemoveCookieTester to use the CookieManager Mojo interface instead of
the net::CookieStore interface directly.

These tests now pass however I am leaving them marked as disabled until
issue 812589 is investigated more thoroughly.

Bug: 721395,812589
Change-Id: Iaadf98b31969bd159dfda5f5ff0802b8c8dd3239
Reviewed-on: https://chromium-review.googlesource.com/c/1257785
Commit-Queue: Reilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarJoshua Bell <jsbell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596328}
parent 9bfe4996
......@@ -17,6 +17,8 @@
#include "base/single_thread_task_runner.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "base/test/bind_test_util.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/simple_test_clock.h"
#include "base/test/test_timeouts.h"
......@@ -79,6 +81,7 @@
#include "components/password_manager/core/browser/password_manager_test_utils.h"
#include "components/password_manager/core/browser/password_store_consumer.h"
#include "components/prefs/testing_pref_service.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browsing_data_filter_builder.h"
#include "content/public/browser/browsing_data_remover.h"
#include "content/public/test/browsing_data_remover_test_util.h"
......@@ -86,11 +89,12 @@
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/public/test/test_utils.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_store.h"
#include "net/http/http_transaction_factory.h"
#include "net/net_buildflags.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_test_util.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/favicon_size.h"
......@@ -255,70 +259,59 @@ class RemoveCookieTester {
// Returns true, if the given cookie exists in the cookie store.
bool ContainsCookie() {
scoped_refptr<content::MessageLoopRunner> message_loop_runner =
new content::MessageLoopRunner;
quit_closure_ = message_loop_runner->QuitClosure();
get_cookie_success_ = false;
cookie_store_->GetCookieListWithOptionsAsync(
bool result = false;
base::RunLoop run_loop;
cookie_manager_->GetCookieList(
kOrigin1, net::CookieOptions(),
base::BindOnce(&RemoveCookieTester::GetCookieListCallback,
base::Unretained(this)));
message_loop_runner->Run();
return get_cookie_success_;
base::BindLambdaForTesting([&](const net::CookieList& cookie_list) {
std::string cookie_line =
net::CanonicalCookie::BuildCookieLine(cookie_list);
if (cookie_line == "A=1") {
result = true;
} else {
EXPECT_EQ("", cookie_line);
result = false;
}
run_loop.Quit();
}));
run_loop.Run();
return result;
}
void AddCookie() {
scoped_refptr<content::MessageLoopRunner> message_loop_runner =
new content::MessageLoopRunner;
quit_closure_ = message_loop_runner->QuitClosure();
cookie_store_->SetCookieWithOptionsAsync(
kOrigin1, "A=1", net::CookieOptions(),
base::BindOnce(&RemoveCookieTester::SetCookieCallback,
base::Unretained(this)));
message_loop_runner->Run();
base::RunLoop run_loop;
auto cookie = net::CanonicalCookie::Create(
kOrigin1, "A=1", base::Time::Now(), net::CookieOptions());
cookie_manager_->SetCanonicalCookie(
*cookie, /*secure_source=*/false, /*modify_http_only=*/false,
base::BindLambdaForTesting([&](bool result) {
EXPECT_TRUE(result);
run_loop.Quit();
}));
run_loop.Run();
}
protected:
void SetCookieStore(net::CookieStore* cookie_store) {
cookie_store_ = cookie_store;
void SetCookieManager(network::mojom::CookieManagerPtr cookie_manager) {
cookie_manager_ = std::move(cookie_manager);
}
private:
void GetCookieListCallback(const net::CookieList& cookie_list) {
std::string cookie_line =
net::CanonicalCookie::BuildCookieLine(cookie_list);
if (cookie_line == "A=1") {
get_cookie_success_ = true;
} else {
EXPECT_EQ("", cookie_line);
get_cookie_success_ = false;
}
quit_closure_.Run();
}
void SetCookieCallback(bool result) {
ASSERT_TRUE(result);
quit_closure_.Run();
}
bool get_cookie_success_ = false;
base::Closure quit_closure_;
// CookieStore must out live |this|.
net::CookieStore* cookie_store_ = nullptr;
network::mojom::CookieManagerPtr cookie_manager_;
DISALLOW_COPY_AND_ASSIGN(RemoveCookieTester);
};
void RunClosureAfterCookiesCleared(const base::Closure& task,
uint32_t cookies_deleted) {
task.Run();
}
class RemoveSafeBrowsingCookieTester : public RemoveCookieTester {
public:
RemoveSafeBrowsingCookieTester()
: browser_process_(TestingBrowserProcess::GetGlobal()) {
system_request_context_getter_ =
base::MakeRefCounted<net::TestURLRequestContextGetter>(
base::CreateSingleThreadTaskRunnerWithTraits(
{content::BrowserThread::IO}));
browser_process_->SetSystemRequestContext(
system_request_context_getter_.get());
scoped_refptr<safe_browsing::SafeBrowsingService> sb_service =
safe_browsing::SafeBrowsingService::CreateSafeBrowsingService();
browser_process_->SetSafeBrowsingService(sb_service.get());
......@@ -328,13 +321,16 @@ class RemoveSafeBrowsingCookieTester : public RemoveCookieTester {
// Make sure the safe browsing cookie store has no cookies.
// TODO(mmenke): Is this really needed?
base::RunLoop run_loop;
net::URLRequestContext* request_context =
sb_service->url_request_context()->GetURLRequestContext();
request_context->cookie_store()->DeleteAllAsync(
base::BindOnce(&RunClosureAfterCookiesCleared, run_loop.QuitClosure()));
network::mojom::CookieManagerPtr cookie_manager;
sb_service->GetNetworkContext()->GetCookieManager(
mojo::MakeRequest(&cookie_manager));
cookie_manager->DeleteCookies(
network::mojom::CookieDeletionFilter::New(),
base::BindLambdaForTesting(
[&](uint32_t num_deleted) { run_loop.Quit(); }));
run_loop.Run();
SetCookieStore(request_context->cookie_store());
SetCookieManager(std::move(cookie_manager));
}
virtual ~RemoveSafeBrowsingCookieTester() {
......@@ -345,6 +341,7 @@ class RemoveSafeBrowsingCookieTester : public RemoveCookieTester {
private:
TestingBrowserProcess* browser_process_;
scoped_refptr<net::URLRequestContextGetter> system_request_context_getter_;
DISALLOW_COPY_AND_ASSIGN(RemoveSafeBrowsingCookieTester);
};
......
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