mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 09:30:24 +00:00
9077fe15ac
When a tab or nested traversable navigable is closed, there might be messages still in the pipe from the UI process that we need to gracefully drop, rather than crash trying to access an invalid pointer.
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
|
|
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
|
|
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Function.h>
|
|
#include <AK/HashMap.h>
|
|
#include <AK/NonnullOwnPtr.h>
|
|
#include <LibJS/Heap/Handle.h>
|
|
#include <WebContent/Forward.h>
|
|
|
|
namespace WebContent {
|
|
|
|
class PageHost {
|
|
AK_MAKE_NONCOPYABLE(PageHost);
|
|
AK_MAKE_NONMOVABLE(PageHost);
|
|
|
|
public:
|
|
static NonnullOwnPtr<PageHost> create(ConnectionFromClient& client) { return adopt_own(*new PageHost(client)); }
|
|
virtual ~PageHost();
|
|
|
|
Function<void(WebDriverConnection&)> on_webdriver_connection;
|
|
|
|
Optional<PageClient&> page(u64 index);
|
|
PageClient& create_page();
|
|
void remove_page(Badge<PageClient>, u64 index);
|
|
|
|
ConnectionFromClient& client() const { return m_client; }
|
|
|
|
private:
|
|
explicit PageHost(ConnectionFromClient&);
|
|
|
|
ConnectionFromClient& m_client;
|
|
HashMap<u64, JS::Handle<PageClient>> m_pages;
|
|
u64 m_next_id { 0 };
|
|
};
|
|
|
|
}
|