#include <map>
#include <memory>
#include <string>
#include <vector>
#include "base/command_line.h"
#include "base/functional/callback_helpers.h"
#include "base/json/json_reader.h"
#include "base/memory/raw_ptr.h"
#include "base/path_service.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/test/scoped_feature_list.h"
#include "base/values.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/extensions/chrome_test_extension_loader.h"
#include "chrome/browser/extensions/extension_action_runner.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/extension_test_util.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/content_settings/core/browser/cookie_settings.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/network_session_configurator/common/network_switches.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/content_features.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_navigation_observer.h"
#include "content/public/test/test_utils.h"
#include "extensions/browser/browsertest_util.h"
#include "extensions/browser/process_manager.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/test/extension_test_message_listener.h"
#include "extensions/test/test_extension_dir.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/features.h"
#include "net/dns/mock_host_resolver.h"
#include "net/http/http_request_headers.h"
#include "net/test/embedded_test_server/controllable_http_response.h"
#include "net/test/embedded_test_server/default_handlers.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 "services/network/public/mojom/network_context.mojom.h"
#include "testing/gmock/include/gmock/gmock-matchers.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest-param-test.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace extensions {
namespace {
const char* kPermittedHost = …;
const char* kOtherPermittedHost = …;
const char* kNotPermittedHost = …;
const char* kPermittedSubdomain = …;
const char* kNotPermittedSubdomain = …;
const char* kPermissionPattern1 = …;
const char* kPermissionPattern1Sub = …;
const char* kPermissionPattern2 = …;
const char* kFetchCookiesPath = …;
const char* kCspHeader = …;
const char* kNoneCookie = …;
const char* kLaxCookie = …;
const char* kStrictCookie = …;
const char* kUnspecifiedCookie = …;
const char* kSameSiteNoneAttribute = …;
const char* kSameSiteLaxAttribute = …;
const char* kSameSiteStrictAttribute = …;
UnorderedElementsAreArray;
std::vector<std::string> AsCookies(const std::string& cookie_line) { … }
class ExtensionCookiesTest : public ExtensionBrowserTest { … };
class ExtensionSameSiteCookiesTest
: public ExtensionCookiesTest,
public ::testing::WithParamInterface<bool> { … };
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
ExtensionInitiatedPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
ExtensionInitiatedNotPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
OnePermittedSameSiteFrame) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
OnePermittedSameSiteFrame_Navigation) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
OnePermittedSubdomainFrame) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
OnePermittedSuperdomainFrame) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
OnePermittedCrossSiteFrame) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
CrossSiteInitiatorPermittedRequestNotPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
SameSiteInitiatorPermittedRequestNotPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
SameSiteInitiatorNotPermittedRequestPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
SameSiteInitiatorAndRequestNotPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest, NestedSameSitePermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest, NestedCrossSitePermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
NestedCrossSiteNotPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
NestedSameSiteNotPermitted) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
ActiveTabPermissions_BackgroundPage) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
ActiveTabPermissions_ExtensionSubframeInTab) { … }
IN_PROC_BROWSER_TEST_P(ExtensionSameSiteCookiesTest,
ActiveTabPermissions_ExtensionServiceWorker) { … }
INSTANTIATE_TEST_SUITE_P(…);
}
}