Skip to content

Commit 04bfdaf

Browse files
committed
LibWebView: Include top-level traversable in CanonicalTraversable::find
This lets callers use the same canonical navigable lookup path for both top-level and nested session history entry updates.
1 parent c265be4 commit 04bfdaf

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

Libraries/LibWebView/CanonicalTraversable.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,24 @@ CanonicalNavigable& CanonicalTraversable::insert(WebContentClient& reporting_cli
4040
return navigable_ref;
4141
}
4242

43-
Optional<CanonicalNavigable&> CanonicalTraversable::find(Web::HTML::CrossProcessId frame_id)
43+
Optional<CanonicalNavigable&> CanonicalTraversable::find(Web::HTML::CrossProcessId navigable_id)
4444
{
45-
auto navigable = m_navigable_index.get(frame_id);
45+
if (id() == navigable_id)
46+
return *this;
47+
48+
auto navigable = m_navigable_index.get(navigable_id);
4649
if (!navigable.has_value() || !navigable.value())
4750
return {};
4851

4952
return *navigable.value();
5053
}
5154

52-
Optional<CanonicalNavigable const&> CanonicalTraversable::find(Web::HTML::CrossProcessId frame_id) const
55+
Optional<CanonicalNavigable const&> CanonicalTraversable::find(Web::HTML::CrossProcessId navigable_id) const
5356
{
54-
auto navigable = m_navigable_index.get(frame_id);
57+
if (id() == navigable_id)
58+
return *this;
59+
60+
auto navigable = m_navigable_index.get(navigable_id);
5561
if (!navigable.has_value() || !navigable.value())
5662
return {};
5763

Libraries/LibWebView/CanonicalTraversable.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,8 @@ class WEBVIEW_API CanonicalTraversable final
211211
virtual bool is_top_level_traversable() const override { return true; }
212212

213213
CanonicalNavigable& insert(WebContentClient& reporting_client, u64 page_id, Web::HTML::CrossProcessId parent_frame_id, Web::HTML::CrossProcessId frame_id, CanonicalNavigable& fallback_parent);
214-
Optional<CanonicalNavigable&> find(Web::HTML::CrossProcessId frame_id);
215-
Optional<CanonicalNavigable const&> find(Web::HTML::CrossProcessId frame_id) const;
214+
Optional<CanonicalNavigable&> find(Web::HTML::CrossProcessId navigable_id);
215+
Optional<CanonicalNavigable const&> find(Web::HTML::CrossProcessId navigable_id) const;
216216
void remove(CanonicalNavigable&);
217217

218218
TraversableSessionHistory const& session_history() const { return m_session_history; }

0 commit comments

Comments
 (0)