Files
serenity/Userland/Libraries/LibWeb/Fetch/Infrastructure/NetworkPartitionKey.h
Shannon Booth 2855880f8a LibWeb+LibURL: Move HTML::Origin to URL::Origin
While Origin is defined in the HTML spec - this leaves us with quite an
awkward relationship as the URL spec makes use of AO's from what is
defined in the HTML spec.

To simplify this factoring, relocate Origin into LibURL.

(cherry picked from commit dc401f49ea7e861064484e79594e35c3d93000ae;
amended to fix minor conflicts due to serenity not (yet?) having a
LibUnicode/Segmenter.h include in Document.cpp, and due to
BrowsingContext already having LadybirdBrowser/ladybird#2358 in
serenity)
2024-11-21 22:16:27 -05:00

38 lines
1.1 KiB
C++

/*
* Copyright (c) 2024, Andrew Kaster <akaster@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibURL/Origin.h>
#include <LibWeb/Forward.h>
namespace Web::Fetch::Infrastructure {
// https://fetch.spec.whatwg.org/#network-partition-key
struct NetworkPartitionKey {
URL::Origin top_level_origin;
// FIXME: See https://github.com/whatwg/fetch/issues/1035
// This is the document origin in other browsers
void* second_key = nullptr;
bool operator==(NetworkPartitionKey const&) const = default;
};
NetworkPartitionKey determine_the_network_partition_key(HTML::Environment const& environment);
Optional<NetworkPartitionKey> determine_the_network_partition_key(Infrastructure::Request const& request);
}
template<>
class AK::Traits<Web::Fetch::Infrastructure::NetworkPartitionKey> : public DefaultTraits<Web::Fetch::Infrastructure::NetworkPartitionKey> {
public:
static unsigned hash(Web::Fetch::Infrastructure::NetworkPartitionKey const& partition_key)
{
return ::AK::Traits<URL::Origin>::hash(partition_key.top_level_origin);
}
};