| 
									
										
										
										
											2020-01-18 09:38:21 +01:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2022-08-01 16:34:56 +02:00
										 |  |  |  * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org> | 
					
						
							| 
									
										
										
										
											2020-01-18 09:38:21 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-04-22 01:24:48 -07:00
										 |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							| 
									
										
										
										
											2020-01-18 09:38:21 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-09 21:25:29 +02:00
										 |  |  | #include <AK/Function.h>
 | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | #include <AK/Noncopyable.h>
 | 
					
						
							|  |  |  | #include <AK/RefPtr.h>
 | 
					
						
							| 
									
										
										
										
											2019-11-25 21:19:03 +01:00
										 |  |  | #include <AK/WeakPtr.h>
 | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  | #include <LibGfx/Bitmap.h>
 | 
					
						
							| 
									
										
										
										
											2020-02-06 12:04:00 +01:00
										 |  |  | #include <LibGfx/Rect.h>
 | 
					
						
							|  |  |  | #include <LibGfx/Size.h>
 | 
					
						
							| 
									
										
										
										
											2020-08-02 11:52:35 +02:00
										 |  |  | #include <LibWeb/DOM/Position.h>
 | 
					
						
							| 
									
										
										
										
											2021-09-09 02:07:32 +02:00
										 |  |  | #include <LibWeb/HTML/BrowsingContextContainer.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  | #include <LibWeb/HTML/HistoryHandlingBehavior.h>
 | 
					
						
							| 
									
										
										
										
											2022-08-05 10:55:47 +02:00
										 |  |  | #include <LibWeb/HTML/Origin.h>
 | 
					
						
							| 
									
										
										
										
											2022-08-01 16:34:56 +02:00
										 |  |  | #include <LibWeb/HTML/SessionHistoryEntry.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-19 20:50:33 +02:00
										 |  |  | #include <LibWeb/HTML/VisibilityState.h>
 | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  | #include <LibWeb/Loader/FrameLoader.h>
 | 
					
						
							| 
									
										
										
										
											2020-07-28 19:27:41 +02:00
										 |  |  | #include <LibWeb/Page/EventHandler.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-07 20:30:31 +02:00
										 |  |  | #include <LibWeb/Platform/Timer.h>
 | 
					
						
							| 
									
										
										
										
											2020-03-07 10:32:51 +01:00
										 |  |  | #include <LibWeb/TreeNode.h>
 | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-18 15:01:28 +01:00
										 |  |  | namespace Web::HTML { | 
					
						
							| 
									
										
										
										
											2020-03-07 10:27:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-30 12:36:53 +02:00
										 |  |  | class BrowsingContext : public TreeNode<BrowsingContext> { | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2022-09-19 12:28:46 +02:00
										 |  |  |     static NonnullRefPtr<BrowsingContext> create_a_new_browsing_context(Page&, JS::GCPtr<DOM::Document> creator, JS::GCPtr<DOM::Element> embedder, BrowsingContextGroup&); | 
					
						
							|  |  |  |     static NonnullRefPtr<BrowsingContext> create_a_new_top_level_browsing_context(Page&); | 
					
						
							| 
									
										
										
										
											2022-08-05 10:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-30 12:36:53 +02:00
										 |  |  |     ~BrowsingContext(); | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-30 12:25:33 +01:00
										 |  |  |     class ViewportClient { | 
					
						
							|  |  |  |     public: | 
					
						
							| 
									
										
										
										
											2022-03-14 13:21:51 -06:00
										 |  |  |         virtual ~ViewportClient() = default; | 
					
						
							| 
									
										
										
										
											2021-09-08 11:12:22 +02:00
										 |  |  |         virtual void browsing_context_did_set_viewport_rect(Gfx::IntRect const&) = 0; | 
					
						
							| 
									
										
										
										
											2021-01-30 12:25:33 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  |     void register_viewport_client(ViewportClient&); | 
					
						
							|  |  |  |     void unregister_viewport_client(ViewportClient&); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-01 21:17:53 +00:00
										 |  |  |     bool is_top_level() const; | 
					
						
							| 
									
										
										
										
											2021-05-30 12:36:53 +02:00
										 |  |  |     bool is_focused_context() const; | 
					
						
							| 
									
										
										
										
											2020-06-06 16:33:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     DOM::Document const* active_document() const; | 
					
						
							|  |  |  |     DOM::Document* active_document(); | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-20 21:44:42 +02:00
										 |  |  |     void set_active_document(JS::NonnullGCPtr<DOM::Document>); | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  |     HTML::Window* active_window(); | 
					
						
							|  |  |  |     HTML::Window const* active_window() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-12 18:23:05 +01:00
										 |  |  |     Page* page() { return m_page; } | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     Page const* page() const { return m_page; } | 
					
						
							| 
									
										
										
										
											2019-11-25 21:19:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     Gfx::IntSize const& size() const { return m_size; } | 
					
						
							|  |  |  |     void set_size(Gfx::IntSize const&); | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-15 13:01:48 +01:00
										 |  |  |     void set_needs_display(); | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     void set_needs_display(Gfx::IntRect const&); | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-08 12:22:28 +01:00
										 |  |  |     Gfx::IntPoint const& viewport_scroll_offset() const { return m_viewport_scroll_offset; } | 
					
						
							| 
									
										
										
										
											2020-12-02 23:40:57 +01:00
										 |  |  |     Gfx::IntRect viewport_rect() const { return { m_viewport_scroll_offset, m_size }; } | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     void set_viewport_rect(Gfx::IntRect const&); | 
					
						
							| 
									
										
										
										
											2019-12-18 20:54:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  |     FrameLoader& loader() { return m_loader; } | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     FrameLoader const& loader() const { return m_loader; } | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-18 15:01:28 +01:00
										 |  |  |     Web::EventHandler& event_handler() { return m_event_handler; } | 
					
						
							|  |  |  |     Web::EventHandler const& event_handler() const { return m_event_handler; } | 
					
						
							| 
									
										
										
										
											2020-06-07 14:40:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-06 15:32:38 +02:00
										 |  |  |     void scroll_to(Gfx::IntPoint const&); | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     void scroll_to_anchor(String const&); | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-10 01:51:09 +02:00
										 |  |  |     BrowsingContext& top_level_browsing_context() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         BrowsingContext* context = this; | 
					
						
							|  |  |  |         while (context->parent()) | 
					
						
							|  |  |  |             context = context->parent(); | 
					
						
							|  |  |  |         return *context; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     BrowsingContext const& top_level_browsing_context() const { return const_cast<BrowsingContext*>(this)->top_level_browsing_context(); } | 
					
						
							| 
									
										
										
										
											2020-06-06 15:08:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-15 14:37:58 +00:00
										 |  |  |     BrowsingContext* choose_a_browsing_context(StringView name, bool noopener); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 19:56:29 +02:00
										 |  |  |     size_t document_tree_child_browsing_context_count() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool is_child_of(BrowsingContext const&) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-09 02:07:32 +02:00
										 |  |  |     HTML::BrowsingContextContainer* container() { return m_container; } | 
					
						
							|  |  |  |     HTML::BrowsingContextContainer const* container() const { return m_container; } | 
					
						
							| 
									
										
										
										
											2020-06-06 15:08:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     Gfx::IntPoint to_top_level_position(Gfx::IntPoint const&); | 
					
						
							|  |  |  |     Gfx::IntRect to_top_level_rect(Gfx::IntRect const&); | 
					
						
							| 
									
										
										
										
											2020-06-08 20:31:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-08 10:43:20 +02:00
										 |  |  |     DOM::Position const& cursor_position() const { return m_cursor_position; } | 
					
						
							| 
									
										
										
										
											2021-02-09 21:23:50 +01:00
										 |  |  |     void set_cursor_position(DOM::Position); | 
					
						
							| 
									
										
										
										
											2021-05-18 22:01:12 +02:00
										 |  |  |     bool increment_cursor_position_offset(); | 
					
						
							|  |  |  |     bool decrement_cursor_position_offset(); | 
					
						
							| 
									
										
										
										
											2020-08-02 11:52:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     bool cursor_blink_state() const { return m_cursor_blink_state; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 19:21:59 +02:00
										 |  |  |     String selected_text() const; | 
					
						
							| 
									
										
										
										
											2021-07-14 08:38:10 -04:00
										 |  |  |     void select_all(); | 
					
						
							| 
									
										
										
										
											2020-08-06 19:21:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-04 20:48:27 +01:00
										 |  |  |     void did_edit(Badge<EditEventHandler>); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 00:33:23 +03:00
										 |  |  |     void register_frame_nesting(AK::URL const&); | 
					
						
							|  |  |  |     bool is_frame_nesting_allowed(AK::URL const&) const; | 
					
						
							| 
									
										
										
										
											2021-04-19 14:30:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 00:33:23 +03:00
										 |  |  |     void set_frame_nesting_levels(HashMap<AK::URL, size_t> frame_nesting_levels) { m_frame_nesting_levels = move(frame_nesting_levels); }; | 
					
						
							|  |  |  |     HashMap<AK::URL, size_t> const& frame_nesting_levels() const { return m_frame_nesting_levels; } | 
					
						
							| 
									
										
										
										
											2021-04-19 14:30:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-09 02:10:05 +02:00
										 |  |  |     DOM::Document* container_document(); | 
					
						
							|  |  |  |     DOM::Document const* container_document() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-03 17:05:58 +02:00
										 |  |  |     bool has_a_rendering_opportunity() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::GCPtr<DOM::Node> currently_focused_area(); | 
					
						
							| 
									
										
										
										
											2022-02-06 18:45:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-16 17:15:11 +01:00
										 |  |  |     String const& name() const { return m_name; } | 
					
						
							|  |  |  |     void set_name(String const& name) { m_name = name; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-01 16:34:56 +02:00
										 |  |  |     Vector<SessionHistoryEntry>& session_history() { return m_session_history; } | 
					
						
							|  |  |  |     Vector<SessionHistoryEntry> const& session_history() const { return m_session_history; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-01 16:42:11 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/dom.html#still-on-its-initial-about:blank-document
 | 
					
						
							|  |  |  |     bool still_on_its_initial_about_blank_document() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-19 12:28:46 +02:00
										 |  |  |     BrowsingContextGroup* group(); | 
					
						
							|  |  |  |     void set_group(BrowsingContextGroup*); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsers.html#bcg-remove
 | 
					
						
							|  |  |  |     void remove(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/browsers.html#allowed-to-navigate
 | 
					
						
							|  |  |  |     bool is_allowed_to_navigate(BrowsingContext const&) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate
 | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  |     WebIDL::ExceptionOr<void> navigate( | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  |         Fetch::Infrastructure::Request resource, | 
					
						
							|  |  |  |         BrowsingContext& source_browsing_context, | 
					
						
							|  |  |  |         bool exceptions_enabled = false, | 
					
						
							|  |  |  |         HistoryHandlingBehavior history_handling = HistoryHandlingBehavior::Default, | 
					
						
							|  |  |  |         Optional<PolicyContainer> history_policy_container = {}, | 
					
						
							|  |  |  |         String navigation_type = "other", | 
					
						
							|  |  |  |         Optional<String> navigation_id = {}, | 
					
						
							|  |  |  |         Function<void(NonnullOwnPtr<Fetch::Infrastructure::Response>)> process_response_end_of_body = {}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate-fragid
 | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  |     WebIDL::ExceptionOr<void> navigate_to_a_fragment(AK::URL const&, HistoryHandlingBehavior, String navigation_id); | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/origin.html#one-permitted-sandboxed-navigator
 | 
					
						
							|  |  |  |     BrowsingContext const* the_one_permitted_sandboxed_navigator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsing-the-web.html#traverse-the-history
 | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  |     WebIDL::ExceptionOr<void> traverse_the_history(size_t entry_index, HistoryHandlingBehavior = HistoryHandlingBehavior::Default, bool explicit_history_navigation = false); | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-19 20:50:33 +02:00
										 |  |  |     Vector<JS::Handle<DOM::Document>> document_family() const; | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  |     bool document_family_contains(DOM::Document const&) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-19 20:50:33 +02:00
										 |  |  |     VisibilityState system_visibility_state() const; | 
					
						
							|  |  |  |     void set_system_visibility_state(VisibilityState); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-20 21:44:42 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/window-object.html#a-browsing-context-is-discarded
 | 
					
						
							|  |  |  |     void discard(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-21 01:17:01 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/window-object.html#close-a-browsing-context
 | 
					
						
							|  |  |  |     void close(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2021-09-10 01:51:09 +02:00
										 |  |  |     explicit BrowsingContext(Page&, HTML::BrowsingContextContainer*); | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-09 21:23:50 +01:00
										 |  |  |     void reset_cursor_blink_cycle(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-17 17:40:26 +02:00
										 |  |  |     void scroll_offset_did_change(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-12 18:23:05 +01:00
										 |  |  |     WeakPtr<Page> m_page; | 
					
						
							| 
									
										
										
										
											2021-09-08 11:17:43 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  |     FrameLoader m_loader; | 
					
						
							| 
									
										
										
										
											2021-11-18 15:01:28 +01:00
										 |  |  |     Web::EventHandler m_event_handler; | 
					
						
							| 
									
										
										
										
											2020-06-06 13:02:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-19 17:46:34 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/history.html#current-entry
 | 
					
						
							|  |  |  |     SessionHistoryEntry& current_entry() { return m_session_history[*m_session_history_index]; } | 
					
						
							|  |  |  |     SessionHistoryEntry const& current_entry() const { return m_session_history[*m_session_history_index]; } | 
					
						
							|  |  |  |     Optional<size_t> m_session_history_index { 0 }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-01 16:34:56 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/history.html#session-history
 | 
					
						
							|  |  |  |     Vector<SessionHistoryEntry> m_session_history; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-05 10:55:47 +02:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/browsers.html#creator-url
 | 
					
						
							|  |  |  |     Optional<AK::URL> m_creator_url; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsers.html#creator-base-url
 | 
					
						
							|  |  |  |     Optional<AK::URL> m_creator_base_url; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsers.html#creator-origin
 | 
					
						
							|  |  |  |     Optional<HTML::Origin> m_creator_origin; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-09 02:07:32 +02:00
										 |  |  |     WeakPtr<HTML::BrowsingContextContainer> m_container; | 
					
						
							| 
									
										
										
										
											2022-09-20 21:44:42 +02:00
										 |  |  |     JS::Handle<HTML::Window> m_active_window; | 
					
						
							| 
									
										
										
										
											2020-06-10 10:57:59 +02:00
										 |  |  |     Gfx::IntSize m_size; | 
					
						
							| 
									
										
										
										
											2020-12-02 23:40:57 +01:00
										 |  |  |     Gfx::IntPoint m_viewport_scroll_offset; | 
					
						
							| 
									
										
										
										
											2020-08-02 11:52:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     DOM::Position m_cursor_position; | 
					
						
							| 
									
										
										
										
											2022-09-07 20:30:31 +02:00
										 |  |  |     RefPtr<Platform::Timer> m_cursor_blink_timer; | 
					
						
							| 
									
										
										
										
											2020-08-02 11:52:35 +02:00
										 |  |  |     bool m_cursor_blink_state { false }; | 
					
						
							| 
									
										
										
										
											2021-01-30 12:25:33 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     HashTable<ViewportClient*> m_viewport_clients; | 
					
						
							| 
									
										
										
										
											2021-04-19 14:30:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 00:33:23 +03:00
										 |  |  |     HashMap<AK::URL, size_t> m_frame_nesting_levels; | 
					
						
							| 
									
										
										
										
											2022-03-16 17:15:11 +01:00
										 |  |  |     String m_name; | 
					
						
							| 
									
										
										
										
											2022-09-19 12:28:46 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/browsers.html#tlbc-group
 | 
					
						
							|  |  |  |     RefPtr<BrowsingContextGroup> m_group; | 
					
						
							| 
									
										
										
										
											2022-09-19 20:50:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/multipage/interaction.html#system-visibility-state
 | 
					
						
							|  |  |  |     VisibilityState m_system_visibility_state { VisibilityState::Hidden }; | 
					
						
							| 
									
										
										
										
											2019-10-04 15:50:04 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-03-07 10:27:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-25 19:04:27 +01:00
										 |  |  | HTML::Origin determine_the_origin(BrowsingContext const& browsing_context, Optional<AK::URL> url, SandboxingFlagSet sandbox_flags, Optional<HTML::Origin> invocation_origin); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-07 10:27:02 +01:00
										 |  |  | } |