mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-02 06:09:08 +00:00
LibWeb/DOM: Create TreeWalker in document's realm
This commit is contained in:
parent
84f22cb6b3
commit
17c92d7c2b
Notes:
github-actions[bot]
2025-01-10 08:09:54 +00:00
Author: https://github.com/shannonbooth
Commit: 17c92d7c2b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3208
Reviewed-by: https://github.com/AtkinsSJ ✅
4 changed files with 10 additions and 11 deletions
|
@ -3342,7 +3342,7 @@ GC::Ref<NodeIterator> Document::create_node_iterator(Node& root, unsigned what_t
|
||||||
// https://dom.spec.whatwg.org/#dom-document-createtreewalker
|
// https://dom.spec.whatwg.org/#dom-document-createtreewalker
|
||||||
GC::Ref<TreeWalker> Document::create_tree_walker(Node& root, unsigned what_to_show, GC::Ptr<NodeFilter> filter)
|
GC::Ref<TreeWalker> Document::create_tree_walker(Node& root, unsigned what_to_show, GC::Ptr<NodeFilter> filter)
|
||||||
{
|
{
|
||||||
return TreeWalker::create(root, what_to_show, filter);
|
return TreeWalker::create(realm(), root, what_to_show, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Document::register_node_iterator(Badge<NodeIterator>, NodeIterator& node_iterator)
|
void Document::register_node_iterator(Badge<NodeIterator>, NodeIterator& node_iterator)
|
||||||
|
|
|
@ -16,8 +16,8 @@ namespace Web::DOM {
|
||||||
|
|
||||||
GC_DEFINE_ALLOCATOR(TreeWalker);
|
GC_DEFINE_ALLOCATOR(TreeWalker);
|
||||||
|
|
||||||
TreeWalker::TreeWalker(Node& root)
|
TreeWalker::TreeWalker(JS::Realm& realm, Node& root)
|
||||||
: PlatformObject(root.realm())
|
: PlatformObject(realm)
|
||||||
, m_root(root)
|
, m_root(root)
|
||||||
, m_current(root)
|
, m_current(root)
|
||||||
{
|
{
|
||||||
|
@ -40,12 +40,11 @@ void TreeWalker::visit_edges(Cell::Visitor& visitor)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#dom-document-createtreewalker
|
// https://dom.spec.whatwg.org/#dom-document-createtreewalker
|
||||||
GC::Ref<TreeWalker> TreeWalker::create(Node& root, unsigned what_to_show, GC::Ptr<NodeFilter> filter)
|
GC::Ref<TreeWalker> TreeWalker::create(JS::Realm& realm, Node& root, unsigned what_to_show, GC::Ptr<NodeFilter> filter)
|
||||||
{
|
{
|
||||||
// 1. Let walker be a new TreeWalker object.
|
// 1. Let walker be a new TreeWalker object.
|
||||||
// 2. Set walker’s root and walker’s current to root.
|
// 2. Set walker’s root and walker’s current to root.
|
||||||
auto& realm = root.realm();
|
auto walker = realm.create<TreeWalker>(realm, root);
|
||||||
auto walker = realm.create<TreeWalker>(root);
|
|
||||||
|
|
||||||
// 3. Set walker’s whatToShow to whatToShow.
|
// 3. Set walker’s whatToShow to whatToShow.
|
||||||
walker->m_what_to_show = what_to_show;
|
walker->m_what_to_show = what_to_show;
|
||||||
|
|
|
@ -16,7 +16,7 @@ class TreeWalker final : public Bindings::PlatformObject {
|
||||||
GC_DECLARE_ALLOCATOR(TreeWalker);
|
GC_DECLARE_ALLOCATOR(TreeWalker);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
[[nodiscard]] static GC::Ref<TreeWalker> create(Node& root, unsigned what_to_show, GC::Ptr<NodeFilter>);
|
[[nodiscard]] static GC::Ref<TreeWalker> create(JS::Realm&, Node& root, unsigned what_to_show, GC::Ptr<NodeFilter>);
|
||||||
|
|
||||||
virtual ~TreeWalker() override;
|
virtual ~TreeWalker() override;
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ public:
|
||||||
unsigned what_to_show() const { return m_what_to_show; }
|
unsigned what_to_show() const { return m_what_to_show; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit TreeWalker(Node& root);
|
explicit TreeWalker(JS::Realm&, Node& root);
|
||||||
|
|
||||||
virtual void initialize(JS::Realm&) override;
|
virtual void initialize(JS::Realm&) override;
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
|
@ -2,8 +2,8 @@ Harness status: OK
|
||||||
|
|
||||||
Found 33 tests
|
Found 33 tests
|
||||||
|
|
||||||
29 Pass
|
30 Pass
|
||||||
4 Fail
|
3 Fail
|
||||||
Pass querySelectorAll
|
Pass querySelectorAll
|
||||||
Pass createElement
|
Pass createElement
|
||||||
Pass createElementNS
|
Pass createElementNS
|
||||||
|
@ -16,7 +16,7 @@ Pass createAttributeNS
|
||||||
Pass createEvent
|
Pass createEvent
|
||||||
Pass createRange
|
Pass createRange
|
||||||
Pass createNodeIterator
|
Pass createNodeIterator
|
||||||
Fail createTreeWalker
|
Pass createTreeWalker
|
||||||
Pass Request
|
Pass Request
|
||||||
Pass Response
|
Pass Response
|
||||||
Fail getElementsByTagName
|
Fail getElementsByTagName
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue