blob: 1ea2b6ccab523d2dd41a4f9cbdbb90fd7ebe9848 [file]
// Copyright 2026 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/device_bound_sessions/session_event.h"
namespace net::device_bound_sessions {
SessionEvent::SessionEvent() = default;
SessionEvent::SessionEvent(SchemefulSite site,
std::optional<std::string> session_id,
bool succeeded)
: site(std::move(site)),
session_id(std::move(session_id)),
succeeded(succeeded) {}
SessionEvent::~SessionEvent() = default;
SessionEvent::SessionEvent(const SessionEvent&) = default;
SessionEvent& SessionEvent::operator=(const SessionEvent&) = default;
SessionEvent::SessionEvent(SessionEvent&& other) = default;
SessionEvent& SessionEvent::operator=(SessionEvent&& other) = default;
CreationEventDetails::CreationEventDetails() = default;
CreationEventDetails::~CreationEventDetails() = default;
CreationEventDetails::CreationEventDetails(const CreationEventDetails&) =
default;
CreationEventDetails& CreationEventDetails::operator=(
const CreationEventDetails&) = default;
CreationEventDetails::CreationEventDetails(CreationEventDetails&& other) =
default;
CreationEventDetails& CreationEventDetails::operator=(
CreationEventDetails&& other) = default;
RefreshEventDetails::RefreshEventDetails() = default;
RefreshEventDetails::~RefreshEventDetails() = default;
RefreshEventDetails::RefreshEventDetails(const RefreshEventDetails&) = default;
RefreshEventDetails& RefreshEventDetails::operator=(
const RefreshEventDetails&) = default;
RefreshEventDetails::RefreshEventDetails(RefreshEventDetails&& other) = default;
RefreshEventDetails& RefreshEventDetails::operator=(
RefreshEventDetails&& other) = default;
ChallengeEventDetails::ChallengeEventDetails() = default;
ChallengeEventDetails::ChallengeEventDetails(ChallengeResult challenge_result,
std::string challenge)
: challenge_result(challenge_result), challenge(std::move(challenge)) {}
ChallengeEventDetails::~ChallengeEventDetails() = default;
ChallengeEventDetails::ChallengeEventDetails(const ChallengeEventDetails&) =
default;
ChallengeEventDetails& ChallengeEventDetails::operator=(
const ChallengeEventDetails&) = default;
ChallengeEventDetails::ChallengeEventDetails(ChallengeEventDetails&& other) =
default;
ChallengeEventDetails& ChallengeEventDetails::operator=(
ChallengeEventDetails&& other) = default;
TerminationEventDetails::TerminationEventDetails() = default;
TerminationEventDetails::TerminationEventDetails(DeletionReason deletion_reason)
: deletion_reason(deletion_reason) {}
TerminationEventDetails::~TerminationEventDetails() = default;
TerminationEventDetails::TerminationEventDetails(
const TerminationEventDetails&) = default;
TerminationEventDetails& TerminationEventDetails::operator=(
const TerminationEventDetails&) = default;
TerminationEventDetails::TerminationEventDetails(
TerminationEventDetails&& other) = default;
TerminationEventDetails& TerminationEventDetails::operator=(
TerminationEventDetails&& other) = default;
// static
SessionEvent SessionEvent::MakeCreationEvent(
SchemefulSite site,
std::optional<std::string> session_id,
bool succeeded,
SessionError fetch_error,
std::optional<SessionDisplay> new_session_display) {
SessionEvent event(std::move(site), std::move(session_id), succeeded);
auto& details = event.event_type_details.emplace<CreationEventDetails>();
details.fetch_error = fetch_error.type;
details.new_session_display = std::move(new_session_display);
details.failed_request = std::move(fetch_error.failed_request);
return event;
}
// static
SessionEvent SessionEvent::MakeRefreshEvent(
SchemefulSite site,
const std::string& session_id,
bool succeeded,
RefreshResult refresh_result,
std::optional<SessionError> fetch_error,
std::optional<SessionDisplay> new_session_display,
bool was_fully_proactive_refresh) {
SessionEvent event(std::move(site), session_id, succeeded);
auto& details = event.event_type_details.emplace<RefreshEventDetails>();
details.refresh_result = refresh_result;
details.was_fully_proactive_refresh = was_fully_proactive_refresh;
details.new_session_display = std::move(new_session_display);
if (fetch_error) {
details.fetch_error = fetch_error->type;
details.failed_request = std::move(fetch_error->failed_request);
}
return event;
}
// static
SessionEvent SessionEvent::MakeChallengeEvent(
SchemefulSite site,
std::optional<std::string> session_id,
bool succeeded,
ChallengeResult challenge_result,
const std::string& challenge) {
SessionEvent event(std::move(site), std::move(session_id), succeeded);
event.event_type_details.emplace<ChallengeEventDetails>(challenge_result,
challenge);
return event;
}
// static
SessionEvent SessionEvent::MakeTerminationEvent(
SchemefulSite site,
const std::string& session_id,
bool succeeded,
DeletionReason deletion_reason) {
SessionEvent event(std::move(site), session_id, succeeded);
event.event_type_details.emplace<TerminationEventDetails>(deletion_reason);
return event;
}
} // namespace net::device_bound_sessions