Serenity Operating System
at master 43 lines 1.1 kB view raw
1/* 2 * Copyright (c) 2022, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/HashMap.h> 10#include <AK/NonnullRefPtr.h> 11#include <AK/WeakPtr.h> 12#include <LibJS/Heap/Cell.h> 13#include <LibWeb/Forward.h> 14 15namespace Web::HTML { 16 17class BrowsingContextGroup final : public JS::Cell { 18 JS_CELL(BrowsingContextGroup, JS::Cell); 19 20public: 21 static JS::NonnullGCPtr<BrowsingContextGroup> create_a_new_browsing_context_group(Page&); 22 ~BrowsingContextGroup(); 23 24 Page* page() { return m_page; } 25 Page const* page() const { return m_page; } 26 27 auto& browsing_context_set() { return m_browsing_context_set; } 28 auto const& browsing_context_set() const { return m_browsing_context_set; } 29 30 void append(BrowsingContext&); 31 32private: 33 explicit BrowsingContextGroup(Web::Page&); 34 35 virtual void visit_edges(Cell::Visitor&) override; 36 37 // https://html.spec.whatwg.org/multipage/browsers.html#browsing-context-group-set 38 OrderedHashTable<BrowsingContext*> m_browsing_context_set; 39 40 WeakPtr<Page> m_page; 41}; 42 43}