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