mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 09:24:57 +00:00
LibWebView: Log the result of taking screenshots to Inspector's console
It probably isn't obvious that screenshots are saved to the user's Downloads folder, so add a console message to inform them.
This commit is contained in:
parent
e0450301ab
commit
42c0ac9352
5 changed files with 49 additions and 14 deletions
|
@ -204,6 +204,14 @@ details > :not(:first-child) {
|
|||
color: cyan;
|
||||
}
|
||||
|
||||
.console-message {
|
||||
color: lightskyblue;
|
||||
}
|
||||
|
||||
.console-warning {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.console-input {
|
||||
background-color: rgb(57, 57, 57);
|
||||
}
|
||||
|
@ -218,6 +226,14 @@ details > :not(:first-child) {
|
|||
color: blue;
|
||||
}
|
||||
|
||||
.console-message {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.console-warning {
|
||||
color: darkorange;
|
||||
}
|
||||
|
||||
.console-input {
|
||||
background-color: rgb(229, 229, 229);
|
||||
}
|
||||
|
|
|
@ -249,7 +249,10 @@ void InspectorClient::context_menu_screenshot_dom_node()
|
|||
{
|
||||
VERIFY(m_context_menu_data.has_value());
|
||||
|
||||
m_content_web_view.take_dom_node_screenshot(m_context_menu_data->dom_node_id).release_value_but_fixme_should_propagate_errors();
|
||||
if (auto result = m_content_web_view.take_dom_node_screenshot(m_context_menu_data->dom_node_id); result.is_error())
|
||||
append_console_warning(MUST(String::formatted("Warning: {}", result.error())));
|
||||
else
|
||||
append_console_message(MUST(String::formatted("Screenshot saved to: {}", result.value())));
|
||||
|
||||
m_context_menu_data.clear();
|
||||
}
|
||||
|
@ -645,13 +648,30 @@ void InspectorClient::handle_console_messages(i32 start_index, ReadonlySpan<Depr
|
|||
void InspectorClient::append_console_source(StringView source)
|
||||
{
|
||||
StringBuilder builder;
|
||||
|
||||
builder.append("<span class=\"console-prompt\">> </span>"sv);
|
||||
builder.append(MUST(JS::MarkupGenerator::html_from_source(source)));
|
||||
|
||||
append_console_output(builder.string_view());
|
||||
}
|
||||
|
||||
void InspectorClient::append_console_message(StringView message)
|
||||
{
|
||||
StringBuilder builder;
|
||||
builder.append("<span class=\"console-prompt\"># </span>"sv);
|
||||
builder.appendff("<span class=\"console-message\">{}</span>", message);
|
||||
|
||||
append_console_output(builder.string_view());
|
||||
}
|
||||
|
||||
void InspectorClient::append_console_warning(StringView warning)
|
||||
{
|
||||
StringBuilder builder;
|
||||
builder.append("<span class=\"console-prompt\"># </span>"sv);
|
||||
builder.appendff("<span class=\"console-warning\">{}</span>", warning);
|
||||
|
||||
append_console_output(builder.string_view());
|
||||
}
|
||||
|
||||
void InspectorClient::append_console_output(StringView html)
|
||||
{
|
||||
auto html_base64 = MUST(encode_base64(html.bytes()));
|
||||
|
|
|
@ -53,6 +53,8 @@ private:
|
|||
void handle_console_messages(i32 start_index, ReadonlySpan<DeprecatedString> message_types, ReadonlySpan<DeprecatedString> messages);
|
||||
|
||||
void append_console_source(StringView);
|
||||
void append_console_message(StringView);
|
||||
void append_console_warning(StringView);
|
||||
void append_console_output(StringView);
|
||||
void clear_console_output();
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
*/
|
||||
|
||||
#include <AK/Error.h>
|
||||
#include <AK/LexicalPath.h>
|
||||
#include <AK/String.h>
|
||||
#include <LibCore/DateTime.h>
|
||||
#include <LibCore/StandardPaths.h>
|
||||
|
@ -394,7 +393,7 @@ void ViewImplementation::handle_web_content_process_crash()
|
|||
load_html(builder.to_deprecated_string());
|
||||
}
|
||||
|
||||
static ErrorOr<void> save_screenshot(Gfx::ShareableBitmap const& bitmap)
|
||||
static ErrorOr<LexicalPath> save_screenshot(Gfx::ShareableBitmap const& bitmap)
|
||||
{
|
||||
if (!bitmap.is_valid())
|
||||
return Error::from_string_view("Failed to take a screenshot"sv);
|
||||
|
@ -407,10 +406,10 @@ static ErrorOr<void> save_screenshot(Gfx::ShareableBitmap const& bitmap)
|
|||
auto screenshot_file = TRY(Core::File::open(path.string(), Core::File::OpenMode::Write));
|
||||
TRY(screenshot_file->write_until_depleted(encoded));
|
||||
|
||||
return {};
|
||||
return path;
|
||||
}
|
||||
|
||||
ErrorOr<void> ViewImplementation::take_screenshot(ScreenshotType type)
|
||||
ErrorOr<LexicalPath> ViewImplementation::take_screenshot(ScreenshotType type)
|
||||
{
|
||||
Gfx::ShareableBitmap bitmap;
|
||||
|
||||
|
@ -424,16 +423,13 @@ ErrorOr<void> ViewImplementation::take_screenshot(ScreenshotType type)
|
|||
break;
|
||||
}
|
||||
|
||||
TRY(save_screenshot(bitmap));
|
||||
return {};
|
||||
return save_screenshot(bitmap);
|
||||
}
|
||||
|
||||
ErrorOr<void> ViewImplementation::take_dom_node_screenshot(i32 node_id)
|
||||
ErrorOr<LexicalPath> ViewImplementation::take_dom_node_screenshot(i32 node_id)
|
||||
{
|
||||
auto bitmap = client().take_dom_node_screenshot(node_id);
|
||||
TRY(save_screenshot(bitmap));
|
||||
|
||||
return {};
|
||||
return save_screenshot(bitmap);
|
||||
}
|
||||
|
||||
void ViewImplementation::set_user_style_sheet(String source)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include <AK/Forward.h>
|
||||
#include <AK/Function.h>
|
||||
#include <AK/LexicalPath.h>
|
||||
#include <AK/String.h>
|
||||
#include <LibGfx/Forward.h>
|
||||
#include <LibGfx/StandardCursor.h>
|
||||
|
@ -95,8 +96,8 @@ public:
|
|||
Visible,
|
||||
Full,
|
||||
};
|
||||
ErrorOr<void> take_screenshot(ScreenshotType);
|
||||
ErrorOr<void> take_dom_node_screenshot(i32);
|
||||
ErrorOr<LexicalPath> take_screenshot(ScreenshotType);
|
||||
ErrorOr<LexicalPath> take_dom_node_screenshot(i32);
|
||||
|
||||
void set_user_style_sheet(String source);
|
||||
// Load Native.css as the User style sheet, which attempts to make WebView content look as close to
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue