blob: b73a258b60c36578e88f3a887103f3b3545ccc19 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/common/safe_url_pattern_mojom_traits.h"
namespace mojo {
bool EnumTraits<blink::mojom::Modifier, ::liburlpattern::Modifier>::FromMojom(
blink::mojom::Modifier data,
::liburlpattern::Modifier* out) {
switch (data) {
case blink::mojom::Modifier::kZeroOrMore:
*out = liburlpattern::Modifier::kZeroOrMore;
return true;
case blink::mojom::Modifier::kOptional:
*out = liburlpattern::Modifier::kOptional;
return true;
case blink::mojom::Modifier::kOneOrMore:
*out = liburlpattern::Modifier::kOneOrMore;
return true;
case blink::mojom::Modifier::kNone:
*out = liburlpattern::Modifier::kNone;
return true;
}
NOTREACHED_IN_MIGRATION();
return false;
}
bool StructTraits<blink::mojom::FixedPatternDataView, ::liburlpattern::Part>::
Read(blink::mojom::FixedPatternDataView data, ::liburlpattern::Part* out) {
if (!data.ReadValue(&out->value)) {
return false;
}
return true;
}
bool StructTraits<
blink::mojom::WildcardPatternDataView,
::liburlpattern::Part>::Read(blink::mojom::WildcardPatternDataView data,
::liburlpattern::Part* out) {
if (!data.ReadName(&out->name)) {
return false;
}
if (!data.ReadPrefix(&out->prefix)) {
return false;
}
if (!data.ReadValue(&out->value)) {
return false;
}
if (!data.ReadSuffix(&out->suffix)) {
return false;
}
return true;
}
blink::mojom::PatternTemplateDataView::Tag
UnionTraits<blink::mojom::PatternTemplateDataView,
::liburlpattern::Part>::GetTag(const ::liburlpattern::Part& value) {
switch (value.type) {
case liburlpattern::PartType::kFixed:
return blink::mojom::PatternTemplate::Tag::kFixed;
case liburlpattern::PartType::kFullWildcard:
return blink::mojom::PatternTemplate::Tag::kFullWildcard;
case liburlpattern::PartType::kSegmentWildcard:
return blink::mojom::PatternTemplate::Tag::kSegmentWildcard;
case liburlpattern::PartType::kRegex:
NOTREACHED_IN_MIGRATION();
return blink::mojom::PatternTemplate::Tag::kFixed;
}
}
bool UnionTraits<blink::mojom::PatternTemplateDataView, ::liburlpattern::Part>::
Read(blink::mojom::PatternTemplateDataView data, liburlpattern::Part* out) {
::liburlpattern::Part part;
switch (data.tag()) {
case blink::mojom::PatternTemplateDataView::Tag::kFixed:
if (!data.ReadFixed(&part)) {
return false;
}
part.type = liburlpattern::PartType::kFixed;
*out = part;
return true;
case blink::mojom::PatternTemplateDataView::Tag::kFullWildcard:
if (!data.ReadFullWildcard(&part)) {
return false;
}
part.type = liburlpattern::PartType::kFullWildcard;
*out = part;
return true;
case blink::mojom::PatternTemplateDataView::Tag::kSegmentWildcard:
if (!data.ReadSegmentWildcard(&part)) {
return false;
}
part.type = liburlpattern::PartType::kSegmentWildcard;
*out = part;
return true;
}
return false;
}
bool StructTraits<
blink::mojom::SafeUrlPatternPartDataView,
::liburlpattern::Part>::Read(blink::mojom::SafeUrlPatternPartDataView data,
::liburlpattern::Part* out) {
liburlpattern::Part part;
if (!data.ReadPattern(&part)) {
return false;
}
out->name = part.name;
out->prefix = part.prefix;
out->value = part.value;
out->suffix = part.suffix;
out->type = part.type;
if (!data.ReadModifier(&out->modifier)) {
return false;
}
return true;
}
bool StructTraits<
blink::mojom::SafeUrlPatternDataView,
::blink::SafeUrlPattern>::Read(blink::mojom::SafeUrlPatternDataView data,
::blink::SafeUrlPattern* out) {
if (!data.ReadProtocol(&out->protocol)) {
return false;
}
if (!data.ReadUsername(&out->username)) {
return false;
}
if (!data.ReadPassword(&out->password)) {
return false;
}
if (!data.ReadHostname(&out->hostname)) {
return false;
}
if (!data.ReadPort(&out->port)) {
return false;
}
if (!data.ReadPathname(&out->pathname)) {
return false;
}
if (!data.ReadSearch(&out->search)) {
return false;
}
if (!data.ReadHash(&out->hash)) {
return false;
}
if (!data.ReadOptions(&out->options)) {
return false;
}
return true;
}
bool StructTraits<blink::mojom::SafeUrlPatternOptionsDataView,
::blink::SafeUrlPatternOptions>::
Read(blink::mojom::SafeUrlPatternOptionsDataView data,
::blink::SafeUrlPatternOptions* out) {
out->ignore_case = data.ignore_case();
return true;
}
} // namespace mojo