blob: 22b734c4de1b8088652447f57e120654eb79b228 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/network/public/cpp/cookie_manager_mojom_traits.h"
#include "base/debug/alias.h"
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/time/time.h"
#include "mojo/public/cpp/base/time_mojom_traits.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "net/cookies/cookie_constants.h"
#include "net/cookies/cookie_options.h"
#include "services/network/public/mojom/cookie_manager.mojom-shared.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "services/network/public/mojom/schemeful_site.mojom-shared.h"
#include "url/mojom/origin.mojom-shared.h"
namespace mojo {
network::mojom::CookieSourceType
EnumTraits<network::mojom::CookieSourceType, net::CookieSourceType>::ToMojom(
net::CookieSourceType input) {
switch (input) {
case net::CookieSourceType::kUnknown:
return network::mojom::CookieSourceType::kUnknown;
case net::CookieSourceType::kHTTP:
return network::mojom::CookieSourceType::kHTTP;
case net::CookieSourceType::kScript:
return network::mojom::CookieSourceType::kScript;
case net::CookieSourceType::kOther:
return network::mojom::CookieSourceType::kOther;
}
}
bool EnumTraits<network::mojom::CookieSourceType, net::CookieSourceType>::
FromMojom(network::mojom::CookieSourceType input,
net::CookieSourceType* output) {
switch (input) {
case network::mojom::CookieSourceType::kUnknown:
*output = net::CookieSourceType::kUnknown;
return true;
case network::mojom::CookieSourceType::kHTTP:
*output = net::CookieSourceType::kHTTP;
return true;
case network::mojom::CookieSourceType::kScript:
*output = net::CookieSourceType::kScript;
return true;
case network::mojom::CookieSourceType::kOther:
*output = net::CookieSourceType::kOther;
return true;
}
}
network::mojom::CookiePriority
EnumTraits<network::mojom::CookiePriority, net::CookiePriority>::ToMojom(
net::CookiePriority input) {
switch (input) {
case net::COOKIE_PRIORITY_LOW:
return network::mojom::CookiePriority::LOW;
case net::COOKIE_PRIORITY_MEDIUM:
return network::mojom::CookiePriority::MEDIUM;
case net::COOKIE_PRIORITY_HIGH:
return network::mojom::CookiePriority::HIGH;
}
NOTREACHED();
}
bool EnumTraits<network::mojom::CookiePriority, net::CookiePriority>::FromMojom(
network::mojom::CookiePriority input,
net::CookiePriority* output) {
switch (input) {
case network::mojom::CookiePriority::LOW:
*output = net::CookiePriority::COOKIE_PRIORITY_LOW;
return true;
case network::mojom::CookiePriority::MEDIUM:
*output = net::CookiePriority::COOKIE_PRIORITY_MEDIUM;
return true;
case network::mojom::CookiePriority::HIGH:
*output = net::CookiePriority::COOKIE_PRIORITY_HIGH;
return true;
}
return false;
}
network::mojom::CookieSameSite
EnumTraits<network::mojom::CookieSameSite, net::CookieSameSite>::ToMojom(
net::CookieSameSite input) {
switch (input) {
case net::CookieSameSite::UNSPECIFIED:
return network::mojom::CookieSameSite::UNSPECIFIED;
case net::CookieSameSite::NO_RESTRICTION:
return network::mojom::CookieSameSite::NO_RESTRICTION;
case net::CookieSameSite::LAX_MODE:
return network::mojom::CookieSameSite::LAX_MODE;
case net::CookieSameSite::STRICT_MODE:
return network::mojom::CookieSameSite::STRICT_MODE;
default:
break;
}
NOTREACHED();
}
bool EnumTraits<network::mojom::CookieSameSite, net::CookieSameSite>::FromMojom(
network::mojom::CookieSameSite input,
net::CookieSameSite* output) {
switch (input) {
case network::mojom::CookieSameSite::UNSPECIFIED:
*output = net::CookieSameSite::UNSPECIFIED;
return true;
case network::mojom::CookieSameSite::NO_RESTRICTION:
*output = net::CookieSameSite::NO_RESTRICTION;
return true;
case network::mojom::CookieSameSite::LAX_MODE:
*output = net::CookieSameSite::LAX_MODE;
return true;
case network::mojom::CookieSameSite::STRICT_MODE:
*output = net::CookieSameSite::STRICT_MODE;
return true;
default:
break;
}
return false;
}
network::mojom::CookieEffectiveSameSite EnumTraits<
network::mojom::CookieEffectiveSameSite,
net::CookieEffectiveSameSite>::ToMojom(net::CookieEffectiveSameSite input) {
switch (input) {
case net::CookieEffectiveSameSite::NO_RESTRICTION:
return network::mojom::CookieEffectiveSameSite::kNoRestriction;
case net::CookieEffectiveSameSite::LAX_MODE:
return network::mojom::CookieEffectiveSameSite::kLaxMode;
case net::CookieEffectiveSameSite::STRICT_MODE:
return network::mojom::CookieEffectiveSameSite::kStrictMode;
case net::CookieEffectiveSameSite::LAX_MODE_ALLOW_UNSAFE:
return network::mojom::CookieEffectiveSameSite::kLaxModeAllowUnsafe;
case net::CookieEffectiveSameSite::UNDEFINED:
return network::mojom::CookieEffectiveSameSite::kUndefined;
default:
break;
}
NOTREACHED();
}
bool EnumTraits<network::mojom::CookieEffectiveSameSite,
net::CookieEffectiveSameSite>::
FromMojom(network::mojom::CookieEffectiveSameSite input,
net::CookieEffectiveSameSite* output) {
switch (input) {
case network::mojom::CookieEffectiveSameSite::kNoRestriction:
*output = net::CookieEffectiveSameSite::NO_RESTRICTION;
return true;
case network::mojom::CookieEffectiveSameSite::kLaxMode:
*output = net::CookieEffectiveSameSite::LAX_MODE;
return true;
case network::mojom::CookieEffectiveSameSite::kStrictMode:
*output = net::CookieEffectiveSameSite::STRICT_MODE;
return true;
case network::mojom::CookieEffectiveSameSite::kLaxModeAllowUnsafe:
*output = net::CookieEffectiveSameSite::LAX_MODE_ALLOW_UNSAFE;
return true;
case network::mojom::CookieEffectiveSameSite::kUndefined:
*output = net::CookieEffectiveSameSite::UNDEFINED;
return true;
default:
break;
}
return false;
}
network::mojom::CookieSourceScheme
EnumTraits<network::mojom::CookieSourceScheme,
net::CookieSourceScheme>::ToMojom(net::CookieSourceScheme input) {
switch (input) {
case net::CookieSourceScheme::kUnset:
return network::mojom::CookieSourceScheme::kUnset;
case net::CookieSourceScheme::kNonSecure:
return network::mojom::CookieSourceScheme::kNonSecure;
case net::CookieSourceScheme::kSecure:
return network::mojom::CookieSourceScheme::kSecure;
}
NOTREACHED();
}
bool EnumTraits<network::mojom::CookieSourceScheme, net::CookieSourceScheme>::
FromMojom(network::mojom::CookieSourceScheme input,
net::CookieSourceScheme* output) {
switch (input) {
case network::mojom::CookieSourceScheme::kUnset:
*output = net::CookieSourceScheme::kUnset;
return true;
case network::mojom::CookieSourceScheme::kNonSecure:
*output = net::CookieSourceScheme::kNonSecure;
return true;
case network::mojom::CookieSourceScheme::kSecure:
*output = net::CookieSourceScheme::kSecure;
return true;
}
return false;
}
network::mojom::CookieAccessSemantics EnumTraits<
network::mojom::CookieAccessSemantics,
net::CookieAccessSemantics>::ToMojom(net::CookieAccessSemantics input) {
switch (input) {
case net::CookieAccessSemantics::UNKNOWN:
return network::mojom::CookieAccessSemantics::UNKNOWN;
case net::CookieAccessSemantics::NONLEGACY:
return network::mojom::CookieAccessSemantics::NONLEGACY;
case net::CookieAccessSemantics::LEGACY:
return network::mojom::CookieAccessSemantics::LEGACY;
default:
break;
}
NOTREACHED();
}
bool EnumTraits<network::mojom::CookieAccessSemantics,
net::CookieAccessSemantics>::
FromMojom(network::mojom::CookieAccessSemantics input,
net::CookieAccessSemantics* output) {
switch (input) {
case network::mojom::CookieAccessSemantics::UNKNOWN:
*output = net::CookieAccessSemantics::UNKNOWN;
return true;
case network::mojom::CookieAccessSemantics::NONLEGACY:
*output = net::CookieAccessSemantics::NONLEGACY;
return true;
case network::mojom::CookieAccessSemantics::LEGACY:
*output = net::CookieAccessSemantics::LEGACY;
return true;
default:
break;
}
return false;
}
network::mojom::CookieScopeSemantics EnumTraits<
network::mojom::CookieScopeSemantics,
net::CookieScopeSemantics>::ToMojom(net::CookieScopeSemantics input) {
switch (input) {
case net::CookieScopeSemantics::UNKNOWN:
return network::mojom::CookieScopeSemantics::UNKNOWN;
case net::CookieScopeSemantics::NONLEGACY:
return network::mojom::CookieScopeSemantics::NONLEGACY;
case net::CookieScopeSemantics::LEGACY:
return network::mojom::CookieScopeSemantics::LEGACY;
}
}
bool EnumTraits<network::mojom::CookieScopeSemantics,
net::CookieScopeSemantics>::
FromMojom(network::mojom::CookieScopeSemantics input,
net::CookieScopeSemantics* output) {
switch (input) {
case network::mojom::CookieScopeSemantics::UNKNOWN:
*output = net::CookieScopeSemantics::UNKNOWN;
return true;
case network::mojom::CookieScopeSemantics::NONLEGACY:
*output = net::CookieScopeSemantics::NONLEGACY;
return true;
case network::mojom::CookieScopeSemantics::LEGACY:
*output = net::CookieScopeSemantics::LEGACY;
return true;
default:
break;
}
return false;
}
network::mojom::ContextType
EnumTraits<network::mojom::ContextType,
net::CookieOptions::SameSiteCookieContext::ContextType>::
ToMojom(net::CookieOptions::SameSiteCookieContext::ContextType input) {
switch (input) {
case net::CookieOptions::SameSiteCookieContext::ContextType::
SAME_SITE_STRICT:
return network::mojom::ContextType::SAME_SITE_STRICT;
case net::CookieOptions::SameSiteCookieContext::ContextType::SAME_SITE_LAX:
return network::mojom::ContextType::SAME_SITE_LAX;
case net::CookieOptions::SameSiteCookieContext::ContextType::
SAME_SITE_LAX_METHOD_UNSAFE:
return network::mojom::ContextType::SAME_SITE_LAX_METHOD_UNSAFE;
case net::CookieOptions::SameSiteCookieContext::ContextType::CROSS_SITE:
return network::mojom::ContextType::CROSS_SITE;
default:
NOTREACHED();
}
}
bool EnumTraits<network::mojom::ContextType,
net::CookieOptions::SameSiteCookieContext::ContextType>::
FromMojom(network::mojom::ContextType input,
net::CookieOptions::SameSiteCookieContext::ContextType* output) {
switch (input) {
case network::mojom::ContextType::SAME_SITE_STRICT:
*output = net::CookieOptions::SameSiteCookieContext::ContextType::
SAME_SITE_STRICT;
return true;
case network::mojom::ContextType::SAME_SITE_LAX:
*output =
net::CookieOptions::SameSiteCookieContext::ContextType::SAME_SITE_LAX;
return true;
case network::mojom::ContextType::SAME_SITE_LAX_METHOD_UNSAFE:
*output = net::CookieOptions::SameSiteCookieContext::ContextType::
SAME_SITE_LAX_METHOD_UNSAFE;
return true;
case network::mojom::ContextType::CROSS_SITE:
*output =
net::CookieOptions::SameSiteCookieContext::ContextType::CROSS_SITE;
return true;
}
return false;
}
network::mojom::CookieSameSiteContextMetadataDowngradeType
EnumTraits<network::mojom::CookieSameSiteContextMetadataDowngradeType,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType>::
ToMojom(net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType input) {
switch (input) {
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kNoDowngrade:
return network::mojom::CookieSameSiteContextMetadataDowngradeType::
kNoDowngrade;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kStrictToLax:
return network::mojom::CookieSameSiteContextMetadataDowngradeType::
kStrictToLax;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kStrictToCross:
return network::mojom::CookieSameSiteContextMetadataDowngradeType::
kStrictToCross;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kLaxToCross:
return network::mojom::CookieSameSiteContextMetadataDowngradeType::
kLaxToCross;
}
}
bool EnumTraits<network::mojom::CookieSameSiteContextMetadataDowngradeType,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType>::
FromMojom(network::mojom::CookieSameSiteContextMetadataDowngradeType input,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType* output) {
switch (input) {
case network::mojom::CookieSameSiteContextMetadataDowngradeType::
kNoDowngrade:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kNoDowngrade;
return true;
case network::mojom::CookieSameSiteContextMetadataDowngradeType::
kStrictToLax:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kStrictToLax;
return true;
case network::mojom::CookieSameSiteContextMetadataDowngradeType::
kStrictToCross:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kStrictToCross;
return true;
case network::mojom::CookieSameSiteContextMetadataDowngradeType::
kLaxToCross:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextDowngradeType::kLaxToCross;
return true;
}
return false;
}
network::mojom::ContextRedirectTypeBug1221316
EnumTraits<network::mojom::ContextRedirectTypeBug1221316,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316>::
ToMojom(net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316 input) {
switch (input) {
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kUnset:
return network::mojom::ContextRedirectTypeBug1221316::kUnset;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kNoRedirect:
return network::mojom::ContextRedirectTypeBug1221316::kNoRedirect;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kCrossSiteRedirect:
return network::mojom::ContextRedirectTypeBug1221316::kCrossSiteRedirect;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kPartialSameSiteRedirect:
return network::mojom::ContextRedirectTypeBug1221316::
kPartialSameSiteRedirect;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kAllSameSiteRedirect:
return network::mojom::ContextRedirectTypeBug1221316::
kAllSameSiteRedirect;
}
}
bool EnumTraits<network::mojom::ContextRedirectTypeBug1221316,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316>::
FromMojom(network::mojom::ContextRedirectTypeBug1221316 input,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316* output) {
switch (input) {
case network::mojom::ContextRedirectTypeBug1221316::kUnset:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kUnset;
return true;
case network::mojom::ContextRedirectTypeBug1221316::kNoRedirect:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kNoRedirect;
return true;
case network::mojom::ContextRedirectTypeBug1221316::kCrossSiteRedirect:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kCrossSiteRedirect;
return true;
case network::mojom::ContextRedirectTypeBug1221316::
kPartialSameSiteRedirect:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kPartialSameSiteRedirect;
return true;
case network::mojom::ContextRedirectTypeBug1221316::kAllSameSiteRedirect:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
ContextRedirectTypeBug1221316::kAllSameSiteRedirect;
return true;
}
return false;
}
network::mojom::HttpMethod EnumTraits<
network::mojom::HttpMethod,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::HttpMethod>::
ToMojom(
net::CookieOptions::SameSiteCookieContext::ContextMetadata::HttpMethod
input) {
switch (input) {
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kUnset:
return network::mojom::HttpMethod::kUnset;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kUnknown:
return network::mojom::HttpMethod::kUnknown;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kGet:
return network::mojom::HttpMethod::kGet;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kHead:
return network::mojom::HttpMethod::kHead;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kPost:
return network::mojom::HttpMethod::kPost;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::KPut:
return network::mojom::HttpMethod::KPut;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kDelete:
return network::mojom::HttpMethod::kDelete;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kConnect:
return network::mojom::HttpMethod::kConnect;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kOptions:
return network::mojom::HttpMethod::kOptions;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kTrace:
return network::mojom::HttpMethod::kTrace;
case net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kPatch:
return network::mojom::HttpMethod::kPatch;
}
}
bool EnumTraits<
network::mojom::HttpMethod,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::HttpMethod>::
FromMojom(
network::mojom::HttpMethod input,
net::CookieOptions::SameSiteCookieContext::ContextMetadata::HttpMethod*
output) {
switch (input) {
case network::mojom::HttpMethod::kUnset:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kUnset;
return true;
case network::mojom::HttpMethod::kUnknown:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kUnknown;
return true;
case network::mojom::HttpMethod::kGet:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kGet;
return true;
case network::mojom::HttpMethod::kHead:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kHead;
return true;
case network::mojom::HttpMethod::kPost:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kPost;
return true;
case network::mojom::HttpMethod::KPut:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::KPut;
return true;
case network::mojom::HttpMethod::kDelete:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kDelete;
return true;
case network::mojom::HttpMethod::kConnect:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kConnect;
return true;
case network::mojom::HttpMethod::kOptions:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kOptions;
return true;
case network::mojom::HttpMethod::kTrace:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kTrace;
return true;
case network::mojom::HttpMethod::kPatch:
*output = net::CookieOptions::SameSiteCookieContext::ContextMetadata::
HttpMethod::kPatch;
return true;
}
return false;
}
network::mojom::CookieChangeCause
EnumTraits<network::mojom::CookieChangeCause, net::CookieChangeCause>::ToMojom(
net::CookieChangeCause input) {
switch (input) {
case net::CookieChangeCause::INSERTED:
return network::mojom::CookieChangeCause::INSERTED;
case net::CookieChangeCause::EXPLICIT:
return network::mojom::CookieChangeCause::EXPLICIT;
case net::CookieChangeCause::UNKNOWN_DELETION:
return network::mojom::CookieChangeCause::UNKNOWN_DELETION;
case net::CookieChangeCause::OVERWRITE:
return network::mojom::CookieChangeCause::OVERWRITE;
case net::CookieChangeCause::EXPIRED:
return network::mojom::CookieChangeCause::EXPIRED;
case net::CookieChangeCause::EVICTED:
return network::mojom::CookieChangeCause::EVICTED;
case net::CookieChangeCause::EXPIRED_OVERWRITE:
return network::mojom::CookieChangeCause::EXPIRED_OVERWRITE;
case net::CookieChangeCause::INSERTED_NO_CHANGE_OVERWRITE:
return network::mojom::CookieChangeCause::INSERTED_NO_CHANGE_OVERWRITE;
default:
break;
}
NOTREACHED();
}
bool EnumTraits<network::mojom::CookieChangeCause, net::CookieChangeCause>::
FromMojom(network::mojom::CookieChangeCause input,
net::CookieChangeCause* output) {
switch (input) {
case network::mojom::CookieChangeCause::INSERTED:
*output = net::CookieChangeCause::INSERTED;
return true;
case network::mojom::CookieChangeCause::EXPLICIT:
*output = net::CookieChangeCause::EXPLICIT;
return true;
case network::mojom::CookieChangeCause::UNKNOWN_DELETION:
*output = net::CookieChangeCause::UNKNOWN_DELETION;
return true;
case network::mojom::CookieChangeCause::OVERWRITE:
*output = net::CookieChangeCause::OVERWRITE;
return true;
case network::mojom::CookieChangeCause::EXPIRED:
*output = net::CookieChangeCause::EXPIRED;
return true;
case network::mojom::CookieChangeCause::EVICTED:
*output = net::CookieChangeCause::EVICTED;
return true;
case network::mojom::CookieChangeCause::EXPIRED_OVERWRITE:
*output = net::CookieChangeCause::EXPIRED_OVERWRITE;
return true;
case network::mojom::CookieChangeCause::INSERTED_NO_CHANGE_OVERWRITE:
*output = net::CookieChangeCause::INSERTED_NO_CHANGE_OVERWRITE;
return true;
default:
break;
}
return false;
}
bool StructTraits<network::mojom::CookieSameSiteContextMetadataDataView,
net::CookieOptions::SameSiteCookieContext::ContextMetadata>::
Read(network::mojom::CookieSameSiteContextMetadataDataView data,
net::CookieOptions::SameSiteCookieContext::ContextMetadata* out) {
if (!data.ReadCrossSiteRedirectDowngrade(&out->cross_site_redirect_downgrade))
return false;
if (!data.ReadRedirectTypeBug1221316(&out->redirect_type_bug_1221316))
return false;
return true;
}
bool StructTraits<network::mojom::CookieSameSiteContextDataView,
net::CookieOptions::SameSiteCookieContext>::
Read(network::mojom::CookieSameSiteContextDataView mojo_context,
net::CookieOptions::SameSiteCookieContext* context) {
net::CookieOptions::SameSiteCookieContext::ContextType context_type;
if (!mojo_context.ReadContext(&context_type))
return false;
net::CookieOptions::SameSiteCookieContext::ContextType schemeful_context;
if (!mojo_context.ReadSchemefulContext(&schemeful_context))
return false;
// schemeful_context must be <= context.
if (schemeful_context > context_type)
return false;
net::CookieOptions::SameSiteCookieContext::ContextMetadata metadata;
if (!mojo_context.ReadMetadata(&metadata))
return false;
net::CookieOptions::SameSiteCookieContext::ContextMetadata schemeful_metadata;
if (!mojo_context.ReadSchemefulMetadata(&schemeful_metadata))
return false;
*context = net::CookieOptions::SameSiteCookieContext(
context_type, schemeful_context, metadata, schemeful_metadata);
return true;
}
bool StructTraits<network::mojom::CookieOptionsDataView, net::CookieOptions>::
Read(network::mojom::CookieOptionsDataView mojo_options,
net::CookieOptions* cookie_options) {
if (mojo_options.exclude_httponly())
cookie_options->set_exclude_httponly();
else
cookie_options->set_include_httponly();
net::CookieOptions::SameSiteCookieContext same_site_cookie_context;
if (!mojo_options.ReadSameSiteCookieContext(&same_site_cookie_context))
return false;
cookie_options->set_same_site_cookie_context(same_site_cookie_context);
if (mojo_options.update_access_time())
cookie_options->set_update_access_time();
else
cookie_options->set_do_not_update_access_time();
if (mojo_options.return_excluded_cookies())
cookie_options->set_return_excluded_cookies();
else
cookie_options->unset_return_excluded_cookies();
return true;
}
bool EnumTraits<network::mojom::AncestorChainBit,
net::CookiePartitionKey::AncestorChainBit>::
FromMojom(network::mojom::AncestorChainBit input) {
switch (input) {
case network::mojom::AncestorChainBit::kSameSite:
return false;
case network::mojom::AncestorChainBit::kCrossSite:
return true;
}
NOTREACHED();
}
network::mojom::AncestorChainBit EnumTraits<
network::mojom::AncestorChainBit,
net::CookiePartitionKey::AncestorChainBit>::ToMojom(bool cross_site) {
return cross_site ? network::mojom::AncestorChainBit::kCrossSite
: network::mojom::AncestorChainBit::kSameSite;
}
bool StructTraits<network::mojom::CookiePartitionKeyDataView,
net::CookiePartitionKey>::
Read(network::mojom::CookiePartitionKeyDataView partition_key,
net::CookiePartitionKey* out) {
bool has_cross_site_ancestor =
EnumTraits<network::mojom::AncestorChainBit,
net::CookiePartitionKey::AncestorChainBit>::
FromMojom(partition_key.ancestor_chain_bit());
if (partition_key.from_script()) {
*out = net::CookiePartitionKey::FromScript();
return true;
}
net::SchemefulSite site;
if (!partition_key.ReadSite(&site)) {
return false;
}
std::optional<base::UnguessableToken> nonce;
if (!partition_key.ReadNonce(&nonce)) {
return false;
}
*out = net::CookiePartitionKey::FromWire(
site,
net::CookiePartitionKey::BoolToAncestorChainBit(has_cross_site_ancestor),
nonce);
return true;
}
const std::vector<net::CookiePartitionKey>
StructTraits<network::mojom::CookiePartitionKeyCollectionDataView,
net::CookiePartitionKeyCollection>::
keys(const net::CookiePartitionKeyCollection& key_collection) {
std::vector<net::CookiePartitionKey> result;
if (key_collection.ContainsAllKeys() || key_collection.IsEmpty())
return result;
result.insert(result.begin(), key_collection.PartitionKeys().begin(),
key_collection.PartitionKeys().end());
return result;
}
bool StructTraits<network::mojom::CookiePartitionKeyCollectionDataView,
net::CookiePartitionKeyCollection>::
Read(network::mojom::CookiePartitionKeyCollectionDataView
key_collection_data_view,
net::CookiePartitionKeyCollection* out) {
if (key_collection_data_view.contains_all_partitions()) {
*out = net::CookiePartitionKeyCollection::ContainsAll();
return true;
}
std::vector<net::CookiePartitionKey> keys;
if (!key_collection_data_view.ReadKeys(&keys))
return false;
*out = net::CookiePartitionKeyCollection(keys);
return true;
}
bool StructTraits<
network::mojom::CanonicalCookieDataView,
net::CanonicalCookie>::Read(network::mojom::CanonicalCookieDataView cookie,
net::CanonicalCookie* out) {
std::string name;
if (!cookie.ReadName(&name))
return false;
std::string value;
if (!cookie.ReadValue(&value))
return false;
std::string domain;
if (!cookie.ReadDomain(&domain))
return false;
std::string path;
if (!cookie.ReadPath(&path))
return false;
base::Time creation_time;
base::Time expiry_time;
base::Time last_access_time;
base::Time last_update_time;
if (!cookie.ReadCreation(&creation_time))
return false;
if (!cookie.ReadExpiry(&expiry_time))
return false;
if (!cookie.ReadLastAccess(&last_access_time))
return false;
if (!cookie.ReadLastUpdate(&last_update_time))
return false;
net::CookieSameSite site_restrictions;
if (!cookie.ReadSiteRestrictions(&site_restrictions))
return false;
net::CookiePriority priority;
if (!cookie.ReadPriority(&priority))
return false;
std::optional<net::CookiePartitionKey> partition_key;
if (!cookie.ReadPartitionKey(&partition_key))
return false;
net::CookieSourceScheme source_scheme;
if (!cookie.ReadSourceScheme(&source_scheme))
return false;
net::CookieSourceType source_type;
if (!cookie.ReadSourceType(&source_type)) {
return false;
}
auto cc = net::CanonicalCookie::FromStorage(
std::move(name), std::move(value), std::move(domain), std::move(path),
std::move(creation_time), std::move(expiry_time),
std::move(last_access_time), std::move(last_update_time), cookie.secure(),
cookie.httponly(), site_restrictions, priority, partition_key,
source_scheme, cookie.source_port(), source_type,
net::CanonicalCookieFromStorageCallSite::kCookieManagerMojomTraits);
if (!cc)
return false;
*out = *cc;
return true;
}
bool StructTraits<network::mojom::CookieAndLineWithAccessResultDataView,
net::CookieAndLineWithAccessResult>::
Read(network::mojom::CookieAndLineWithAccessResultDataView c,
net::CookieAndLineWithAccessResult* out) {
std::optional<net::CanonicalCookie> cookie;
std::string cookie_string;
net::CookieAccessResult access_result;
if (!c.ReadCookie(&cookie))
return false;
if (!c.ReadCookieString(&cookie_string))
return false;
if (!c.ReadAccessResult(&access_result))
return false;
*out = {cookie, cookie_string, access_result};
return true;
}
bool StructTraits<
network::mojom::CookieAccessResultDataView,
net::CookieAccessResult>::Read(network::mojom::CookieAccessResultDataView c,
net::CookieAccessResult* out) {
net::CookieEffectiveSameSite effective_same_site;
net::CookieInclusionStatus status;
net::CookieAccessSemantics access_semantics;
net::CookieScopeSemantics scope_semantics;
if (!c.ReadEffectiveSameSite(&effective_same_site))
return false;
if (!c.ReadStatus(&status))
return false;
if (!c.ReadAccessSemantics(&access_semantics))
return false;
if (!c.ReadScopeSemantics(&scope_semantics)) {
return false;
}
*out = {effective_same_site, status, access_semantics, scope_semantics,
c.is_allowed_to_access_secure_cookies()};
return true;
}
bool StructTraits<network::mojom::CookieWithAccessResultDataView,
net::CookieWithAccessResult>::
Read(network::mojom::CookieWithAccessResultDataView c,
net::CookieWithAccessResult* out) {
net::CanonicalCookie cookie;
net::CookieAccessResult access_result;
if (!c.ReadCookie(&cookie))
return false;
if (!c.ReadAccessResult(&access_result))
return false;
*out = {cookie, access_result};
return true;
}
bool StructTraits<
network::mojom::CookieChangeInfoDataView,
net::CookieChangeInfo>::Read(network::mojom::CookieChangeInfoDataView info,
net::CookieChangeInfo* out) {
net::CanonicalCookie cookie;
net::CookieAccessResult access_result;
net::CookieChangeCause cause = net::CookieChangeCause::EXPLICIT;
if (!info.ReadCookie(&cookie))
return false;
if (!info.ReadAccessResult(&access_result))
return false;
if (!info.ReadCause(&cause))
return false;
*out = net::CookieChangeInfo(cookie, access_result, cause);
return true;
}
} // namespace mojo