CrossOriginPropertyDescriptorMap.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright (c) 2022, Linus Groh <linusg@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Forward.h>
  8. #include <AK/Traits.h>
  9. #include <LibJS/Forward.h>
  10. namespace Web::HTML {
  11. struct CrossOriginProperty {
  12. String property;
  13. Optional<bool> needs_get {};
  14. Optional<bool> needs_set {};
  15. };
  16. struct CrossOriginKey {
  17. FlatPtr current_settings_object;
  18. FlatPtr relevant_settings_object;
  19. JS::PropertyKey property_key;
  20. };
  21. using CrossOriginPropertyDescriptorMap = HashMap<CrossOriginKey, JS::PropertyDescriptor>;
  22. }
  23. namespace AK {
  24. template<>
  25. struct Traits<Web::HTML::CrossOriginKey> : public GenericTraits<Web::HTML::CrossOriginKey> {
  26. static unsigned hash(Web::HTML::CrossOriginKey const& key)
  27. {
  28. return pair_int_hash(
  29. Traits<JS::PropertyKey>::hash(key.property_key),
  30. pair_int_hash(ptr_hash(key.current_settings_object), ptr_hash(key.relevant_settings_object)));
  31. }
  32. static bool equals(Web::HTML::CrossOriginKey const& a, Web::HTML::CrossOriginKey const& b)
  33. {
  34. return a.current_settings_object == b.current_settings_object
  35. && a.relevant_settings_object == b.relevant_settings_object
  36. && Traits<JS::PropertyKey>::equals(a.property_key, b.property_key);
  37. }
  38. };
  39. }