MutationRecord.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibWeb/DOM/MutationRecord.h>
  7. #include <LibWeb/DOM/Node.h>
  8. #include <LibWeb/DOM/NodeList.h>
  9. namespace Web::DOM {
  10. class MutationRecordImpl final : public MutationRecord {
  11. public:
  12. MutationRecordImpl(FlyString const& type, Node& target, NodeList& added_nodes, NodeList& removed_nodes, Node* previous_sibling, Node* next_sibling, String const& attribute_name, String const& attribute_namespace, String const& old_value)
  13. : m_type(type)
  14. , m_target(target)
  15. , m_added_nodes(added_nodes)
  16. , m_removed_nodes(removed_nodes)
  17. , m_previous_sibling(previous_sibling)
  18. , m_next_sibling(next_sibling)
  19. , m_attribute_name(attribute_name)
  20. , m_attribute_namespace(attribute_namespace)
  21. , m_old_value(old_value)
  22. {
  23. }
  24. virtual ~MutationRecordImpl() override = default;
  25. virtual FlyString const& type() const override { return m_type; }
  26. virtual Node const* target() const override { return m_target; }
  27. virtual NodeList const* added_nodes() const override { return m_added_nodes; }
  28. virtual NodeList const* removed_nodes() const override { return m_removed_nodes; }
  29. virtual Node const* previous_sibling() const override { return m_previous_sibling; }
  30. virtual Node const* next_sibling() const override { return m_next_sibling; }
  31. virtual String const& attribute_name() const override { return m_attribute_name; }
  32. virtual String const& attribute_namespace() const override { return m_attribute_namespace; }
  33. virtual String const& old_value() const override { return m_old_value; }
  34. private:
  35. FlyString m_type;
  36. NonnullRefPtr<Node> m_target;
  37. NonnullRefPtr<NodeList> m_added_nodes;
  38. NonnullRefPtr<NodeList> m_removed_nodes;
  39. RefPtr<Node> m_previous_sibling;
  40. RefPtr<Node> m_next_sibling;
  41. String m_attribute_name;
  42. String m_attribute_namespace;
  43. String m_old_value;
  44. };
  45. NonnullRefPtr<MutationRecord> MutationRecord::create(FlyString const& type, Node& target, NodeList& added_nodes, NodeList& removed_nodes, Node* previous_sibling, Node* next_sibling, String const& attribute_name, String const& attribute_namespace, String const& old_value)
  46. {
  47. return adopt_ref(*new MutationRecordImpl(type, target, added_nodes, removed_nodes, previous_sibling, next_sibling, attribute_name, attribute_namespace, old_value));
  48. }
  49. }