1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-08 05:27:14 +09:00
ladybird/Libraries/LibWeb/StorageAPI/StorageKey.h
Timothy Flynn 7280ed6312 Meta: Enforce newlines around namespaces
This has come up several times during code review, so let's just enforce
it using a new clang-format 20 option.
2025-05-14 02:01:59 -06:00

48 lines
1.4 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2024, Andrew Kaster <andrew@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Optional.h>
#include <AK/Traits.h>
#include <LibURL/Origin.h>
#include <LibWeb/Forward.h>
namespace Web::StorageAPI {
// https://storage.spec.whatwg.org/#storage-keys
struct StorageKey {
// A storage key is a tuple consisting of an origin (an origin). [HTML]
// NOTE: This is expected to change; see Client-Side Storage Partitioning https://privacycg.github.io/storage-partitioning/.
URL::Origin origin;
friend bool operator==(StorageKey const& a, StorageKey const& b)
{
// To determine whether a storage key A equals storage key B, run these steps:
// 1. If As origin is not same origin with Bs origin, then return false.
// 2. Return true.
return a.origin.is_same_origin(b.origin);
}
};
Optional<StorageKey> obtain_a_storage_key(HTML::Environment const&);
StorageKey obtain_a_storage_key_for_non_storage_purposes(URL::Origin const&);
StorageKey obtain_a_storage_key_for_non_storage_purposes(HTML::Environment const&);
}
namespace AK {
template<>
struct Traits<Web::StorageAPI::StorageKey> : public DefaultTraits<Web::StorageAPI::StorageKey> {
static unsigned hash(Web::StorageAPI::StorageKey const& key)
{
return Traits<URL::Origin>::hash(key.origin);
}
};
}