NodeFilter.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/Bindings/PlatformObject.h>
  8. #include <LibWeb/WebIDL/CallbackType.h>
  9. namespace Web::DOM {
  10. class NodeFilter final : public Bindings::PlatformObject {
  11. WEB_PLATFORM_OBJECT(NodeFilter, Bindings::PlatformObject);
  12. GC_DECLARE_ALLOCATOR(NodeFilter);
  13. public:
  14. [[nodiscard]] static GC::Ref<NodeFilter> create(JS::Realm&, WebIDL::CallbackType&);
  15. virtual ~NodeFilter() = default;
  16. WebIDL::CallbackType& callback() { return m_callback; }
  17. // FIXME: Generate both of these enums from IDL.
  18. enum class Result : u8 {
  19. FILTER_ACCEPT = 1,
  20. FILTER_REJECT = 2,
  21. FILTER_SKIP = 3,
  22. };
  23. enum class WhatToShow : u32 {
  24. SHOW_ALL = 0xFFFFFFFF,
  25. SHOW_ELEMENT = 0x1,
  26. SHOW_ATTRIBUTE = 0x2,
  27. SHOW_TEXT = 0x4,
  28. SHOW_CDATA_SECTION = 0x8,
  29. SHOW_PROCESSING_INSTRUCTION = 0x40,
  30. SHOW_COMMENT = 0x80,
  31. SHOW_DOCUMENT = 0x100,
  32. SHOW_DOCUMENT_TYPE = 0x200,
  33. SHOW_DOCUMENT_FRAGMENT = 0x400,
  34. };
  35. private:
  36. NodeFilter(JS::Realm&, WebIDL::CallbackType&);
  37. virtual void visit_edges(Cell::Visitor&) override;
  38. GC::Ref<WebIDL::CallbackType> m_callback;
  39. };
  40. AK_ENUM_BITWISE_OPERATORS(NodeFilter::WhatToShow);
  41. }