| // Copyright 2025 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "net/cookies/unique_cookie_key.h" | |
| #include <optional> | |
| #include <string> | |
| #include <utility> | |
| #include "net/cookies/cookie_constants.h" | |
| #include "net/cookies/cookie_partition_key.h" | |
| namespace net { | |
| class CookieBase; | |
| // static | |
| UniqueCookieKey UniqueCookieKey::Strict( | |
| base::PassKey<CookieBase>, | |
| std::optional<CookiePartitionKey> partition_key, | |
| std::string name, | |
| std::string domain, | |
| std::string path, | |
| CookieSourceScheme source_scheme, | |
| int source_port) { | |
| return UniqueCookieKey(KeyType::kStrict, std::move(partition_key), | |
| std::move(name), std::move(domain), std::move(path), | |
| source_scheme, source_port); | |
| } | |
| // static | |
| UniqueCookieKey UniqueCookieKey::Host( | |
| base::PassKey<CookieBase>, | |
| std::optional<CookiePartitionKey> partition_key, | |
| std::string name, | |
| std::string domain, | |
| std::string path, | |
| std::optional<CookieSourceScheme> source_scheme, | |
| std::optional<int> source_port) { | |
| return UniqueCookieKey(KeyType::kHost, std::move(partition_key), | |
| std::move(name), std::move(domain), std::move(path), | |
| source_scheme, source_port); | |
| } | |
| // static | |
| UniqueCookieKey UniqueCookieKey::Domain( | |
| base::PassKey<CookieBase>, | |
| std::optional<CookiePartitionKey> partition_key, | |
| std::string name, | |
| std::string domain, | |
| std::string path, | |
| std::optional<CookieSourceScheme> source_scheme) { | |
| return UniqueCookieKey(KeyType::kDomain, std::move(partition_key), | |
| std::move(name), std::move(domain), std::move(path), | |
| source_scheme, /*port=*/std::nullopt); | |
| } | |
| // static | |
| UniqueCookieKey UniqueCookieKey::Legacy( | |
| base::PassKey<CookieBase>, | |
| std::optional<CookiePartitionKey> partition_key, | |
| std::string name, | |
| std::string domain, | |
| std::string path) { | |
| return UniqueCookieKey(KeyType::kLegacy, std::move(partition_key), | |
| std::move(name), std::move(domain), std::move(path), | |
| /*source_scheme=*/std::nullopt, | |
| /*port=*/std::nullopt); | |
| } | |
| UniqueCookieKey::UniqueCookieKey(UniqueCookieKey&& other) = default; | |
| UniqueCookieKey::UniqueCookieKey(const UniqueCookieKey& other) = default; | |
| UniqueCookieKey& UniqueCookieKey::operator=(UniqueCookieKey&& other) = default; | |
| UniqueCookieKey& UniqueCookieKey::operator=(const UniqueCookieKey& other) = | |
| default; | |
| UniqueCookieKey::~UniqueCookieKey() = default; | |
| UniqueCookieKey::UniqueCookieKey( | |
| KeyType key_type, | |
| std::optional<CookiePartitionKey> partition_key, | |
| std::string name, | |
| std::string domain, | |
| std::string path, | |
| std::optional<CookieSourceScheme> source_scheme, | |
| std::optional<int> port) | |
| : key_type_(key_type), | |
| partition_key_(std::move(partition_key)), | |
| name_(std::move(name)), | |
| domain_(std::move(domain)), | |
| path_(std::move(path)), | |
| source_scheme_(source_scheme), | |
| port_(port) {} | |
| } // namespace net |