1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:38:10 +00:00

Browser+Ladybird+LibWeb: Port content filters to String

This commit is contained in:
Timothy Flynn 2023-04-21 07:54:56 -04:00 committed by Andreas Kling
parent 76ae60da15
commit 5089766af6
11 changed files with 23 additions and 22 deletions

View file

@ -126,14 +126,15 @@ static ErrorOr<void> load_content_filters()
auto ad_filter_list = TRY(Core::BufferedFile::create(move(file))); auto ad_filter_list = TRY(Core::BufferedFile::create(move(file)));
auto buffer = TRY(ByteBuffer::create_uninitialized(4096)); auto buffer = TRY(ByteBuffer::create_uninitialized(4096));
Vector<DeprecatedString> patterns; Vector<String> patterns;
while (TRY(ad_filter_list->can_read_line())) { while (TRY(ad_filter_list->can_read_line())) {
auto line = TRY(ad_filter_list->read_line(buffer)); auto line = TRY(ad_filter_list->read_line(buffer));
if (line.is_empty()) if (line.is_empty())
continue; continue;
TRY(patterns.try_append(line)); auto pattern = TRY(String::from_utf8(line));
TRY(patterns.try_append(move(pattern)));
} }
auto& content_filter = Web::ContentFilter::the(); auto& content_filter = Web::ContentFilter::the();

View file

@ -15,7 +15,7 @@ namespace Browser {
extern DeprecatedString g_home_url; extern DeprecatedString g_home_url;
extern DeprecatedString g_new_tab_url; extern DeprecatedString g_new_tab_url;
extern DeprecatedString g_search_engine; extern DeprecatedString g_search_engine;
extern Vector<DeprecatedString> g_content_filters; extern Vector<String> g_content_filters;
extern bool g_content_filters_enabled; extern bool g_content_filters_enabled;
extern Vector<String> g_autoplay_allowlist; extern Vector<String> g_autoplay_allowlist;
extern bool g_autoplay_allowed_on_all_websites; extern bool g_autoplay_allowed_on_all_websites;

View file

@ -126,11 +126,7 @@ Tab::Tab(BrowserWindow& window)
auto preferred_color_scheme = Web::CSS::preferred_color_scheme_from_string(Config::read_string("Browser"sv, "Preferences"sv, "ColorScheme"sv, "auto"sv)); auto preferred_color_scheme = Web::CSS::preferred_color_scheme_from_string(Config::read_string("Browser"sv, "Preferences"sv, "ColorScheme"sv, "auto"sv));
m_web_content_view->set_preferred_color_scheme(preferred_color_scheme); m_web_content_view->set_preferred_color_scheme(preferred_color_scheme);
if (g_content_filters_enabled) content_filters_changed();
m_web_content_view->set_content_filters(g_content_filters);
else
m_web_content_view->set_content_filters({});
autoplay_allowlist_changed(); autoplay_allowlist_changed();
m_web_content_view->set_proxy_mappings(g_proxies, g_proxy_mappings); m_web_content_view->set_proxy_mappings(g_proxies, g_proxy_mappings);

View file

@ -34,7 +34,7 @@ namespace Browser {
DeprecatedString g_search_engine; DeprecatedString g_search_engine;
DeprecatedString g_home_url; DeprecatedString g_home_url;
DeprecatedString g_new_tab_url; DeprecatedString g_new_tab_url;
Vector<DeprecatedString> g_content_filters; Vector<String> g_content_filters;
bool g_content_filters_enabled { true }; bool g_content_filters_enabled { true };
Vector<String> g_autoplay_allowlist; Vector<String> g_autoplay_allowlist;
bool g_autoplay_allowed_on_all_websites { false }; bool g_autoplay_allowed_on_all_websites { false };
@ -47,7 +47,7 @@ DeprecatedString g_webdriver_content_ipc_path;
static ErrorOr<void> load_content_filters() static ErrorOr<void> load_content_filters()
{ {
auto file = TRY(Core::File::open(DeprecatedString::formatted("{}/BrowserContentFilters.txt", Core::StandardPaths::config_directory()), Core::File::OpenMode::Read)); auto file = TRY(Core::File::open(TRY(String::formatted("{}/BrowserContentFilters.txt", Core::StandardPaths::config_directory())), Core::File::OpenMode::Read));
auto ad_filter_list = TRY(Core::BufferedFile::create(move(file))); auto ad_filter_list = TRY(Core::BufferedFile::create(move(file)));
auto buffer = TRY(ByteBuffer::create_uninitialized(4096)); auto buffer = TRY(ByteBuffer::create_uninitialized(4096));
@ -55,8 +55,11 @@ static ErrorOr<void> load_content_filters()
while (TRY(ad_filter_list->can_read_line())) { while (TRY(ad_filter_list->can_read_line())) {
auto line = TRY(ad_filter_list->read_line(buffer)); auto line = TRY(ad_filter_list->read_line(buffer));
if (!line.is_empty()) if (line.is_empty())
Browser::g_content_filters.append(line); continue;
auto pattern = TRY(String::from_utf8(line));
TRY(Browser::g_content_filters.try_append(move(pattern)));
} }
return {}; return {};

View file

@ -33,7 +33,7 @@ bool ContentFilter::is_filtered(const AK::URL& url) const
return false; return false;
} }
ErrorOr<void> ContentFilter::set_patterns(ReadonlySpan<DeprecatedString> patterns) ErrorOr<void> ContentFilter::set_patterns(ReadonlySpan<String> patterns)
{ {
m_patterns.clear_with_capacity(); m_patterns.clear_with_capacity();
@ -46,7 +46,7 @@ ErrorOr<void> ContentFilter::set_patterns(ReadonlySpan<DeprecatedString> pattern
if (!pattern.ends_with('*')) if (!pattern.ends_with('*'))
TRY(builder.try_append('*')); TRY(builder.try_append('*'));
TRY(m_patterns.try_empend(builder.to_deprecated_string())); TRY(m_patterns.try_empend(TRY(builder.to_string())));
} }
return {}; return {};

View file

@ -6,6 +6,7 @@
#pragma once #pragma once
#include <AK/String.h>
#include <AK/URL.h> #include <AK/URL.h>
#include <AK/Vector.h> #include <AK/Vector.h>
@ -16,14 +17,14 @@ public:
static ContentFilter& the(); static ContentFilter& the();
bool is_filtered(const AK::URL&) const; bool is_filtered(const AK::URL&) const;
ErrorOr<void> set_patterns(ReadonlySpan<DeprecatedString>); ErrorOr<void> set_patterns(ReadonlySpan<String>);
private: private:
ContentFilter(); ContentFilter();
~ContentFilter(); ~ContentFilter();
struct Pattern { struct Pattern {
DeprecatedString text; String text;
}; };
Vector<Pattern> m_patterns; Vector<Pattern> m_patterns;
}; };

View file

@ -595,9 +595,9 @@ OrderedHashMap<DeprecatedString, DeprecatedString> OutOfProcessWebView::get_sess
return client().get_session_storage_entries(); return client().get_session_storage_entries();
} }
void OutOfProcessWebView::set_content_filters(Vector<DeprecatedString> filters) void OutOfProcessWebView::set_content_filters(Vector<String> filters)
{ {
client().async_set_content_filters(filters); client().async_set_content_filters(move(filters));
} }
void OutOfProcessWebView::set_autoplay_allowed_on_all_websites() void OutOfProcessWebView::set_autoplay_allowed_on_all_websites()

View file

@ -42,7 +42,7 @@ public:
OrderedHashMap<DeprecatedString, DeprecatedString> get_local_storage_entries(); OrderedHashMap<DeprecatedString, DeprecatedString> get_local_storage_entries();
OrderedHashMap<DeprecatedString, DeprecatedString> get_session_storage_entries(); OrderedHashMap<DeprecatedString, DeprecatedString> get_session_storage_entries();
void set_content_filters(Vector<DeprecatedString>); void set_content_filters(Vector<String>);
void set_autoplay_allowed_on_all_websites(); void set_autoplay_allowed_on_all_websites();
void set_autoplay_allowlist(Vector<String>); void set_autoplay_allowlist(Vector<String>);
void set_proxy_mappings(Vector<DeprecatedString> proxies, HashMap<DeprecatedString, size_t> mappings); void set_proxy_mappings(Vector<DeprecatedString> proxies, HashMap<DeprecatedString, size_t> mappings);

View file

@ -634,7 +634,7 @@ Messages::WebContentServer::DumpLayoutTreeResponse ConnectionFromClient::dump_la
return builder.to_deprecated_string(); return builder.to_deprecated_string();
} }
void ConnectionFromClient::set_content_filters(Vector<DeprecatedString> const& filters) void ConnectionFromClient::set_content_filters(Vector<String> const& filters)
{ {
Web::ContentFilter::the().set_patterns(filters).release_value_but_fixme_should_propagate_errors(); Web::ContentFilter::the().set_patterns(filters).release_value_but_fixme_should_propagate_errors();
} }

View file

@ -74,7 +74,7 @@ private:
virtual void inspect_accessibility_tree() override; virtual void inspect_accessibility_tree() override;
virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override; virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override;
virtual Messages::WebContentServer::DumpLayoutTreeResponse dump_layout_tree() override; virtual Messages::WebContentServer::DumpLayoutTreeResponse dump_layout_tree() override;
virtual void set_content_filters(Vector<DeprecatedString> const&) override; virtual void set_content_filters(Vector<String> const&) override;
virtual void set_autoplay_allowed_on_all_websites() override; virtual void set_autoplay_allowed_on_all_websites() override;
virtual void set_autoplay_allowlist(Vector<String> const& allowlist) override; virtual void set_autoplay_allowlist(Vector<String> const& allowlist) override;
virtual void set_proxy_mappings(Vector<DeprecatedString> const&, HashMap<DeprecatedString, size_t> const&) override; virtual void set_proxy_mappings(Vector<DeprecatedString> const&, HashMap<DeprecatedString, size_t> const&) override;

View file

@ -54,7 +54,7 @@ endpoint WebContentServer
get_selected_text() => (DeprecatedString selection) get_selected_text() => (DeprecatedString selection)
select_all() =| select_all() =|
set_content_filters(Vector<DeprecatedString> filters) =| set_content_filters(Vector<String> filters) =|
set_autoplay_allowed_on_all_websites() =| set_autoplay_allowed_on_all_websites() =|
set_autoplay_allowlist(Vector<String> allowlist) =| set_autoplay_allowlist(Vector<String> allowlist) =|
set_proxy_mappings(Vector<DeprecatedString> proxies, HashMap<DeprecatedString,size_t> mappings) =| set_proxy_mappings(Vector<DeprecatedString> proxies, HashMap<DeprecatedString,size_t> mappings) =|