1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/browsing_data/browsing_data_test_utils.h"
6
7 #include <string>
8 #include <vector>
9
10 #include "base/bind.h"
11 #include "base/run_loop.h"
12 #include "base/test/bind_test_util.h"
13 #include "content/public/browser/browser_context.h"
14 #include "content/public/browser/storage_partition.h"
15 #include "services/network/public/mojom/cookie_manager.mojom.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 using CookieInclusionStatus = net::CanonicalCookie::CookieInclusionStatus;
19
20 namespace content {
21
GetCookieManager(BrowserContext * browser_context)22 network::mojom::CookieManager* GetCookieManager(
23 BrowserContext* browser_context) {
24 StoragePartition* storage_partition =
25 BrowserContext::GetDefaultStoragePartition(browser_context);
26 return storage_partition->GetCookieManagerForBrowserProcess();
27 }
28
CreateCookieForTest(const std::string & cookie_name,const std::string & cookie_domain,net::CookieSameSite same_site,net::CookieOptions::SameSiteCookieContext cookie_context,bool is_cookie_secure,BrowserContext * browser_context)29 void CreateCookieForTest(
30 const std::string& cookie_name,
31 const std::string& cookie_domain,
32 net::CookieSameSite same_site,
33 net::CookieOptions::SameSiteCookieContext cookie_context,
34 bool is_cookie_secure,
35 BrowserContext* browser_context) {
36 base::RunLoop run_loop;
37 net::CookieOptions options;
38 options.set_same_site_cookie_context(cookie_context);
39 bool result_out;
40 GetCookieManager(browser_context)
41 ->SetCanonicalCookie(
42 net::CanonicalCookie(cookie_name, "1", cookie_domain, "/",
43 base::Time(), base::Time(), base::Time(),
44 is_cookie_secure, false, same_site,
45 net::COOKIE_PRIORITY_LOW),
46 "https", options,
47 base::BindLambdaForTesting([&](CookieInclusionStatus result) {
48 result_out = result.IsInclude();
49 run_loop.Quit();
50 }));
51 run_loop.Run();
52 EXPECT_TRUE(result_out);
53 }
54
GetAllCookies(BrowserContext * browser_context)55 std::vector<net::CanonicalCookie> GetAllCookies(
56 BrowserContext* browser_context) {
57 base::RunLoop run_loop;
58 std::vector<net::CanonicalCookie> cookies_out;
59 GetCookieManager(browser_context)
60 ->GetAllCookies(base::BindLambdaForTesting(
61 [&](const std::vector<net::CanonicalCookie>& cookies) {
62 cookies_out = cookies;
63 run_loop.Quit();
64 }));
65 run_loop.Run();
66 return cookies_out;
67 }
68
69 } // namespace content
70