This adds a WebUI to view the local browsing history, with controls to search and delete entries. The APIs used to search history are paginated to prevent excessive query sizes.
220 lines
8.6 KiB
CMake
220 lines
8.6 KiB
CMake
set(FONTS
|
|
NotoEmoji.ttf
|
|
SerenitySans-Regular.ttf
|
|
)
|
|
list(TRANSFORM FONTS PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/fonts/")
|
|
|
|
set(16x16_ICONS
|
|
open-parent-directory.png
|
|
)
|
|
set(32x32_ICONS
|
|
filetype-folder.png
|
|
filetype-unknown.png
|
|
)
|
|
set(48x48_ICONS
|
|
app-browser.png
|
|
)
|
|
set(128x128_ICONS
|
|
app-browser.png
|
|
app-browser-dark.png
|
|
)
|
|
list(TRANSFORM 16x16_ICONS PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/icons/16x16/")
|
|
list(TRANSFORM 32x32_ICONS PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/icons/32x32/")
|
|
list(TRANSFORM 48x48_ICONS PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/icons/48x48/")
|
|
list(TRANSFORM 128x128_ICONS PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/icons/128x128/")
|
|
|
|
set(INTERNAL_RESOURCES
|
|
ladybird.css
|
|
utils.js
|
|
)
|
|
list(TRANSFORM INTERNAL_RESOURCES PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/ladybird/")
|
|
|
|
set(ABOUT_PAGES
|
|
about.html
|
|
bookmarks.html
|
|
history.html
|
|
newtab.html
|
|
processes.html
|
|
settings.html
|
|
version.html
|
|
webui.css
|
|
)
|
|
list(TRANSFORM ABOUT_PAGES PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/ladybird/about-pages/")
|
|
|
|
set(ABOUT_SETTINGS_RESOURCES
|
|
advanced.js
|
|
browsing-behavior.js
|
|
default-zoom-level.js
|
|
languages.js
|
|
network.js
|
|
new-tab-page.js
|
|
permissions.js
|
|
privacy.js
|
|
search.js
|
|
tabs.js
|
|
)
|
|
list(TRANSFORM ABOUT_SETTINGS_RESOURCES PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/ladybird/about-pages/settings/")
|
|
|
|
set(WEB_TEMPLATES
|
|
directory.html
|
|
error.html
|
|
)
|
|
list(TRANSFORM WEB_TEMPLATES PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/ladybird/templates/")
|
|
|
|
set(THEMES
|
|
Default.ini
|
|
Dark.ini
|
|
)
|
|
list(TRANSFORM THEMES PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/themes/")
|
|
|
|
set(CONFIG_RESOURCES
|
|
BrowserContentBlockers.txt
|
|
)
|
|
list(TRANSFORM CONFIG_RESOURCES PREPEND "${LADYBIRD_SOURCE_DIR}/Base/res/ladybird/default-config/")
|
|
|
|
# pdf.js viewer assets installed by the pdfjs vcpkg port.
|
|
# Only populated when building with vcpkg and pdfjs is installed.
|
|
set(PDFJS_BUILD_FILES "")
|
|
set(PDFJS_WEB_BASE_FILES "")
|
|
set(PDFJS_WEB_IMAGE_FILES "")
|
|
set(PDFJS_WEB_LOCALE_JSON "")
|
|
set(PDFJS_WEB_LOCALE_EN_US "")
|
|
set(PDFJS_VIEWER_HTML "")
|
|
if (NOT "${VCPKG_INSTALLED_DIR}" STREQUAL "" AND NOT "${VCPKG_TARGET_TRIPLET}" STREQUAL "")
|
|
set(_pdfjs_vcpkg_dir "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/pdfjs")
|
|
if (EXISTS "${_pdfjs_vcpkg_dir}/build/pdf.mjs")
|
|
file(GLOB PDFJS_BUILD_FILES "${_pdfjs_vcpkg_dir}/build/*.mjs")
|
|
set(_pdfjs_ladybird_dir "${LADYBIRD_SOURCE_DIR}/Base/res/ladybird/pdfjs")
|
|
set(PDFJS_WEB_BASE_FILES
|
|
"${_pdfjs_ladybird_dir}/pdfjs-ladybird-transport.mjs"
|
|
"${_pdfjs_vcpkg_dir}/web/viewer.mjs"
|
|
"${_pdfjs_vcpkg_dir}/web/viewer.css"
|
|
)
|
|
file(GLOB PDFJS_WEB_IMAGE_FILES "${_pdfjs_vcpkg_dir}/web/images/*")
|
|
set(PDFJS_WEB_LOCALE_JSON "${_pdfjs_vcpkg_dir}/web/locale/locale.json")
|
|
set(PDFJS_WEB_LOCALE_EN_US "${_pdfjs_vcpkg_dir}/web/locale/en-US/viewer.ftl")
|
|
set(PDFJS_VIEWER_HTML "${_pdfjs_vcpkg_dir}/web/viewer.html")
|
|
endif()
|
|
endif()
|
|
|
|
function(copy_resource_set subdir)
|
|
cmake_parse_arguments(PARSE_ARGV 1 "COPY" "" "TARGET;DESTINATION" "RESOURCES")
|
|
set(inputs ${COPY_RESOURCES})
|
|
|
|
if (APPLE)
|
|
target_sources(${COPY_TARGET} PRIVATE ${inputs})
|
|
set_source_files_properties(${inputs} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/${subdir}")
|
|
else()
|
|
set(outputs "")
|
|
foreach (input IN LISTS inputs)
|
|
get_filename_component(input_name "${input}" NAME)
|
|
list(APPEND outputs "${COPY_DESTINATION}/${subdir}/${input_name}")
|
|
endforeach()
|
|
|
|
add_custom_command(
|
|
OUTPUT ${outputs}
|
|
DEPENDS ${inputs}
|
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${COPY_DESTINATION}/${subdir}"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${inputs}" "${COPY_DESTINATION}/${subdir}"
|
|
COMMAND_EXPAND_LISTS
|
|
VERBATIM
|
|
)
|
|
string(REPLACE "/" "_" subdir_underscores "${subdir}")
|
|
set(target_name "copy_${subdir_underscores}_resources_to_build")
|
|
while (TARGET ${target_name})
|
|
set(target_name "${target_name}_")
|
|
endwhile()
|
|
add_custom_target(${target_name} DEPENDS ${outputs})
|
|
add_dependencies(ladybird_codegen_accumulator ${target_name})
|
|
add_dependencies("${COPY_TARGET}_build_resource_files" ${target_name})
|
|
endif()
|
|
endfunction()
|
|
|
|
function(copy_resources_to_build base_directory bundle_target)
|
|
add_custom_target("${bundle_target}_build_resource_files")
|
|
|
|
copy_resource_set(fonts RESOURCES ${FONTS}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(icons/16x16 RESOURCES ${16x16_ICONS}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(icons/32x32 RESOURCES ${32x32_ICONS}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(icons/48x48 RESOURCES ${48x48_ICONS}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(icons/128x128 RESOURCES ${128x128_ICONS}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(themes RESOURCES ${THEMES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(ladybird RESOURCES ${INTERNAL_RESOURCES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(ladybird/about-pages RESOURCES ${ABOUT_PAGES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(ladybird/about-pages/settings RESOURCES ${ABOUT_SETTINGS_RESOURCES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(ladybird/templates RESOURCES ${WEB_TEMPLATES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
copy_resource_set(ladybird/default-config RESOURCES ${CONFIG_RESOURCES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
|
|
if (PDFJS_BUILD_FILES)
|
|
copy_resource_set(ladybird/pdfjs/build RESOURCES ${PDFJS_BUILD_FILES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
copy_resource_set(ladybird/pdfjs/web RESOURCES ${PDFJS_WEB_BASE_FILES} ${PDFJS_VIEWER_HTML}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
copy_resource_set(ladybird/pdfjs/web/images RESOURCES ${PDFJS_WEB_IMAGE_FILES}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
copy_resource_set(ladybird/pdfjs/web/locale RESOURCES ${PDFJS_WEB_LOCALE_JSON}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
copy_resource_set(ladybird/pdfjs/web/locale/en-US RESOURCES ${PDFJS_WEB_LOCALE_EN_US}
|
|
DESTINATION ${base_directory} TARGET ${bundle_target}
|
|
)
|
|
endif()
|
|
|
|
add_dependencies(${bundle_target} "${bundle_target}_build_resource_files")
|
|
endfunction()
|
|
|
|
function(install_ladybird_resources destination component)
|
|
install(FILES ${FONTS} DESTINATION "${destination}/fonts" COMPONENT ${component})
|
|
install(FILES ${16x16_ICONS} DESTINATION "${destination}/icons/16x16" COMPONENT ${component})
|
|
install(FILES ${32x32_ICONS} DESTINATION "${destination}/icons/32x32" COMPONENT ${component})
|
|
install(FILES ${48x48_ICONS} DESTINATION "${destination}/icons/48x48" COMPONENT ${component})
|
|
install(FILES ${128x128_ICONS} DESTINATION "${destination}/icons/128x128" COMPONENT ${component})
|
|
install(FILES ${THEMES} DESTINATION "${destination}/themes" COMPONENT ${component})
|
|
install(FILES ${INTERNAL_RESOURCES} DESTINATION "${destination}/ladybird" COMPONENT ${component})
|
|
install(FILES ${ABOUT_PAGES} DESTINATION "${destination}/ladybird/about-pages" COMPONENT ${component})
|
|
install(FILES ${ABOUT_SETTINGS_RESOURCES} DESTINATION "${destination}/ladybird/about-pages/settings" COMPONENT ${component})
|
|
install(FILES ${WEB_TEMPLATES} DESTINATION "${destination}/ladybird/templates" COMPONENT ${component})
|
|
install(FILES ${CONFIG_RESOURCES} DESTINATION "${destination}/ladybird/default-config" COMPONENT ${component})
|
|
if (PDFJS_BUILD_FILES)
|
|
install(FILES ${PDFJS_BUILD_FILES} DESTINATION "${destination}/ladybird/pdfjs/build" COMPONENT ${component})
|
|
install(FILES ${PDFJS_WEB_BASE_FILES} ${PDFJS_VIEWER_HTML} DESTINATION "${destination}/ladybird/pdfjs/web" COMPONENT ${component})
|
|
install(FILES ${PDFJS_WEB_IMAGE_FILES} DESTINATION "${destination}/ladybird/pdfjs/web/images" COMPONENT ${component})
|
|
install(FILES ${PDFJS_WEB_LOCALE_JSON} DESTINATION "${destination}/ladybird/pdfjs/web/locale" COMPONENT ${component})
|
|
install(FILES ${PDFJS_WEB_LOCALE_EN_US} DESTINATION "${destination}/ladybird/pdfjs/web/locale/en-US" COMPONENT ${component})
|
|
endif()
|
|
endfunction()
|