#include "base/strings/strcat.h"
#include "base/strings/string_split.h"
#include "base/strings/stringprintf.h"
#include "base/test/bind.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/content_browser_test.h"
#include "content/public/test/content_browser_test_utils.h"
#include "content/public/test/frame_test_utils.h"
#include "content/public/test/test_navigation_observer.h"
#include "content/public/test/url_loader_interceptor.h"
#include "content/shell/browser/shell.h"
#include "net/base/features.h"
#include "net/cookies/canonical_cookie_test_helpers.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "testing/gmock/include/gmock/gmock-matchers.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace content {
namespace {
IsEmpty;
Key;
UnorderedElementsAre;
constexpr char kHostA[] = …;
constexpr char kHostB[] = …;
constexpr char kHostC[] = …;
constexpr char kSameSiteNoneCookieName[] = …;
constexpr char kSameSiteStrictCookieName[] = …;
constexpr char kSameSiteLaxCookieName[] = …;
constexpr char kSameSiteUnspecifiedCookieName[] = …;
constexpr char kEchoCookiesWithCorsPath[] = …;
GURL RedirectUrl(net::EmbeddedTestServer* test_server,
const std::string& host,
const GURL& target_url) { … }
class HttpCookieBrowserTest : public ContentBrowserTest,
public ::testing::WithParamInterface<bool> { … };
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest, SendSameSiteCookies) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest, SendSameSiteCookies_Redirect) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest, SetSameSiteCookies) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest, SetSameSiteCookies_Redirect) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
ScriptNavigationSameSite404ScriptReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
ScriptNavigationSameSite404UserReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
ScriptNavigationCrossSite404ScriptReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
ScriptNavigationCrossSite404UserReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
UserNavigationSameSite404ScriptReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
UserNavigationSameSite404UserReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
UserNavigationCrossSite404ScriptReload) { … }
IN_PROC_BROWSER_TEST_P(HttpCookieBrowserTest,
UserNavigationCrossSite404UserReload) { … }
std::unique_ptr<net::test_server::HttpResponse>
HandleEchoCookiesWithCorsRequest(const net::test_server::HttpRequest& request) { … }
class ThirdPartyCookiesBlockedHttpCookieBrowserTest
: public ContentBrowserTest { … };
IN_PROC_BROWSER_TEST_F(ThirdPartyCookiesBlockedHttpCookieBrowserTest,
SameSiteNoneCookieNavigateCrossSiteEmbedToSameSiteUrl) { … }
IN_PROC_BROWSER_TEST_F(ThirdPartyCookiesBlockedHttpCookieBrowserTest,
SameSiteNoneCookieCrossSitePostRequest) { … }
IN_PROC_BROWSER_TEST_F(ThirdPartyCookiesBlockedHttpCookieBrowserTest,
SameSiteNoneCookieCrossSiteSubresourceNavigationPost) { … }
IN_PROC_BROWSER_TEST_F(ThirdPartyCookiesBlockedHttpCookieBrowserTest,
RedirectCrossSiteSubresourceToSameSiteUrl) { … }
IN_PROC_BROWSER_TEST_F(ThirdPartyCookiesBlockedHttpCookieBrowserTest,
SameSiteNoneCookieBlockedOnABEmbeddedIframe) { … }
IN_PROC_BROWSER_TEST_F(
ThirdPartyCookiesBlockedHttpCookieBrowserTest,
SameSiteNoneCookieBlockedInCrossSiteFetchRequestFromTopLevelFrame) { … }
IN_PROC_BROWSER_TEST_F(ThirdPartyCookiesBlockedHttpCookieBrowserTest,
TopLevelSiteCorsException) { … }
class AncestorChainBitEnabledThirdPartyCookiesBlockedTest
: public ContentBrowserTest,
public ::testing::WithParamInterface<bool> { … };
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
TestCrossSitePartitionKeyNotAvailable) { … }
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
TestSubresourceRedirects) { … }
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
TestTopLevelRedirects) { … }
IN_PROC_BROWSER_TEST_P(
AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
TestSameSiteEmbeddedResourceToCrossSiteEmbeddedResource) { … }
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
CrossSiteToSameSiteIframeRedirects) { … }
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
RedirectCrossSiteThroughSameSiteIframe) { … }
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
RedirectTwoCrossSitesThroughSameSiteIframe) { … }
IN_PROC_BROWSER_TEST_P(
AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
RedirectCrossSiteIframeToSameSiteThenNavigateToSameSite) { … }
IN_PROC_BROWSER_TEST_P(AncestorChainBitEnabledThirdPartyCookiesBlockedTest,
CrossSiteToSameSiteIframeNavigation) { … }
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
}
}