DocumentState.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
  3. * Copyright (c) 2023, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #include <LibWeb/DOM/Document.h>
  8. #include <LibWeb/HTML/DocumentState.h>
  9. namespace Web::HTML {
  10. JS_DEFINE_ALLOCATOR(DocumentState);
  11. DocumentState::DocumentState() = default;
  12. DocumentState::~DocumentState() = default;
  13. JS::NonnullGCPtr<DocumentState> DocumentState::clone() const
  14. {
  15. JS::NonnullGCPtr<DocumentState> cloned = *heap().allocate<DocumentState>();
  16. cloned->m_document = m_document;
  17. cloned->m_history_policy_container = m_history_policy_container;
  18. cloned->m_request_referrer = m_request_referrer;
  19. cloned->m_request_referrer_policy = m_request_referrer_policy;
  20. cloned->m_initiator_origin = m_initiator_origin;
  21. cloned->m_origin = m_origin;
  22. cloned->m_about_base_url = m_about_base_url;
  23. cloned->m_nested_histories = m_nested_histories;
  24. cloned->m_resource = m_resource;
  25. cloned->m_reload_pending = m_reload_pending;
  26. cloned->m_ever_populated = m_ever_populated;
  27. cloned->m_navigable_target_name = m_navigable_target_name;
  28. return cloned;
  29. }
  30. void DocumentState::visit_edges(Cell::Visitor& visitor)
  31. {
  32. Base::visit_edges(visitor);
  33. visitor.visit(m_document);
  34. for (auto& nested_history : m_nested_histories) {
  35. visitor.visit(nested_history.entries);
  36. }
  37. }
  38. }