mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:17:36 +00:00
LibWeb+WebContent: Add IPC flow for Inspect DOM Tree
Add `inspect_dom_tree` to WebContentServer and 'did_get_dom_tree' to WebContentClient. These two async methods form a request & response for requesting a JSON representation of the Content's DOM tree.
This commit is contained in:
parent
4affe052b8
commit
cd6b9613c5
9 changed files with 31 additions and 0 deletions
|
@ -335,6 +335,12 @@ void OutOfProcessWebView::notify_server_did_get_source(const URL& url, const Str
|
||||||
on_get_source(url, source);
|
on_get_source(url, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OutOfProcessWebView::notify_server_did_get_dom_tree(const String& dom_tree)
|
||||||
|
{
|
||||||
|
if (on_get_dom_tree)
|
||||||
|
on_get_dom_tree(dom_tree);
|
||||||
|
}
|
||||||
|
|
||||||
void OutOfProcessWebView::notify_server_did_js_console_output(const String& method, const String& line)
|
void OutOfProcessWebView::notify_server_did_js_console_output(const String& method, const String& line)
|
||||||
{
|
{
|
||||||
if (on_js_console_output)
|
if (on_js_console_output)
|
||||||
|
@ -391,6 +397,11 @@ void OutOfProcessWebView::get_source()
|
||||||
client().async_get_source();
|
client().async_get_source();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OutOfProcessWebView::inspect_dom_tree()
|
||||||
|
{
|
||||||
|
client().async_inspect_dom_tree();
|
||||||
|
}
|
||||||
|
|
||||||
void OutOfProcessWebView::js_console_initialize()
|
void OutOfProcessWebView::js_console_initialize()
|
||||||
{
|
{
|
||||||
client().async_js_console_initialize();
|
client().async_js_console_initialize();
|
||||||
|
|
|
@ -31,6 +31,7 @@ public:
|
||||||
|
|
||||||
void debug_request(const String& request, const String& argument = {});
|
void debug_request(const String& request, const String& argument = {});
|
||||||
void get_source();
|
void get_source();
|
||||||
|
void inspect_dom_tree();
|
||||||
void js_console_initialize();
|
void js_console_initialize();
|
||||||
void js_console_input(const String& js_source);
|
void js_console_input(const String& js_source);
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@ public:
|
||||||
bool notify_server_did_request_confirm(Badge<WebContentClient>, const String& message);
|
bool notify_server_did_request_confirm(Badge<WebContentClient>, const String& message);
|
||||||
String notify_server_did_request_prompt(Badge<WebContentClient>, const String& message, const String& default_);
|
String notify_server_did_request_prompt(Badge<WebContentClient>, const String& message, const String& default_);
|
||||||
void notify_server_did_get_source(const URL& url, const String& source);
|
void notify_server_did_get_source(const URL& url, const String& source);
|
||||||
|
void notify_server_did_get_dom_tree(const String& dom_tree);
|
||||||
void notify_server_did_js_console_output(const String& method, const String& line);
|
void notify_server_did_js_console_output(const String& method, const String& line);
|
||||||
void notify_server_did_change_favicon(const Gfx::Bitmap& favicon);
|
void notify_server_did_change_favicon(const Gfx::Bitmap& favicon);
|
||||||
String notify_server_did_request_cookie(Badge<WebContentClient>, const URL& url, Cookie::Source source);
|
String notify_server_did_request_cookie(Badge<WebContentClient>, const URL& url, Cookie::Source source);
|
||||||
|
|
|
@ -136,6 +136,11 @@ void WebContentClient::did_get_source(URL const& url, String const& source)
|
||||||
m_view.notify_server_did_get_source(url, source);
|
m_view.notify_server_did_get_source(url, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebContentClient::did_get_dom_tree(const String& dom_tree)
|
||||||
|
{
|
||||||
|
m_view.notify_server_did_get_dom_tree(dom_tree);
|
||||||
|
}
|
||||||
|
|
||||||
void WebContentClient::did_js_console_output(String const& method, String const& line)
|
void WebContentClient::did_js_console_output(String const& method, String const& line)
|
||||||
{
|
{
|
||||||
m_view.notify_server_did_js_console_output(method, line);
|
m_view.notify_server_did_js_console_output(method, line);
|
||||||
|
|
|
@ -49,6 +49,7 @@ private:
|
||||||
virtual void did_request_link_context_menu(Gfx::IntPoint const&, URL const&, String const&, unsigned) override;
|
virtual void did_request_link_context_menu(Gfx::IntPoint const&, URL const&, String const&, unsigned) override;
|
||||||
virtual void did_request_image_context_menu(Gfx::IntPoint const&, URL const&, String const&, unsigned, Gfx::ShareableBitmap const&) override;
|
virtual void did_request_image_context_menu(Gfx::IntPoint const&, URL const&, String const&, unsigned, Gfx::ShareableBitmap const&) override;
|
||||||
virtual void did_get_source(URL const&, String const&) override;
|
virtual void did_get_source(URL const&, String const&) override;
|
||||||
|
virtual void did_get_dom_tree(String const&) override;
|
||||||
virtual void did_js_console_output(String const&, String const&) override;
|
virtual void did_js_console_output(String const&, String const&) override;
|
||||||
virtual void did_change_favicon(Gfx::ShareableBitmap const&) override;
|
virtual void did_change_favicon(Gfx::ShareableBitmap const&) override;
|
||||||
virtual void did_request_alert(String const&) override;
|
virtual void did_request_alert(String const&) override;
|
||||||
|
|
|
@ -27,6 +27,7 @@ public:
|
||||||
Function<void(const URL&)> on_url_drop;
|
Function<void(const URL&)> on_url_drop;
|
||||||
Function<void(DOM::Document*)> on_set_document;
|
Function<void(DOM::Document*)> on_set_document;
|
||||||
Function<void(const URL&, const String&)> on_get_source;
|
Function<void(const URL&, const String&)> on_get_source;
|
||||||
|
Function<void(const String&)> on_get_dom_tree;
|
||||||
Function<void(const String& method, const String& line)> on_js_console_output;
|
Function<void(const String& method, const String& line)> on_js_console_output;
|
||||||
Function<String(const URL& url, Cookie::Source source)> on_get_cookie;
|
Function<String(const URL& url, Cookie::Source source)> on_get_cookie;
|
||||||
Function<void(const URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)> on_set_cookie;
|
Function<void(const URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)> on_set_cookie;
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <AK/Badge.h>
|
#include <AK/Badge.h>
|
||||||
#include <AK/Debug.h>
|
#include <AK/Debug.h>
|
||||||
|
#include <AK/JsonObject.h>
|
||||||
#include <LibGfx/Bitmap.h>
|
#include <LibGfx/Bitmap.h>
|
||||||
#include <LibGfx/FontDatabase.h>
|
#include <LibGfx/FontDatabase.h>
|
||||||
#include <LibGfx/SystemTheme.h>
|
#include <LibGfx/SystemTheme.h>
|
||||||
|
@ -216,6 +217,13 @@ void ClientConnection::get_source()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientConnection::inspect_dom_tree()
|
||||||
|
{
|
||||||
|
if (auto* doc = page().top_level_browsing_context().document()) {
|
||||||
|
async_did_get_dom_tree(doc->dump_dom_tree_as_json());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ClientConnection::js_console_initialize()
|
void ClientConnection::js_console_initialize()
|
||||||
{
|
{
|
||||||
if (auto* document = page().top_level_browsing_context().document()) {
|
if (auto* document = page().top_level_browsing_context().document()) {
|
||||||
|
|
|
@ -48,6 +48,7 @@ private:
|
||||||
virtual void remove_backing_store(i32) override;
|
virtual void remove_backing_store(i32) override;
|
||||||
virtual void debug_request(String const&, String const&) override;
|
virtual void debug_request(String const&, String const&) override;
|
||||||
virtual void get_source() override;
|
virtual void get_source() override;
|
||||||
|
virtual void inspect_dom_tree() override;
|
||||||
virtual void js_console_initialize() override;
|
virtual void js_console_initialize() override;
|
||||||
virtual void js_console_input(String const&) override;
|
virtual void js_console_input(String const&) override;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ endpoint WebContentClient
|
||||||
did_request_confirm(String message) => (bool result)
|
did_request_confirm(String message) => (bool result)
|
||||||
did_request_prompt(String message, String default_) => (String response)
|
did_request_prompt(String message, String default_) => (String response)
|
||||||
did_get_source(URL url, String source) =|
|
did_get_source(URL url, String source) =|
|
||||||
|
did_get_dom_tree(String dom_tree) =|
|
||||||
did_js_console_output(String method, String line) =|
|
did_js_console_output(String method, String line) =|
|
||||||
did_change_favicon(Gfx::ShareableBitmap favicon) =|
|
did_change_favicon(Gfx::ShareableBitmap favicon) =|
|
||||||
did_request_cookie(URL url, u8 source) => (String cookie)
|
did_request_cookie(URL url, u8 source) => (String cookie)
|
||||||
|
|
|
@ -22,6 +22,7 @@ endpoint WebContentServer
|
||||||
|
|
||||||
debug_request(String request, String argument) =|
|
debug_request(String request, String argument) =|
|
||||||
get_source() =|
|
get_source() =|
|
||||||
|
inspect_dom_tree() =|
|
||||||
js_console_initialize() =|
|
js_console_initialize() =|
|
||||||
js_console_input(String js_source) =|
|
js_console_input(String js_source) =|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue