/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_OriginAttributesHashKey_h #define mozilla_OriginAttributesHashKey_h #include "OriginAttributes.h" #include "PLDHashTable.h" namespace mozilla { class OriginAttributesHashKey : public PLDHashEntryHdr { public: using KeyType = OriginAttributes; using KeyTypeRef = const KeyType&; using KeyTypePointer = const KeyType*; explicit OriginAttributesHashKey(KeyTypePointer aKey) { mOriginAttributes = *aKey; MOZ_COUNT_CTOR(OriginAttributesHashKey); } OriginAttributesHashKey(OriginAttributesHashKey&& aKey) noexcept { mOriginAttributes = std::move(aKey.mOriginAttributes); MOZ_COUNT_CTOR(OriginAttributesHashKey); } MOZ_COUNTED_DTOR(OriginAttributesHashKey) KeyTypeRef GetKey() const { return mOriginAttributes; } bool KeyEquals(KeyTypePointer aKey) const { return mOriginAttributes == *aKey; } static KeyTypePointer KeyToPointer(KeyTypeRef aKey) { return &aKey; } static PLDHashNumber HashKey(KeyTypePointer aKey) { return aKey->Hash(); } enum { ALLOW_MEMMOVE = true }; protected: OriginAttributes mOriginAttributes; }; } // namespace mozilla #endif