mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
fa83cc722c
It's currently possible for window size/position updates to hang, as the underlying IPCs are synchronous. This updates the WebDriver endpoint to be async, to unblock the WebContent process while the update is ongoing. The UI process is now responsible for informing WebContent when the update is complete.
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2022-2024, Tim Flynn <trflynn89@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibIPC/ConnectionFromClient.h>
|
|
#include <LibIPC/Transport.h>
|
|
#include <WebContent/WebDriverClientEndpoint.h>
|
|
#include <WebContent/WebDriverServerEndpoint.h>
|
|
|
|
namespace WebDriver {
|
|
|
|
class Client;
|
|
|
|
class WebContentConnection
|
|
: public IPC::ConnectionFromClient<WebDriverClientEndpoint, WebDriverServerEndpoint> {
|
|
C_OBJECT_ABSTRACT(WebContentConnection)
|
|
public:
|
|
explicit WebContentConnection(IPC::Transport transport);
|
|
|
|
Function<void()> on_close;
|
|
Function<void(Web::WebDriver::Response)> on_navigation_complete;
|
|
Function<void(Web::WebDriver::Response)> on_window_rect_updated;
|
|
Function<void(Web::WebDriver::Response)> on_script_executed;
|
|
Function<void(Web::WebDriver::Response)> on_actions_performed;
|
|
Function<void(Web::WebDriver::Response)> on_dialog_closed;
|
|
|
|
private:
|
|
virtual void die() override;
|
|
|
|
virtual void navigation_complete(Web::WebDriver::Response const&) override;
|
|
virtual void window_rect_updated(Web::WebDriver::Response const&) override;
|
|
virtual void script_executed(Web::WebDriver::Response const&) override;
|
|
virtual void actions_performed(Web::WebDriver::Response const&) override;
|
|
virtual void dialog_closed(Web::WebDriver::Response const&) override;
|
|
};
|
|
|
|
}
|