2020-06-17 17:31:42 +02:00
|
|
|
/*
|
2023-02-20 19:03:06 +01:00
|
|
|
* Copyright (c) 2020-2023, Andreas Kling <kling@serenityos.org>
|
2023-01-12 14:34:12 +00:00
|
|
|
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
|
2023-11-29 09:34:38 -07:00
|
|
|
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
|
2020-06-17 17:31:42 +02:00
|
|
|
*
|
2021-04-22 01:24:48 -07:00
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
2020-06-17 17:31:42 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2023-11-02 00:01:16 +01:00
|
|
|
#include <LibAccelGfx/Forward.h>
|
2021-04-04 00:12:37 +02:00
|
|
|
#include <LibGfx/Rect.h>
|
2020-07-28 19:27:41 +02:00
|
|
|
#include <LibWeb/Page/Page.h>
|
2022-11-25 17:07:19 +00:00
|
|
|
#include <LibWeb/PixelUnits.h>
|
2022-11-08 10:03:07 -05:00
|
|
|
#include <WebContent/Forward.h>
|
2020-06-17 17:31:42 +02:00
|
|
|
|
|
|
|
|
namespace WebContent {
|
|
|
|
|
|
2022-02-25 12:18:30 +02:00
|
|
|
class ConnectionFromClient;
|
2020-06-17 18:00:18 +02:00
|
|
|
|
2023-11-29 09:34:38 -07:00
|
|
|
class PageHost {
|
2020-06-17 17:31:42 +02:00
|
|
|
AK_MAKE_NONCOPYABLE(PageHost);
|
|
|
|
|
AK_MAKE_NONMOVABLE(PageHost);
|
|
|
|
|
|
|
|
|
|
public:
|
2022-02-25 12:18:30 +02:00
|
|
|
static NonnullOwnPtr<PageHost> create(ConnectionFromClient& client) { return adopt_own(*new PageHost(client)); }
|
2022-11-08 10:03:07 -05:00
|
|
|
virtual ~PageHost();
|
2020-06-17 17:31:42 +02:00
|
|
|
|
2023-03-16 08:50:22 -04:00
|
|
|
Function<void(WebDriverConnection&)> on_webdriver_connection;
|
2022-11-08 10:03:07 -05:00
|
|
|
|
2023-11-29 09:34:38 -07:00
|
|
|
PageClient& page(u64 index) { return *m_pages.find(index)->value; }
|
|
|
|
|
PageClient& create_page();
|
2023-05-15 11:17:58 -04:00
|
|
|
|
2023-11-29 09:34:38 -07:00
|
|
|
ConnectionFromClient& client() const { return m_client; }
|
2023-08-21 15:50:31 +01:00
|
|
|
|
2020-06-17 17:31:42 +02:00
|
|
|
private:
|
2022-02-25 12:18:30 +02:00
|
|
|
explicit PageHost(ConnectionFromClient&);
|
2020-06-17 17:31:42 +02:00
|
|
|
|
2022-02-25 12:18:30 +02:00
|
|
|
ConnectionFromClient& m_client;
|
2023-11-29 09:34:38 -07:00
|
|
|
HashMap<u64, NonnullOwnPtr<PageClient>> m_pages;
|
|
|
|
|
u64 m_next_id { 0 };
|
2020-06-17 17:31:42 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|