From 391beef70725b52117c4bdcc064073af5abcd28f Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Sat, 5 Aug 2023 10:42:26 -0600 Subject: [PATCH] Ladybird: Move Qt-specific classes and functions to a Qt subdirectory This will help a lot with developing chromes for different UI frameworks where we can see which helper classes and processes are really using Qt vs just using it to get at helper data. As a bonus, remove Qt dependency from WebDriver. --- Ladybird/CMakeLists.txt | 33 +++++------ Ladybird/{ => Qt}/AndroidPlatform.cpp | 0 Ladybird/{ => Qt}/AudioCodecPluginQt.cpp | 0 Ladybird/{ => Qt}/AudioCodecPluginQt.h | 0 Ladybird/{ => Qt}/AudioThread.cpp | 0 Ladybird/{ => Qt}/AudioThread.h | 0 Ladybird/{ => Qt}/BrowserWindow.cpp | 5 +- Ladybird/{ => Qt}/BrowserWindow.h | 0 Ladybird/{ => Qt}/ConsoleWidget.cpp | 2 +- Ladybird/{ => Qt}/ConsoleWidget.h | 0 .../{ => Qt}/EventLoopImplementationQt.cpp | 0 Ladybird/{ => Qt}/EventLoopImplementationQt.h | 0 .../EventLoopImplementationQtEventTarget.cpp | 0 .../EventLoopImplementationQtEventTarget.h | 0 Ladybird/{ => Qt}/InspectorWidget.cpp | 0 Ladybird/{ => Qt}/InspectorWidget.h | 0 Ladybird/{ => Qt}/LocationEdit.cpp | 2 +- Ladybird/{ => Qt}/LocationEdit.h | 0 Ladybird/{ => Qt}/ModelTranslator.cpp | 2 +- Ladybird/{ => Qt}/ModelTranslator.h | 0 Ladybird/{ => Qt}/RequestManagerQt.cpp | 0 Ladybird/{ => Qt}/RequestManagerQt.h | 0 Ladybird/{ => Qt}/Settings.cpp | 3 +- Ladybird/{ => Qt}/Settings.h | 0 Ladybird/{ => Qt}/SettingsDialog.cpp | 0 Ladybird/{ => Qt}/SettingsDialog.h | 0 Ladybird/Qt/StringUtils.cpp | 28 ++++++++++ Ladybird/Qt/StringUtils.h | 17 ++++++ Ladybird/{ => Qt}/TVGIconEngine.cpp | 2 +- Ladybird/{ => Qt}/TVGIconEngine.h | 0 Ladybird/{ => Qt}/Tab.cpp | 2 +- Ladybird/{ => Qt}/Tab.h | 0 Ladybird/{ => Qt}/WebContentView.cpp | 5 +- Ladybird/{ => Qt}/WebContentView.h | 2 +- .../{ => Qt}/WebSocketClientManagerQt.cpp | 0 Ladybird/{ => Qt}/WebSocketClientManagerQt.h | 0 Ladybird/{ => Qt}/WebSocketImplQt.cpp | 2 +- Ladybird/{ => Qt}/WebSocketImplQt.h | 0 Ladybird/{ => Qt}/WebSocketQt.cpp | 0 Ladybird/{ => Qt}/WebSocketQt.h | 0 Ladybird/Qt/ladybird.qrc | 8 +++ Ladybird/{ => Qt}/main.cpp | 4 +- Ladybird/Utilities.cpp | 31 +++------- Ladybird/Utilities.h | 7 +-- Ladybird/WebContent/CMakeLists.txt | 17 +++--- Ladybird/WebContent/main.cpp | 18 +++--- Ladybird/WebDriver/CMakeLists.txt | 4 +- Ladybird/WebDriver/main.cpp | 8 +-- Ladybird/ladybird.qrc | 8 --- Meta/gn/secondary/Ladybird/BUILD.gn | 56 +++++++++---------- .../gn/secondary/Ladybird/WebContent/BUILD.gn | 33 +++++------ Meta/gn/secondary/Ladybird/WebDriver/BUILD.gn | 14 +---- Userland/Utilities/headless-browser.cpp | 4 -- 53 files changed, 160 insertions(+), 157 deletions(-) rename Ladybird/{ => Qt}/AndroidPlatform.cpp (100%) rename Ladybird/{ => Qt}/AudioCodecPluginQt.cpp (100%) rename Ladybird/{ => Qt}/AudioCodecPluginQt.h (100%) rename Ladybird/{ => Qt}/AudioThread.cpp (100%) rename Ladybird/{ => Qt}/AudioThread.h (100%) rename Ladybird/{ => Qt}/BrowserWindow.cpp (99%) rename Ladybird/{ => Qt}/BrowserWindow.h (100%) rename Ladybird/{ => Qt}/ConsoleWidget.cpp (99%) rename Ladybird/{ => Qt}/ConsoleWidget.h (100%) rename Ladybird/{ => Qt}/EventLoopImplementationQt.cpp (100%) rename Ladybird/{ => Qt}/EventLoopImplementationQt.h (100%) rename Ladybird/{ => Qt}/EventLoopImplementationQtEventTarget.cpp (100%) rename Ladybird/{ => Qt}/EventLoopImplementationQtEventTarget.h (100%) rename Ladybird/{ => Qt}/InspectorWidget.cpp (100%) rename Ladybird/{ => Qt}/InspectorWidget.h (100%) rename Ladybird/{ => Qt}/LocationEdit.cpp (99%) rename Ladybird/{ => Qt}/LocationEdit.h (100%) rename Ladybird/{ => Qt}/ModelTranslator.cpp (98%) rename Ladybird/{ => Qt}/ModelTranslator.h (100%) rename Ladybird/{ => Qt}/RequestManagerQt.cpp (100%) rename Ladybird/{ => Qt}/RequestManagerQt.h (100%) rename Ladybird/{ => Qt}/Settings.cpp (95%) rename Ladybird/{ => Qt}/Settings.h (100%) rename Ladybird/{ => Qt}/SettingsDialog.cpp (100%) rename Ladybird/{ => Qt}/SettingsDialog.h (100%) create mode 100644 Ladybird/Qt/StringUtils.cpp create mode 100644 Ladybird/Qt/StringUtils.h rename Ladybird/{ => Qt}/TVGIconEngine.cpp (98%) rename Ladybird/{ => Qt}/TVGIconEngine.h (100%) rename Ladybird/{ => Qt}/Tab.cpp (99%) rename Ladybird/{ => Qt}/Tab.h (100%) rename Ladybird/{ => Qt}/WebContentView.cpp (99%) rename Ladybird/{ => Qt}/WebContentView.h (99%) rename Ladybird/{ => Qt}/WebSocketClientManagerQt.cpp (100%) rename Ladybird/{ => Qt}/WebSocketClientManagerQt.h (100%) rename Ladybird/{ => Qt}/WebSocketImplQt.cpp (99%) rename Ladybird/{ => Qt}/WebSocketImplQt.h (100%) rename Ladybird/{ => Qt}/WebSocketQt.cpp (100%) rename Ladybird/{ => Qt}/WebSocketQt.h (100%) create mode 100644 Ladybird/Qt/ladybird.qrc rename Ladybird/{ => Qt}/main.cpp (98%) delete mode 100644 Ladybird/ladybird.qrc diff --git a/Ladybird/CMakeLists.txt b/Ladybird/CMakeLists.txt index 6ee7c8fdfce..8361a9e1e6d 100644 --- a/Ladybird/CMakeLists.txt +++ b/Ladybird/CMakeLists.txt @@ -81,22 +81,23 @@ set(SOURCES ${BROWSER_SOURCE_DIR}/CookieJar.cpp ${BROWSER_SOURCE_DIR}/Database.cpp ${BROWSER_SOURCE_DIR}/History.cpp - BrowserWindow.cpp - ConsoleWidget.cpp - EventLoopImplementationQt.cpp - EventLoopImplementationQtEventTarget.cpp HelperProcess.cpp - InspectorWidget.cpp - LocationEdit.cpp - ModelTranslator.cpp - Settings.cpp - SettingsDialog.cpp - Tab.cpp - TVGIconEngine.cpp Utilities.cpp - WebContentView.cpp - ladybird.qrc - main.cpp + Qt/BrowserWindow.cpp + Qt/ConsoleWidget.cpp + Qt/EventLoopImplementationQt.cpp + Qt/EventLoopImplementationQtEventTarget.cpp + Qt/InspectorWidget.cpp + Qt/LocationEdit.cpp + Qt/ModelTranslator.cpp + Qt/Settings.cpp + Qt/SettingsDialog.cpp + Qt/Tab.cpp + Qt/TVGIconEngine.cpp + Qt/StringUtils.cpp + Qt/WebContentView.cpp + Qt/ladybird.qrc + Qt/main.cpp ) qt_add_executable(ladybird ${SOURCES}) @@ -107,14 +108,14 @@ target_include_directories(ladybird PRIVATE ${SERENITY_SOURCE_DIR}/Userland/) target_include_directories(ladybird PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Applications/) target_include_directories(ladybird PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services/) -qt_add_executable(headless-browser +add_executable(headless-browser ${SERENITY_SOURCE_DIR}/Userland/Utilities/headless-browser.cpp ${SERENITY_SOURCE_DIR}/Userland/Services/WebContent/WebDriverConnection.cpp HelperProcess.cpp Utilities.cpp) target_include_directories(headless-browser PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) -target_link_libraries(headless-browser PRIVATE Qt::Core LibWeb LibWebView LibWebSocket LibCrypto LibFileSystem LibGemini LibHTTP LibJS LibGfx LibMain LibTLS LibIPC LibDiff LibProtocol) +target_link_libraries(headless-browser PRIVATE LibWeb LibWebView LibWebSocket LibCrypto LibFileSystem LibGemini LibHTTP LibJS LibGfx LibMain LibTLS LibIPC LibDiff LibProtocol) set_target_properties(ladybird PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER org.SerenityOS.Ladybird diff --git a/Ladybird/AndroidPlatform.cpp b/Ladybird/Qt/AndroidPlatform.cpp similarity index 100% rename from Ladybird/AndroidPlatform.cpp rename to Ladybird/Qt/AndroidPlatform.cpp diff --git a/Ladybird/AudioCodecPluginQt.cpp b/Ladybird/Qt/AudioCodecPluginQt.cpp similarity index 100% rename from Ladybird/AudioCodecPluginQt.cpp rename to Ladybird/Qt/AudioCodecPluginQt.cpp diff --git a/Ladybird/AudioCodecPluginQt.h b/Ladybird/Qt/AudioCodecPluginQt.h similarity index 100% rename from Ladybird/AudioCodecPluginQt.h rename to Ladybird/Qt/AudioCodecPluginQt.h diff --git a/Ladybird/AudioThread.cpp b/Ladybird/Qt/AudioThread.cpp similarity index 100% rename from Ladybird/AudioThread.cpp rename to Ladybird/Qt/AudioThread.cpp diff --git a/Ladybird/AudioThread.h b/Ladybird/Qt/AudioThread.h similarity index 100% rename from Ladybird/AudioThread.h rename to Ladybird/Qt/AudioThread.h diff --git a/Ladybird/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp similarity index 99% rename from Ladybird/BrowserWindow.cpp rename to Ladybird/Qt/BrowserWindow.cpp index 8ec06405a57..df0d8fef571 100644 --- a/Ladybird/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -11,10 +11,11 @@ #include "ConsoleWidget.h" #include "Settings.h" #include "SettingsDialog.h" -#include "Utilities.h" +#include "StringUtils.h" #include "WebContentView.h" #include #include +#include #include #include #include @@ -25,8 +26,6 @@ #include #include -extern DeprecatedString s_serenity_resource_root; - namespace Ladybird { extern Settings* s_settings; diff --git a/Ladybird/BrowserWindow.h b/Ladybird/Qt/BrowserWindow.h similarity index 100% rename from Ladybird/BrowserWindow.h rename to Ladybird/Qt/BrowserWindow.h diff --git a/Ladybird/ConsoleWidget.cpp b/Ladybird/Qt/ConsoleWidget.cpp similarity index 99% rename from Ladybird/ConsoleWidget.cpp rename to Ladybird/Qt/ConsoleWidget.cpp index 01cf82376ae..4867034fe7f 100644 --- a/Ladybird/ConsoleWidget.cpp +++ b/Ladybird/Qt/ConsoleWidget.cpp @@ -8,7 +8,7 @@ */ #include "ConsoleWidget.h" -#include "Utilities.h" +#include "StringUtils.h" #include "WebContentView.h" #include #include diff --git a/Ladybird/ConsoleWidget.h b/Ladybird/Qt/ConsoleWidget.h similarity index 100% rename from Ladybird/ConsoleWidget.h rename to Ladybird/Qt/ConsoleWidget.h diff --git a/Ladybird/EventLoopImplementationQt.cpp b/Ladybird/Qt/EventLoopImplementationQt.cpp similarity index 100% rename from Ladybird/EventLoopImplementationQt.cpp rename to Ladybird/Qt/EventLoopImplementationQt.cpp diff --git a/Ladybird/EventLoopImplementationQt.h b/Ladybird/Qt/EventLoopImplementationQt.h similarity index 100% rename from Ladybird/EventLoopImplementationQt.h rename to Ladybird/Qt/EventLoopImplementationQt.h diff --git a/Ladybird/EventLoopImplementationQtEventTarget.cpp b/Ladybird/Qt/EventLoopImplementationQtEventTarget.cpp similarity index 100% rename from Ladybird/EventLoopImplementationQtEventTarget.cpp rename to Ladybird/Qt/EventLoopImplementationQtEventTarget.cpp diff --git a/Ladybird/EventLoopImplementationQtEventTarget.h b/Ladybird/Qt/EventLoopImplementationQtEventTarget.h similarity index 100% rename from Ladybird/EventLoopImplementationQtEventTarget.h rename to Ladybird/Qt/EventLoopImplementationQtEventTarget.h diff --git a/Ladybird/InspectorWidget.cpp b/Ladybird/Qt/InspectorWidget.cpp similarity index 100% rename from Ladybird/InspectorWidget.cpp rename to Ladybird/Qt/InspectorWidget.cpp diff --git a/Ladybird/InspectorWidget.h b/Ladybird/Qt/InspectorWidget.h similarity index 100% rename from Ladybird/InspectorWidget.h rename to Ladybird/Qt/InspectorWidget.h diff --git a/Ladybird/LocationEdit.cpp b/Ladybird/Qt/LocationEdit.cpp similarity index 99% rename from Ladybird/LocationEdit.cpp rename to Ladybird/Qt/LocationEdit.cpp index eb7bae563b6..ea83a44836f 100644 --- a/Ladybird/LocationEdit.cpp +++ b/Ladybird/Qt/LocationEdit.cpp @@ -5,7 +5,7 @@ */ #include "LocationEdit.h" -#include "Utilities.h" +#include "StringUtils.h" #include #include #include diff --git a/Ladybird/LocationEdit.h b/Ladybird/Qt/LocationEdit.h similarity index 100% rename from Ladybird/LocationEdit.h rename to Ladybird/Qt/LocationEdit.h diff --git a/Ladybird/ModelTranslator.cpp b/Ladybird/Qt/ModelTranslator.cpp similarity index 98% rename from Ladybird/ModelTranslator.cpp rename to Ladybird/Qt/ModelTranslator.cpp index 3d0f663c5e4..293e8cd1d52 100644 --- a/Ladybird/ModelTranslator.cpp +++ b/Ladybird/Qt/ModelTranslator.cpp @@ -5,7 +5,7 @@ */ #include "ModelTranslator.h" -#include "Utilities.h" +#include "StringUtils.h" #include namespace Ladybird { diff --git a/Ladybird/ModelTranslator.h b/Ladybird/Qt/ModelTranslator.h similarity index 100% rename from Ladybird/ModelTranslator.h rename to Ladybird/Qt/ModelTranslator.h diff --git a/Ladybird/RequestManagerQt.cpp b/Ladybird/Qt/RequestManagerQt.cpp similarity index 100% rename from Ladybird/RequestManagerQt.cpp rename to Ladybird/Qt/RequestManagerQt.cpp diff --git a/Ladybird/RequestManagerQt.h b/Ladybird/Qt/RequestManagerQt.h similarity index 100% rename from Ladybird/RequestManagerQt.h rename to Ladybird/Qt/RequestManagerQt.h diff --git a/Ladybird/Settings.cpp b/Ladybird/Qt/Settings.cpp similarity index 95% rename from Ladybird/Settings.cpp rename to Ladybird/Qt/Settings.cpp index 4a8a7ec3e7e..33aa802cb39 100644 --- a/Ladybird/Settings.cpp +++ b/Ladybird/Qt/Settings.cpp @@ -5,9 +5,10 @@ */ #include "Settings.h" -#include "Utilities.h" +#include "StringUtils.h" #include #include +#include namespace Ladybird { diff --git a/Ladybird/Settings.h b/Ladybird/Qt/Settings.h similarity index 100% rename from Ladybird/Settings.h rename to Ladybird/Qt/Settings.h diff --git a/Ladybird/SettingsDialog.cpp b/Ladybird/Qt/SettingsDialog.cpp similarity index 100% rename from Ladybird/SettingsDialog.cpp rename to Ladybird/Qt/SettingsDialog.cpp diff --git a/Ladybird/SettingsDialog.h b/Ladybird/Qt/SettingsDialog.h similarity index 100% rename from Ladybird/SettingsDialog.h rename to Ladybird/Qt/SettingsDialog.h diff --git a/Ladybird/Qt/StringUtils.cpp b/Ladybird/Qt/StringUtils.cpp new file mode 100644 index 00000000000..f7e44d7b52f --- /dev/null +++ b/Ladybird/Qt/StringUtils.cpp @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "StringUtils.h" + +AK::DeprecatedString ak_deprecated_string_from_qstring(QString const& qstring) +{ + return AK::DeprecatedString(qstring.toUtf8().data()); +} + +ErrorOr ak_string_from_qstring(QString const& qstring) +{ + return String::from_utf8(StringView(qstring.toUtf8().data(), qstring.size())); +} + +QString qstring_from_ak_deprecated_string(AK::DeprecatedString const& ak_deprecated_string) +{ + return QString::fromUtf8(ak_deprecated_string.characters(), ak_deprecated_string.length()); +} + +QString qstring_from_ak_string(String const& ak_string) +{ + auto view = ak_string.bytes_as_string_view(); + return QString::fromUtf8(view.characters_without_null_termination(), view.length()); +} diff --git a/Ladybird/Qt/StringUtils.h b/Ladybird/Qt/StringUtils.h new file mode 100644 index 00000000000..415ccdb84cf --- /dev/null +++ b/Ladybird/Qt/StringUtils.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2022, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include +#include + +AK::DeprecatedString ak_deprecated_string_from_qstring(QString const&); +ErrorOr ak_string_from_qstring(QString const&); +QString qstring_from_ak_deprecated_string(AK::DeprecatedString const&); +QString qstring_from_ak_string(String const&); diff --git a/Ladybird/TVGIconEngine.cpp b/Ladybird/Qt/TVGIconEngine.cpp similarity index 98% rename from Ladybird/TVGIconEngine.cpp rename to Ladybird/Qt/TVGIconEngine.cpp index 0ec4aac205c..d13bbbcc87d 100644 --- a/Ladybird/TVGIconEngine.cpp +++ b/Ladybird/Qt/TVGIconEngine.cpp @@ -5,7 +5,7 @@ */ #include "TVGIconEngine.h" -#include "Utilities.h" +#include "StringUtils.h" #include #include #include diff --git a/Ladybird/TVGIconEngine.h b/Ladybird/Qt/TVGIconEngine.h similarity index 100% rename from Ladybird/TVGIconEngine.h rename to Ladybird/Qt/TVGIconEngine.h diff --git a/Ladybird/Tab.cpp b/Ladybird/Qt/Tab.cpp similarity index 99% rename from Ladybird/Tab.cpp rename to Ladybird/Qt/Tab.cpp index d5dcf77500e..18fb6d44a5c 100644 --- a/Ladybird/Tab.cpp +++ b/Ladybird/Qt/Tab.cpp @@ -9,8 +9,8 @@ #include "ConsoleWidget.h" #include "InspectorWidget.h" #include "Settings.h" +#include "StringUtils.h" #include "TVGIconEngine.h" -#include "Utilities.h" #include #include #include diff --git a/Ladybird/Tab.h b/Ladybird/Qt/Tab.h similarity index 100% rename from Ladybird/Tab.h rename to Ladybird/Qt/Tab.h diff --git a/Ladybird/WebContentView.cpp b/Ladybird/Qt/WebContentView.cpp similarity index 99% rename from Ladybird/WebContentView.cpp rename to Ladybird/Qt/WebContentView.cpp index c1d45e49116..df0f91af537 100644 --- a/Ladybird/WebContentView.cpp +++ b/Ladybird/Qt/WebContentView.cpp @@ -6,8 +6,7 @@ */ #include "WebContentView.h" -#include "HelperProcess.h" -#include "Utilities.h" +#include "StringUtils.h" #include #include #include @@ -17,6 +16,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/Ladybird/WebContentView.h b/Ladybird/Qt/WebContentView.h similarity index 99% rename from Ladybird/WebContentView.h rename to Ladybird/Qt/WebContentView.h index 2c633cfa379..191013e5d3e 100644 --- a/Ladybird/WebContentView.h +++ b/Ladybird/Qt/WebContentView.h @@ -7,12 +7,12 @@ #pragma once -#include "Types.h" #include #include #include #include #include +#include #include #include #include diff --git a/Ladybird/WebSocketClientManagerQt.cpp b/Ladybird/Qt/WebSocketClientManagerQt.cpp similarity index 100% rename from Ladybird/WebSocketClientManagerQt.cpp rename to Ladybird/Qt/WebSocketClientManagerQt.cpp diff --git a/Ladybird/WebSocketClientManagerQt.h b/Ladybird/Qt/WebSocketClientManagerQt.h similarity index 100% rename from Ladybird/WebSocketClientManagerQt.h rename to Ladybird/Qt/WebSocketClientManagerQt.h diff --git a/Ladybird/WebSocketImplQt.cpp b/Ladybird/Qt/WebSocketImplQt.cpp similarity index 99% rename from Ladybird/WebSocketImplQt.cpp rename to Ladybird/Qt/WebSocketImplQt.cpp index 882a7a03943..31ba1d8add4 100644 --- a/Ladybird/WebSocketImplQt.cpp +++ b/Ladybird/Qt/WebSocketImplQt.cpp @@ -8,7 +8,7 @@ */ #include "WebSocketImplQt.h" -#include "Utilities.h" +#include "StringUtils.h" #include #include #include diff --git a/Ladybird/WebSocketImplQt.h b/Ladybird/Qt/WebSocketImplQt.h similarity index 100% rename from Ladybird/WebSocketImplQt.h rename to Ladybird/Qt/WebSocketImplQt.h diff --git a/Ladybird/WebSocketQt.cpp b/Ladybird/Qt/WebSocketQt.cpp similarity index 100% rename from Ladybird/WebSocketQt.cpp rename to Ladybird/Qt/WebSocketQt.cpp diff --git a/Ladybird/WebSocketQt.h b/Ladybird/Qt/WebSocketQt.h similarity index 100% rename from Ladybird/WebSocketQt.h rename to Ladybird/Qt/WebSocketQt.h diff --git a/Ladybird/Qt/ladybird.qrc b/Ladybird/Qt/ladybird.qrc new file mode 100644 index 00000000000..65b5ec87889 --- /dev/null +++ b/Ladybird/Qt/ladybird.qrc @@ -0,0 +1,8 @@ + + + ../Icons/ladybird.png + ../Icons/back.tvg + ../Icons/forward.tvg + ../Icons/reload.tvg + + diff --git a/Ladybird/main.cpp b/Ladybird/Qt/main.cpp similarity index 98% rename from Ladybird/main.cpp rename to Ladybird/Qt/main.cpp index ca3acdee973..c75f03a86f6 100644 --- a/Ladybird/main.cpp +++ b/Ladybird/Qt/main.cpp @@ -6,13 +6,13 @@ #include "BrowserWindow.h" #include "EventLoopImplementationQt.h" -#include "HelperProcess.h" #include "Settings.h" -#include "Utilities.h" #include "WebContentView.h" #include #include #include +#include +#include #include #include #include diff --git a/Ladybird/Utilities.cpp b/Ladybird/Utilities.cpp index 0e6a9c443c9..38fdc99c963 100644 --- a/Ladybird/Utilities.cpp +++ b/Ladybird/Utilities.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2022, Andreas Kling + * Copyright (c) 2023, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ @@ -7,30 +8,16 @@ #include "Utilities.h" #include #include +#include #include -#include DeprecatedString s_serenity_resource_root; -AK::DeprecatedString ak_deprecated_string_from_qstring(QString const& qstring) +ErrorOr application_directory() { - return AK::DeprecatedString(qstring.toUtf8().data()); -} - -ErrorOr ak_string_from_qstring(QString const& qstring) -{ - return String::from_utf8(StringView(qstring.toUtf8().data(), qstring.size())); -} - -QString qstring_from_ak_deprecated_string(AK::DeprecatedString const& ak_deprecated_string) -{ - return QString::fromUtf8(ak_deprecated_string.characters(), ak_deprecated_string.length()); -} - -QString qstring_from_ak_string(String const& ak_string) -{ - auto view = ak_string.bytes_as_string_view(); - return QString::fromUtf8(view.characters_without_null_termination(), view.length()); + auto current_executable_path = TRY(Core::System::current_executable_path()); + auto dirname = LexicalPath::dirname(current_executable_path.to_deprecated_string()); + return String::from_deprecated_string(dirname); } void platform_init() @@ -49,7 +36,7 @@ void platform_init() auto home_lagom = DeprecatedString::formatted("{}/.lagom", home); if (FileSystem::is_directory(home_lagom)) return home_lagom; - auto app_dir = ak_deprecated_string_from_qstring(QCoreApplication::applicationDirPath()); + auto app_dir = application_directory().release_value_but_fixme_should_propagate_errors().to_deprecated_string(); # ifdef AK_OS_MACOS return LexicalPath(app_dir).parent().append("Resources"sv).string(); # else @@ -61,11 +48,9 @@ void platform_init() ErrorOr> get_paths_for_helper_process(StringView process_name) { - auto application_path = TRY(ak_string_from_qstring(QCoreApplication::applicationDirPath())); + auto application_path = TRY(application_directory()); Vector paths; - TRY(paths.try_append(TRY(String::formatted("./{}/{}", process_name, process_name)))); - TRY(paths.try_append(TRY(String::formatted("{}/{}/{}", application_path, process_name, process_name)))); TRY(paths.try_append(TRY(String::formatted("{}/{}", application_path, process_name)))); TRY(paths.try_append(TRY(String::formatted("./{}", process_name)))); // NOTE: Add platform-specific paths here diff --git a/Ladybird/Utilities.h b/Ladybird/Utilities.h index 971254de948..8194d2339a7 100644 --- a/Ladybird/Utilities.h +++ b/Ladybird/Utilities.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2022, Andreas Kling + * Copyright (c) 2023, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ @@ -10,13 +11,9 @@ #include #include #include -#include -AK::DeprecatedString ak_deprecated_string_from_qstring(QString const&); -ErrorOr ak_string_from_qstring(QString const&); -QString qstring_from_ak_deprecated_string(AK::DeprecatedString const&); -QString qstring_from_ak_string(String const&); void platform_init(); +ErrorOr application_directory(); ErrorOr> get_paths_for_helper_process(StringView process_name); extern DeprecatedString s_serenity_resource_root; diff --git a/Ladybird/WebContent/CMakeLists.txt b/Ladybird/WebContent/CMakeLists.txt index 79cb33dc018..fe69ccd0923 100644 --- a/Ladybird/WebContent/CMakeLists.txt +++ b/Ladybird/WebContent/CMakeLists.txt @@ -6,18 +6,19 @@ set(WEBCONTENT_SOURCES ${WEBCONTENT_SOURCE_DIR}/PageHost.cpp ${WEBCONTENT_SOURCE_DIR}/WebContentConsoleClient.cpp ${WEBCONTENT_SOURCE_DIR}/WebDriverConnection.cpp - ../AudioCodecPluginQt.cpp - ../AudioThread.cpp - ../EventLoopImplementationQt.cpp - ../EventLoopImplementationQtEventTarget.cpp ../FontPlugin.cpp ../HelperProcess.cpp ../ImageCodecPlugin.cpp - ../RequestManagerQt.cpp ../Utilities.cpp - ../WebSocketClientManagerQt.cpp - ../WebSocketQt.cpp - ../WebSocketImplQt.cpp + ../Qt/AudioCodecPluginQt.cpp + ../Qt/AudioThread.cpp + ../Qt/EventLoopImplementationQt.cpp + ../Qt/EventLoopImplementationQtEventTarget.cpp + ../Qt/RequestManagerQt.cpp + ../Qt/StringUtils.cpp + ../Qt/WebSocketClientManagerQt.cpp + ../Qt/WebSocketQt.cpp + ../Qt/WebSocketImplQt.cpp main.cpp ) diff --git a/Ladybird/WebContent/main.cpp b/Ladybird/WebContent/main.cpp index 7c88639ecfe..a858e2cf24e 100644 --- a/Ladybird/WebContent/main.cpp +++ b/Ladybird/WebContent/main.cpp @@ -4,15 +4,15 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include "../AudioCodecPluginQt.h" -#include "../EventLoopImplementationQt.h" -#include "../FontPlugin.h" -#include "../HelperProcess.h" -#include "../ImageCodecPlugin.h" -#include "../RequestManagerQt.h" -#include "../Utilities.h" -#include "../WebSocketClientManagerQt.h" #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -41,8 +41,6 @@ static ErrorOr load_content_filters(); static ErrorOr load_autoplay_allowlist(); -extern DeprecatedString s_serenity_resource_root; - ErrorOr serenity_main(Main::Arguments arguments) { QCoreApplication app(arguments.argc, arguments.argv); diff --git a/Ladybird/WebDriver/CMakeLists.txt b/Ladybird/WebDriver/CMakeLists.txt index 5f770c63f2e..e2e7092c764 100644 --- a/Ladybird/WebDriver/CMakeLists.txt +++ b/Ladybird/WebDriver/CMakeLists.txt @@ -8,13 +8,13 @@ set(SOURCES main.cpp ) -qt_add_executable(WebDriver ${SOURCES}) +add_executable(WebDriver ${SOURCES}) target_include_directories(WebDriver PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/..) target_include_directories(WebDriver PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/..) target_include_directories(WebDriver PRIVATE ${SERENITY_SOURCE_DIR}/Userland) target_include_directories(WebDriver PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services) -target_link_libraries(WebDriver PRIVATE Qt::Core Qt::Network LibCore LibFileSystem LibGfx LibIPC LibJS LibMain LibWeb LibWebSocket) +target_link_libraries(WebDriver PRIVATE LibCore LibFileSystem LibGfx LibIPC LibJS LibMain LibWeb LibWebSocket) add_dependencies(WebDriver headless-browser) if (ANDROID) link_android_libs(WebDriver) diff --git a/Ladybird/WebDriver/main.cpp b/Ladybird/WebDriver/main.cpp index 76fcf3b6725..941bd124893 100644 --- a/Ladybird/WebDriver/main.cpp +++ b/Ladybird/WebDriver/main.cpp @@ -4,8 +4,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include "../Utilities.h" #include +#include #include #include #include @@ -14,11 +14,8 @@ #include #include #include -#include #include -extern DeprecatedString s_serenity_resource_root; - static ErrorOr launch_process(StringView application, ReadonlySpan arguments) { auto paths = TRY(get_paths_for_helper_process(application)); @@ -57,9 +54,6 @@ static ErrorOr launch_headless_browser(DeprecatedString const& socket_pat ErrorOr serenity_main(Main::Arguments arguments) { - // Note: only creating this to get access to its static methods in Utilities - QCoreApplication application(arguments.argc, arguments.argv); - auto listen_address = "0.0.0.0"sv; int port = 8000; diff --git a/Ladybird/ladybird.qrc b/Ladybird/ladybird.qrc deleted file mode 100644 index ed6d80ccd2e..00000000000 --- a/Ladybird/ladybird.qrc +++ /dev/null @@ -1,8 +0,0 @@ - - - Icons/ladybird.png - Icons/back.tvg - Icons/forward.tvg - Icons/reload.tvg - - diff --git a/Meta/gn/secondary/Ladybird/BUILD.gn b/Meta/gn/secondary/Ladybird/BUILD.gn index 91c0037dd59..17ee27e3168 100644 --- a/Meta/gn/secondary/Ladybird/BUILD.gn +++ b/Meta/gn/secondary/Ladybird/BUILD.gn @@ -12,20 +12,20 @@ group("ladybird") { moc_qt_objects("generate_moc") { sources = [ - "BrowserWindow.h", - "ConsoleWidget.h", - "EventLoopImplementationQtEventTarget.h", - "InspectorWidget.h", - "LocationEdit.h", - "ModelTranslator.h", - "SettingsDialog.h", - "Tab.h", - "WebContentView.h", + "Qt/BrowserWindow.h", + "Qt/ConsoleWidget.h", + "Qt/EventLoopImplementationQtEventTarget.h", + "Qt/InspectorWidget.h", + "Qt/LocationEdit.h", + "Qt/ModelTranslator.h", + "Qt/SettingsDialog.h", + "Qt/Tab.h", + "Qt/WebContentView.h", ] } compile_qt_resource_file("compile_resource_file") { - sources = [ "ladybird.qrc" ] + sources = [ "Qt/ladybird.qrc" ] } link_qt("ladybird_qt_components") { @@ -79,21 +79,22 @@ executable("ladybird_executable") { "//Userland/Applications/Browser/CookieJar.cpp", "//Userland/Applications/Browser/Database.cpp", "//Userland/Applications/Browser/History.cpp", - "BrowserWindow.cpp", - "ConsoleWidget.cpp", - "EventLoopImplementationQt.cpp", - "EventLoopImplementationQtEventTarget.cpp", "HelperProcess.cpp", - "InspectorWidget.cpp", - "LocationEdit.cpp", - "ModelTranslator.cpp", - "Settings.cpp", - "SettingsDialog.cpp", - "TVGIconEngine.cpp", - "Tab.cpp", + "Qt/BrowserWindow.cpp", + "Qt/ConsoleWidget.cpp", + "Qt/EventLoopImplementationQt.cpp", + "Qt/EventLoopImplementationQtEventTarget.cpp", + "Qt/InspectorWidget.cpp", + "Qt/LocationEdit.cpp", + "Qt/ModelTranslator.cpp", + "Qt/Settings.cpp", + "Qt/SettingsDialog.cpp", + "Qt/StringUtils.cpp", + "Qt/TVGIconEngine.cpp", + "Qt/Tab.cpp", + "Qt/WebContentView.cpp", + "Qt/main.cpp", "Utilities.cpp", - "WebContentView.cpp", - "main.cpp", ] sources += get_target_outputs(":generate_moc") + get_target_outputs(":compile_resource_file") @@ -103,16 +104,9 @@ executable("ladybird_executable") { output_name = "ladybird" } -link_qt("headless_browser_qt") { - qt_components = [ "Core" ] -} - executable("headless-browser") { include_dirs = [ "//Userland/Services" ] - configs += [ - ":ladybird_config", - ":headless_browser_qt", - ] + configs += [ ":ladybird_config" ] deps = [ "//Userland/Libraries/LibCore", "//Userland/Libraries/LibCrypto", diff --git a/Meta/gn/secondary/Ladybird/WebContent/BUILD.gn b/Meta/gn/secondary/Ladybird/WebContent/BUILD.gn index 99910f29af3..a67d0a09fa7 100644 --- a/Meta/gn/secondary/Ladybird/WebContent/BUILD.gn +++ b/Meta/gn/secondary/Ladybird/WebContent/BUILD.gn @@ -4,10 +4,10 @@ import("//Meta/gn/build/libs/pulse/enable.gni") moc_qt_objects("generate_moc") { sources = [ - "//Ladybird/AudioCodecPluginQt.h", - "//Ladybird/AudioThread.h", - "//Ladybird/EventLoopImplementationQtEventTarget.h", - "//Ladybird/RequestManagerQt.h", + "//Ladybird/Qt/AudioCodecPluginQt.h", + "//Ladybird/Qt/AudioThread.h", + "//Ladybird/Qt/EventLoopImplementationQtEventTarget.h", + "//Ladybird/Qt/RequestManagerQt.h", ] } @@ -48,18 +48,19 @@ executable("WebContent") { "//Userland/Libraries/LibWebView:WebDriverServerEndpoint", ] sources = [ - "../AudioCodecPluginQt.cpp", - "../AudioThread.cpp", - "../EventLoopImplementationQt.cpp", - "../EventLoopImplementationQtEventTarget.cpp", - "../FontPlugin.cpp", - "../HelperProcess.cpp", - "../ImageCodecPlugin.cpp", - "../RequestManagerQt.cpp", - "../Utilities.cpp", - "../WebSocketClientManagerQt.cpp", - "../WebSocketImplQt.cpp", - "../WebSocketQt.cpp", + "//Ladybird/FontPlugin.cpp", + "//Ladybird/HelperProcess.cpp", + "//Ladybird/ImageCodecPlugin.cpp", + "//Ladybird/Qt/AudioCodecPluginQt.cpp", + "//Ladybird/Qt/AudioThread.cpp", + "//Ladybird/Qt/EventLoopImplementationQt.cpp", + "//Ladybird/Qt/EventLoopImplementationQtEventTarget.cpp", + "//Ladybird/Qt/RequestManagerQt.cpp", + "//Ladybird/Qt/StringUtils.cpp", + "//Ladybird/Qt/WebSocketClientManagerQt.cpp", + "//Ladybird/Qt/WebSocketImplQt.cpp", + "//Ladybird/Qt/WebSocketQt.cpp", + "//Ladybird/Utilities.cpp", "//Userland/Services/WebContent/ConnectionFromClient.cpp", "//Userland/Services/WebContent/ConsoleGlobalEnvironmentExtensions.cpp", "//Userland/Services/WebContent/PageHost.cpp", diff --git a/Meta/gn/secondary/Ladybird/WebDriver/BUILD.gn b/Meta/gn/secondary/Ladybird/WebDriver/BUILD.gn index 47397ca455d..708d2b4551a 100644 --- a/Meta/gn/secondary/Ladybird/WebDriver/BUILD.gn +++ b/Meta/gn/secondary/Ladybird/WebDriver/BUILD.gn @@ -1,17 +1,7 @@ import("//Ladybird/link_qt.gni") -link_qt("WebDriver_qt") { - qt_components = [ - "Core", - "Network", - ] -} - executable("WebDriver") { - configs += [ - "//Ladybird:ladybird_config", - ":WebDriver_qt", - ] + configs += [ "//Ladybird:ladybird_config" ] include_dirs = [ "//Userland/Services", "//Ladybird", @@ -31,7 +21,7 @@ executable("WebDriver") { "//Userland/Libraries/LibWebView:WebDriverServerEndpoint", ] sources = [ - "../Utilities.cpp", + "//Ladybird/Utilities.cpp", "//Userland/Services/WebDriver/Client.cpp", "//Userland/Services/WebDriver/Session.cpp", "//Userland/Services/WebDriver/WebContentConnection.cpp", diff --git a/Userland/Utilities/headless-browser.cpp b/Userland/Utilities/headless-browser.cpp index cf1d096fb65..e00bff50dc0 100644 --- a/Userland/Utilities/headless-browser.cpp +++ b/Userland/Utilities/headless-browser.cpp @@ -43,7 +43,6 @@ #if !defined(AK_OS_SERENITY) # include # include -# include #endif class HeadlessWebContentView final : public WebView::ViewImplementation { @@ -374,9 +373,6 @@ static ErrorOr run_tests(HeadlessWebContentView& view, StringView test_root ErrorOr serenity_main(Main::Arguments arguments) { -#if !defined(AK_OS_SERENITY) - QCoreApplication app(arguments.argc, arguments.argv); -#endif Core::EventLoop event_loop; int screenshot_timeout = 1;