1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 00:37:45 +00:00

Ladybird+LibWeb+WebContent: Generalize video context menus for all media

The data we want to send out of the WebContent process is identical for
audio and video elements. Rather than just duplicating all of this for
audio, generalize the names used for this IPC for all media elements.

This also encapsulates that data into a struct. This makes adding new
fields to be sent much easier (such as an upcoming field for muting the
element).
This commit is contained in:
Timothy Flynn 2023-06-16 10:51:38 -04:00 committed by Andreas Kling
parent e81abbde7b
commit 14ca04de25
17 changed files with 198 additions and 147 deletions

View file

@ -151,19 +151,19 @@ void ViewImplementation::js_console_request_messages(i32 start_index)
client().async_js_console_request_messages(start_index);
}
void ViewImplementation::toggle_video_play_state()
void ViewImplementation::toggle_media_play_state()
{
client().async_toggle_video_play_state();
client().async_toggle_media_play_state();
}
void ViewImplementation::toggle_video_loop_state()
void ViewImplementation::toggle_media_loop_state()
{
client().async_toggle_video_loop_state();
client().async_toggle_media_loop_state();
}
void ViewImplementation::toggle_video_controls_state()
void ViewImplementation::toggle_media_controls_state()
{
client().async_toggle_video_controls_state();
client().async_toggle_media_controls_state();
}
void ViewImplementation::handle_resize()

View file

@ -74,9 +74,9 @@ public:
void js_console_input(DeprecatedString const& js_source);
void js_console_request_messages(i32 start_index);
void toggle_video_play_state();
void toggle_video_loop_state();
void toggle_video_controls_state();
void toggle_media_play_state();
void toggle_media_loop_state();
void toggle_media_controls_state();
enum class ScreenshotType {
Visible,
@ -90,7 +90,7 @@ public:
Function<void(Gfx::IntPoint screen_position)> on_context_menu_request;
Function<void(const AK::URL&, Gfx::IntPoint screen_position)> on_link_context_menu_request;
Function<void(const AK::URL&, Gfx::IntPoint screen_position, Gfx::ShareableBitmap const&)> on_image_context_menu_request;
Function<void(const AK::URL&, Gfx::IntPoint screen_position, bool, bool, bool)> on_video_context_menu_request;
Function<void(Gfx::IntPoint screen_position, Web::Page::MediaContextMenu const&)> on_media_context_menu_request;
Function<void(const AK::URL&)> on_link_hover;
Function<void()> on_link_unhover;
Function<void(const AK::URL&, DeprecatedString const& target, unsigned modifiers)> on_link_click;

View file

@ -176,10 +176,10 @@ void WebContentClient::did_request_image_context_menu(Gfx::IntPoint content_posi
m_view.on_image_context_menu_request(url, m_view.to_widget_position(content_position), bitmap);
}
void WebContentClient::did_request_video_context_menu(Gfx::IntPoint content_position, AK::URL const& url, DeprecatedString const&, unsigned, bool is_playing, bool has_user_agent_controls, bool is_looping)
void WebContentClient::did_request_media_context_menu(Gfx::IntPoint content_position, DeprecatedString const&, unsigned, Web::Page::MediaContextMenu const& menu)
{
if (m_view.on_video_context_menu_request)
m_view.on_video_context_menu_request(url, m_view.to_widget_position(content_position), is_playing, has_user_agent_controls, is_looping);
if (m_view.on_media_context_menu_request)
m_view.on_media_context_menu_request(m_view.to_widget_position(content_position), menu);
}
void WebContentClient::did_get_source(AK::URL const& url, DeprecatedString const& source)

View file

@ -52,7 +52,7 @@ private:
virtual void did_request_context_menu(Gfx::IntPoint) override;
virtual void did_request_link_context_menu(Gfx::IntPoint, AK::URL const&, DeprecatedString const&, unsigned) override;
virtual void did_request_image_context_menu(Gfx::IntPoint, AK::URL const&, DeprecatedString const&, unsigned, Gfx::ShareableBitmap const&) override;
virtual void did_request_video_context_menu(Gfx::IntPoint, AK::URL const&, DeprecatedString const&, unsigned, bool, bool, bool) override;
virtual void did_request_media_context_menu(Gfx::IntPoint, DeprecatedString const&, unsigned, Web::Page::MediaContextMenu const&) override;
virtual void did_get_source(AK::URL const&, DeprecatedString const&) override;
virtual void did_get_dom_tree(DeprecatedString const&) override;
virtual void did_get_dom_node_properties(i32 node_id, DeprecatedString const& computed_style, DeprecatedString const& resolved_style, DeprecatedString const& custom_properties, DeprecatedString const& node_box_sizing) override;