mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:57:35 +00:00
LibWeb: Rename BrowsingContextContainer => NavigableContainer
The "browsing context container" concept in the HTML spec has been replaced with "navigable container". Renaming this is the first step of many towards implementing the new world. Co-authored-by: Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
This commit is contained in:
parent
0f9f6aef81
commit
d8ccc2d54e
17 changed files with 61 additions and 60 deletions
|
@ -202,7 +202,6 @@ set(SOURCES
|
||||||
Geometry/DOMRectReadOnly.cpp
|
Geometry/DOMRectReadOnly.cpp
|
||||||
HTML/AttributeNames.cpp
|
HTML/AttributeNames.cpp
|
||||||
HTML/BrowsingContext.cpp
|
HTML/BrowsingContext.cpp
|
||||||
HTML/BrowsingContextContainer.cpp
|
|
||||||
HTML/BrowsingContextGroup.cpp
|
HTML/BrowsingContextGroup.cpp
|
||||||
HTML/Canvas/CanvasDrawImage.cpp
|
HTML/Canvas/CanvasDrawImage.cpp
|
||||||
HTML/Canvas/CanvasPath.cpp
|
HTML/Canvas/CanvasPath.cpp
|
||||||
|
@ -314,6 +313,7 @@ set(SOURCES
|
||||||
HTML/MessagePort.cpp
|
HTML/MessagePort.cpp
|
||||||
HTML/MimeType.cpp
|
HTML/MimeType.cpp
|
||||||
HTML/MimeTypeArray.cpp
|
HTML/MimeTypeArray.cpp
|
||||||
|
HTML/NavigableContainer.cpp
|
||||||
HTML/Navigator.cpp
|
HTML/Navigator.cpp
|
||||||
HTML/NavigatorID.cpp
|
HTML/NavigatorID.cpp
|
||||||
HTML/PageTransitionEvent.cpp
|
HTML/PageTransitionEvent.cpp
|
||||||
|
|
|
@ -1706,8 +1706,8 @@ bool Document::is_fully_active() const
|
||||||
return false;
|
return false;
|
||||||
if (browsing_context->is_top_level())
|
if (browsing_context->is_top_level())
|
||||||
return true;
|
return true;
|
||||||
if (auto* browsing_context_container_document = browsing_context->container_document()) {
|
if (auto* navigable_container_document = browsing_context->container_document()) {
|
||||||
if (browsing_context_container_document->is_fully_active())
|
if (navigable_container_document->is_fully_active())
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -29,10 +29,10 @@
|
||||||
#include <LibWeb/DOM/Range.h>
|
#include <LibWeb/DOM/Range.h>
|
||||||
#include <LibWeb/DOM/ShadowRoot.h>
|
#include <LibWeb/DOM/ShadowRoot.h>
|
||||||
#include <LibWeb/DOM/StaticNodeList.h>
|
#include <LibWeb/DOM/StaticNodeList.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
|
||||||
#include <LibWeb/HTML/CustomElements/CustomElementReactionNames.h>
|
#include <LibWeb/HTML/CustomElements/CustomElementReactionNames.h>
|
||||||
#include <LibWeb/HTML/HTMLAnchorElement.h>
|
#include <LibWeb/HTML/HTMLAnchorElement.h>
|
||||||
#include <LibWeb/HTML/HTMLStyleElement.h>
|
#include <LibWeb/HTML/HTMLStyleElement.h>
|
||||||
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/HTML/Origin.h>
|
#include <LibWeb/HTML/Origin.h>
|
||||||
#include <LibWeb/HTML/Parser/HTMLParser.h>
|
#include <LibWeb/HTML/Parser/HTMLParser.h>
|
||||||
#include <LibWeb/Infra/CharacterTypes.h>
|
#include <LibWeb/Infra/CharacterTypes.h>
|
||||||
|
@ -1070,8 +1070,8 @@ void Node::serialize_tree_as_json(JsonObjectSerializer<StringBuilder>& object) c
|
||||||
MUST(attributes.finish());
|
MUST(attributes.finish());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element->is_browsing_context_container()) {
|
if (element->is_navigable_container()) {
|
||||||
auto const* container = static_cast<HTML::BrowsingContextContainer const*>(element);
|
auto const* container = static_cast<HTML::NavigableContainer const*>(element);
|
||||||
if (auto const* content_document = container->content_document()) {
|
if (auto const* content_document = container->content_document()) {
|
||||||
auto children = MUST(object.add_array("children"sv));
|
auto children = MUST(object.add_array("children"sv));
|
||||||
JsonObjectSerializer<StringBuilder> content_document_object = MUST(children.add_object());
|
JsonObjectSerializer<StringBuilder> content_document_object = MUST(children.add_object());
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
virtual bool is_html_input_element() const { return false; }
|
virtual bool is_html_input_element() const { return false; }
|
||||||
virtual bool is_html_progress_element() const { return false; }
|
virtual bool is_html_progress_element() const { return false; }
|
||||||
virtual bool is_html_template_element() const { return false; }
|
virtual bool is_html_template_element() const { return false; }
|
||||||
virtual bool is_browsing_context_container() const { return false; }
|
virtual bool is_navigable_container() const { return false; }
|
||||||
|
|
||||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<Node>> pre_insert(JS::NonnullGCPtr<Node>, JS::GCPtr<Node>);
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<Node>> pre_insert(JS::NonnullGCPtr<Node>, JS::GCPtr<Node>);
|
||||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<Node>> pre_remove(JS::NonnullGCPtr<Node>);
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<Node>> pre_remove(JS::NonnullGCPtr<Node>);
|
||||||
|
|
|
@ -274,7 +274,6 @@ class DOMRectReadOnly;
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
class BrowsingContext;
|
class BrowsingContext;
|
||||||
class BrowsingContextContainer;
|
|
||||||
class BrowsingContextGroup;
|
class BrowsingContextGroup;
|
||||||
class CanvasRenderingContext2D;
|
class CanvasRenderingContext2D;
|
||||||
class ClassicScript;
|
class ClassicScript;
|
||||||
|
@ -370,7 +369,9 @@ class MessageEvent;
|
||||||
class MessagePort;
|
class MessagePort;
|
||||||
class MimeType;
|
class MimeType;
|
||||||
class MimeTypeArray;
|
class MimeTypeArray;
|
||||||
|
class NavigableContainer;
|
||||||
class Navigator;
|
class Navigator;
|
||||||
|
struct NavigationParams;
|
||||||
class Origin;
|
class Origin;
|
||||||
class PageTransitionEvent;
|
class PageTransitionEvent;
|
||||||
class Path2D;
|
class Path2D;
|
||||||
|
|
|
@ -12,12 +12,12 @@
|
||||||
#include <LibWeb/DOM/Range.h>
|
#include <LibWeb/DOM/Range.h>
|
||||||
#include <LibWeb/Fetch/Infrastructure/HTTP/Requests.h>
|
#include <LibWeb/Fetch/Infrastructure/HTTP/Requests.h>
|
||||||
#include <LibWeb/HTML/BrowsingContext.h>
|
#include <LibWeb/HTML/BrowsingContext.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
|
||||||
#include <LibWeb/HTML/BrowsingContextGroup.h>
|
#include <LibWeb/HTML/BrowsingContextGroup.h>
|
||||||
#include <LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h>
|
#include <LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h>
|
||||||
#include <LibWeb/HTML/EventLoop/EventLoop.h>
|
#include <LibWeb/HTML/EventLoop/EventLoop.h>
|
||||||
#include <LibWeb/HTML/HTMLAnchorElement.h>
|
#include <LibWeb/HTML/HTMLAnchorElement.h>
|
||||||
#include <LibWeb/HTML/HTMLInputElement.h>
|
#include <LibWeb/HTML/HTMLInputElement.h>
|
||||||
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/HTML/RemoteBrowsingContext.h>
|
#include <LibWeb/HTML/RemoteBrowsingContext.h>
|
||||||
#include <LibWeb/HTML/SandboxingFlagSet.h>
|
#include <LibWeb/HTML/SandboxingFlagSet.h>
|
||||||
#include <LibWeb/HTML/Scripting/WindowEnvironmentSettingsObject.h>
|
#include <LibWeb/HTML/Scripting/WindowEnvironmentSettingsObject.h>
|
||||||
|
@ -87,7 +87,7 @@ JS::NonnullGCPtr<BrowsingContext> BrowsingContext::create_a_new_top_level_browsi
|
||||||
JS::NonnullGCPtr<BrowsingContext> BrowsingContext::create_a_new_browsing_context(Page& page, JS::GCPtr<DOM::Document> creator, JS::GCPtr<DOM::Element> embedder, BrowsingContextGroup&)
|
JS::NonnullGCPtr<BrowsingContext> BrowsingContext::create_a_new_browsing_context(Page& page, JS::GCPtr<DOM::Document> creator, JS::GCPtr<DOM::Element> embedder, BrowsingContextGroup&)
|
||||||
{
|
{
|
||||||
// 1. Let browsingContext be a new browsing context.
|
// 1. Let browsingContext be a new browsing context.
|
||||||
BrowsingContextContainer* container = (embedder && is<BrowsingContextContainer>(*embedder)) ? static_cast<BrowsingContextContainer*>(embedder.ptr()) : nullptr;
|
NavigableContainer* container = (embedder && is<NavigableContainer>(*embedder)) ? static_cast<NavigableContainer*>(embedder.ptr()) : nullptr;
|
||||||
auto browsing_context = Bindings::main_thread_vm().heap().allocate_without_realm<BrowsingContext>(page, container);
|
auto browsing_context = Bindings::main_thread_vm().heap().allocate_without_realm<BrowsingContext>(page, container);
|
||||||
|
|
||||||
// 2. Let unsafeContextCreationTime be the unsafe shared current time.
|
// 2. Let unsafeContextCreationTime be the unsafe shared current time.
|
||||||
|
@ -226,7 +226,7 @@ JS::NonnullGCPtr<BrowsingContext> BrowsingContext::create_a_new_browsing_context
|
||||||
return *browsing_context;
|
return *browsing_context;
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowsingContext::BrowsingContext(Page& page, HTML::BrowsingContextContainer* container)
|
BrowsingContext::BrowsingContext(Page& page, HTML::NavigableContainer* container)
|
||||||
: m_page(page)
|
: m_page(page)
|
||||||
, m_loader(*this)
|
, m_loader(*this)
|
||||||
, m_event_handler({}, *this)
|
, m_event_handler({}, *this)
|
||||||
|
@ -604,9 +604,9 @@ JS::GCPtr<DOM::Node> BrowsingContext::currently_focused_area()
|
||||||
// 3. While candidate's focused area is a browsing context container with a non-null nested browsing context:
|
// 3. While candidate's focused area is a browsing context container with a non-null nested browsing context:
|
||||||
// set candidate to the active document of that browsing context container's nested browsing context.
|
// set candidate to the active document of that browsing context container's nested browsing context.
|
||||||
while (candidate->focused_element()
|
while (candidate->focused_element()
|
||||||
&& is<HTML::BrowsingContextContainer>(candidate->focused_element())
|
&& is<HTML::NavigableContainer>(candidate->focused_element())
|
||||||
&& static_cast<HTML::BrowsingContextContainer&>(*candidate->focused_element()).nested_browsing_context()) {
|
&& static_cast<HTML::NavigableContainer&>(*candidate->focused_element()).nested_browsing_context()) {
|
||||||
candidate = static_cast<HTML::BrowsingContextContainer&>(*candidate->focused_element()).nested_browsing_context()->active_document();
|
candidate = static_cast<HTML::NavigableContainer&>(*candidate->focused_element()).nested_browsing_context()->active_document();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. If candidate's focused area is non-null, set candidate to candidate's focused area.
|
// 4. If candidate's focused area is non-null, set candidate to candidate's focused area.
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
#include <LibWeb/DOM/Position.h>
|
#include <LibWeb/DOM/Position.h>
|
||||||
#include <LibWeb/HTML/AbstractBrowsingContext.h>
|
#include <LibWeb/HTML/AbstractBrowsingContext.h>
|
||||||
#include <LibWeb/HTML/ActivateTab.h>
|
#include <LibWeb/HTML/ActivateTab.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
|
||||||
#include <LibWeb/HTML/HistoryHandlingBehavior.h>
|
#include <LibWeb/HTML/HistoryHandlingBehavior.h>
|
||||||
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/HTML/Origin.h>
|
#include <LibWeb/HTML/Origin.h>
|
||||||
#include <LibWeb/HTML/SessionHistoryEntry.h>
|
#include <LibWeb/HTML/SessionHistoryEntry.h>
|
||||||
#include <LibWeb/HTML/TokenizedFeatures.h>
|
#include <LibWeb/HTML/TokenizedFeatures.h>
|
||||||
|
@ -179,8 +179,8 @@ public:
|
||||||
|
|
||||||
bool is_child_of(BrowsingContext const&) const;
|
bool is_child_of(BrowsingContext const&) const;
|
||||||
|
|
||||||
HTML::BrowsingContextContainer* container() { return m_container; }
|
HTML::NavigableContainer* container() { return m_container; }
|
||||||
HTML::BrowsingContextContainer const* container() const { return m_container; }
|
HTML::NavigableContainer const* container() const { return m_container; }
|
||||||
|
|
||||||
CSSPixelPoint to_top_level_position(CSSPixelPoint);
|
CSSPixelPoint to_top_level_position(CSSPixelPoint);
|
||||||
CSSPixelRect to_top_level_rect(CSSPixelRect const&);
|
CSSPixelRect to_top_level_rect(CSSPixelRect const&);
|
||||||
|
@ -266,7 +266,7 @@ public:
|
||||||
virtual void set_window_handle(String handle) override { m_window_handle = move(handle); }
|
virtual void set_window_handle(String handle) override { m_window_handle = move(handle); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit BrowsingContext(Page&, HTML::BrowsingContextContainer*);
|
explicit BrowsingContext(Page&, HTML::NavigableContainer*);
|
||||||
|
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
|
@ -296,7 +296,7 @@ private:
|
||||||
// https://html.spec.whatwg.org/multipage/browsers.html#creator-origin
|
// https://html.spec.whatwg.org/multipage/browsers.html#creator-origin
|
||||||
Optional<HTML::Origin> m_creator_origin;
|
Optional<HTML::Origin> m_creator_origin;
|
||||||
|
|
||||||
JS::GCPtr<HTML::BrowsingContextContainer> m_container;
|
JS::GCPtr<HTML::NavigableContainer> m_container;
|
||||||
CSSPixelSize m_size;
|
CSSPixelSize m_size;
|
||||||
CSSPixelPoint m_viewport_scroll_offset;
|
CSSPixelPoint m_viewport_scroll_offset;
|
||||||
|
|
||||||
|
|
|
@ -174,11 +174,11 @@ void run_focusing_steps(DOM::Node* new_focus_target, DOM::Node* fallback_target,
|
||||||
new_focus_target = fallback_target;
|
new_focus_target = fallback_target;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. If new focus target is a browsing context container with non-null nested browsing context,
|
// 3. If new focus target is a navigable container with non-null nested browsing context,
|
||||||
// then set new focus target to the nested browsing context's active document.
|
// then set new focus target to the nested browsing context's active document.
|
||||||
if (is<HTML::BrowsingContextContainer>(*new_focus_target)) {
|
if (is<HTML::NavigableContainer>(*new_focus_target)) {
|
||||||
auto& browsing_context_container = static_cast<HTML::BrowsingContextContainer&>(*new_focus_target);
|
auto& navigable_container = static_cast<HTML::NavigableContainer&>(*new_focus_target);
|
||||||
if (auto* nested_browsing_context = browsing_context_container.nested_browsing_context())
|
if (auto* nested_browsing_context = navigable_container.nested_browsing_context())
|
||||||
new_focus_target = nested_browsing_context->active_document();
|
new_focus_target = nested_browsing_context->active_document();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include <LibWeb/DOM/IDLEventListener.h>
|
#include <LibWeb/DOM/IDLEventListener.h>
|
||||||
#include <LibWeb/DOM/ShadowRoot.h>
|
#include <LibWeb/DOM/ShadowRoot.h>
|
||||||
#include <LibWeb/HTML/BrowsingContext.h>
|
#include <LibWeb/HTML/BrowsingContext.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
|
||||||
#include <LibWeb/HTML/DOMStringMap.h>
|
#include <LibWeb/HTML/DOMStringMap.h>
|
||||||
#include <LibWeb/HTML/EventHandler.h>
|
#include <LibWeb/HTML/EventHandler.h>
|
||||||
#include <LibWeb/HTML/Focus.h>
|
#include <LibWeb/HTML/Focus.h>
|
||||||
|
@ -20,6 +19,7 @@
|
||||||
#include <LibWeb/HTML/HTMLAreaElement.h>
|
#include <LibWeb/HTML/HTMLAreaElement.h>
|
||||||
#include <LibWeb/HTML/HTMLBodyElement.h>
|
#include <LibWeb/HTML/HTMLBodyElement.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/HTML/VisibilityState.h>
|
#include <LibWeb/HTML/VisibilityState.h>
|
||||||
#include <LibWeb/HTML/Window.h>
|
#include <LibWeb/HTML/Window.h>
|
||||||
#include <LibWeb/Layout/Box.h>
|
#include <LibWeb/Layout/Box.h>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
HTMLIFrameElement::HTMLIFrameElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
HTMLIFrameElement::HTMLIFrameElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||||
: BrowsingContextContainer(document, move(qualified_name))
|
: NavigableContainer(document, move(qualified_name))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
class HTMLIFrameElement final : public BrowsingContextContainer {
|
class HTMLIFrameElement final : public NavigableContainer {
|
||||||
WEB_PLATFORM_OBJECT(HTMLIFrameElement, BrowsingContextContainer);
|
WEB_PLATFORM_OBJECT(HTMLIFrameElement, NavigableContainer);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~HTMLIFrameElement() override;
|
virtual ~HTMLIFrameElement() override;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
HTMLObjectElement::HTMLObjectElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
HTMLObjectElement::HTMLObjectElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||||
: BrowsingContextContainer(document, move(qualified_name))
|
: NavigableContainer(document, move(qualified_name))
|
||||||
{
|
{
|
||||||
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element
|
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element
|
||||||
// Whenever one of the following conditions occur:
|
// Whenever one of the following conditions occur:
|
||||||
|
@ -40,7 +40,7 @@ JS::ThrowCompletionOr<void> HTMLObjectElement::initialize(JS::Realm& realm)
|
||||||
|
|
||||||
void HTMLObjectElement::parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value)
|
void HTMLObjectElement::parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value)
|
||||||
{
|
{
|
||||||
BrowsingContextContainer::parse_attribute(name, value);
|
NavigableContainer::parse_attribute(name, value);
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element
|
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element
|
||||||
// Whenever one of the following conditions occur:
|
// Whenever one of the following conditions occur:
|
||||||
|
@ -70,7 +70,7 @@ JS::GCPtr<Layout::Node> HTMLObjectElement::create_layout_node(NonnullRefPtr<CSS:
|
||||||
{
|
{
|
||||||
switch (m_representation) {
|
switch (m_representation) {
|
||||||
case Representation::Children:
|
case Representation::Children:
|
||||||
return BrowsingContextContainer::create_layout_node(move(style));
|
return NavigableContainer::create_layout_node(move(style));
|
||||||
case Representation::NestedBrowsingContext:
|
case Representation::NestedBrowsingContext:
|
||||||
// FIXME: Actually paint the nested browsing context's document, similar to how iframes are painted with FrameBox and NestedBrowsingContextPaintable.
|
// FIXME: Actually paint the nested browsing context's document, similar to how iframes are painted with FrameBox and NestedBrowsingContextPaintable.
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -8,19 +8,19 @@
|
||||||
|
|
||||||
#include <LibCore/Forward.h>
|
#include <LibCore/Forward.h>
|
||||||
#include <LibGfx/Forward.h>
|
#include <LibGfx/Forward.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
|
||||||
#include <LibWeb/HTML/FormAssociatedElement.h>
|
#include <LibWeb/HTML/FormAssociatedElement.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/Loader/ImageLoader.h>
|
#include <LibWeb/Loader/ImageLoader.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
class HTMLObjectElement final
|
class HTMLObjectElement final
|
||||||
: public BrowsingContextContainer
|
: public NavigableContainer
|
||||||
, public FormAssociatedElement
|
, public FormAssociatedElement
|
||||||
, public ResourceClient {
|
, public ResourceClient {
|
||||||
WEB_PLATFORM_OBJECT(HTMLObjectElement, BrowsingContextContainer)
|
WEB_PLATFORM_OBJECT(HTMLObjectElement, NavigableContainer)
|
||||||
FORM_ASSOCIATED_ELEMENT(BrowsingContextContainer, HTMLObjectElement)
|
FORM_ASSOCIATED_ELEMENT(NavigableContainer, HTMLObjectElement)
|
||||||
|
|
||||||
enum class Representation {
|
enum class Representation {
|
||||||
Unknown,
|
Unknown,
|
||||||
|
|
|
@ -9,36 +9,36 @@
|
||||||
#include <LibWeb/DOM/Event.h>
|
#include <LibWeb/DOM/Event.h>
|
||||||
#include <LibWeb/Fetch/Infrastructure/HTTP/Requests.h>
|
#include <LibWeb/Fetch/Infrastructure/HTTP/Requests.h>
|
||||||
#include <LibWeb/HTML/BrowsingContext.h>
|
#include <LibWeb/HTML/BrowsingContext.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
|
||||||
#include <LibWeb/HTML/BrowsingContextGroup.h>
|
#include <LibWeb/HTML/BrowsingContextGroup.h>
|
||||||
#include <LibWeb/HTML/HTMLIFrameElement.h>
|
#include <LibWeb/HTML/HTMLIFrameElement.h>
|
||||||
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/HTML/NavigationParams.h>
|
#include <LibWeb/HTML/NavigationParams.h>
|
||||||
#include <LibWeb/HTML/Origin.h>
|
#include <LibWeb/HTML/Origin.h>
|
||||||
#include <LibWeb/Page/Page.h>
|
#include <LibWeb/Page/Page.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
HashTable<BrowsingContextContainer*>& BrowsingContextContainer::all_instances()
|
HashTable<NavigableContainer*>& NavigableContainer::all_instances()
|
||||||
{
|
{
|
||||||
static HashTable<BrowsingContextContainer*> set;
|
static HashTable<NavigableContainer*> set;
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowsingContextContainer::BrowsingContextContainer(DOM::Document& document, DOM::QualifiedName qualified_name)
|
NavigableContainer::NavigableContainer(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||||
: HTMLElement(document, move(qualified_name))
|
: HTMLElement(document, move(qualified_name))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowsingContextContainer::~BrowsingContextContainer() = default;
|
NavigableContainer::~NavigableContainer() = default;
|
||||||
|
|
||||||
void BrowsingContextContainer::visit_edges(Cell::Visitor& visitor)
|
void NavigableContainer::visit_edges(Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
visitor.visit(m_nested_browsing_context);
|
visitor.visit(m_nested_browsing_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/browsers.html#creating-a-new-nested-browsing-context
|
// https://html.spec.whatwg.org/multipage/browsers.html#creating-a-new-nested-browsing-context
|
||||||
void BrowsingContextContainer::create_new_nested_browsing_context()
|
void NavigableContainer::create_new_nested_browsing_context()
|
||||||
{
|
{
|
||||||
// 1. Let group be element's node document's browsing context's top-level browsing context's group.
|
// 1. Let group be element's node document's browsing context's top-level browsing context's group.
|
||||||
VERIFY(document().browsing_context());
|
VERIFY(document().browsing_context());
|
||||||
|
@ -62,7 +62,7 @@ void BrowsingContextContainer::create_new_nested_browsing_context()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/browsers.html#concept-bcc-content-document
|
// https://html.spec.whatwg.org/multipage/browsers.html#concept-bcc-content-document
|
||||||
const DOM::Document* BrowsingContextContainer::content_document() const
|
const DOM::Document* NavigableContainer::content_document() const
|
||||||
{
|
{
|
||||||
// 1. If container's nested browsing context is null, then return null.
|
// 1. If container's nested browsing context is null, then return null.
|
||||||
if (m_nested_browsing_context == nullptr)
|
if (m_nested_browsing_context == nullptr)
|
||||||
|
@ -89,7 +89,7 @@ const DOM::Document* BrowsingContextContainer::content_document() const
|
||||||
return document;
|
return document;
|
||||||
}
|
}
|
||||||
|
|
||||||
DOM::Document const* BrowsingContextContainer::content_document_without_origin_check() const
|
DOM::Document const* NavigableContainer::content_document_without_origin_check() const
|
||||||
{
|
{
|
||||||
if (!m_nested_browsing_context)
|
if (!m_nested_browsing_context)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -97,7 +97,7 @@ DOM::Document const* BrowsingContextContainer::content_document_without_origin_c
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/embedded-content-other.html#dom-media-getsvgdocument
|
// https://html.spec.whatwg.org/multipage/embedded-content-other.html#dom-media-getsvgdocument
|
||||||
const DOM::Document* BrowsingContextContainer::get_svg_document() const
|
const DOM::Document* NavigableContainer::get_svg_document() const
|
||||||
{
|
{
|
||||||
// 1. Let document be this element's content document.
|
// 1. Let document be this element's content document.
|
||||||
auto const* document = content_document();
|
auto const* document = content_document();
|
||||||
|
@ -109,7 +109,7 @@ const DOM::Document* BrowsingContextContainer::get_svg_document() const
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HTML::WindowProxy* BrowsingContextContainer::content_window()
|
HTML::WindowProxy* NavigableContainer::content_window()
|
||||||
{
|
{
|
||||||
if (!m_nested_browsing_context)
|
if (!m_nested_browsing_context)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -128,7 +128,7 @@ static bool url_matches_about_blank(AK::URL const& url)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#shared-attribute-processing-steps-for-iframe-and-frame-elements
|
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#shared-attribute-processing-steps-for-iframe-and-frame-elements
|
||||||
void BrowsingContextContainer::shared_attribute_processing_steps_for_iframe_and_frame(bool initial_insertion)
|
void NavigableContainer::shared_attribute_processing_steps_for_iframe_and_frame(bool initial_insertion)
|
||||||
{
|
{
|
||||||
// 1. Let url be the URL record about:blank.
|
// 1. Let url be the URL record about:blank.
|
||||||
auto url = AK::URL("about:blank");
|
auto url = AK::URL("about:blank");
|
||||||
|
@ -196,7 +196,7 @@ void BrowsingContextContainer::shared_attribute_processing_steps_for_iframe_and_
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#navigate-an-iframe-or-frame
|
// https://html.spec.whatwg.org/multipage/iframe-embed-object.html#navigate-an-iframe-or-frame
|
||||||
void BrowsingContextContainer::navigate_an_iframe_or_frame(JS::NonnullGCPtr<Fetch::Infrastructure::Request> resource)
|
void NavigableContainer::navigate_an_iframe_or_frame(JS::NonnullGCPtr<Fetch::Infrastructure::Request> resource)
|
||||||
{
|
{
|
||||||
// 1. Let historyHandling be "default".
|
// 1. Let historyHandling be "default".
|
||||||
auto history_handling = HistoryHandlingBehavior::Default;
|
auto history_handling = HistoryHandlingBehavior::Default;
|
|
@ -10,13 +10,13 @@
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
class BrowsingContextContainer : public HTMLElement {
|
class NavigableContainer : public HTMLElement {
|
||||||
WEB_PLATFORM_OBJECT(BrowsingContextContainer, HTMLElement);
|
WEB_PLATFORM_OBJECT(NavigableContainer, HTMLElement);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~BrowsingContextContainer() override;
|
virtual ~NavigableContainer() override;
|
||||||
|
|
||||||
static HashTable<BrowsingContextContainer*>& all_instances();
|
static HashTable<NavigableContainer*>& all_instances();
|
||||||
|
|
||||||
BrowsingContext* nested_browsing_context() { return m_nested_browsing_context; }
|
BrowsingContext* nested_browsing_context() { return m_nested_browsing_context; }
|
||||||
BrowsingContext const* nested_browsing_context() const { return m_nested_browsing_context; }
|
BrowsingContext const* nested_browsing_context() const { return m_nested_browsing_context; }
|
||||||
|
@ -29,7 +29,7 @@ public:
|
||||||
DOM::Document const* get_svg_document() const;
|
DOM::Document const* get_svg_document() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
BrowsingContextContainer(DOM::Document&, DOM::QualifiedName);
|
NavigableContainer(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
virtual void visit_edges(Cell::Visitor&) override;
|
virtual void visit_edges(Cell::Visitor&) override;
|
||||||
|
|
||||||
|
@ -44,12 +44,12 @@ protected:
|
||||||
JS::GCPtr<BrowsingContext> m_nested_browsing_context;
|
JS::GCPtr<BrowsingContext> m_nested_browsing_context;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual bool is_browsing_context_container() const override { return true; }
|
virtual bool is_navigable_container() const override { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
template<>
|
template<>
|
||||||
inline bool Node::fast_is<HTML::BrowsingContextContainer>() const { return is_browsing_context_container(); }
|
inline bool Node::fast_is<HTML::NavigableContainer>() const { return is_navigable_container(); }
|
||||||
}
|
}
|
|
@ -687,10 +687,10 @@ bool EventHandler::fire_keyboard_event(FlyString const& event_name, HTML::Browsi
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (JS::GCPtr<DOM::Element> focused_element = document->focused_element()) {
|
if (JS::GCPtr<DOM::Element> focused_element = document->focused_element()) {
|
||||||
if (is<HTML::BrowsingContextContainer>(*focused_element)) {
|
if (is<HTML::NavigableContainer>(*focused_element)) {
|
||||||
auto& browsing_context_container = verify_cast<HTML::BrowsingContextContainer>(*focused_element);
|
auto& navigable_container = verify_cast<HTML::NavigableContainer>(*focused_element);
|
||||||
if (browsing_context_container.nested_browsing_context())
|
if (navigable_container.nested_browsing_context())
|
||||||
return fire_keyboard_event(event_name, *browsing_context_container.nested_browsing_context(), key, modifiers, code_point);
|
return fire_keyboard_event(event_name, *navigable_container.nested_browsing_context(), key, modifiers, code_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto event = UIEvents::KeyboardEvent::create_from_platform_event(document->realm(), event_name, key, modifiers, code_point).release_value_but_fixme_should_propagate_errors();
|
auto event = UIEvents::KeyboardEvent::create_from_platform_event(document->realm(), event_name, key, modifiers, code_point).release_value_but_fixme_should_propagate_errors();
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <AK/Debug.h>
|
#include <AK/Debug.h>
|
||||||
#include <LibWeb/HTML/BrowsingContextContainer.h>
|
#include <LibWeb/HTML/NavigableContainer.h>
|
||||||
#include <LibWeb/Layout/FrameBox.h>
|
#include <LibWeb/Layout/FrameBox.h>
|
||||||
#include <LibWeb/Layout/Viewport.h>
|
#include <LibWeb/Layout/Viewport.h>
|
||||||
#include <LibWeb/Painting/BorderRadiusCornerClipper.h>
|
#include <LibWeb/Painting/BorderRadiusCornerClipper.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue