blob: 0a15051215fbcfada7489c70e78f61f26b5170e3 [file]
// Copyright 2021 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/storage_key/storage_key_mojom_traits.h"
#include "base/types/optional_util.h"
#include "base/unguessable_token.h"
#include "mojo/public/cpp/base/unguessable_token_mojom_traits.h"
#include "net/base/schemeful_site.h"
#include "services/network/public/cpp/schemeful_site_mojom_traits.h"
#include "third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom.h"
#include "url/mojom/origin_mojom_traits.h"
#include "url/origin.h"
namespace mojo {
// static
bool StructTraits<blink::mojom::StorageKeyDataView, blink::StorageKey>::Read(
blink::mojom::StorageKeyDataView data,
blink::StorageKey* out) {
url::Origin origin;
if (!data.ReadOrigin(&origin)) {
return false;
}
net::SchemefulSite top_level_site;
if (!data.ReadTopLevelSite(&top_level_site)) {
return false;
}
std::optional<base::UnguessableToken> nonce;
if (!data.ReadNonce(&nonce)) {
return false;
}
blink::mojom::AncestorChainBit ancestor_chain_bit;
if (!data.ReadAncestorChainBit(&ancestor_chain_bit)) {
return false;
}
net::SchemefulSite top_level_site_if_third_party_enabled;
if (!data.ReadTopLevelSiteIfThirdPartyEnabled(
&top_level_site_if_third_party_enabled)) {
return false;
}
blink::mojom::AncestorChainBit ancestor_chain_bit_if_third_party_enabled;
if (!data.ReadAncestorChainBitIfThirdPartyEnabled(
&ancestor_chain_bit_if_third_party_enabled)) {
return false;
}
return blink::StorageKey::FromWire(
origin, top_level_site, top_level_site_if_third_party_enabled, nonce,
ancestor_chain_bit, ancestor_chain_bit_if_third_party_enabled, *out);
}
} // namespace mojo