// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_DEVICE_BOUND_SESSIONS_REGISTRATION_REQUEST_PARAM_H_ #define NET_DEVICE_BOUND_SESSIONS_REGISTRATION_REQUEST_PARAM_H_ #include #include #include #include "net/base/net_export.h" #include "url/gurl.h" namespace net::device_bound_sessions { class RegistrationFetcherParam; class Session; class NET_EXPORT RegistrationRequestParam { public: RegistrationRequestParam(const RegistrationRequestParam& other); RegistrationRequestParam& operator=(const RegistrationRequestParam& other); RegistrationRequestParam(RegistrationRequestParam&& other) noexcept; RegistrationRequestParam& operator=( RegistrationRequestParam&& other) noexcept; ~RegistrationRequestParam(); static RegistrationRequestParam Create( RegistrationFetcherParam&& fetcher_param); static RegistrationRequestParam Create(const Session& session); const GURL& registration_endpoint() const { return registration_endpoint_; } const std::optional& session_identifier() const { return session_identifier_; } const std::optional& challenge() const { return challenge_; } const std::optional& authorization() const { return authorization_; } GURL TakeRegistrationEndpoint() { return std::move(registration_endpoint_); } std::optional TakeSessionIdentifier() { return std::move(session_identifier_); } std::optional TakeChallenge() { return std::move(challenge_); } std::optional TakeAuthorization() { return std::move(authorization_); } static RegistrationRequestParam CreateForTesting( const GURL& registration_endpoint, std::string session_identifier, std::optional challenge); private: RegistrationRequestParam(const GURL& registration_endpoint, std::optional session_identifier, std::optional challenge, std::optional authorization); GURL registration_endpoint_; std::optional session_identifier_; std::optional challenge_; std::optional authorization_; }; } // namespace net::device_bound_sessions #endif // NET_DEVICE_BOUND_SESSIONS_REGISTRATION_REQUEST_PARAM_H_