mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-03 15:16:14 +00:00
LibWeb/HTML: Stop observing lazy-loaded iframes when navigating
This commit is contained in:
committed by
Andreas Kling
parent
0957c59c26
commit
f11347739a
@@ -171,6 +171,7 @@ public:
|
|||||||
virtual bool is_html_object_element() const { return false; }
|
virtual bool is_html_object_element() const { return false; }
|
||||||
virtual bool is_html_form_element() const { return false; }
|
virtual bool is_html_form_element() const { return false; }
|
||||||
virtual bool is_html_image_element() const { return false; }
|
virtual bool is_html_image_element() const { return false; }
|
||||||
|
virtual bool is_html_iframe_element() const { return false; }
|
||||||
virtual bool is_navigable_container() const { return false; }
|
virtual bool is_navigable_container() const { return false; }
|
||||||
virtual bool is_lazy_loading() const { return false; }
|
virtual bool is_lazy_loading() const { return false; }
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ private:
|
|||||||
|
|
||||||
virtual void initialize(JS::Realm&) override;
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
|
// ^DOM::Node
|
||||||
|
virtual bool is_html_iframe_element() const override { return true; }
|
||||||
|
|
||||||
// ^DOM::Element
|
// ^DOM::Element
|
||||||
virtual void post_connection() override;
|
virtual void post_connection() override;
|
||||||
virtual void removed_from(Node*) override;
|
virtual void removed_from(Node*) override;
|
||||||
|
|||||||
@@ -1325,11 +1325,18 @@ WebIDL::ExceptionOr<void> Navigable::navigate(NavigateParams params)
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: 9. Let container be navigable's container.
|
// 9. Let container be navigable's container.
|
||||||
// 10. If container is an iframe element and will lazy load element steps given container returns true,
|
auto& container = m_container;
|
||||||
|
|
||||||
// FIXME: 10. If container is an iframe element and will lazy load element steps given container returns true,
|
// 10. If container is an iframe element and will lazy load element steps given container returns true,
|
||||||
// then stop intersection-observing a lazy loading element container and set container's lazy load resumption steps to null.
|
// then stop intersection-observing a lazy loading element container and set container's lazy load resumption steps to null.
|
||||||
|
if (container && container->is_html_iframe_element()) {
|
||||||
|
auto& iframe_element = static_cast<HTMLIFrameElement&>(*container);
|
||||||
|
if (iframe_element.will_lazy_load_element()) {
|
||||||
|
iframe_element.document().stop_intersection_observing_a_lazy_loading_element(iframe_element);
|
||||||
|
iframe_element.set_lazy_load_resumption_steps(nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 11. If historyHandling is "auto", then:
|
// 11. If historyHandling is "auto", then:
|
||||||
if (history_handling == Bindings::NavigationHistoryBehavior::Auto) {
|
if (history_handling == Bindings::NavigationHistoryBehavior::Auto) {
|
||||||
|
|||||||
Reference in New Issue
Block a user