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

Ladybird+LibWebView: Move creation of the SQL client to LibWebView

This lets us remove the direct dependency from Ladybird to LibSQL.
This commit is contained in:
Timothy Flynn 2023-08-31 07:21:54 -04:00 committed by Andreas Kling
parent 5c5a00dd3a
commit e26ead0995
5 changed files with 18 additions and 8 deletions

View file

@ -46,9 +46,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
args_parser.parse(arguments); args_parser.parse(arguments);
auto sql_server_paths = TRY(get_paths_for_helper_process("SQLServer"sv)); auto sql_server_paths = TRY(get_paths_for_helper_process("SQLServer"sv));
auto sql_client = TRY(SQL::SQLClient::launch_server_and_create_client(move(sql_server_paths))); auto database = TRY(WebView::Database::create(move(sql_server_paths)));
auto database = TRY(WebView::Database::create(move(sql_client)));
auto cookie_jar = TRY(WebView::CookieJar::create(*database)); auto cookie_jar = TRY(WebView::CookieJar::create(*database));
Optional<URL> initial_url; Optional<URL> initial_url;

View file

@ -150,7 +150,7 @@ target_sources(ladybird PUBLIC FILE_SET ladybird TYPE HEADERS
BASE_DIRS ${SERENITY_SOURCE_DIR} BASE_DIRS ${SERENITY_SOURCE_DIR}
FILES ${LADYBIRD_HEADERS} FILES ${LADYBIRD_HEADERS}
) )
target_link_libraries(ladybird PRIVATE LibCore LibFileSystem LibGfx LibGUI LibIPC LibJS LibMain LibPublicSuffix LibWeb LibWebView LibSQL LibProtocol) target_link_libraries(ladybird PRIVATE LibCore LibFileSystem LibGfx LibGUI LibIPC LibJS LibMain LibPublicSuffix LibWeb LibWebView LibProtocol)
target_include_directories(ladybird PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(ladybird PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(ladybird PRIVATE ${SERENITY_SOURCE_DIR}/Userland/) target_include_directories(ladybird PRIVATE ${SERENITY_SOURCE_DIR}/Userland/)

View file

@ -18,7 +18,6 @@
#include <LibFileSystem/FileSystem.h> #include <LibFileSystem/FileSystem.h>
#include <LibGfx/Font/FontDatabase.h> #include <LibGfx/Font/FontDatabase.h>
#include <LibMain/Main.h> #include <LibMain/Main.h>
#include <LibSQL/SQLClient.h>
#include <LibWebView/CookieJar.h> #include <LibWebView/CookieJar.h>
#include <LibWebView/Database.h> #include <LibWebView/Database.h>
#include <QApplication> #include <QApplication>
@ -99,8 +98,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
if (enable_sql_database) { if (enable_sql_database) {
auto sql_server_paths = TRY(get_paths_for_helper_process("SQLServer"sv)); auto sql_server_paths = TRY(get_paths_for_helper_process("SQLServer"sv));
auto sql_client = TRY(SQL::SQLClient::launch_server_and_create_client(move(sql_server_paths))); database = TRY(WebView::Database::create(move(sql_server_paths)));
database = TRY(WebView::Database::create(move(sql_client)));
} }
auto cookie_jar = database ? TRY(WebView::CookieJar::create(*database)) : WebView::CookieJar::create(); auto cookie_jar = database ? TRY(WebView::CookieJar::create(*database)) : WebView::CookieJar::create();

View file

@ -17,6 +17,16 @@ ErrorOr<NonnullRefPtr<Database>> Database::create()
return create(move(sql_client)); return create(move(sql_client));
} }
#if !defined(AK_OS_SERENITY)
ErrorOr<NonnullRefPtr<Database>> Database::create(Vector<String> candidate_sql_server_paths)
{
auto sql_client = TRY(SQL::SQLClient::launch_server_and_create_client(move(candidate_sql_server_paths)));
return create(move(sql_client));
}
#endif
ErrorOr<NonnullRefPtr<Database>> Database::create(NonnullRefPtr<SQL::SQLClient> sql_client) ErrorOr<NonnullRefPtr<Database>> Database::create(NonnullRefPtr<SQL::SQLClient> sql_client)
{ {
auto connection_id = sql_client->connect(database_name); auto connection_id = sql_client->connect(database_name);

View file

@ -29,7 +29,9 @@ class Database : public RefCounted<Database> {
public: public:
static ErrorOr<NonnullRefPtr<Database>> create(); static ErrorOr<NonnullRefPtr<Database>> create();
static ErrorOr<NonnullRefPtr<Database>> create(NonnullRefPtr<SQL::SQLClient>); #if !defined(AK_OS_SERENITY)
static ErrorOr<NonnullRefPtr<Database>> create(Vector<String> candidate_sql_server_paths);
#endif
ErrorOr<SQL::StatementID> prepare_statement(StringView statement); ErrorOr<SQL::StatementID> prepare_statement(StringView statement);
@ -57,6 +59,8 @@ public:
} }
private: private:
static ErrorOr<NonnullRefPtr<Database>> create(NonnullRefPtr<SQL::SQLClient>);
struct ExecutionKey { struct ExecutionKey {
constexpr bool operator==(ExecutionKey const&) const = default; constexpr bool operator==(ExecutionKey const&) const = default;