Compositor+LibWebView: Add debug action to crash Compositor
This is very useful for making sure Compositor process recovery works correctly.
This commit is contained in:
parent
123d37b299
commit
538a1522dc
6 changed files with 22 additions and 0 deletions
|
|
@ -654,6 +654,17 @@ void Application::notify_compositor_presented_bitmap_ready_to_paint(Web::Composi
|
|||
m_compositor_client->async_presented_bitmap_ready_to_paint(context_id, bitmap_id);
|
||||
}
|
||||
|
||||
void Application::crash_compositor_process()
|
||||
{
|
||||
if (!can_send_compositor_process_ipc(m_compositor_client)) {
|
||||
warnln("Unable to crash Compositor process: process is not available");
|
||||
return;
|
||||
}
|
||||
VERIFY(m_compositor_client);
|
||||
|
||||
m_compositor_client->async_crash();
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<WebContentClient>> Application::launch_web_content_process(ViewImplementation& view)
|
||||
{
|
||||
if (m_spare_web_content_process) {
|
||||
|
|
@ -1539,6 +1550,7 @@ void Application::initialize_actions()
|
|||
|
||||
m_debug_menu->add_action(Action::create("Collect Garbage"sv, ActionID::CollectGarbage, debug_request("collect-garbage"sv)));
|
||||
m_debug_menu->add_action(Action::create("Crash Current Page"sv, ActionID::CrashCurrentPage, debug_request("crash-current-page"sv)));
|
||||
m_debug_menu->add_action(Action::create("Crash Compositor Process"sv, ActionID::CrashCompositorProcess, [this]() { crash_compositor_process(); }));
|
||||
m_debug_menu->add_separator();
|
||||
|
||||
auto spoof_user_agent_menu = Menu::create_group("Spoof User Agent"sv);
|
||||
|
|
|
|||
|
|
@ -239,6 +239,7 @@ private:
|
|||
ErrorOr<void> launch_compositor_process();
|
||||
void handle_compositor_process_death();
|
||||
void recover_compositor_process();
|
||||
void crash_compositor_process();
|
||||
ErrorOr<void> launch_request_server();
|
||||
ErrorOr<void> launch_image_decoder_server();
|
||||
ErrorOr<void> launch_devtools_server();
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ enum class ActionID {
|
|||
ShowCaretHitTestDebugOverlay,
|
||||
CollectGarbage,
|
||||
CrashCurrentPage,
|
||||
CrashCompositorProcess,
|
||||
SpoofUserAgent,
|
||||
NavigatorCompatibilityMode,
|
||||
EnableScripting,
|
||||
|
|
|
|||
|
|
@ -20,4 +20,5 @@ endpoint CompositorControlServer
|
|||
dispatch_mouse_event_to_web_content(Web::Compositor::CompositorContextId context_id, Web::MouseEvent event) => (bool dispatched)
|
||||
async_scroll_by(Web::Compositor::CompositorContextId context_id, Gfx::FloatPoint position, Gfx::FloatPoint delta_in_device_pixels) => (bool handled)
|
||||
presented_bitmap_ready_to_paint(Web::Compositor::CompositorContextId context_id, i32 bitmap_id) =|
|
||||
crash() =|
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,6 +99,12 @@ void ConnectionFromClient::presented_bitmap_ready_to_paint(Web::Compositor::Comp
|
|||
m_compositor_state->presented_bitmap_ready_to_paint(context_id, bitmap_id);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::crash()
|
||||
{
|
||||
warnln("Crashing Compositor process by request from Browser");
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
ConnectionFromWebContent* ConnectionFromClient::web_content_connection(i32 web_content_connection_id)
|
||||
{
|
||||
auto it = m_web_content_connections.find(web_content_connection_id);
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ private:
|
|||
virtual Messages::CompositorControlServer::DispatchMouseEventToWebContentResponse dispatch_mouse_event_to_web_content(Web::Compositor::CompositorContextId, Web::MouseEvent) override;
|
||||
virtual Messages::CompositorControlServer::AsyncScrollByResponse async_scroll_by(Web::Compositor::CompositorContextId, Gfx::FloatPoint position, Gfx::FloatPoint delta_in_device_pixels) override;
|
||||
virtual void presented_bitmap_ready_to_paint(Web::Compositor::CompositorContextId, i32 bitmap_id) override;
|
||||
virtual void crash() override;
|
||||
|
||||
ConnectionFromWebContent* web_content_connection(i32 web_content_connection_id);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue