From 218bb906b7b05137d544ea78754a82db0ddc77a0 Mon Sep 17 00:00:00 2001 From: Kreijstal Date: Fri, 19 Jun 2026 10:32:01 +0200 Subject: [PATCH] qt6-webengine-thirdparty: add package --- .../0001-cmake-configure-fixes.patch | 353 + .../0002-chromium-add-mingw-toolchain.patch | 942 + .../0003-chromium-base.patch | 932 + .../0004-chromium-chrome.patch | 461 + .../0005-chromium-components.patch | 270 + .../0006-chromium-content.patch | 431 + .../0007-chromium-device.patch | 355 + .../0008-chromium-gpu.patch | 587 + .../0009-chromium-media.patch | 1207 + .../0010-chromium-net.patch | 228 + .../0011-chromium-sandbox.patch | 283 + .../0012-chromium-services.patch | 525 + .../0013-chromium-tools.patch | 118 + .../0014-chromium-ui.patch | 851 + .../0015-chromium-v8.patch | 399 + .../0016-chromium-others.patch | 151 + .../0101-chromium-third-party-angle.patch | 208 + .../0102-chromium-third-party-blink.patch | 410 + .../0103-chromium-third-party-breakpad.patch | 139 + .../0104-chromium-third-party-crashpad.patch | 416 + .../0105-chromium-third-party-ffmpeg.patch | 65 + .../0106-chromium-third-party-pdfium.patch | 115 + .../0107-chromium-third-party-perfetto.patch | 273 + .../0108-chromium-third-party-skia.patch | 562 + .../0109-chromium-third-party-vulkan.patch | 103 + .../0110-chromium-third-party-webrtc.patch | 302 + .../0111-chromium-third-party-others.patch | 850 + .../0113-chromium-mingw-followup.patch | 29345 ++++++++++++++++ ...romium-abseil-policy-functions-mingw.patch | 30 + ...chromium-crashpad-mingw-arm64-object.patch | 13 + .../0116-chromium-delegated-ink-mingw.patch | 22 + ...0117-chromium-thirdparty-build-fixes.patch | 49 + .../0121-chromium-nasm-native-paths.patch | 30 + ...122-chromium-shim-headers-subst-root.patch | 21 + .../0123-chromium-xnnpack-long-targets.patch | 107 + .../0201-gn-mingw-fixes.patch | 78 + ...202-gn-short-long-target-ninja-paths.patch | 42 + mingw-w64-qt6-webengine-thirdparty/PKGBUILD | 563 + .../thirdparty-extra-targets.list | 730 + 39 files changed, 42566 insertions(+) create mode 100644 mingw-w64-qt6-webengine-thirdparty/0001-cmake-configure-fixes.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0002-chromium-add-mingw-toolchain.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0003-chromium-base.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0004-chromium-chrome.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0005-chromium-components.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0006-chromium-content.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0007-chromium-device.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0008-chromium-gpu.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0009-chromium-media.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0010-chromium-net.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0011-chromium-sandbox.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0012-chromium-services.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0013-chromium-tools.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0014-chromium-ui.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0015-chromium-v8.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0016-chromium-others.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0101-chromium-third-party-angle.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0102-chromium-third-party-blink.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0103-chromium-third-party-breakpad.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0104-chromium-third-party-crashpad.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0105-chromium-third-party-ffmpeg.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0106-chromium-third-party-pdfium.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0107-chromium-third-party-perfetto.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0108-chromium-third-party-skia.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0109-chromium-third-party-vulkan.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0110-chromium-third-party-webrtc.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0111-chromium-third-party-others.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0113-chromium-mingw-followup.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0114-chromium-abseil-policy-functions-mingw.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0115-chromium-crashpad-mingw-arm64-object.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0116-chromium-delegated-ink-mingw.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0117-chromium-thirdparty-build-fixes.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0121-chromium-nasm-native-paths.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0122-chromium-shim-headers-subst-root.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0123-chromium-xnnpack-long-targets.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0201-gn-mingw-fixes.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/0202-gn-short-long-target-ninja-paths.patch create mode 100644 mingw-w64-qt6-webengine-thirdparty/PKGBUILD create mode 100644 mingw-w64-qt6-webengine-thirdparty/thirdparty-extra-targets.list diff --git a/mingw-w64-qt6-webengine-thirdparty/0001-cmake-configure-fixes.patch b/mingw-w64-qt6-webengine-thirdparty/0001-cmake-configure-fixes.patch new file mode 100644 index 0000000000000..0af8865c34f96 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0001-cmake-configure-fixes.patch @@ -0,0 +1,353 @@ +diff --git a/configure.cmake b/configure.cmake +index 931071f..13e6498 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -31,7 +31,9 @@ qt_webengine_set_version(libavutil 58.29.100) + qt_webengine_set_version(libavcodec 60.31.102) + qt_webengine_set_version(libavformat 60.16.100) + qt_webengine_set_version(openh264 2.4.1) ++if(NOT MINGW) + qt_webengine_set_version(windows_sdk 26100) # we only care about minor number "10.0.26100.0" ++endif() + + + #### find_package checks +@@ -428,6 +430,8 @@ qt_webengine_configure_check("compiler" + CONDITION MSVC OR + (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR + (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR ++ (MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR ++ (MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR + (MACOS AND CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + MESSAGE + "${CMAKE_CXX_COMPILER_ID} compiler is not supported." +@@ -511,20 +515,20 @@ qt_webengine_configure_check("android-ndk-api-level" + TAGS ANDROID_PALTFORM + ) + +-if(WIN32) ++if(MSVC) + qt_webengine_get_windows_sdk_version(windows_sdk_version sdk_minor) + message("-- Windows 10 SDK version: ${windows_sdk_version}") + unset(windows_sdk_version) +-endif() + +-qt_webengine_configure_check("windows-sdk" +- MODULES QtWebEngine +- CONDITION NOT WIN32 OR sdk_minor GREATER_EQUAL ${QT_CONFIGURE_CHECK_windows_sdk_version} +- MESSAGE "Build requires Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0" +- DOCUMENTATION "Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0" +- TAGS WINDOWS_PLATFORM +-) +-unset(sdk_minor) ++ qt_webengine_configure_check("windows-sdk" ++ MODULES QtWebEngine ++ CONDITION NOT WIN32 OR sdk_minor GREATER_EQUAL ${QT_CONFIGURE_CHECK_windows_sdk_version} ++ MESSAGE "Build requires Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0" ++ DOCUMENTATION "Windows 11 SDK at least version 10.0.${QT_CONFIGURE_CHECK_windows_sdk_version}.0" ++ TAGS WINDOWS_PLATFORM ++ ) ++ unset(sdk_minor) ++endif() + + ### Support Checks (optional) + +@@ -644,19 +648,19 @@ qt_feature("webengine-system-re2" PRIVATE + qt_feature("webengine-system-icu" PRIVATE + LABEL "icu" + AUTODETECT FALSE +- CONDITION UNIX AND ICU_FOUND ++ CONDITION (UNIX OR MINGW) AND ICU_FOUND + ) + qt_feature("webengine-system-libwebp" PRIVATE + LABEL "libwebp, libwebpmux and libwebpdemux" +- CONDITION UNIX AND WEBP_FOUND ++ CONDITION (UNIX OR MINGW) AND WEBP_FOUND + ) + qt_feature("webengine-system-libopenjpeg2" PRIVATE + LABEL "libopenjpeg2" +- CONDITION UNIX AND LIBOPENJP2_FOUND ++ CONDITION (UNIX OR MINGW) AND LIBOPENJP2_FOUND + ) + qt_feature("webengine-system-opus" PRIVATE + LABEL "opus" +- CONDITION UNIX AND OPUS_FOUND ++ CONDITION (UNIX OR MINGW) AND OPUS_FOUND + ) + qt_feature("webengine-system-ffmpeg" PRIVATE + LABEL "ffmpeg" +@@ -666,11 +670,11 @@ qt_feature("webengine-system-ffmpeg" PRIVATE + qt_feature("webengine-system-libvpx" PRIVATE + LABEL "libvpx" + AUTODETECT FALSE +- CONDITION UNIX AND TEST_vpx ++ CONDITION (UNIX OR MINGW) AND TEST_vpx + ) + qt_feature("webengine-system-snappy" PRIVATE + LABEL "snappy" +- CONDITION UNIX AND TEST_webengine_system_snappy ++ CONDITION (UNIX OR MINGW) AND TEST_webengine_system_snappy + ) + qt_feature("webengine-system-glib" PRIVATE + LABEL "glib" +@@ -678,7 +682,7 @@ qt_feature("webengine-system-glib" PRIVATE + ) + qt_feature("webengine-system-zlib" PRIVATE + LABEL "zlib" +- CONDITION UNIX AND QT_FEATURE_system_zlib AND ZLIB_FOUND ++ CONDITION (UNIX OR MINGW) AND QT_FEATURE_system_zlib AND ZLIB_FOUND + ) + qt_feature("webengine-qt-zlib" PRIVATE + LABEL "qtzlib" +@@ -688,23 +692,23 @@ qt_feature("webengine-qt-zlib" PRIVATE + ) + qt_feature("webengine-system-minizip" PRIVATE + LABEL "minizip" +- CONDITION UNIX AND MINIZIP_FOUND ++ CONDITION (UNIX OR MINGW) AND MINIZIP_FOUND + ) + qt_feature("webengine-system-libxml" PRIVATE + LABEL "libxml2 and libxslt" +- CONDITION UNIX AND LIBXML2_FOUND ++ CONDITION (UNIX OR MINGW) AND LIBXML2_FOUND + ) + qt_feature("webengine-system-lcms2" PRIVATE + LABEL "lcms2" +- CONDITION UNIX AND LCMS2_FOUND ++ CONDITION (UNIX OR MINGW) AND LCMS2_FOUND + ) + qt_feature("webengine-system-libpng" PRIVATE + LABEL "png" +- CONDITION UNIX AND TARGET Qt::Gui AND PNG_FOUND AND QT_FEATURE_system_png ++ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND PNG_FOUND AND QT_FEATURE_system_png + ) + qt_feature("webengine-system-libtiff" PRIVATE + LABEL "tiff" +- CONDITION UNIX AND TARGET Qt::Gui AND TIFF_FOUND ++ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND TIFF_FOUND + ) + qt_feature("webengine-qt-libpng" PRIVATE + LABEL "qtpng" +@@ -715,7 +719,7 @@ qt_feature("webengine-qt-libpng" PRIVATE + ) + qt_feature("webengine-system-libjpeg" PRIVATE + LABEL "jpeg" +- CONDITION UNIX AND TARGET Qt::Gui AND TEST_jpeg AND QT_FEATURE_system_jpeg ++ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND TEST_jpeg AND QT_FEATURE_system_jpeg + ) + qt_feature("webengine-qt-libjpeg" PRIVATE + LABEL "qtjpeg" +@@ -726,7 +730,7 @@ qt_feature("webengine-qt-libjpeg" PRIVATE + ) + qt_feature("webengine-system-harfbuzz" PRIVATE + LABEL "harfbuzz" +- CONDITION UNIX AND TARGET Qt::Gui AND HARFBUZZ_FOUND AND QT_FEATURE_system_harfbuzz ++ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND HARFBUZZ_FOUND AND QT_FEATURE_system_harfbuzz + ) + qt_feature("webengine-qt-harfbuzz" PRIVATE + LABEL "qtharfbuzz" +@@ -737,7 +741,7 @@ qt_feature("webengine-qt-harfbuzz" PRIVATE + ) + qt_feature("webengine-system-freetype" PRIVATE + LABEL "freetype" +- CONDITION UNIX AND TARGET Qt::Gui AND TEST_freetype AND QT_FEATURE_system_freetype ++ CONDITION (UNIX OR MINGW) AND TARGET Qt::Gui AND TEST_freetype AND QT_FEATURE_system_freetype + ) + qt_feature("webengine-qt-freetype" PRIVATE + LABEL "qtfreetype" +@@ -758,7 +762,7 @@ qt_feature("webengine-system-libudev" PRIVATE + + qt_feature("webengine-system-openh264" PRIVATE + LABEL "openh264" +- CONDITION UNIX AND OPENH264_FOUND ++ CONDITION (UNIX OR MINGW) AND OPENH264_FOUND + ) + + qt_feature("webengine-ozone-x11" PRIVATE +@@ -795,7 +799,7 @@ qt_configure_add_summary_entry(ARGS "qtpdf-widgets-build") + qt_configure_add_summary_entry(ARGS "qtpdf-quick-build") + qt_configure_end_summary_section() + # >> Optional system libraries +-if(UNIX) ++if(UNIX OR MINGW) + qt_configure_add_summary_section(NAME "Optional system libraries") + qt_configure_add_summary_entry(ARGS "webengine-system-re2") + qt_configure_add_summary_entry(ARGS "webengine-system-icu") +diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake +index c692c78..7f8130a 100644 +--- a/cmake/QtToolchainHelpers.cmake ++++ b/cmake/QtToolchainHelpers.cmake +@@ -553,9 +553,6 @@ macro(append_toolchain_setup) + list(APPEND gnArgArg target_cpu="${target_cpu}") + if(MINGW) + list(APPEND gnArgArg +- # note '/' prefix +- custom_toolchain="/${buildDir}/target_toolchain:target" +- host_toolchain="/${buildDir}/host_toolchain:host" + host_cpu="${host_cpu}" + ) + else() +diff --git a/src/core/api/CMakeLists.txt b/src/core/api/CMakeLists.txt +index 970c071..340fd7f 100644 +--- a/src/core/api/CMakeLists.txt ++++ b/src/core/api/CMakeLists.txt +@@ -89,6 +89,7 @@ if(CLANG OR GCC) + target_compile_options(WebEngineCore PRIVATE + "-Wno-unused-parameter" + "-Wno-expansion-to-defined" ++ "-Wno-deprecated-declarations" + ) + endif() + +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index eb83a82..d636b2f 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -615,6 +615,54 @@ foreach(arch ${archs}) + ) + endif() + ++ if(MINGW) ++ list(APPEND gnArgArg ++ angle_enable_vulkan=false ++ angle_shared_libvulkan=false ++ devtools_dcheck_always_on=true ++ icu_use_data_file=false ++ use_gio=false ++ use_glib=false ++ use_gtk=false ++ use_v8_context_snapshot=false ++ v8_enable_etw_stack_walking=false ++ v8_use_external_startup_data=false ++ ) ++ set(systemLibs re2 libjpeg libpng freetype harfbuzz libwebp libxml ++ opus snappy icu ffmpeg lcms2 libopenjpeg2 libvpx ++ ) ++ foreach(slib ${systemLibs}) ++ extend_gn_list(gnArgArg ++ ARGS use_system_${slib} ++ CONDITION QT_FEATURE_webengine_system_${slib} ++ ) ++ endforeach() ++ extend_gn_list(gnArgArg ++ ARGS use_system_libxslt ++ CONDITION QT_FEATURE_webengine_system_libxml ++ ) ++ extend_gn_list(gnArgArg ++ ARGS use_system_zlib use_system_minizip ++ CONDITION QT_FEATURE_webengine_system_zlib AND QT_FEATURE_webengine_system_minizip ++ ) ++ extend_gn_list(gnArgArg ++ ARGS pdfium_use_system_zlib ++ CONDITION QT_FEATURE_webengine_system_zlib ++ ) ++ extend_gn_list(gnArgArg ++ ARGS pdfium_use_system_libpng ++ CONDITION QT_FEATURE_webengine_system_libpng ++ ) ++ extend_gn_list(gnArgArg ++ ARGS pdfium_use_system_libtiff ++ CONDITION QT_FEATURE_webengine_system_libtiff ++ ) ++ extend_gn_list(gnArgArg ++ ARGS rtc_system_openh264 ++ CONDITION QT_FEATURE_webengine_system_openh264 ++ ) ++ endif() ++ + add_gn_command( + CMAKE_TARGET WebEngineCore + NINJA_TARGETS QtWebEngineCore convert_dict +diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in +index 0e611c2..c1965c7 100644 +--- a/src/core/configure/BUILD.root.gn.in ++++ b/src/core/configure/BUILD.root.gn.in +@@ -78,6 +78,19 @@ config("QtWebEngineCore_config") { + @GN_INCLUDE_DIRS@, + rebase_path("${target_gen_dir}/.moc/") + ] ++ ++ if (is_mingw) { ++ # Silenced warnings from skia headers. ++ cflags_cc += [ "-Wno-missing-field-initializers" ] ++ ++ if (is_clang) { ++ cflags_cc += [ ++ "-Wno-overloaded-virtual", ++ "-Wno-sometimes-uninitialized", ++ "-Wno-unused-private-field", ++ ] ++ } ++ } + } + + declare_args() { +@@ -91,7 +104,7 @@ config("embedded_config") { + + config("cpp20_config") { + # Chromium is built with C++20 +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/std:c++20" ] + } else if(is_gcc) { + cflags_cc = [ "-std=gnu++20" ] +@@ -122,9 +135,12 @@ shared_library("QtWebEngineCore") { + rsp_types = [ "objects", "archives", "libs", "ldir"] + configs += [ + ":cpp20_config", +- ":QtWebEngineCore_config", +- "//build/config:precompiled_headers" ++ ":QtWebEngineCore_config" + ] ++ if (!is_mingw) { ++ configs += [ "//build/config:precompiled_headers" ] ++ } ++ + include_dirs = [ + "//skia/config", + "//third_party", +@@ -588,9 +604,11 @@ if (is_win) { + static_library("QtWebEngineCoreSandbox") { + complete_static_lib = true + configs += [ ":cpp20_config", +- ":QtWebEngineCore_config", +- "//build/config:precompiled_headers" ++ ":QtWebEngineCore_config" + ] ++ if (!is_mingw) { ++ configs += [ "//build/config:precompiled_headers" ] ++ } + output_dir = "$root_out_dir" + sources = [ + "@GN_SOURCE_ROOT@/sandbox_win.cpp" +diff --git a/src/pdf/configure/BUILD.root.gn.in b/src/pdf/configure/BUILD.root.gn.in +index e9f54ed..5033aa1 100644 +--- a/src/pdf/configure/BUILD.root.gn.in ++++ b/src/pdf/configure/BUILD.root.gn.in +@@ -41,7 +41,7 @@ config("QtPdf_config") { + + config("cpp20_config") { + # Chromium headers now use concepts and requires c++20 +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/std:c++20" ] + } else { + cflags_cc = [ "-std=c++20" ] +diff --git a/src/process/CMakeLists.txt b/src/process/CMakeLists.txt +index 37bca3b..74d1616 100644 +--- a/src/process/CMakeLists.txt ++++ b/src/process/CMakeLists.txt +@@ -33,8 +33,12 @@ if(WIN32) + set_property(TARGET ${qtWebEngineProcessName} PROPERTY WIN32_EXECUTABLE TRUE) + # get libs rsp file, since cmake is not aware of PUBLIC libs for WebEngineCore + get_target_property(libs_rsp WebEngineCore LIBS_RSP) + get_target_property(archives_rsp WebEngineCore ARCHIVES_RSP) +- target_link_options(${qtWebEngineProcessName} PRIVATE "@${libs_rsp}" "@${archives_rsp}" "/STACK:0x800000") ++ if(MSVC) ++ target_link_options(${qtWebEngineProcessName} PRIVATE "@${libs_rsp}" "@${archives_rsp}" "/STACK:0x800000") ++ else() ++ target_link_options(${qtWebEngineProcessName} PRIVATE "@${libs_rsp}" "@${archives_rsp}" "-Wl,--stack,800000") ++ endif() + endif() + + if(MACOS) diff --git a/mingw-w64-qt6-webengine-thirdparty/0002-chromium-add-mingw-toolchain.patch b/mingw-w64-qt6-webengine-thirdparty/0002-chromium-add-mingw-toolchain.patch new file mode 100644 index 0000000000000..51b0711b64145 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0002-chromium-add-mingw-toolchain.patch @@ -0,0 +1,942 @@ +diff --git a/src/3rdparty/chromium/BUILD.gn b/src/3rdparty/chromium/BUILD.gn +index 8c04871..1952f7c 100644 +--- a/src/3rdparty/chromium/BUILD.gn ++++ b/src/3rdparty/chromium/BUILD.gn +@@ -680,7 +680,7 @@ group("gn_all") { + + # TODO(thakis): Enable this in cross builds, https://crbug.com/799827 + if (!(is_component_build && is_debug && target_cpu == "x86") && +- host_os == "win") { ++ host_os == "win" && is_msvc) { + deps += [ "//chrome/test/mini_installer:mini_installer_tests" ] + } + } +@@ -975,7 +975,7 @@ if (is_fuchsia) { + + # TODO(GYP_GONE): Figure out if we really need this target or if there's + # some better way to specify things. +-if (is_win && !is_qtwebengine) { ++if (is_msvc && !is_qtwebengine) { + group("chrome_official_builder_no_unittests") { + deps = [ + "//chrome/common/win:eventlog_provider", +@@ -1330,7 +1330,9 @@ if (use_blink && !is_cronet_build) { + "//third_party/apache-windows-arm64/", + "//third_party/perl/perl/", + ] +- data_deps += [ "//build/win:copy_cdb_to_output" ] ++ if (is_msvc) { ++ data_deps += [ "//build/win:copy_cdb_to_output" ] ++ } + } + + if (is_mac || (is_ios && target_environment == "simulator")) { +@@ -1780,7 +1782,7 @@ group("chromium_builder_perf") { + data_deps += [ "//tools/perf/clear_system_cache" ] + } + +- if (is_win) { ++ if (is_msvc) { + data_deps += [ + "//chrome/installer/mini_installer:mini_installer", + "//components:components_perftests", +diff --git a/src/3rdparty/chromium/build/build_config.h b/src/3rdparty/chromium/build/build_config.h +index 8d4895b..792b5d7 100644 +--- a/src/3rdparty/chromium/build/build_config.h ++++ b/src/3rdparty/chromium/build/build_config.h +@@ -262,6 +262,18 @@ + #define BUILDFLAG_INTERNAL_IS_WIN() (0) + #endif + ++#if defined(OS_WIN) && defined(__GNUC__) ++#define BUILDFLAG_INTERNAL_IS_MINGW() (1) ++#else ++#define BUILDFLAG_INTERNAL_IS_MINGW() (0) ++#endif ++ ++#if defined(OS_WIN) && defined(_MSC_VER) ++#define BUILDFLAG_INTERNAL_IS_MSVC() (1) ++#else ++#define BUILDFLAG_INTERNAL_IS_MSVC() (0) ++#endif ++ + #if defined(USE_OZONE) + #define BUILDFLAG_INTERNAL_IS_OZONE() (1) + #else +@@ -422,4 +434,19 @@ + #endif + #endif + ++#if defined(OS_WIN) && defined(COMPILER_GCC) ++#undef __try ++#if defined(__EXCEPTIONS) ++#define __try try ++#else ++#define __try if (true) ++#endif ++#undef __except ++#if defined(__EXCEPTIONS) ++#define __except(x) catch(...) ++#else ++#define __except(x) if (false) ++#endif ++#endif ++ + #endif // BUILD_BUILD_CONFIG_H_ +diff --git a/src/3rdparty/chromium/build/config/BUILD.gn b/src/3rdparty/chromium/build/config/BUILD.gn +index b85ffcd..16c9b0e 100644 +--- a/src/3rdparty/chromium/build/config/BUILD.gn ++++ b/src/3rdparty/chromium/build/config/BUILD.gn +@@ -206,6 +206,31 @@ config("default_libs") { + "ole32.lib", + ] + } ++ } else if (is_mingw) { ++ libs = [ ++ "advapi32", ++ "comdlg32", ++ "dbghelp", ++ "dnsapi", ++ "gdi32", ++ "msimg32", ++ "odbc32", ++ "odbccp32", ++ "oleaut32", ++ "shell32", ++ "shlwapi", ++ "user32", ++ "usp10", ++ "uuid", ++ "version", ++ "wininet", ++ "winmm", ++ "winspool", ++ "ws2_32", ++ "delayimp", ++ "kernel32", ++ "ole32", ++ ] + } else if (is_android) { + libs = [ + "dl", +@@ -408,7 +433,7 @@ config("shared_library_config") { + # Recommend precompiled headers for targets with more than 50 .cc files. + config("precompiled_headers") { + if (enable_precompiled_headers) { +- if (is_win) { ++ if (is_win && !is_mingw) { + # This is a string rather than a file GN knows about. It has to match + # exactly what's in the /FI flag below, and what might appear in the + # source code in quotes for an #include directive. +@@ -421,7 +446,7 @@ config("precompiled_headers") { + + # Force include the header. + cflags = [ "/FI$precompiled_header" ] +- } else if (is_mac || is_linux) { ++ } else if (is_mac || is_linux || is_mingw) { + precompiled_source = "//build/precompile.h" + } + } +diff --git a/src/3rdparty/chromium/build/config/BUILDCONFIG.gn b/src/3rdparty/chromium/build/config/BUILDCONFIG.gn +index a1d8157..73de34c 100644 +--- a/src/3rdparty/chromium/build/config/BUILDCONFIG.gn ++++ b/src/3rdparty/chromium/build/config/BUILDCONFIG.gn +@@ -232,16 +232,20 @@ if (host_toolchain == "") { + # On Windows always use the target CPU for host builds for x86/x64. On the + # configurations we support this will always work and it saves build steps. + # Windows ARM64 targets require an x64 host for cross build. +- if (target_cpu == "x86" || target_cpu == "x64") { +- if (is_clang) { +- host_toolchain = "//build/toolchain/win:win_clang_$target_cpu" ++ if (is_mingw) { ++ host_toolchain = "//build/toolchain/win:mingw_$target_cpu" ++ } else { ++ if (target_cpu == "x86" || target_cpu == "x64") { ++ if (is_clang) { ++ host_toolchain = "//build/toolchain/win:win_clang_$target_cpu" ++ } else { ++ host_toolchain = "//build/toolchain/win:$target_cpu" ++ } ++ } else if (is_clang) { ++ host_toolchain = "//build/toolchain/win:win_clang_$host_cpu" + } else { +- host_toolchain = "//build/toolchain/win:$target_cpu" ++ host_toolchain = "//build/toolchain/win:$host_cpu" + } +- } else if (is_clang) { +- host_toolchain = "//build/toolchain/win:win_clang_$host_cpu" +- } else { +- host_toolchain = "//build/toolchain/win:$host_cpu" + } + } else if (host_os == "aix") { + host_toolchain = "//build/toolchain/aix:$host_cpu" +@@ -278,10 +282,14 @@ if (target_os == "android") { + } else if (target_os == "win") { + # On Windows, we use the same toolchain for host and target by default. + # Beware, win cross builds have some caveats, see docs/win_cross.md +- if (is_clang) { +- _default_toolchain = "//build/toolchain/win:win_clang_$target_cpu" ++ if (is_mingw) { ++ _default_toolchain = "//build/toolchain/win:mingw_$target_cpu" + } else { +- _default_toolchain = "//build/toolchain/win:$target_cpu" ++ if (is_clang) { ++ _default_toolchain = "//build/toolchain/win:win_clang_$target_cpu" ++ } else { ++ _default_toolchain = "//build/toolchain/win:$target_cpu" ++ } + } + } else if (target_os == "winuwp") { + # Only target WinUWP on for a Windows store application and only +diff --git a/src/3rdparty/chromium/build/config/compiler/BUILD.gn b/src/3rdparty/chromium/build/config/compiler/BUILD.gn +index 0fe042f..56bff76 100644 +--- a/src/3rdparty/chromium/build/config/compiler/BUILD.gn ++++ b/src/3rdparty/chromium/build/config/compiler/BUILD.gn +@@ -292,7 +292,7 @@ config("compiler") { + # System-specific flags. If your compiler flags apply to one of the + # categories here, add it to the associated file to keep this shared config + # smaller. +- if (is_win && !is_mingw) { ++ if (is_win) { + configs += [ "//build/config/win:compiler" ] + } else if (is_android) { + configs += [ "//build/config/android:compiler" ] +@@ -952,7 +952,7 @@ config("compiler") { + if (use_lld && is_mac) { + ldflags += [ "-Wl,--time-trace" ] + } +- } else if (is_win) { ++ } else if (is_msvc) { + cflags += [ + # "Documented" here: + # http://aras-p.info/blog/2017/10/23/Best-unknown-MSVC-flag-d2cgsummary/ +@@ -982,7 +982,7 @@ config("compiler") { + # jumps. Turn it off by default and enable selectively for targets where it's + # beneficial. + if (use_lld && !enable_call_graph_profile_sort && !is_qtwebengine) { +- if (is_win) { ++ if (is_msvc) { + ldflags += [ "/call-graph-profile-sort:no" ] + } else { + ldflags += [ "-Wl,--no-call-graph-profile-sort" ] +@@ -1687,7 +1687,7 @@ config("compiler_deterministic") { + asmflags = [ "-Wa,-fdebug-compilation-dir,." ] + } + +- if (is_win && use_lld) { ++ if (is_win && !is_mingw && use_lld) { + if (symbol_level == 2 || (is_clang && using_sanitizer)) { + # Absolutize source file paths for PDB. Pass the real build directory + # if the pdb contains source-level debug information and if linker +@@ -1879,7 +1879,7 @@ config("runtime_library") { + # is broken out separately so nocompile tests can force-enable this setting + # independently of the default warning flags. + config("treat_warnings_as_errors") { +- if (is_win) { ++ if (is_win && !is_mingw) { + cflags = [ "/WX" ] + } else { + cflags = [ "-Werror" ] +@@ -2156,10 +2156,64 @@ config("default_warnings") { + cflags_cc += [ "-Wno-return-type" ] + cflags_cc += [ "-Wno-deprecated-copy" ] + } ++ ++ if (is_mingw) { ++ cflags += [ ++ "-Wno-array-parameter", ++ "-Wno-attributes", ++ "-Wno-format", ++ "-Wno-missing-braces", ++ "-Wno-parentheses", ++ "-Wno-unknown-pragmas", ++ ] ++ cflags_cc += [ ++ "-Wno-deprecated", ++ "-Wno-missing-field-initializers", ++ "-Wno-pessimizing-move", ++ "-Wno-return-type", ++ "-Wno-shadow", ++ "-Wno-sign-compare", ++ "-Wno-unused", ++ "-Wno-unused-const-variable", ++ ] ++ ++ if (is_clang) { ++ cflags += [ ++ "-Wno-constant-conversion", ++ "-Wno-deprecated-builtins", ++ "-Wno-deprecated-declarations", ++ "-Wno-macro-redefined", ++ ] ++ cflags_cc += [ ++ "-Wno-invalid-offsetof", ++ "-Wno-unused-local-typedef", ++ "-Wno-unused-private-field", ++ ] ++ } else { ++ cflags += [ ++ "-Wno-array-bounds", ++ "-Wno-builtin-macro-redefined", ++ "-Wno-dangling-pointer", ++ "-Wno-stringop-truncation", ++ "-Wno-unused-but-set-variable", ++ ] ++ cflags_cc += [ ++ "-Wno-conversion-null", ++ "-Wno-dangling-reference", ++ "-Wno-free-nonheap-object", ++ "-Wno-misleading-indentation", ++ "-Wno-non-virtual-dtor", ++ "-Wno-overloaded-virtual", ++ "-Wno-pointer-arith", ++ "-Wno-template-id-cdtor", ++ "-Wno-uninitialized", ++ ] ++ } ++ } + } + + # Common Clang and GCC warning setup. +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags += [ + # Disables. + "-Wno-missing-field-initializers", # "struct foo f = {0};" +@@ -2321,7 +2375,7 @@ config("chromium_code") { + } + } else { + cflags = [ "-Wall" ] +- if (is_clang) { ++ if (is_clang && !is_mingw) { + # Enable extra warnings for chromium_code when we control the compiler. + cflags += [ "-Wextra" ] + } +@@ -2367,7 +2421,7 @@ config("chromium_code") { + } + } + +- if (is_clang) { ++ if (is_clang && !is_mingw) { + cflags += [ + # Warn on missing break statements at the end of switch cases. + # For intentional fallthrough, use [[fallthrough]]. +@@ -2567,6 +2621,9 @@ config("exceptions") { + defines = [ "_HAS_EXCEPTIONS=1" ] + } + cflags_cc = [ "/EHsc" ] ++ } else if (is_mingw) { ++ cflags_cc = [] ++ cflags_objcc = cflags_cc + } else { + cflags_cc = [ "-fexceptions" ] + cflags_objcc = cflags_cc +@@ -2584,6 +2641,9 @@ config("no_exceptions") { + if (!use_custom_libcxx) { + defines = [ "_HAS_EXCEPTIONS=0" ] + } ++ } else if (is_mingw) { ++ cflags_cc = [] ++ cflags_objcc = cflags_cc + } else { + cflags_cc = [ "-fno-exceptions" ] + cflags_objcc = cflags_cc +@@ -2617,7 +2677,7 @@ config("wexit_time_destructors") { + # the gcc 4.9 toolchains. + config("no_incompatible_pointer_warnings") { + cflags = [] +- if (is_clang) { ++ if (is_clang || is_mingw) { + cflags += [ "-Wno-incompatible-pointer-types" ] + } else if (current_cpu == "mipsel" || current_cpu == "mips64el") { + cflags += [ "-w" ] +@@ -2733,7 +2793,7 @@ if (is_win && !is_mingw) { + } + + config("default_stack_frames") { +- if (!is_win) { ++ if (!is_msvc) { + if (enable_frame_pointers) { + cflags = [ "-fno-omit-frame-pointer" ] + +@@ -2824,7 +2884,7 @@ config("optimize") { + + # Turn off optimizations. + config("no_optimize") { +- if (is_win) { ++ if (is_msvc) { + cflags = [ + "/Od", # Disable optimization. + "/Ob0", # Disable all inlining (on by default). +diff --git a/src/3rdparty/chromium/build/config/gcc/BUILD.gn b/src/3rdparty/chromium/build/config/gcc/BUILD.gn +index a659210..be24b50 100644 +--- a/src/3rdparty/chromium/build/config/gcc/BUILD.gn ++++ b/src/3rdparty/chromium/build/config/gcc/BUILD.gn +@@ -64,7 +66,7 @@ config("symbol_visibility_default") { + # configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] + # } + config("rpath_for_built_shared_libraries") { +- if (!is_android && current_os != "aix" && !is_castos) { ++ if (!is_android && !is_mingw && current_os != "aix" && !is_castos) { + # Note: Android, Aix don't support rpath. Chromecast has its own logic for + # setting the rpath in //build/config/chromecast. + if (current_toolchain != default_toolchain || gcc_target_rpath == "") { +@@ -93,7 +95,9 @@ if (is_component_build && !is_android) { + # Settings for executables. + config("executable_config") { + configs = executable_and_shared_library_configs_ +- ldflags = [ "-pie" ] ++ if (!is_mingw) { ++ ldflags = [ "-pie" ] ++ } + if (is_android) { + ldflags += [ + "-Bdynamic", +@@ -101,7 +105,7 @@ config("executable_config") { + ] + } + +- if (!is_android && current_os != "aix") { ++ if (!is_android && !is_mingw && current_os != "aix") { + ldflags += [ + # TODO(GYP): Do we need a check on the binutils version here? + # +diff --git a/src/3rdparty/chromium/build/config/linux/pkg-config.py b/src/3rdparty/chromium/build/config/linux/pkg-config.py +index e3e582d..e0cebba 100755 +--- a/src/3rdparty/chromium/build/config/linux/pkg-config.py ++++ b/src/3rdparty/chromium/build/config/linux/pkg-config.py +@@ -113,7 +113,7 @@ def main(): + # If this is run on non-Linux platforms, just return nothing and indicate + # success. This allows us to "kind of emulate" a Linux build from other + # platforms. +- if 'linux' not in sys.platform and 'darwin' not in sys.platform: ++ if sys.platform not in ["linux", "darwin", "win32"]: + print("[[],[],[],[],[]]") + return 0 + +diff --git a/src/3rdparty/chromium/build/config/sanitizers/BUILD.gn b/src/3rdparty/chromium/build/config/sanitizers/BUILD.gn +index 8c052a3..bd0f66d 100644 +--- a/src/3rdparty/chromium/build/config/sanitizers/BUILD.gn ++++ b/src/3rdparty/chromium/build/config/sanitizers/BUILD.gn +@@ -276,7 +276,7 @@ config("default_sanitizer_ldflags") { + } + } + } +- } else if (is_win) { ++ } else if (is_msvc) { + # Windows directly calls link.exe instead of the compiler driver when + # linking. Hence, pass the runtime libraries instead of -fsanitize=address + # or -fsanitize=fuzzer. +@@ -396,7 +396,7 @@ config("cfi_flags") { + + if (use_cfi_diag) { + cflags += [ "-fno-sanitize-trap=cfi" ] +- if (is_win) { ++ if (is_msvc) { + cflags += [ + "/Oy-", + "/Ob0", +diff --git a/src/3rdparty/chromium/build/config/win/BUILD.gn b/src/3rdparty/chromium/build/config/win/BUILD.gn +index 41481f3..9e0c296 100644 +--- a/src/3rdparty/chromium/build/config/win/BUILD.gn ++++ b/src/3rdparty/chromium/build/config/win/BUILD.gn +@@ -54,6 +54,12 @@ declare_args() { + # is applied to all targets. It is here to separate out the logic that is + # Windows-only. + config("compiler") { ++ if (is_mingw) { ++ cflags = [ "-Wa,-mbig-obj" ] ++ if (current_cpu == "x86" || current_cpu == "x64") { ++ cflags += [ "-msse3" ] ++ } ++ } else { + if (current_cpu == "x86") { + asmflags = [ + # When /safeseh is specified, the linker will only produce an image if it +@@ -192,6 +198,7 @@ config("compiler") { + } else { + ldflags += [ "/pdbpagesize:8192" ] + } ++ } + + if (!is_debug && !is_component_build && !is_mingw) { + # Enable standard linker optimizations like GC (/OPT:REF) and ICF in static +@@ -319,7 +326,7 @@ config("winver") { + + # Linker flags for Windows SDK setup, this is applied only to EXEs and DLLs. + config("sdk_link") { +- if (current_cpu == "x86") { ++ if (is_msvc && current_cpu == "x86") { + ldflags = [ + "/SAFESEH", # Not compatible with x64 so use only for x86. + "/largeaddressaware", +@@ -331,6 +338,13 @@ config("sdk_link") { + # targets who want different library configurations can remove this and specify + # their own. + config("common_linker_setup") { ++ if (is_mingw) { ++ # Enable DEP and ASLR ++ ldflags = [ ++ "-Wl,-dynamicbase", ++ "-Wl,-nxcompat", ++ ] ++ } else { + ldflags = [ + "/FIXED:NO", + "/ignore:4199", +@@ -345,6 +359,7 @@ config("common_linker_setup") { + "/verbose:incr", + ] + } ++ } + } + + config("default_cfg_compiler") { +@@ -355,10 +370,14 @@ config("default_cfg_compiler") { + if (win_enable_cfg_guards) { + if (is_clang && !is_mingw) { + cflags = [ "/guard:cf" ] ++ } else if (is_mingw) { ++ if (current_cpu != "arm64") { ++ cflags = [ "-fcf-protection" ] ++ } + } + rustflags = [ "-Ccontrol-flow-guard" ] + } else { +- if (is_clang) { ++ if (is_clang && is_msvc) { + cflags = [ "/guard:cf,nochecks" ] + } + rustflags = [ "-Ccontrol-flow-guard=nochecks" ] +@@ -371,7 +390,7 @@ config("disable_guards_cfg_compiler") { + # Emit table of address-taken functions for Control-Flow Guard (CFG). + # This is needed to allow functions to be called by code that is built + # with CFG enabled, such as system libraries. +- if (is_clang) { ++ if (is_clang && is_msvc) { + cflags = [ "/guard:cf,nochecks" ] + } + rustflags = [ "-Ccontrol-flow-guard=nochecks" ] +@@ -421,6 +440,7 @@ config("cfi_linker") { + # This config should also be used for any test binary whose goal is to run + # tests with the full browser. + config("delayloads") { ++ if (is_msvc) { + ldflags = [ + "/DELAYLOAD:api-ms-win-core-synch-l1-2-0.dll", + "/DELAYLOAD:api-ms-win-core-winrt-error-l1-1-0.dll", +@@ -470,11 +490,13 @@ config("delayloads") { + "/DELAYLOAD:wsock32.dll", + "/DELAYLOAD:wtsapi32.dll", + ] ++ } + } + + # This config (along with `:delayloads`) applies to chrome.exe & chrome_elf.dll. + # Entries should not appear in both configs. + config("delayloads_not_for_child_dll") { ++ if (is_msvc) { + ldflags = [ + "/DELAYLOAD:crypt32.dll", + "/DELAYLOAD:dbghelp.dll", +@@ -490,18 +512,19 @@ config("delayloads_not_for_child_dll") { + "/DELAYLOAD:wintrust.dll", + "/DELAYLOAD:ws2_32.dll", + ] ++ } + } + + # ACLs are placed on the filesystem in order to allow chrome to launch + # sandboxed processes in an app container when run from the out directory. + group("maybe_set_appcontainer_acls") { + # Exclude setting ACLs when build is not happening on chromium, or with a different toolchain. +- if (build_with_chromium && current_cpu == target_cpu && host_os == "win") { ++ if (build_with_chromium && current_cpu == target_cpu && is_msvc) { + deps = [ ":set_appcontainer_acls" ] + } + } + +-if (build_with_chromium && current_cpu == target_cpu && host_os == "win") { ++if (build_with_chromium && current_cpu == target_cpu && is_msvc) { + action("set_appcontainer_acls") { + script = "//build/win/set_appcontainer_acls.py" + stamp_file = "$target_out_dir/acls.stamp" +@@ -549,7 +572,7 @@ config("default_crt") { + # when the debug CRT is part of the bottleneck. This also avoids *implicitly* + # defining _DEBUG. + config("release_crt") { +- if (is_component_build) { ++ if (is_msvc && is_component_build) { + cflags = [ "/MD" ] + + # /MD specifies msvcrt.lib as the CRT library, which is the dynamic+release +@@ -561,7 +584,7 @@ config("release_crt") { + # standard library, which libc++ needs for exception_ptr internals. + ldflags = [ "/DEFAULTLIB:msvcprt.lib" ] + } +- } else { ++ } else if (!is_mingw) { + cflags = [ "/MT" ] + + # /MT specifies libcmt.lib as the CRT library, which is the static+release +@@ -576,7 +599,7 @@ config("release_crt") { + } + + config("dynamic_crt") { +- if (is_debug) { ++ if (is_msvc && is_debug) { + # This pulls in the DLL debug CRT and defines _DEBUG + cflags = [ "/MDd" ] + +@@ -592,7 +615,7 @@ config("dynamic_crt") { + if (use_custom_libcxx) { + ldflags = [ "/DEFAULTLIB:msvcprtd.lib" ] + } +- } else { ++ } else if (!is_mingw) { + cflags = [ "/MD" ] + + # /MD specifies msvcrt.lib as the CRT library, which is the dynamic+release +@@ -606,7 +629,7 @@ config("dynamic_crt") { + } + + config("static_crt") { +- if (is_debug) { ++ if (is_msvc && is_debug) { + # This pulls in the static debug CRT and defines _DEBUG + cflags = [ "/MTd" ] + +@@ -623,7 +646,7 @@ config("static_crt") { + if (use_custom_libcxx) { + ldflags = [ "/DEFAULTLIB:libcpmtd.lib" ] + } +- } else { ++ } else if (!is_mingw) { + cflags = [ "/MT" ] + + # /MT specifies libcmt.lib as the CRT library, which is the static+release +@@ -644,6 +667,8 @@ config("static_crt") { + # Set to 10.0 since we only support >= Win10 since M110. + if (is_mingw && current_cpu == "x64") { + subsystem_version_suffix = "5.02" ++} else if (is_mingw && current_cpu == "arm64") { ++ subsystem_version_suffix = "6.02" + } else { + subsystem_version_suffix = "10.0" + } +diff --git a/src/3rdparty/chromium/build/nocompile.gni b/src/3rdparty/chromium/build/nocompile.gni +index eee6730..cbd1cc4 100644 +--- a/src/3rdparty/chromium/build/nocompile.gni ++++ b/src/3rdparty/chromium/build/nocompile.gni +@@ -50,7 +50,7 @@ + # http://dev.chromium.org/developers/testing/no-compile-tests + # + import("//build/config/clang/clang.gni") +-if (is_win && !is_qtpdf) { ++if (is_win && !is_mingw && !is_qtpdf) { + import("//build/toolchain/win/win_toolchain_data.gni") + } + +@@ -93,7 +93,7 @@ if (enable_nocompile_tests) { + rebased_depfile_path = rebase_path(depfile, root_build_dir) + outputs = [ result_path ] + +- if (is_win) { ++ if (is_win && !is_mingw) { + if (host_os == "win") { + cxx = "clang-cl.exe" + } else { +@@ -149,7 +149,7 @@ if (enable_nocompile_tests) { + "-Werror", + ] + +- if (!is_win) { ++ if (!is_msvc) { + args += [ + # On non-Windows platforms, clang can generate the depfile. + "-MMD", +diff --git a/src/3rdparty/chromium/build/toolchain/gcc_solink_wrapper.py b/src/3rdparty/chromium/build/toolchain/gcc_solink_wrapper.py +index 0dae7ab..f402102 100755 +--- a/src/3rdparty/chromium/build/toolchain/gcc_solink_wrapper.py ++++ b/src/3rdparty/chromium/build/toolchain/gcc_solink_wrapper.py +@@ -24,6 +24,9 @@ def CollectSONAME(args): + # TODO(crbug.com/40797404): Come up with a way to get this info without having + # to bundle readelf in the toolchain package. + toc = '' ++ # MinGW's readelf doesn't work on PE files ++ if sys.platform == 'win32' and 'MINGW' in sys.version: ++ return 0, toc + readelf = subprocess.Popen(wrapper_utils.CommandToRun( + [args.readelf, '-d', args.sofile]), + stdout=subprocess.PIPE, +@@ -38,6 +41,9 @@ def CollectSONAME(args): + def CollectDynSym(args): + """Replaces: nm --format=posix -g -D -p $sofile | cut -f1-2 -d' '""" + toc = '' ++ # MinGW's nm doesn't work on PE/COFF files ++ if sys.platform == 'win32' and 'MINGW' in sys.version: ++ return 0, toc + nm = subprocess.Popen(wrapper_utils.CommandToRun( + [args.nm, '--format=posix', '-g', '-D', '-p', args.sofile]), + stdout=subprocess.PIPE, +@@ -103,6 +109,9 @@ def main(): + help='The strip binary to run', + metavar='PATH') + parser.add_argument('--dwp', help='The dwp binary to run', metavar='PATH') ++ parser.add_argument('--objcopy', ++ help='The objcopy binary to run', ++ metavar='PATH') + parser.add_argument('--sofile', + required=True, + help='Shared object file produced by linking command', +@@ -194,9 +203,19 @@ def main(): + + # Finally, strip the linked shared object file (if desired). + if args.strip: ++ if args.objcopy: ++ result = subprocess.call(wrapper_utils.CommandToRun( ++ [args.objcopy, '--only-keep-debug', args.sofile, args.output + '.debug'])) ++ if result != 0: ++ return result + result = subprocess.call( + wrapper_utils.CommandToRun( + [args.strip, '-o', args.output, args.sofile])) ++ if result != 0: ++ return result ++ if args.objcopy: ++ result = subprocess.call(wrapper_utils.CommandToRun( ++ [args.objcopy, '--add-gnu-debuglink', args.output + '.debug',args.output])) + + if dwp_proc: + dwp_result = dwp_proc.wait() +diff --git a/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni b/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni +index 9f4900e..cfcdcd1 100644 +--- a/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni ++++ b/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni +@@ -64,6 +64,7 @@ if (enable_resource_allowlist_generation) { + # - cc + # - cxx + # - ld ++# - rc (mingw only) + # + # Optional parameters that control the tools: + # +@@ -276,6 +277,11 @@ template("single_gcc_toolchain") { + } else { + nm = "nm" + } ++ if (defined(invoker.rc)) { ++ rc = invoker.rc ++ } else { ++ rc = "windres" ++ } + if (defined(invoker.dwp)) { + dwp_switch = " --dwp=\"${invoker.dwp}\"" + } else { +@@ -369,6 +375,14 @@ template("single_gcc_toolchain") { + outputs = [ "$object_subdir/{{source_name_part}}.o" ] + } + ++ tool("rc") { ++ depfile = "{{output}}.d" ++ command = "$rc -i {{source}} -o {{output}} {{include_dirs}} -O coff" ++ depsformat = "gcc" ++ description = "RC {{output}}" ++ outputs = [ "$object_subdir/{{source_name_part}}.rc.o" ] ++ } ++ + tool("asm") { + # For GCC we can just use the C compiler to compile assembly. + depfile = "{{output}}.d" +@@ -431,9 +445,12 @@ template("single_gcc_toolchain") { + tocfile = sofile + ".TOC" + + soname_flag = "" +- if (current_os != "aix") { ++ if (current_os != "aix" && current_os != "win") { + # -soname flag is not available on aix ld + soname_flag = "-Wl,-soname=\"$soname\"" ++ } else if (current_os == "win") { ++ # Have MinGW linker generate an import library ++ soname_flag = "-Wl,--out-implib=lib\"$soname\".a" + } + link_command = "$ld -shared $soname_flag {{ldflags}}${extra_ldflags} -o \"$unstripped_sofile\" @\"$rspfile\" {{rlibs}}" + +@@ -469,6 +486,8 @@ template("single_gcc_toolchain") { + + if (target_cpu == "mipsel" && is_component_build && is_android) { + rspfile_content = "-Wl,--start-group -Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive {{libs}} -Wl,--end-group" ++ } else if (current_os == "win") { ++ rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive -Wl,--start-group {{libs}} -Wl,--end-group" + } else if (current_os == "aix") { + # --whole-archive, --no-whole-archive flags are not available on the aix + # ld. +diff --git a/src/3rdparty/chromium/build/toolchain/win/BUILD.gn b/src/3rdparty/chromium/build/toolchain/win/BUILD.gn +index 97ae780..bddd219 100644 +--- a/src/3rdparty/chromium/build/toolchain/win/BUILD.gn ++++ b/src/3rdparty/chromium/build/toolchain/win/BUILD.gn +@@ -6,7 +6,7 @@ import("//build/config/win/visual_studio_version.gni") + import("//build/toolchain/win/toolchain.gni") + + assert(is_win, "Should only be running on Windows") +-assert(!is_qtwebengine) ++assert((is_msvc && !is_qtwebengine) || is_mingw) + + # Setup the Visual Studio state. + # +@@ -16,7 +16,7 @@ assert(!is_qtwebengine) + + # Copy the VS runtime DLL for the default toolchain to the root build directory + # so things will run. +-if (current_toolchain == default_toolchain) { ++if (is_msvc && current_toolchain == default_toolchain) { + if (is_debug) { + configuration_name = "Debug" + } else { +@@ -31,7 +31,7 @@ if (current_toolchain == default_toolchain) { + ]) + } + +-if (target_cpu == "x86" || target_cpu == "x64") { ++if (is_msvc && (target_cpu == "x86" || target_cpu == "x64")) { + win_toolchains("x86") { + toolchain_arch = "x86" + } +@@ -40,7 +40,7 @@ if (target_cpu == "x86" || target_cpu == "x64") { + } + } + +-if (target_cpu == "arm64") { ++if (is_msvc && target_cpu == "arm64") { + win_toolchains("arm64") { + toolchain_arch = "arm64" + } +@@ -93,3 +95,17 @@ if (target_os == "winuwp") { + } + } + } ++ ++if (is_mingw) { ++ mingw_toolchain("x86") { ++ toolchain_arch = "x86" ++ } ++ ++ mingw_toolchain("x64") { ++ toolchain_arch = "x64" ++ } ++ ++ mingw_toolchain("arm64") { ++ toolchain_arch = "arm64" ++ } ++} +diff --git a/src/3rdparty/chromium/build/toolchain/win/toolchain.gni b/src/3rdparty/chromium/build/toolchain/win/toolchain.gni +index de3c192..f2e4857 100644 +--- a/src/3rdparty/chromium/build/toolchain/win/toolchain.gni ++++ b/src/3rdparty/chromium/build/toolchain/win/toolchain.gni +@@ -10,7 +10,12 @@ import("//build/config/win/visual_studio_version.gni") + import("//build/toolchain/cc_wrapper.gni") + import("//build/toolchain/rbe.gni") + import("//build/toolchain/toolchain.gni") +-import("//build/toolchain/win/win_toolchain_data.gni") ++ ++if (is_mingw) { ++ import("//build/toolchain/gcc_toolchain.gni") ++} else { ++ import("//build/toolchain/win/win_toolchain_data.gni") ++} + + assert(is_win, "Should only be running on Windows") + +@@ -866,3 +871,28 @@ template("win_toolchains") { + } + } + } ++ ++if (is_mingw) { ++ template("mingw_toolchain") { ++ gcc_toolchain("mingw_" + target_name) { ++ forward_variables_from(invoker, "*") ++ if (is_clang) { ++ cc = "clang" ++ cxx = "clang++" ++ } else { ++ cc = "gcc" ++ cxx = "g++" ++ } ++ ld = cxx ++ nm = "nm" ++ ar = "ar" ++ rc = "windres" ++ strip = "strip" ++ enable_linker_map = false ++ toolchain_args = { ++ current_os = "win" ++ current_cpu = toolchain_arch ++ } ++ } ++ } ++} +diff --git a/src/3rdparty/chromium/build/util/lastchange.py b/src/3rdparty/chromium/build/util/lastchange.py +index 4dd828e..4a920c1 100755 +--- a/src/3rdparty/chromium/build/util/lastchange.py ++++ b/src/3rdparty/chromium/build/util/lastchange.py +@@ -201,6 +201,8 @@ def GetGitTopDirectory(source_dir): + Returns: + The output of "git rev-parse --show-toplevel" as a string + """ ++ if sys.platform == 'win32' and 'MINGW' in sys.version: ++ return subprocess.check_output(["cygpath", "-w", directory]).strip(b"\n").decode() + return _RunGitCommand(source_dir, ['rev-parse', '--show-toplevel']) + + +diff --git a/src/3rdparty/chromium/build/win/BUILD.gn b/src/3rdparty/chromium/build/win/BUILD.gn +index 0c47c2c..ce77dd1 100644 +--- a/src/3rdparty/chromium/build/win/BUILD.gn ++++ b/src/3rdparty/chromium/build/win/BUILD.gn +@@ -16,7 +16,7 @@ windows_manifest("default_exe_manifest") { + ] + } + +-if (is_win) { ++if (is_win && !is_mingw) { + assert(host_os != "mac" || target_cpu != "x86", + "Windows cross-builds from Mac must be 64-bit.") + +@@ -78,4 +78,8 @@ if (is_win) { + } + } + } ++} else { ++ group("runtime_libs") { ++ data = [] ++ } + } +--- a/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni ++++ b/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni +@@ -394,7 +394,11 @@ + if (host_os == "win") { + tool_wrapper_path = + rebase_path("//build/toolchain/win/tool_wrapper.py", root_build_dir) ++ if (toolchain_is_mingw) { ++ command = "\"$python_path\" $tool_wrapper_path delete-file-and-run {{output}} $ar {{arflags}} -r -c -D {{output}} @\"$rspfile\"" ++ } else { + command = "cmd /s /c \"\"$python_path\" $tool_wrapper_path delete-file {{output}} && $command\"" ++ } + } else { + command = "rm -f {{output}} && $command" + } +--- a/src/3rdparty/chromium/build/toolchain/win/tool_wrapper.py ++++ b/src/3rdparty/chromium/build/toolchain/win/tool_wrapper.py +@@ -86,6 +86,11 @@ + if os.path.exists(path): + os.unlink(path) +- ++ ++ def ExecDeleteFileAndRun(self, path, *args): ++ """Delete a file before running another tool.""" ++ self.ExecDeleteFile(path) ++ return subprocess.call(args, shell=False) ++ + def ExecRecursiveMirror(self, source, dest): + """Emulates rm -rf out && cp -af in out.""" + if os.path.exists(dest): diff --git a/mingw-w64-qt6-webengine-thirdparty/0003-chromium-base.patch b/mingw-w64-qt6-webengine-thirdparty/0003-chromium-base.patch new file mode 100644 index 0000000000000..3700b2d8bdde8 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0003-chromium-base.patch @@ -0,0 +1,932 @@ +diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn +index 57fd494..3f40725 100644 +--- a/src/3rdparty/chromium/base/BUILD.gn ++++ b/src/3rdparty/chromium/base/BUILD.gn +@@ -108,7 +108,7 @@ if (is_fuchsia) { + import("//third_party/fuchsia-gn-sdk/src/fidl_library.gni") + } + +-if (is_win) { ++if (is_msvc) { + # This is in a separate config so the flags can be applied to dependents. + # ldflags in GN aren't automatically inherited. + config("base_win_linker_flags") { +@@ -126,6 +126,9 @@ if (is_win) { + "/DELAYLOAD:shcore.dll", + ] + } ++} else if (is_mingw) { ++ config("base_win_linker_flags") { ++ } + } + + if (is_android) { +@@ -1959,6 +1962,23 @@ jumbo_component("base") { + "win/wrapped_window_proc.h", + ] + ++ if (is_mingw) { ++ sources -= [ ++ "win/atl.h", # requires ++ "win/atl_throw.cc", # requires ++ "win/atl_throw.h", ++ "win/enum_variant.cc", # requires ++ "win/enum_variant.h", ++ "win/vector.cc", # requires ++ "win/vector.h", ++ ] ++ ++ defines += [ ++ "STRSAFE_NO_DEPRECATE", ++ "__STRSAFE__NO_INLINE", ++ ] ++ } ++ + # winternl.h and NTSecAPI.h have different definitions of UNICODE_STRING. + # There's only one client of NTSecAPI.h in base but several of winternl.h, + # so exclude the NTSecAPI.h one. +@@ -1974,17 +1994,17 @@ jumbo_component("base") { + } + + libs += [ +- "cfgmgr32.lib", +- "ntdll.lib", +- "onecore.lib", +- "pdh.lib", +- "powrprof.lib", +- "propsys.lib", +- "setupapi.lib", +- "shcore.lib", +- "userenv.lib", +- "wbemuuid.lib", +- "winmm.lib", ++ "cfgmgr32", ++ "ntdll", ++ "onecore", ++ "pdh", ++ "powrprof", ++ "propsys", ++ "setupapi", ++ "shcore", ++ "userenv", ++ "wbemuuid", ++ "winmm", + ] + all_dependent_configs += [ + ":base_win_linker_flags", +@@ -2954,14 +2974,18 @@ if (is_win) { + # base/test/data/pe_image. + shared_library("pe_image_test") { + sources = [ "win/pe_image_test.cc" ] +- ldflags = [ +- "/DELAYLOAD:cfgmgr32.dll", +- "/DELAYLOAD:shell32.dll", +- "/SUBSYSTEM:WINDOWS", +- ] ++ if (is_mingw) { ++ ldflags = [ "-mwindows" ] ++ } else { ++ ldflags = [ ++ "/DELAYLOAD:cfgmgr32.dll", ++ "/DELAYLOAD:shell32.dll", ++ "/SUBSYSTEM:WINDOWS", ++ ] ++ } + libs = [ +- "cfgmgr32.lib", +- "shell32.lib", ++ "cfgmgr32", ++ "shell32", + ] + } + +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/win/windows_types.h b/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/win/windows_types.h +index 649a3b7..f17561d 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/win/windows_types.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/win/windows_types.h +@@ -80,12 +80,18 @@ struct PA_CHROME_SRWLOCK { + + // Define some macros needed when prototyping Windows functions. + ++#ifndef DECLSPEC_IMPORT + #define DECLSPEC_IMPORT __declspec(dllimport) ++#endif + #define WINBASEAPI DECLSPEC_IMPORT + #define WINAPI __stdcall + + // Needed for LockImpl. ++#ifdef _MSC_VER + WINBASEAPI _Releases_exclusive_lock_(*SRWLock) VOID WINAPI ++#else ++VOID WINAPI ++#endif + ReleaseSRWLockExclusive(_Inout_ PSRWLOCK SRWLock); + WINBASEAPI BOOLEAN WINAPI TryAcquireSRWLockExclusive(_Inout_ PSRWLOCK SRWLock); + +diff --git a/src/3rdparty/chromium/base/debug/handle_hooks_win.cc b/src/3rdparty/chromium/base/debug/handle_hooks_win.cc +index eb07225..6cb10f9 100644 +--- a/src/3rdparty/chromium/base/debug/handle_hooks_win.cc ++++ b/src/3rdparty/chromium/base/debug/handle_hooks_win.cc +@@ -9,6 +9,8 @@ + #include + #include + ++#include ++ + #include "base/logging.h" + #include "base/memory/raw_ptr.h" + #include "base/numerics/safe_conversions.h" +diff --git a/src/3rdparty/chromium/base/enterprise_util_win.cc b/src/3rdparty/chromium/base/enterprise_util_win.cc +index 1c0965f..39d6ad4 100644 +--- a/src/3rdparty/chromium/base/enterprise_util_win.cc ++++ b/src/3rdparty/chromium/base/enterprise_util_win.cc +@@ -16,14 +16,22 @@ bool IsManagedDevice() { + // they are managed. + // In addition, simply being joined to AAD does not mean the device is being + // managed by the AAD tenant, so checking for AAD join is not included here. ++#if defined(COMPILER_MSVC) + return base::win::IsEnrolledToDomain() || + base::win::IsDeviceRegisteredWithManagement(); ++#else ++ return base::win::IsEnrolledToDomain(); ++#endif + } + + bool IsEnterpriseDevice() { + // Both legacy domain join and AAD join represent machine-wide enterprise + // join. ++#if defined(COMPILER_MSVC) + return base::win::IsEnrolledToDomain() || base::win::IsJoinedToAzureAD(); ++#else ++ return base::win::IsEnrolledToDomain(); ++#endif + } + + } // namespace base +diff --git a/src/3rdparty/chromium/base/export_template.h b/src/3rdparty/chromium/base/export_template.h +index 248d0d9..0914ffe 100644 +--- a/src/3rdparty/chromium/base/export_template.h ++++ b/src/3rdparty/chromium/base/export_template.h +@@ -138,8 +138,10 @@ + + EXPORT_TEMPLATE_TEST(DEFAULT, ); + EXPORT_TEMPLATE_TEST(DEFAULT, __attribute__((visibility("default")))); ++#if defined(_MSC_VER) + EXPORT_TEMPLATE_TEST(EXPORT_DLLEXPORT, __declspec(dllexport)); + EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); ++#endif + + #undef EXPORT_TEMPLATE_TEST + #undef EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT +diff --git a/src/3rdparty/chromium/base/lazy_instance.h b/src/3rdparty/chromium/base/lazy_instance.h +index 865bb4f..31331c4 100644 +--- a/src/3rdparty/chromium/base/lazy_instance.h ++++ b/src/3rdparty/chromium/base/lazy_instance.h +@@ -173,7 +173,7 @@ class LazyInstance { + // MSVC gives a warning that the alignment expands the size of the + // LazyInstance struct to make the size a multiple of the alignment. This + // is expected in this case. +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #pragma warning(push) + #pragma warning(disable : 4324) + #endif +@@ -186,7 +186,7 @@ class LazyInstance { + // Preallocated space for the Type instance. + alignas(Type) char private_buf_[sizeof(Type)]; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #pragma warning(pop) + #endif + +diff --git a/src/3rdparty/chromium/base/memory/aligned_memory.cc b/src/3rdparty/chromium/base/memory/aligned_memory.cc +index 86dd238..9f5ad09 100644 +--- a/src/3rdparty/chromium/base/memory/aligned_memory.cc ++++ b/src/3rdparty/chromium/base/memory/aligned_memory.cc +@@ -22,7 +22,7 @@ void* AlignedAlloc(size_t size, size_t alignment) { + DCHECK(std::has_single_bit(alignment)); + DCHECK_EQ(alignment % sizeof(void*), 0U); + void* ptr = nullptr; +-#if defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + ptr = _aligned_malloc(size, alignment); + #elif BUILDFLAG(IS_ANDROID) + // Android technically supports posix_memalign(), but does not expose it in +diff --git a/src/3rdparty/chromium/base/memory/aligned_memory.h b/src/3rdparty/chromium/base/memory/aligned_memory.h +index 23bbf5c..5413284 100644 +--- a/src/3rdparty/chromium/base/memory/aligned_memory.h ++++ b/src/3rdparty/chromium/base/memory/aligned_memory.h +@@ -18,7 +18,7 @@ + #include "base/containers/span.h" + #include "build/build_config.h" + +-#if defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + #include + #else + #include +@@ -72,7 +72,7 @@ BASE_EXPORT void* AlignedAlloc(size_t size, size_t alignment); + + // Deallocate memory allocated by `AlignedAlloc`. + inline void AlignedFree(void* ptr) { +-#if defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + _aligned_free(ptr); + #else + free(ptr); +diff --git a/src/3rdparty/chromium/base/power_monitor/speed_limit_observer_win.cc b/src/3rdparty/chromium/base/power_monitor/speed_limit_observer_win.cc +index 3cf82bc..9babc2a 100644 +--- a/src/3rdparty/chromium/base/power_monitor/speed_limit_observer_win.cc ++++ b/src/3rdparty/chromium/base/power_monitor/speed_limit_observer_win.cc +@@ -24,7 +24,9 @@ + namespace { + + // From ntdef.f ++#ifndef NT_SUCCESS + #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) ++#endif + + // We poll for new speed-limit values once every second. + constexpr base::TimeDelta kSampleInterval = base::Seconds(1); +diff --git a/src/3rdparty/chromium/base/process/memory_win.cc b/src/3rdparty/chromium/base/process/memory_win.cc +index 059324c..84edeba 100644 +--- a/src/3rdparty/chromium/base/process/memory_win.cc ++++ b/src/3rdparty/chromium/base/process/memory_win.cc +@@ -38,9 +38,13 @@ void EnableTerminationOnHeapCorruption() { + } + + void EnableTerminationOnOutOfMemory() { ++#if defined(COMPILER_GCC) ++ std::set_new_handler(nullptr); ++#else + constexpr int kCallNewHandlerOnAllocationFailure = 1; + _set_new_handler(&ReleaseReservationOrTerminate); + _set_new_mode(kCallNewHandlerOnAllocationFailure); ++#endif + } + + bool UncheckedMalloc(size_t size, void** result) { +diff --git a/src/3rdparty/chromium/base/strings/to_string.h b/src/3rdparty/chromium/base/strings/to_string.h +index 24d48ff..eb2b301 100644 +--- a/src/3rdparty/chromium/base/strings/to_string.h ++++ b/src/3rdparty/chromium/base/strings/to_string.h +@@ -5,6 +5,7 @@ + #ifndef BASE_STRINGS_TO_STRING_H_ + #define BASE_STRINGS_TO_STRING_H_ +- ++ ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.h b/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.h +index bf0f69e..4500f82 100644 +--- a/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.h ++++ b/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.h +@@ -263,11 +263,6 @@ class BASE_EXPORT TlmProvider { + template + struct DataDescCountSum; // undefined + +- template <> +- struct DataDescCountSum<> { +- static constexpr uint8_t value = 0; +- }; +- + template + struct DataDescCountSum { + static constexpr uint8_t value = +@@ -326,6 +321,11 @@ class BASE_EXPORT TlmProvider { + char provider_metadata_[kMaxProviderMetadataSize] = {}; + }; + ++template <> ++struct TlmProvider::DataDescCountSum<> { ++ static constexpr uint8_t value = 0; ++}; ++ + // Base class for field types. + // It's expected that data (name, value) will outlive the TlmFieldBase object. + class BASE_EXPORT TlmFieldBase { +diff --git a/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.cc b/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.cc +index 35c8878..015f33c 100644 +--- a/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.cc ++++ b/src/3rdparty/chromium/base/trace_event/trace_logging_minimal_win.cc +@@ -14,6 +14,18 @@ + #include "base/logging.h" + #include "base/numerics/checked_math.h" + ++#if defined(__MINGW32__) ++#ifndef EventProviderSetTraits ++#define EventProviderSetTraits static_cast(2) ++#endif ++#ifndef EVENT_DATA_DESCRIPTOR_TYPE_EVENT_METADATA ++#define EVENT_DATA_DESCRIPTOR_TYPE_EVENT_METADATA 1 ++#endif ++#ifndef EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA ++#define EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA 2 ++#endif ++#endif ++ + TlmProvider::TlmProvider() noexcept = default; + + TlmProvider::~TlmProvider() { +diff --git a/src/3rdparty/chromium/base/win/variant_vector.h b/src/3rdparty/chromium/base/win/variant_vector.h +index dd59873..3c18601 100644 +--- a/src/3rdparty/chromium/base/win/variant_vector.h ++++ b/src/3rdparty/chromium/base/win/variant_vector.h +@@ -62,7 +62,11 @@ class BASE_EXPORT VariantVector final { + } + AssertVartype(); + ScopedVariant scoped_variant; +- scoped_variant.Set(value); ++ if constexpr (ExpectedVartype == VT_DATE) { ++ scoped_variant.SetDate(value); ++ } else { ++ scoped_variant.Set(value); ++ } + vector_.push_back(std::move(scoped_variant)); + } + +@@ -80,20 +84,6 @@ class BASE_EXPORT VariantVector final { + vector_.push_back(std::move(scoped_variant)); + } + +- // Specialize VT_DATE because ScopedVariant has a separate SetDate method, +- // this is because VT_R8 and VT_DATE share the same underlying type. +- template <> +- void Insert( +- typename internal::VariantConverter::Type value) { +- if (vartype_ == VT_EMPTY) { +- vartype_ = VT_DATE; +- } +- AssertVartype(); +- ScopedVariant scoped_variant; +- scoped_variant.SetDate(value); +- vector_.push_back(std::move(scoped_variant)); +- } +- + // Populates a VARIANT based on what is stored, transferring ownership + // of managed contents. + // This is only valid when the VariantVector is empty or has a single element. +diff --git a/src/3rdparty/chromium/base/win/com_init_balancer.h b/src/3rdparty/chromium/base/win/com_init_balancer.h +index 571f2d7..fd3f6ce 100644 +--- a/src/3rdparty/chromium/base/win/com_init_balancer.h ++++ b/src/3rdparty/chromium/base/win/com_init_balancer.h +@@ -7,7 +7,9 @@ + + #include + #include ++#if defined(COMPILER_MSVC) + #include ++#endif + + #include + +@@ -28,9 +30,13 @@ namespace internal { + // revoke the registered spy and allow for the successful uninitialization of + // the COM library. + class BASE_EXPORT ComInitBalancer ++#if defined(COMPILER_MSVC) + : public Microsoft::WRL::RuntimeClass< + Microsoft::WRL::RuntimeClassFlags, + IInitializeSpy> { ++#else ++ : public IInitializeSpy { ++#endif + public: + // Constructs a COM initialize balancer. |co_init| defines the apartment's + // concurrency model used by the balancer. +@@ -39,7 +45,7 @@ class BASE_EXPORT ComInitBalancer + ComInitBalancer(const ComInitBalancer&) = delete; + ComInitBalancer& operator=(const ComInitBalancer&) = delete; + +- ~ComInitBalancer() override; ++ ~ComInitBalancer(); + + // Disables balancer by revoking the registered spy and consequently + // unblocking attempts to uninitialize the COM library. +@@ -50,12 +56,12 @@ class BASE_EXPORT ComInitBalancer + private: + // IInitializeSpy: + IFACEMETHODIMP PreInitialize(DWORD apartment_type, +- DWORD reference_count) override; ++ DWORD reference_count); + IFACEMETHODIMP PostInitialize(HRESULT result, + DWORD apartment_type, +- DWORD new_reference_count) override; +- IFACEMETHODIMP PreUninitialize(DWORD reference_count) override; +- IFACEMETHODIMP PostUninitialize(DWORD new_reference_count) override; ++ DWORD new_reference_count); ++ IFACEMETHODIMP PreUninitialize(DWORD reference_count); ++ IFACEMETHODIMP PostUninitialize(DWORD new_reference_count); + + const DWORD co_init_; + +diff --git a/src/3rdparty/chromium/base/win/core_winrt_util.h b/src/3rdparty/chromium/base/win/core_winrt_util.h +index 79124a8..e98edac 100644 +--- a/src/3rdparty/chromium/base/win/core_winrt_util.h ++++ b/src/3rdparty/chromium/base/win/core_winrt_util.h +@@ -28,6 +28,7 @@ BASE_EXPORT HRESULT RoActivateInstance(HSTRING class_id, + // Retrieves an activation factory for the type specified. + template + HRESULT GetActivationFactory(InterfaceType** factory) { ++#if defined(COMPILER_MSVC) + ScopedHString class_id_hstring = ScopedHString::Create(runtime_class_id); + if (!class_id_hstring.is_valid()) { + return E_FAIL; +@@ -35,6 +36,7 @@ HRESULT GetActivationFactory(InterfaceType** factory) { + + return base::win::RoGetActivationFactory(class_id_hstring.get(), + IID_PPV_ARGS(factory)); ++#endif + } + + } // namespace base::win +diff --git a/src/3rdparty/chromium/base/win/post_async_results.h b/src/3rdparty/chromium/base/win/post_async_results.h +index 70e132c..2f33d64 100644 +--- a/src/3rdparty/chromium/base/win/post_async_results.h ++++ b/src/3rdparty/chromium/base/win/post_async_results.h +@@ -5,6 +5,8 @@ + #ifndef BASE_WIN_POST_ASYNC_RESULTS_H_ + #define BASE_WIN_POST_ASYNC_RESULTS_H_ + ++#ifdef _MSC_VER ++ + #include + + #include +@@ -350,4 +352,6 @@ HRESULT PostAsyncResults( + } // namespace win + } // namespace base + ++#endif ++ + #endif // BASE_WIN_POST_ASYNC_RESULTS_H_ +diff --git a/src/3rdparty/chromium/base/win/propvarutil.h b/src/3rdparty/chromium/base/win/propvarutil.h +index 41f9659..69809ba 100644 +--- a/src/3rdparty/chromium/base/win/propvarutil.h ++++ b/src/3rdparty/chromium/base/win/propvarutil.h +@@ -11,7 +11,11 @@ + #include "base/win/windows_undefines.inc" + // clang-format on + ++#if defined(COMPILER_MSVC) + #include ++#else ++#include_next ++#endif + + // Undefine the poisonous defines + #include "base/win/windows_undefines.inc" // NOLINT(build/include) +diff --git a/src/3rdparty/chromium/base/win/scoped_com_initializer.cc b/src/3rdparty/chromium/base/win/scoped_com_initializer.cc +index 4c26c94..2effe1f 100644 +--- a/src/3rdparty/chromium/base/win/scoped_com_initializer.cc ++++ b/src/3rdparty/chromium/base/win/scoped_com_initializer.cc +@@ -4,7 +4,9 @@ + + #include "base/win/scoped_com_initializer.h" + ++#if defined(COMPILER_MSVC) + #include ++#endif + + #include + +@@ -48,6 +50,7 @@ DWORD ScopedCOMInitializer::GetCOMBalancerReferenceCountForTesting() const { + void ScopedCOMInitializer::Initialize(COINIT init, + Uninitialization uninitialization) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); ++#if defined(COMPILER_MSVC) + // COINIT_DISABLE_OLE1DDE is always added based on: + // https://docs.microsoft.com/en-us/windows/desktop/learnwin32/initializing-the-com-library + if (uninitialization == Uninitialization::kBlockPremature) { +@@ -73,6 +76,7 @@ void ScopedCOMInitializer::Initialize(COINIT init, + hr_ == HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY)) { + base::win::OnResourceExhausted(); + } ++#endif + } + + } // namespace win +diff --git a/src/3rdparty/chromium/base/win/scoped_variant.cc b/src/3rdparty/chromium/base/win/scoped_variant.cc +index c4b2d06..801b427 100644 +--- a/src/3rdparty/chromium/base/win/scoped_variant.cc ++++ b/src/3rdparty/chromium/base/win/scoped_variant.cc +@@ -107,10 +107,15 @@ VARIANT* ScopedVariant::Receive() { + + VARIANT ScopedVariant::Copy() const { + VARIANT ret = {{{VT_EMPTY}}}; ++#if defined(COMPILER_GCC) // FIXME: VariantCopy is implemented differently ++ ::VariantCopy(&ret, const_cast(&var_)); ++#else + ::VariantCopy(&ret, &var_); ++#endif + return ret; + } + ++ + int ScopedVariant::Compare(const VARIANT& other, bool ignore_case) const { + DCHECK(!V_ISARRAY(&var_)) + << "Comparison is not supported when |this| owns a SAFEARRAY"; +@@ -179,7 +184,15 @@ int ScopedVariant::Compare(const VARIANT& other, bool ignore_case) const { + + // 5. Otherwise returns the lexicographical comparison of the values held by + // the two VARIANTS that share the same VARTYPE. ++#if defined(COMPILER_GCC) // FIXME: VariantCompare is not yet supported ++ PROPVARIANT var1; ++ PROPVARIANT var2; ++ VariantToPropVariant(&var_, &var1); ++ VariantToPropVariant(&other, &var2); ++ return PropVariantCompareEx(var1, var2, PVCU_DEFAULT, PVCHF_DEFAULT); ++#else + return ::VariantCompare(var_, other); ++#endif + } + + void ScopedVariant::Set(const wchar_t* str) { +@@ -291,7 +304,11 @@ void ScopedVariant::Set(SAFEARRAY* array) { + + void ScopedVariant::Set(const VARIANT& var) { + DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt; ++#if defined(COMPILER_GCC) // FIXME: VariantCopy is implemented differently ++ if (FAILED(::VariantCopy(&var_, const_cast(&var)))) { ++#else + if (FAILED(::VariantCopy(&var_, &var))) { ++#endif + DLOG(ERROR) << "VariantCopy failed"; + var_.vt = VT_EMPTY; + } +diff --git a/src/3rdparty/chromium/base/win/shlwapi.h b/src/3rdparty/chromium/base/win/shlwapi.h +index 2ca59ee..8ad4a59 100644 +--- a/src/3rdparty/chromium/base/win/shlwapi.h ++++ b/src/3rdparty/chromium/base/win/shlwapi.h +@@ -11,7 +11,11 @@ + #include "base/win/windows_undefines.inc" + // clang-format on + ++#if defined(COMPILER_MSVC) + #include ++#else ++#include_next ++#endif + + // Undefine the poisonous defines + #include "base/win/windows_undefines.inc" // NOLINT(build/include) +diff --git a/src/3rdparty/chromium/base/win/sphelper.h b/src/3rdparty/chromium/base/win/sphelper.h +index 649dcb0..bc023d3 100644 +--- a/src/3rdparty/chromium/base/win/sphelper.h ++++ b/src/3rdparty/chromium/base/win/sphelper.h +@@ -11,7 +11,11 @@ + #include "base/win/windows_undefines.inc" + // clang-format on + ++#if defined(COMPILER_MSVC) + #include ++#else ++#include_next ++#endif + + // Undefine the poisonous defines + #include "base/win/windows_undefines.inc" // NOLINT(build/include) +diff --git a/src/3rdparty/chromium/base/win/vector.h b/src/3rdparty/chromium/base/win/vector.h +index 7ec11da..cd8d5c3 100644 +--- a/src/3rdparty/chromium/base/win/vector.h ++++ b/src/3rdparty/chromium/base/win/vector.h +@@ -5,6 +5,7 @@ + #ifndef BASE_WIN_VECTOR_H_ + #define BASE_WIN_VECTOR_H_ + ++#if defined(COMPILER_MSVC) + #include + #include + #include +@@ -410,4 +411,6 @@ class Vector + } // namespace win + } // namespace base + ++#endif // COMPILER_MSVC ++ + #endif // BASE_WIN_VECTOR_H_ +diff --git a/src/3rdparty/chromium/base/win/win_util.cc b/src/3rdparty/chromium/base/win/win_util.cc +index 2e0d6cd..c2dd667 100644 +--- a/src/3rdparty/chromium/base/win/win_util.cc ++++ b/src/3rdparty/chromium/base/win/win_util.cc +@@ -20,7 +20,9 @@ + #include + #include + #include ++#if defined(COMPILER_MSVC) + #include ++#endif + #include + #include + #include +@@ -161,6 +163,7 @@ bool* GetDomainEnrollmentStateStorage() { + } + + bool* GetRegisteredWithManagementStateStorage() { ++#if defined(COMPILER_MSVC) + static bool state = [] { + // Mitigate the issues caused by loading DLLs on a background thread + // (http://crbug/973868). +@@ -189,10 +192,14 @@ bool* GetRegisteredWithManagementStateStorage() { + }(); + + return &state; ++#else ++ return nullptr; ++#endif + } + + // TODO (crbug/1300219): return a DSREG_JOIN_TYPE* instead of bool*. + bool* GetAzureADJoinStateStorage() { ++#if defined(COMPILER_MSVC) + static bool state = [] { + base::ElapsedTimer timer; + +@@ -231,6 +238,9 @@ bool* GetAzureADJoinStateStorage() { + return is_aad_joined; + }(); + return &state; ++#else ++ return nullptr; ++#endif + } + + NativeLibrary PinUser32Internal(NativeLibraryLoadError* error) { +@@ -373,6 +383,7 @@ bool IsWindows11TabletMode() { + // Convertible(5), or Detachable(6). + // https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/microsoft-windows-deployment-deviceform + bool& IsDeviceFormConvertible() { ++#if defined(COMPILER_MSVC) + static bool is_convertible = [] { + DWORD deviceForm = DEVICEFAMILYDEVICEFORM_UNKNOWN; + using lpfnRtlGetDeviceFamilyInfo = +@@ -391,6 +402,7 @@ bool& IsDeviceFormConvertible() { + (deviceForm == DEVICEFAMILYDEVICEFORM_DETACHABLE); + }(); + return is_convertible; ++#endif + } + + // Returns a reference to a cached boolean that is true if the device hardware +@@ -549,6 +561,7 @@ bool QueryDeviceConvertibility() { + // it to always return UserInteractionMode_Touch which as per documentation + // indicates tablet mode. + bool IsWindows10TabletMode(HWND hwnd) { ++#if defined(COMPILER_MSVC) + ScopedHString view_settings_guid = ScopedHString::Create( + RuntimeClass_Windows_UI_ViewManagement_UIViewSettings); + Microsoft::WRL::ComPtr view_settings_interop; +@@ -573,6 +586,9 @@ bool IsWindows10TabletMode(HWND hwnd) { + } + + return mode == ABI::Windows::UI::ViewManagement::UserInteractionMode_Touch; ++#else ++ return false; ++#endif + } + + void IsDeviceSlateWithKeyboard(HWND hwnd, +@@ -743,7 +759,9 @@ void SetAbortBehaviorForCrashReporting() { + // Disabling the _CALL_REPORTFAULT behavior is important since otherwise it + // has the sideffect of clearing our exception filter, which means we + // don't get any crash. ++#if defined(COMPILER_MSVC) || (defined(COMPILER_GCC) && defined(_UCRT)) + _set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT); ++#endif + + // Set a SIGABRT handler for good measure. We will crash even if the default + // is left in place, however this allows us to crash earlier. And it also +@@ -904,13 +922,17 @@ bool GetLoadedModulesSnapshot(HANDLE process, std::vector* snapshot) { + } + + void EnableFlicks(HWND hwnd) { ++#if defined(COMPILER_MSVC) + ::RemoveProp(hwnd, MICROSOFT_TABLETPENSERVICE_PROPERTY); ++#endif + } + + void DisableFlicks(HWND hwnd) { ++#if defined(COMPILER_MSVC) + ::SetProp(hwnd, MICROSOFT_TABLETPENSERVICE_PROPERTY, + reinterpret_cast(TABLET_DISABLE_FLICKS | + TABLET_DISABLE_FLICKFALLBACKKEYS)); ++#endif + } + + void EnableHighDPISupport() { +diff --git a/src/3rdparty/chromium/base/win/windows_types.h b/src/3rdparty/chromium/base/win/windows_types.h +index ad294c6..3603342 100644 +--- a/src/3rdparty/chromium/base/win/windows_types.h ++++ b/src/3rdparty/chromium/base/win/windows_types.h +@@ -11,6 +11,8 @@ + // Needed for function prototypes. + #include + #include ++#include // for _SH_DENYNO ++#include + + #include "base/win/win_handle_types.h" + +@@ -22,8 +24,8 @@ extern "C" { + + typedef unsigned long DWORD; // NOLINT(runtime/int) + typedef long LONG; // NOLINT(runtime/int) +-typedef __int64 LONGLONG; +-typedef unsigned __int64 ULONGLONG; ++typedef int64_t LONGLONG; ++typedef uint64_t ULONGLONG; + + #define VOID void + typedef char CHAR; +@@ -32,7 +34,7 @@ typedef long LONG; // NOLINT(runtime/int) + typedef int INT; + typedef unsigned int UINT; + typedef unsigned int* PUINT; +-typedef unsigned __int64 UINT64; ++typedef uint64_t UINT64; + typedef void* LPVOID; + typedef void* PVOID; + typedef void* HANDLE; +@@ -45,11 +47,11 @@ typedef WORD UWORD; + typedef WORD ATOM; + + #if defined(_WIN64) +-typedef __int64 INT_PTR, *PINT_PTR; +-typedef unsigned __int64 UINT_PTR, *PUINT_PTR; ++typedef int64_t INT_PTR, *PINT_PTR; ++typedef uint64_t UINT_PTR, *PUINT_PTR; + +-typedef __int64 LONG_PTR, *PLONG_PTR; +-typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; ++typedef int64_t LONG_PTR, *PLONG_PTR; ++typedef uint64_t ULONG_PTR, *PULONG_PTR; + #else + typedef __w64 int INT_PTR, *PINT_PTR; + typedef __w64 unsigned int UINT_PTR, *PUINT_PTR; +@@ -215,11 +217,30 @@ struct CHROME_MSG { + // Work around there being two slightly different definitions in the SDK. + #define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1) + #endif ++#ifndef TLS_OUT_OF_INDEXES + #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF) ++#endif + #define HTNOWHERE 0 + #define MAX_PATH 260 + #define CS_GLOBALCLASS 0x4000 + ++#ifndef _MSC_VER ++#undef ERROR_SUCCESS ++#undef ERROR_FILE_NOT_FOUND ++#undef ERROR_ACCESS_DENIED ++#undef ERROR_INVALID_HANDLE ++#undef ERROR_SHARING_VIOLATION ++#undef ERROR_LOCK_VIOLATION ++#undef ERROR_MORE_DATA ++#undef REG_BINARY ++#undef REG_NONE ++#undef READ_CONTROL ++#undef SYNCHRONIZE ++#undef HKEY_CLASSES_ROOT ++#undef HKEY_LOCAL_MACHINE ++#undef HKEY_CURRENT_USER ++#endif ++ + #define ERROR_SUCCESS 0L + #define ERROR_FILE_NOT_FOUND 2L + #define ERROR_ACCESS_DENIED 5L +@@ -235,8 +256,12 @@ struct CHROME_MSG { + #define STATUS_PENDING ((DWORD )0x00000103L) + #endif // STATUS_PENDING + #define STILL_ACTIVE STATUS_PENDING ++#ifndef SUCCEEDED + #define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) ++#endif ++#ifndef FAILED + #define FAILED(hr) (((HRESULT)(hr)) < 0) ++#endif + + #define HKEY_CLASSES_ROOT (( HKEY ) (ULONG_PTR)((LONG)0x80000000) ) + #define HKEY_LOCAL_MACHINE (( HKEY ) (ULONG_PTR)((LONG)0x80000002) ) +@@ -257,7 +282,9 @@ struct CHROME_MSG { + + #define STANDARD_RIGHTS_READ (READ_CONTROL) + #define STANDARD_RIGHTS_WRITE (READ_CONTROL) ++#ifndef STANDARD_RIGHTS_ALL + #define STANDARD_RIGHTS_ALL (0x001F0000L) ++#endif + + #define KEY_READ ((STANDARD_RIGHTS_READ |\ + KEY_QUERY_VALUE |\ +@@ -294,18 +321,28 @@ struct CHROME_MSG { + + // Define some macros needed when prototyping Windows functions. + ++#ifndef DECLSPEC_IMPORT + #define DECLSPEC_IMPORT __declspec(dllimport) ++#endif + #define WINBASEAPI DECLSPEC_IMPORT + #define WINUSERAPI DECLSPEC_IMPORT + #define WINAPI __stdcall ++#ifndef APIENTRY + #define APIENTRY WINAPI ++#endif ++#ifndef CALLBACK + #define CALLBACK __stdcall ++#endif + #define NTAPI __stdcall + + typedef INT_PTR(WINAPI* FARPROC)(); + + // Needed for LockImpl. ++#ifdef _MSC_VER + WINBASEAPI _Releases_exclusive_lock_(*SRWLock) VOID WINAPI ++#else ++VOID WINAPI ++#endif + ReleaseSRWLockExclusive(_Inout_ PSRWLOCK SRWLock); + WINBASEAPI BOOLEAN WINAPI TryAcquireSRWLockExclusive(_Inout_ PSRWLOCK SRWLock); + +@@ -371,6 +408,29 @@ inline MSG* ChromeToWindowsType(CHROME_MSG* p) { + // undefined everywhere. As windows.h is removed from more source files we may + // be able to shorten this list. + ++#ifndef _MSC_VER ++#undef CopyFile ++#undef CreateDirectory ++#undef CreateFile ++#undef CreateService ++#undef DeleteFile ++#undef DispatchMessage ++#undef DrawText ++#undef FindFirstFile ++#undef FindNextFile ++#undef GetClassName ++#undef GetCurrentDirectory ++#undef GetCurrentTime ++#undef GetFileAttributes ++#undef GetMessage ++#undef LoadIcon ++#undef PostMessage ++#undef ReplaceFile ++#undef SendMessage ++#undef SendMessageCallback ++#undef SetCurrentDirectory ++#endif ++ + #define CopyFile CopyFileW + #define CreateDirectory CreateDirectoryW + #define CreateFile CreateFileW +diff --git a/src/3rdparty/chromium/base/win/windows_version.cc b/src/3rdparty/chromium/base/win/windows_version.cc +index 42c07eb..5608c1f 100644 +--- a/src/3rdparty/chromium/base/win/windows_version.cc ++++ b/src/3rdparty/chromium/base/win/windows_version.cc +@@ -23,7 +23,7 @@ + #include "base/win/registry.h" + #include "build/build_config.h" + +-#if !defined(__clang__) && _MSC_FULL_VER < 191125507 ++#if !defined(__clang__) && defined(_MSC_VER) && _MSC_FULL_VER < 191125507 + #error VS 2017 Update 3.2 or higher is required + #endif + +diff --git a/src/3rdparty/chromium/base/win/wrapped_window_proc.h b/src/3rdparty/chromium/base/win/wrapped_window_proc.h +index 5cacecb..da200a2 100644 +--- a/src/3rdparty/chromium/base/win/wrapped_window_proc.h ++++ b/src/3rdparty/chromium/base/win/wrapped_window_proc.h +@@ -13,6 +13,7 @@ + #include + + #include "base/base_export.h" ++#include "build/build_config.h" + + namespace base { + namespace win { +diff --git a/src/3rdparty/chromium/base/win/default_apps_util.cc b/src/3rdparty/chromium/base/win/default_apps_util.cc +index 58a6778..ed23f78 100644 +--- a/src/3rdparty/chromium/base/win/default_apps_util.cc ++++ b/src/3rdparty/chromium/base/win/default_apps_util.cc +@@ -34,6 +34,9 @@ class __declspec(uuid("6A283FE2-ECFA-4599-91C4-E80957137B26")) IOpenWithLauncher + int flags) = 0; + }; + ++constexpr IID IID_IOpenWithLauncher = { ++ 0x6a283fe2, 0xecfa, 0x4599, {0x91, 0xc4, 0xe8, 0x09, 0x57, 0x13, 0x7b, 0x26}}; ++ + // Returns the class ID for the "Execute Unknown" class, read from + // `HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\OpenWith`. + // Returns std::nullopt upon failure. +@@ -143,8 +146,9 @@ bool LaunchDefaultAppForFileExtensionSettings( + } + Microsoft::WRL::ComPtr open_with_launcher; + if (FAILED(::CoCreateInstance(*open_with_launcher_clsid, nullptr, +- CLSCTX_LOCAL_SERVER, +- IID_PPV_ARGS(&open_with_launcher)))) { ++ CLSCTX_LOCAL_SERVER, IID_IOpenWithLauncher, ++ reinterpret_cast( ++ open_with_launcher.GetAddressOf())))) { + RecordOpenWithLauncherResult(OpenWithLauncherResult::kComError); + return false; + } diff --git a/mingw-w64-qt6-webengine-thirdparty/0004-chromium-chrome.patch b/mingw-w64-qt6-webengine-thirdparty/0004-chromium-chrome.patch new file mode 100644 index 0000000000000..fda856bcca429 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0004-chromium-chrome.patch @@ -0,0 +1,461 @@ +diff --git a/src/3rdparty/chromium/chrome/BUILD.gn b/src/3rdparty/chromium/chrome/BUILD.gn +index e57b3b3..f0c29de 100644 +--- a/src/3rdparty/chromium/chrome/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/BUILD.gn +@@ -234,6 +234,12 @@ if (!is_android && !is_mac) { + "//third_party/crashpad/crashpad/util", + "//ui/gl", + ] ++ if (is_mingw) { ++ deps -= [ ++ ":copy_first_run", ++ "//chrome/installer/util:did_run_support", ++ ] ++ } + + data_deps = [ + "//chrome/app/version_assembly:version_assembly_manifest", +@@ -449,9 +455,11 @@ if (is_win) { + } + } + +- copy("copy_first_run") { +- sources = [ "app/FirstRun" ] +- outputs = [ "$root_out_dir/First Run" ] ++ if (is_msvc) { ++ copy("copy_first_run") { ++ sources = [ "app/FirstRun" ] ++ outputs = [ "$root_out_dir/First Run" ] ++ } + } + } else if (is_mac) { + chrome_helper_name = chrome_product_full_name + " Helper" +diff --git a/src/3rdparty/chromium/chrome/browser/BUILD.gn b/src/3rdparty/chromium/chrome/browser/BUILD.gn +index a9eabc2..84cfb2b 100644 +--- a/src/3rdparty/chromium/chrome/browser/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/browser/BUILD.gn +@@ -86,16 +86,18 @@ if (is_win) { + # ldflags in GN aren't automatically inherited. + config("browser_win_linker_flags") { + libs = [ +- "credui.lib", +- "cryptui.lib", +- "dwmapi.lib", +- "imm32.lib", # chrome_elf_init.cc +- "netapi32.lib", +- "ndfapi.lib", # For browser/net/net_error_diagnostics_dialog_win.h +- "wbemuuid.lib", # For browser/metrics / +- # antivirus_metrics_provider_win.cc +- ] +- ldflags = [ "/DELAYLOAD:ndfapi.dll" ] ++ "credui", ++ "cryptui", ++ "dwmapi", ++ "imm32", # chrome_elf_init.cc ++ "netapi32", ++ "ndfapi", # For browser/net/net_error_diagnostics_dialog_win.h ++ "wbemuuid", # For browser/metrics / ++ # antivirus_metrics_provider_win.cc ++ ] ++ if (is_msvc) { ++ ldflags = [ "/DELAYLOAD:ndfapi.dll" ] ++ } + } + } + +@@ -5990,7 +5992,7 @@ static_library("browser") { + ] + } + +- if (is_mac || is_win) { ++ if (is_mac || is_msvc) { + sources += [ + "enterprise/platform_auth/platform_auth_navigation_throttle.cc", + "enterprise/platform_auth/platform_auth_navigation_throttle.h", +diff --git a/src/3rdparty/chromium/chrome/browser/feedback/BUILD.gn b/src/3rdparty/chromium/chrome/browser/feedback/BUILD.gn +index c9653d6..7b6bc73 100644 +--- a/src/3rdparty/chromium/chrome/browser/feedback/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/browser/feedback/BUILD.gn +@@ -150,7 +150,7 @@ source_set("feedback_impl") { + "//chromeos/version", + ] + } +- if (is_win || is_mac) { ++ if (is_msvc || is_mac) { + deps += [ "//chrome/browser/updater:browser_updater_client" ] + } + } +diff --git a/src/3rdparty/chromium/chrome/browser/media/router/discovery/BUILD.gn b/src/3rdparty/chromium/chrome/browser/media/router/discovery/BUILD.gn +index 51c2766..6edd2e8 100644 +--- a/src/3rdparty/chromium/chrome/browser/media/router/discovery/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/browser/media/router/discovery/BUILD.gn +@@ -104,7 +104,11 @@ static_library("discovery") { + "discovery_network_list_win.cc", + "discovery_network_list_win.h", + ] +- libs = [ "iphlpapi.lib" ] ++ if (is_msvc) { ++ libs = [ "iphlpapi.lib" ] ++ } else { ++ libs = [ "iphlpapi" ] ++ } + } + } + +diff --git a/src/3rdparty/chromium/chrome/browser/os_crypt/BUILD.gn b/src/3rdparty/chromium/chrome/browser/os_crypt/BUILD.gn +index a1b5fbf..70a47f8 100644 +--- a/src/3rdparty/chromium/chrome/browser/os_crypt/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/browser/os_crypt/BUILD.gn +@@ -77,6 +77,9 @@ source_set("test_support") { + "//chrome/installer/util:work_item", + "//chrome/windows_services/service_program/test_support", + ] ++ if (is_mingw) { ++ deps -= [ "//chrome/installer/util:work_item" ] ++ } + } + + # This binary is launched by the browser tests and makes calls to the app-bound +diff --git a/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn b/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn +index 0ef355d..7e48698 100644 +--- a/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn +@@ -5,7 +5,7 @@ + import("//build/config/chrome_build.gni") + import("//chrome/browser/buildflags.gni") + +-if (is_win || is_mac) { ++if (is_msvc || is_mac) { + source_set("browser_updater_client") { + sources = [ + "browser_updater_client.cc", +diff --git a/src/3rdparty/chromium/chrome/browser/win/conflicts/BUILD.gn b/src/3rdparty/chromium/chrome/browser/win/conflicts/BUILD.gn +index daf7e5b..5dd143f 100644 +--- a/src/3rdparty/chromium/chrome/browser/win/conflicts/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/browser/win/conflicts/BUILD.gn +@@ -30,7 +30,7 @@ source_set("module_info") { + + deps = [ "//base:i18n" ] + +- libs = [ "crypt32.lib" ] ++ libs = [ "crypt32" ] + + if (safe_browsing_mode == 1) { + deps += [ +diff --git a/src/3rdparty/chromium/chrome/chrome_elf/BUILD.gn b/src/3rdparty/chromium/chrome/chrome_elf/BUILD.gn +index a6072f9..41843f8 100644 +--- a/src/3rdparty/chromium/chrome/chrome_elf/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/chrome_elf/BUILD.gn +@@ -79,7 +79,7 @@ shared_library("chrome_elf") { + "//build/config/win:delayloads_not_for_child_dll", + ] + +- if (current_cpu == "x86") { ++ if (is_msvc && current_cpu == "x86") { + # Don"t set an x64 base address (to avoid breaking HE-ASLR). + ldflags = [ "/BASE:0x01c20000" ] + } +@@ -156,8 +156,8 @@ static_library("nt_registry") { + ] + + libs = [ +- "kernel32.lib", +- "ntdll.lib", ++ "kernel32", ++ "ntdll", + ] + } + +diff --git a/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn b/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn +index a0e3912..eef4e9e 100644 +--- a/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn +@@ -75,10 +75,17 @@ source_set("lib") { + "//base", + ] + +- libs = [ +- "crypt32.lib", +- "rpcrt4.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "crypt32.lib", ++ "rpcrt4.lib", ++ ] ++ } else { ++ libs = [ ++ "crypt32", ++ "rpcrt4", ++ ] ++ } + } + + source_set("service_lib") { +diff --git a/src/3rdparty/chromium/chrome/installer/setup/BUILD.gn b/src/3rdparty/chromium/chrome/installer/setup/BUILD.gn +index 06424d7..ee68595 100644 +--- a/src/3rdparty/chromium/chrome/installer/setup/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/installer/setup/BUILD.gn +@@ -7,7 +7,7 @@ import("//build/config/chrome_build.gni") + import("//chrome/process_version_rc_template.gni") + import("//testing/test.gni") + +-if (is_win) { ++if (is_msvc) { + executable("setup") { + sources = [ + "setup.ico", +diff --git a/src/3rdparty/chromium/chrome/installer/util/BUILD.gn b/src/3rdparty/chromium/chrome/installer/util/BUILD.gn +index 64bcc58..b16abcc 100644 +--- a/src/3rdparty/chromium/chrome/installer/util/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/installer/util/BUILD.gn +@@ -7,7 +7,7 @@ import("//build/config/chrome_build.gni") + + import("//testing/test.gni") + +-if (is_win) { ++if (is_msvc) { + source_set("metainstaller_utils") { + sources = [ + "delete_after_reboot_helper.cc", +@@ -112,7 +112,7 @@ static_library("with_no_strings") { + # targets have to be linked together in practice. + allow_circular_includes_from = [ "//chrome/common:constants" ] + +- if (is_win) { ++ if (is_msvc) { + sources = [ + "additional_parameters.cc", + "additional_parameters.h", +@@ -260,7 +260,7 @@ source_set("constants") { + } + } + +-if (is_win) { ++if (is_msvc) { + source_set("did_run_support") { + public = [ "update_did_run_state.h" ] + +diff --git a/src/3rdparty/chromium/chrome/notification_helper/BUILD.gn b/src/3rdparty/chromium/chrome/notification_helper/BUILD.gn +index 0244dc3..fd4a85d 100644 +--- a/src/3rdparty/chromium/chrome/notification_helper/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/notification_helper/BUILD.gn +@@ -8,6 +8,7 @@ import("//chrome/process_version_rc_template.gni") + import("//testing/test.gni") + + executable("notification_helper") { ++ if (is_msvc) { + sources = [ + "notification_helper.cc", + "notification_helper.rc", +@@ -36,6 +37,7 @@ executable("notification_helper") { + ] + + libs = [ "runtimeobject.lib" ] ++ } + } + + source_set("lib") { +@@ -71,6 +73,7 @@ process_version_rc_template("version_resources") { + } + + test("notification_helper_unittests") { ++ if (is_msvc) { + use_xvfb = use_xvfb_in_this_config + + sources = [ +@@ -93,4 +96,5 @@ test("notification_helper_unittests") { + data_deps = [ ":notification_helper" ] + + libs = [ "runtimeobject.lib" ] ++ } + } +diff --git a/src/3rdparty/chromium/chrome/test/BUILD.gn b/src/3rdparty/chromium/chrome/test/BUILD.gn +index fc37f91..b888f6a 100644 +--- a/src/3rdparty/chromium/chrome/test/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/test/BUILD.gn +@@ -849,7 +849,7 @@ static_library("test_support") { + deps += [ "//ui/events:test_support" ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "../browser/webshare/win/fake_buffer.cc", + "../browser/webshare/win/fake_buffer.h", +@@ -6974,7 +6974,7 @@ test("unit_tests") { + deps += [ "//chrome/browser/enterprise/platform_auth:test_utils" ] + } + +- if (is_win || is_mac) { ++ if (is_msvc || is_mac) { + sources += [ + "../browser/updater/browser_updater_client_testutils.cc", + "../browser/updater/browser_updater_client_testutils.h", +@@ -6986,7 +6986,7 @@ test("unit_tests") { + ] + } + +- if (is_win && !is_qtwebengine) { ++ if (is_msvc && !is_qtwebengine) { + assert(toolkit_views) + sources += [ + "../browser/accessibility/live_caption/live_caption_unavailability_notifier_unittest.cc", +@@ -10497,7 +10497,7 @@ if (!is_android) { + ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "base/always_on_top_window_killer_win.cc", + "base/always_on_top_window_killer_win.h", +@@ -11425,7 +11425,7 @@ if (!is_android && !is_chromeos_device && !is_qtwebengine) { + deps += [ "//chrome/browser/ui/signin:interactive_ui_tests" ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "../browser/downgrade/user_data_downgrade_browsertest.cc", + "../browser/net/sandboxed_network_change_notifier_win_browsertest.cc", +diff --git a/src/3rdparty/chromium/chrome/tools/convert_dict/BUILD.gn b/src/3rdparty/chromium/chrome/tools/convert_dict/BUILD.gn +index caef30a..f70a1d7 100644 +--- a/src/3rdparty/chromium/chrome/tools/convert_dict/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/tools/convert_dict/BUILD.gn +@@ -32,6 +32,9 @@ executable("convert_dict") { + + sources = [ "convert_dict.cc" ] + configs += [ "//build/config/compiler:wexit_time_destructors" ] ++ if (is_mingw) { ++ ldflags = [ "-municode" ] ++ } + deps = [ + ":lib", + "//base", +diff --git a/src/3rdparty/chromium/chrome/updater/BUILD.gn b/src/3rdparty/chromium/chrome/updater/BUILD.gn +index 7781c85..67e3819 100644 +--- a/src/3rdparty/chromium/chrome/updater/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/updater/BUILD.gn +@@ -18,7 +18,7 @@ import("//testing/test.gni") + # check that the C++ includes match the build dependency graph. + + group("updater") { +- if (is_win) { ++ if (is_msvc) { + deps = [ "//chrome/updater/win" ] + } + if (is_mac) { +@@ -28,7 +28,7 @@ group("updater") { + deps = [ "//chrome/updater/linux" ] + } + +- if (is_win || is_mac || is_linux) { ++ if (is_msvc || is_mac || is_linux) { + deps += [ + ":updater_license", + "//chrome/updater/test/qualification_app", +@@ -46,7 +46,7 @@ group("updater") { + group("all") { + testonly = true + +- if (is_win || is_mac || is_linux) { ++ if (is_msvc || is_mac || is_linux) { + deps = [ + ":updater", + ":updater_tests", +@@ -58,7 +58,7 @@ group("all") { + } + } + +-if (is_win || is_mac || is_linux) { ++if (is_msvc || is_mac || is_linux) { + action("updater_license") { + script = "//chrome/updater/fix_licenses.py" + deps = [ ":generate_updater_license" ] +@@ -285,7 +285,7 @@ if (is_win || is_mac || is_linux) { + ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "activity_impl_win.cc", + "app/app_install_util_win.cc", +@@ -669,7 +669,7 @@ if (is_win || is_mac || is_linux) { + } + } + +- if (is_linux || is_mac || is_win) { ++ if (is_linux || is_mac || is_msvc) { + crx3("updater_selfupdate_test_crx") { + base_dir = "$root_build_dir" + key = "test/data/selfupdate_test_key.der" +@@ -709,7 +709,7 @@ if (is_win || is_mac || is_linux) { + } + } + +- if (is_win) { ++ if (is_msvc) { + inputs = [ "$root_build_dir/UpdaterSetup_test.exe" ] + deps = [ "//chrome/updater/win/installer:installer_test" ] + +@@ -958,7 +958,7 @@ if (is_win || is_mac || is_linux) { + + defines = [] + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "activity_impl_win_unittest.cc", + "app/app_install_win_unittest.cc", +@@ -1188,7 +1188,7 @@ if (is_win || is_mac || is_linux) { + } + } + +- if (is_win) { ++ if (is_msvc) { + copy("test_service_files") { + testonly = true + sources = [ +@@ -1235,7 +1235,7 @@ if (is_win || is_mac || is_linux) { + "//third_party/updater:old_updater", + ] + } +- if (is_win) { ++ if (is_msvc) { + deps += [ "//chrome/installer/util:with_no_strings" ] + data_deps = [ + ":test_service_files", +@@ -1276,7 +1276,7 @@ if (is_win || is_mac || is_linux) { + "//third_party/updater:old_updater", + ] + } +- if (is_win) { ++ if (is_msvc) { + deps += [ "//chrome/installer/util:with_no_strings" ] + data_deps += [ + ":test_service_files", +@@ -1289,7 +1289,7 @@ if (is_win || is_mac || is_linux) { + } + } + +- if (is_win) { ++ if (is_msvc) { + group("updater_tests_win_uac") { + testonly = true + data = [ "//testing/scripts/run_telemetry_as_googletest.py" ] +diff --git a/src/3rdparty/chromium/chrome/windows_services/service_program/test_support/BUILD.gn b/src/3rdparty/chromium/chrome/windows_services/service_program/test_support/BUILD.gn +index 5adccba..9fa0034 100644 +--- a/src/3rdparty/chromium/chrome/windows_services/service_program/test_support/BUILD.gn ++++ b/src/3rdparty/chromium/chrome/windows_services/service_program/test_support/BUILD.gn +@@ -28,6 +28,9 @@ source_set("test_support") { + "//chrome/windows_services/service_program:constants", + "//testing/gtest", + ] ++ if (is_mingw){ ++ deps -= [ "//chrome/installer/util:work_item" ] ++ } + } + + source_set("unit_tests") { diff --git a/mingw-w64-qt6-webengine-thirdparty/0005-chromium-components.patch b/mingw-w64-qt6-webengine-thirdparty/0005-chromium-components.patch new file mode 100644 index 0000000000000..f22c068737b0a --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0005-chromium-components.patch @@ -0,0 +1,270 @@ +diff --git a/src/3rdparty/chromium/components/download/internal/common/base_file.cc b/src/3rdparty/chromium/components/download/internal/common/base_file.cc +index 23323c5..9c6d167 100644 +--- a/src/3rdparty/chromium/components/download/internal/common/base_file.cc ++++ b/src/3rdparty/chromium/components/download/internal/common/base_file.cc +@@ -275,7 +275,11 @@ DownloadInterruptReason BaseFile::Rename(const base::FilePath& new_path) { + + // A simple rename wouldn't work here since we want the file to have + // permissions / security descriptors that makes sense in the new directory. ++#if BUILDFLAG(IS_MINGW) ++ return DOWNLOAD_INTERRUPT_REASON_NONE; ++#else + rename_result = MoveFileAndAdjustPermissions(new_path); ++#endif + } + + CONDITIONAL_TRACE(END0("download", "DownloadFileRename")); +diff --git a/src/3rdparty/chromium/components/download/internal/common/base_file_win.cc b/src/3rdparty/chromium/components/download/internal/common/base_file_win.cc +index 2892a83..c1b4d0f 100644 +--- a/src/3rdparty/chromium/components/download/internal/common/base_file_win.cc ++++ b/src/3rdparty/chromium/components/download/internal/common/base_file_win.cc +@@ -11,7 +11,9 @@ + + #include + #include ++#if defined(COMPILER_MSVC) + #include ++#endif + + #include "base/threading/scoped_blocking_call.h" + #include "base/win/com_init_util.h" +@@ -144,9 +146,13 @@ DownloadInterruptReason HRESULTToDownloadInterruptReason(HRESULT hr) { + } + + class FileOperationProgressSink ++#if defined(COMPILER_MSVC) + : public Microsoft::WRL::RuntimeClass< + Microsoft::WRL::RuntimeClassFlags, + IFileOperationProgressSink> { ++#else ++ : public IFileOperationProgressSink { ++#endif + public: + FileOperationProgressSink() = default; + +@@ -229,7 +235,7 @@ class FileOperationProgressSink + IFACEMETHODIMP UpdateProgress(UINT, UINT) override { return S_OK; } + + protected: +- ~FileOperationProgressSink() override = default; ++ ~FileOperationProgressSink() = default; + + private: + HRESULT result_ = S_OK; +@@ -237,6 +243,7 @@ class FileOperationProgressSink + + } // namespace + ++#if defined(COMPILER_MSVC) + // Renames a file using IFileOperation::MoveItem() to ensure that the target + // file gets the correct default security descriptor in the new path. + // Returns a network error, or net::OK for success. +@@ -305,5 +312,6 @@ DownloadInterruptReason BaseFile::MoveFileAndAdjustPermissions( + + return interrupt_reason; + } ++#endif + + } // namespace download +diff --git a/src/3rdparty/chromium/components/history/core/browser/web_history_service.cc b/src/3rdparty/chromium/components/history/core/browser/web_history_service.cc +index 17a22c9..faea3b3 100644 +--- a/src/3rdparty/chromium/components/history/core/browser/web_history_service.cc ++++ b/src/3rdparty/chromium/components/history/core/browser/web_history_service.cc +@@ -61,11 +61,12 @@ const char kHistoryAudioHistoryChangeUrl[] = + const char kQueryWebAndAppActivityUrl[] = + "https://history.google.com/history/api/lookup?client=web_app"; + +-const char kQueryOtherFormsOfBrowsingHistoryUrlSuffix[] = "/historystatus"; +- + const char kPostDataMimeType[] = "text/plain"; + ++#if !defined(TOOLKIT_QT) ++const char kQueryOtherFormsOfBrowsingHistoryUrlSuffix[] = "/historystatus"; + const char kSyncProtoMimeType[] = "application/octet-stream"; ++#endif + + // The maximum number of retries for the SimpleURLLoader requests. + const size_t kMaxRetries = 1; +diff --git a/src/3rdparty/chromium/components/metrics/BUILD.gn b/src/3rdparty/chromium/components/metrics/BUILD.gn +index 00a94a8..8987095 100644 +--- a/src/3rdparty/chromium/components/metrics/BUILD.gn ++++ b/src/3rdparty/chromium/components/metrics/BUILD.gn +@@ -320,7 +320,11 @@ if (!is_cronet_build || is_ios) { + "system_session_analyzer/system_session_analyzer_win.cc", + "system_session_analyzer/system_session_analyzer_win.h", + ] +- libs = [ "wevtapi.lib" ] ++ if (is_msvc) { ++ libs = [ "wevtapi.lib" ] ++ } else { ++ libs = [ "wevtapi" ] ++ } + } else { + sources += [ "machine_id_provider_nonwin.cc" ] + } +diff --git a/src/3rdparty/chromium/components/metrics/metrics_state_manager.cc b/src/3rdparty/chromium/components/metrics/metrics_state_manager.cc +index 125faac..0540396 100644 +--- a/src/3rdparty/chromium/components/metrics/metrics_state_manager.cc ++++ b/src/3rdparty/chromium/components/metrics/metrics_state_manager.cc +@@ -89,12 +89,14 @@ std::unique_ptr NoOpLoadClientInfoBackup() { + return nullptr; + } + ++#if !defined(TOOLKIT_QT) + // Exits the browser with a helpful error message if an invalid, + // field-trial-related command-line flag was specified. + void ExitWithMessage(const std::string& message) { + puts(message.c_str()); + exit(1); + } ++#endif + + // Returns a log normal distribution based on the feature params of + // |kNonUniformityValidationFeature|. +diff --git a/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn b/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn +index ff1e356..7f1bb84 100644 +--- a/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn ++++ b/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn +@@ -41,7 +41,11 @@ component("sync") { + } else if (is_win) { + sources += [ "os_crypt_win.cc" ] + deps += [ "//components/version_info" ] +- libs = [ "crypt32.lib" ] ++ if (is_msvc) { ++ libs = [ "crypt32.lib" ] ++ } else { ++ libs = [ "crypt32" ] ++ } + } else if (is_linux && !is_castos) { + sources += [ + "key_storage_config_linux.cc", +diff --git a/src/3rdparty/chromium/components/policy/core/common/BUILD.gn b/src/3rdparty/chromium/components/policy/core/common/BUILD.gn +index 0aabcd7..53dd743 100644 +--- a/src/3rdparty/chromium/components/policy/core/common/BUILD.gn ++++ b/src/3rdparty/chromium/components/policy/core/common/BUILD.gn +@@ -271,13 +271,23 @@ jumbo_source_set("internal") { + "scoped_critical_policy_section.cc", + "scoped_critical_policy_section.h", + ] +- libs = [ +- "netapi32.lib", +- "ntdsapi.lib", +- "secur32.lib", +- "shlwapi.lib", +- "userenv.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "netapi32.lib", ++ "ntdsapi.lib", ++ "secur32.lib", ++ "shlwapi.lib", ++ "userenv.lib", ++ ] ++ } else { ++ libs = [ ++ "netapi32", ++ "ntdsapi", ++ "secur32", ++ "shlwapi", ++ "userenv", ++ ] ++ } + } + + if (is_win || is_mac || is_linux) { +diff --git a/src/3rdparty/chromium/components/signin/public/identity_manager/identity_manager_builder.cc b/src/3rdparty/chromium/components/signin/public/identity_manager/identity_manager_builder.cc +index 31dd246..38a114b 100644 +--- a/src/3rdparty/chromium/components/signin/public/identity_manager/identity_manager_builder.cc ++++ b/src/3rdparty/chromium/components/signin/public/identity_manager/identity_manager_builder.cc +@@ -77,6 +77,7 @@ std::unique_ptr BuildAccountsMutator( + #endif + } + ++#if !defined(TOOLKIT_QT) + std::unique_ptr BuildAccountFetcherService( + SigninClient* signin_client, + ProfileOAuth2TokenService* token_service, +@@ -91,6 +92,7 @@ std::unique_ptr BuildAccountFetcherService( + std::move(account_capabilities_fetcher_factory)); + return account_fetcher_service; + } ++#endif + + } // anonymous namespace + +diff --git a/src/3rdparty/chromium/components/storage_monitor/portable_device_watcher_win.cc b/src/3rdparty/chromium/components/storage_monitor/portable_device_watcher_win.cc +index 27373c7..8583db9 100644 +--- a/src/3rdparty/chromium/components/storage_monitor/portable_device_watcher_win.cc ++++ b/src/3rdparty/chromium/components/storage_monitor/portable_device_watcher_win.cc +@@ -11,6 +11,7 @@ + #include + + #include ++#include // for WPD_* inits + #include + #include + +diff --git a/src/3rdparty/chromium/components/system_media_controls/BUILD.gn b/src/3rdparty/chromium/components/system_media_controls/BUILD.gn +index b5d84cc..b0f242d 100644 +--- a/src/3rdparty/chromium/components/system_media_controls/BUILD.gn ++++ b/src/3rdparty/chromium/components/system_media_controls/BUILD.gn +@@ -38,7 +38,7 @@ component("system_media_controls") { + + public_deps = [ "//skia" ] + +- if (is_win) { ++ if (is_msvc) { + sources = [ + "win/system_media_controls_win.cc", + "win/system_media_controls_win.h", +diff --git a/src/3rdparty/chromium/components/variations/seed_response.h b/src/3rdparty/chromium/components/variations/seed_response.h +index 6f7b586..7a53f65 100644 +--- a/src/3rdparty/chromium/components/variations/seed_response.h ++++ b/src/3rdparty/chromium/components/variations/seed_response.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_VARIATIONS_SEED_RESPONSE_H_ + #define COMPONENTS_VARIATIONS_SEED_RESPONSE_H_ + ++#include + #include + + #include "base/component_export.h" +diff --git a/src/3rdparty/chromium/components/viz/service/gl/gpu_service_impl.cc b/src/3rdparty/chromium/components/viz/service/gl/gpu_service_impl.cc +index 7d85b1f..64e3982 100644 +--- a/src/3rdparty/chromium/components/viz/service/gl/gpu_service_impl.cc ++++ b/src/3rdparty/chromium/components/viz/service/gl/gpu_service_impl.cc +@@ -478,6 +478,6 @@ void GpuServiceImpl::InitializeWithHost( + shared_image_manager, scheduler, shutdown_event); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // shared_image_d3d must be initialized after we call + // InitializeWithHostInternal as that is where the shared context state is + // created. +diff --git a/src/3rdparty/chromium/components/wifi/BUILD.gn b/src/3rdparty/chromium/components/wifi/BUILD.gn +index 61361ec..2b0c4ac 100644 +--- a/src/3rdparty/chromium/components/wifi/BUILD.gn ++++ b/src/3rdparty/chromium/components/wifi/BUILD.gn +@@ -23,7 +23,7 @@ jumbo_component("wifi") { + + if (is_win) { + sources += [ "wifi_service_win.cc" ] +- libs = [ "iphlpapi.lib" ] ++ libs = [ "iphlpapi" ] + deps += [ + "//third_party/libxml:xml_reader", # Safe, data come from system. + "//third_party/libxml:xml_writer", +diff --git a/src/3rdparty/chromium/components/winhttp/BUILD.gn b/src/3rdparty/chromium/components/winhttp/BUILD.gn +index 79cd4d7..b94ae32 100644 +--- a/src/3rdparty/chromium/components/winhttp/BUILD.gn ++++ b/src/3rdparty/chromium/components/winhttp/BUILD.gn +@@ -30,7 +30,7 @@ static_library("winhttp") { + + defines = [ "SECURITY_WIN32" ] + +- libs = [ "winhttp.lib" ] ++ libs = [ "winhttp" ] + } + + source_set("unit_tests") { diff --git a/mingw-w64-qt6-webengine-thirdparty/0006-chromium-content.patch b/mingw-w64-qt6-webengine-thirdparty/0006-chromium-content.patch new file mode 100644 index 0000000000000..d813054c4c9e5 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0006-chromium-content.patch @@ -0,0 +1,431 @@ +diff --git a/src/3rdparty/chromium/content/app/content_main.cc b/src/3rdparty/chromium/content/app/content_main.cc +index c18a42c..685fc92 100644 +--- a/src/3rdparty/chromium/content/app/content_main.cc ++++ b/src/3rdparty/chromium/content/app/content_main.cc +@@ -59,7 +59,9 @@ + #include "base/win/process_startup_helper.h" + #include "base/win/win_util.h" + #include "base/win/windows_version.h" ++#if defined(COMPILER_MSVC) + #include "ui/base/win/atl_module.h" ++#endif + #include "ui/gfx/switches.h" + #endif + +@@ -244,7 +246,9 @@ NO_STACK_PROTECTOR int RunContentProcess( + + #if BUILDFLAG(IS_WIN) + base::win::RegisterInvalidParamHandler(); ++#if defined(COMPILER_MSVC) + ui::win::CreateATLModuleIfNeeded(); ++#endif + #endif // BUILDFLAG(IS_WIN) + + #if !BUILDFLAG(IS_ANDROID) +diff --git a/src/3rdparty/chromium/content/browser/BUILD.gn b/src/3rdparty/chromium/content/browser/BUILD.gn +index 549fb4b..124da79 100644 +--- a/src/3rdparty/chromium/content/browser/BUILD.gn ++++ b/src/3rdparty/chromium/content/browser/BUILD.gn +@@ -3027,6 +3027,24 @@ jumbo_source_set("browser") { + "speech/tts_win_utils.h", + "utility_sandbox_delegate_win.cc", + ] ++ if (is_mingw) { ++ sources -= [ ++ "installedapp/fetch_related_win_apps_task.cc", ++ "installedapp/fetch_related_win_apps_task.h", ++ "installedapp/native_win_app_fetcher.h", ++ "installedapp/native_win_app_fetcher_impl.cc", ++ "installedapp/native_win_app_fetcher_impl.h", ++ "renderer_host/direct_manipulation_event_handler_win.cc", ++ "renderer_host/direct_manipulation_event_handler_win.h", ++ "renderer_host/direct_manipulation_helper_win.cc", ++ "renderer_host/direct_manipulation_helper_win.h", ++ "renderer_host/input/stylus_handwriting_callback_sink_win.cc", ++ "renderer_host/input/stylus_handwriting_callback_sink_win.h", ++ "renderer_host/input/stylus_handwriting_controller_win.cc", ++ "renderer_host/input/stylus_handwriting_controller_win.h", ++ "speech/tts_win.cc", ++ ] ++ } + deps += [ + "//components/app_launch_prefetch", + "//content/utility:delegate_data", +@@ -3035,17 +3053,31 @@ jumbo_source_set("browser") { + "//third_party/isimpledom", + "//third_party/wtl", + ] +- libs += [ +- "comctl32.lib", +- "dinput8.lib", +- "dwmapi.lib", +- "dxguid.lib", +- "imm32.lib", +- "oleacc.lib", +- "portabledeviceguids.lib", +- "uiautomationcore.lib", +- "wtsapi32.lib", +- ] ++ if (is_msvc) { ++ libs += [ ++ "comctl32.lib", ++ "dinput8.lib", ++ "dwmapi.lib", ++ "dxguid.lib", ++ "imm32.lib", ++ "oleacc.lib", ++ "portabledeviceguids.lib", ++ "uiautomationcore.lib", ++ "wtsapi32.lib", ++ ] ++ } else { ++ libs += [ ++ "comctl32", ++ "dinput8", ++ "dwmapi", ++ "dxguid", ++ "imm32", ++ "oleacc", ++ "portabledeviceguids", ++ "uiautomationcore", ++ "wtsapi32", ++ ] ++ } + + if (is_qtwebengine) { + sources -= [ "accessibility/browser_accessibility_state_impl_win.cc" ] +diff --git a/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc b/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc +index 4173704..0762c4d 100644 +--- a/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc ++++ b/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc +@@ -47,10 +47,10 @@ InstalledAppProviderImpl::InstalledAppProviderImpl( + RenderFrameHost& render_frame_host, + mojo::PendingReceiver pending_receiver) + : DocumentService(render_frame_host, std::move(pending_receiver)) { +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + native_win_app_fetcher_factory_ = + base::BindRepeating(&CreateNativeWinAppFetcher); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + } + + InstalledAppProviderImpl::~InstalledAppProviderImpl() = default; +@@ -70,13 +70,13 @@ void InstalledAppProviderImpl::FilterInstalledApps( + + base::ConcurrentCallbacks concurrent; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + if (base::FeatureList::IsEnabled(::features::kFilterInstalledAppsWinMatching)) { + StartTask(std::make_unique( + native_win_app_fetcher_factory_.Run()), + related_apps, concurrent.CreateCallback()); + } +-#endif ++#endif // BUILDFLAG(IS_MSVC) + + #if !BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled( +@@ -140,13 +140,13 @@ void InstalledAppProviderImpl::AggregateTaskResults( + return std::move(callback).Run(mojo::Clone(matched_apps)); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void InstalledAppProviderImpl::SetNativeWinAppFetcherFactoryForTesting( + base::RepeatingCallback()> factory) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); + native_win_app_fetcher_factory_ = std::move(factory); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + // static +diff --git a/src/3rdparty/chromium/content/browser/browser_main_loop.cc b/src/3rdparty/chromium/content/browser/browser_main_loop.cc +index 91a48be..583a864 100644 +--- a/src/3rdparty/chromium/content/browser/browser_main_loop.cc ++++ b/src/3rdparty/chromium/content/browser/browser_main_loop.cc +@@ -1213,7 +1213,7 @@ void BrowserMainLoop::ShutdownThreadsAndCleanUp() { + // On windows, the monitor needs to be destroyed on the same thread + // as they were created. On Linux, the monitor will be deleted when IO thread + // goes away. +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + system_message_window_.reset(); + #endif + +@@ -1388,7 +1388,7 @@ void BrowserMainLoop::PostCreateThreadsImpl() { + #endif + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + if (!base::FeatureList::IsEnabled( + video_capture::features::kWinCameraMonitoringInVideoCaptureService)) { + system_message_window_ = std::make_unique(); +diff --git a/src/3rdparty/chromium/content/browser/devtools/devtools_pipe_handler.cc b/src/3rdparty/chromium/content/browser/devtools/devtools_pipe_handler.cc +index 5b1a74b..fc47fb7 100644 +--- a/src/3rdparty/chromium/content/browser/devtools/devtools_pipe_handler.cc ++++ b/src/3rdparty/chromium/content/browser/devtools/devtools_pipe_handler.cc +@@ -97,7 +97,7 @@ class PipeIOBase { + base::AtomicFlag shutting_down_; + }; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Temporary CRT parameter validation error handler override that allows + // _get_osfhandle() to return INVALID_HANDLE_VALUE instead of crashing. + class ScopedInvalidParameterHandlerOverride { +@@ -129,7 +129,7 @@ class ScopedInvalidParameterHandlerOverride { + const _invalid_parameter_handler prev_invalid_parameter_handler_; + }; + +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + } // namespace + +@@ -141,7 +141,9 @@ class PipeReaderBase : public PipeIOBase { + devtools_handler_(std::move(devtools_handler)), + read_fd_(read_fd) { + #if BUILDFLAG(IS_WIN) ++#if defined(COMPILER_MSVC) + ScopedInvalidParameterHandlerOverride invalid_parameter_handler_override; ++#endif + read_handle_ = reinterpret_cast(_get_osfhandle(read_fd)); + #endif + } +@@ -158,7 +160,9 @@ class PipeReaderBase : public PipeIOBase { + #if BUILDFLAG(IS_WIN) + // Cancel pending synchronous read. + CancelIoEx(read_handle_, nullptr); ++#if defined(COMPILER_MSVC) + ScopedInvalidParameterHandlerOverride invalid_parameter_handler_override; ++#endif + _close(read_fd_); + read_handle_ = INVALID_HANDLE_VALUE; + #else +@@ -225,7 +229,9 @@ class PipeWriterBase : public PipeIOBase { + explicit PipeWriterBase(int write_fd) + : PipeIOBase("DevToolsPipeHandlerWriteThread"), write_fd_(write_fd) { + #if BUILDFLAG(IS_WIN) ++#if defined(COMPILER_MSVC) + ScopedInvalidParameterHandlerOverride invalid_parameter_handler_override; ++#endif + write_handle_ = reinterpret_cast(_get_osfhandle(write_fd)); + #endif + } +@@ -241,7 +247,9 @@ class PipeWriterBase : public PipeIOBase { + protected: + void ClosePipe() override { + #if BUILDFLAG(IS_WIN) ++#if defined(COMPILER_MSVC) + ScopedInvalidParameterHandlerOverride invalid_parameter_handler_override; ++#endif + _close(write_fd_); + write_handle_ = INVALID_HANDLE_VALUE; + #else +diff --git a/src/3rdparty/chromium/content/browser/media/capture/desktop_capture_device.cc b/src/3rdparty/chromium/content/browser/media/capture/desktop_capture_device.cc +index 60eabf1..44191cb 100644 +--- a/src/3rdparty/chromium/content/browser/media/capture/desktop_capture_device.cc ++++ b/src/3rdparty/chromium/content/browser/media/capture/desktop_capture_device.cc +@@ -754,7 +754,7 @@ std::unique_ptr DesktopCaptureDevice::Create( + std::unique_ptr capturer; + std::unique_ptr result; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + options.set_allow_cropping_window_capturer(true); + + // We prefer to allow the WGC and DXGI capturers to embed the cursor when +diff --git a/src/3rdparty/chromium/content/browser/media/key_system_support_win.cc b/src/3rdparty/chromium/content/browser/media/key_system_support_win.cc +index 40dc117..74e0b6b 100644 +--- a/src/3rdparty/chromium/content/browser/media/key_system_support_win.cc ++++ b/src/3rdparty/chromium/content/browser/media/key_system_support_win.cc +@@ -66,6 +66,7 @@ void GetMediaFoundationServiceCdmCapability( + media::CdmCapabilityCB cdm_capability_cb) { + DVLOG(3) << __func__ << ": key_system=" << key_system + << ", is_hw_secure=" << is_hw_secure; ++#if defined(COMPILER_MSVC) + if (!media::MediaFoundationCdm::IsAvailable()) { + DVLOG(1) << "MediaFoundationCdm not available!"; + std::move(cdm_capability_cb) +@@ -87,6 +88,13 @@ void GetMediaFoundationServiceCdmCapability( + media::CdmCapabilityQueryStatus::kDisconnectionError), + base::unexpected( + media::CdmCapabilityQueryStatus::kDisconnectionError)))); ++#else ++ DVLOG(1) << "MediaFoundationCdm not available!"; ++ std::move(cdm_capability_cb) ++ .Run(base::unexpected( ++ media::CdmCapabilityQueryStatus::kMediaFoundationCdmNotSupported)); ++ return; ++#endif + } + + } // namespace content +diff --git a/src/3rdparty/chromium/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc b/src/3rdparty/chromium/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc +index b76c20f..201427a 100644 +--- a/src/3rdparty/chromium/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc ++++ b/src/3rdparty/chromium/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc +@@ -37,7 +37,9 @@ + #include "third_party/blink/public/common/font_unique_name_lookup/font_unique_name_table.pb.h" + #include "third_party/blink/public/common/font_unique_name_lookup/icu_fold_case_util.h" + #include "ui/gfx/win/direct_write.h" ++#if defined(COMPILER_MSVC) + #include "ui/gfx/win/text_analysis_source.h" ++#endif + + namespace mswr = Microsoft::WRL; + +@@ -110,6 +112,7 @@ bool CheckRequiredStylesPresent(IDWriteFontCollection* collection, + return true; + } + ++#if defined(COMPILER_MSVC) + HRESULT GetLocalFontCollection(mswr::ComPtr& factory, + IDWriteFontCollection** collection) { + if (!g_sideloaded_fonts) { +@@ -176,6 +179,7 @@ HRESULT GetLocalFontCollection(mswr::ComPtr& factory, + hr = collection1->QueryInterface(collection); + return hr; + } ++#endif + + } // namespace + +@@ -363,6 +367,7 @@ void DWriteFontProxyImpl::MapCharacters( + } + } + ++#if defined(COMPILER_MSVC) + mswr::ComPtr mapped_font; + + mswr::ComPtr number_substitution; +@@ -444,6 +449,7 @@ void DWriteFontProxyImpl::MapCharacters( + // Could not find a matching family + DCHECK_EQ(result->family_index, UINT32_MAX); + DCHECK_GT(result->mapped_length, 0u); ++#endif + } + + void DWriteFontProxyImpl::MatchUniqueFont( +@@ -568,7 +574,11 @@ void DWriteFontProxyImpl::InitializeDirectWrite() { + + // Normally identical to factory_->GetSystemFontCollection() unless a + // sideloaded font has been added using SideLoadFontForTesting(). ++#if defined(COMPILER_MSVC) + HRESULT hr = GetLocalFontCollection(factory3_, &collection_); ++#else ++ HRESULT hr = factory_->GetSystemFontCollection(&collection_); ++#endif + DCHECK(SUCCEEDED(hr)); + + if (!collection_) { +diff --git a/src/3rdparty/chromium/content/browser/renderer_host/media/media_stream_manager.cc b/src/3rdparty/chromium/content/browser/renderer_host/media/media_stream_manager.cc +index 76af8e6..855394c 100644 +--- a/src/3rdparty/chromium/content/browser/renderer_host/media/media_stream_manager.cc ++++ b/src/3rdparty/chromium/content/browser/renderer_host/media/media_stream_manager.cc +@@ -1560,6 +1560,7 @@ MediaStreamManager::MediaStreamManager( + + DCHECK(audio_system_); + ++#if !BUILDFLAG(IS_MINGW) + if (!video_capture_provider) { + scoped_refptr device_task_runner; + +@@ -1606,6 +1607,7 @@ MediaStreamManager::MediaStreamManager( + #endif + } + InitializeMaybeAsync(std::move(video_capture_provider)); ++#endif + + audio_service_listener_ = std::make_unique(); + +diff --git a/src/3rdparty/chromium/content/browser/speech/tts_platform_impl.cc b/src/3rdparty/chromium/content/browser/speech/tts_platform_impl.cc +index 2a2c892..c024903 100644 +--- a/src/3rdparty/chromium/content/browser/speech/tts_platform_impl.cc ++++ b/src/3rdparty/chromium/content/browser/speech/tts_platform_impl.cc +@@ -21,7 +21,7 @@ TtsPlatform* TtsPlatform::GetInstance() { + return result; + #endif + +-#if BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MINGW) + // On Chrome OS, the platform TTS definition is provided by the content + // client. + // +diff --git a/src/3rdparty/chromium/content/child/BUILD.gn b/src/3rdparty/chromium/content/child/BUILD.gn +index bd706e8..740c856 100644 +--- a/src/3rdparty/chromium/content/child/BUILD.gn ++++ b/src/3rdparty/chromium/content/child/BUILD.gn +@@ -143,7 +143,15 @@ target(link_target_type, "child") { + ] + } + +- if (is_win) { ++ if (is_mingw) { ++ sources += [ ++ "font_warmup_win.cc", ++ "font_warmup_win.h", ++ ] ++ libs = [ "dwrite" ] ++ } ++ ++ if (is_msvc) { + sources += [ + "child_process_sandbox_support_impl_win.cc", + "child_process_sandbox_support_impl_win.h", +diff --git a/src/3rdparty/chromium/content/gpu/gpu_main.cc b/src/3rdparty/chromium/content/gpu/gpu_main.cc +index 5480d56..262b618 100644 +--- a/src/3rdparty/chromium/content/gpu/gpu_main.cc ++++ b/src/3rdparty/chromium/content/gpu/gpu_main.cc +@@ -240,7 +240,7 @@ int GpuMain(MainFunctionParams parameters) { + + base::TimeTicks start_time = base::TimeTicks::Now(); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + base::win::EnableHighDPISupport(); + + // Prevent Windows from displaying a modal dialog on failures like not being +diff --git a/src/3rdparty/chromium/content/shell/BUILD.gn b/src/3rdparty/chromium/content/shell/BUILD.gn +index 72300bf..3deb882 100644 +--- a/src/3rdparty/chromium/content/shell/BUILD.gn ++++ b/src/3rdparty/chromium/content/shell/BUILD.gn +@@ -1085,7 +1085,7 @@ group("content_shell_crash_test") { + "//components/crash/content/tools/dmp2minidump.py", + ] + } +- if (is_win) { ++ if (is_msvc) { + data_deps += [ "//build/win:copy_cdb_to_output" ] + } + if (is_posix) { +diff --git a/src/3rdparty/chromium/content/utility/services.cc b/src/3rdparty/chromium/content/utility/services.cc +index 8624628..0f87d29 100644 +--- a/src/3rdparty/chromium/content/utility/services.cc ++++ b/src/3rdparty/chromium/content/utility/services.cc +@@ -307,7 +307,7 @@ RunMediaFoundationServiceBroker( + return std::make_unique( + std::move(receiver), base::BindOnce(&EnsureSandboxedWin)); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_ANDROID) + auto RunMediaDrmSupportService( +@@ -459,9 +459,9 @@ void RegisterMainThreadServices(mojo::ServiceFactory& services) { + services.Add(RunCdmServiceBroker); + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + services.Add(RunMediaFoundationServiceBroker); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_ANDROID) + services.Add(RunMediaDrmSupportService); diff --git a/mingw-w64-qt6-webengine-thirdparty/0007-chromium-device.patch b/mingw-w64-qt6-webengine-thirdparty/0007-chromium-device.patch new file mode 100644 index 0000000000000..1e9fb052969af --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0007-chromium-device.patch @@ -0,0 +1,355 @@ +diff --git a/src/3rdparty/chromium/device/base/BUILD.gn b/src/3rdparty/chromium/device/base/BUILD.gn +index cbd3ac8..0aee94c 100644 +--- a/src/3rdparty/chromium/device/base/BUILD.gn ++++ b/src/3rdparty/chromium/device/base/BUILD.gn +@@ -31,6 +31,10 @@ component("base") { + "event_utils_winrt.h", + ] + public_deps += [ "//third_party/abseil-cpp:absl" ] +- libs = [ "setupapi.lib" ] ++ if (is_msvc) { ++ libs = [ "setupapi.lib" ] ++ } else { ++ libs = [ "setupapi" ] ++ } + } + } +diff --git a/src/3rdparty/chromium/device/base/device_base_export.h b/src/3rdparty/chromium/device/base/device_base_export.h +index 8672b65..65f6608 100644 +--- a/src/3rdparty/chromium/device/base/device_base_export.h ++++ b/src/3rdparty/chromium/device/base/device_base_export.h +@@ -5,7 +5,8 @@ + #ifndef DEVICE_BASE_DEVICE_BASE_EXPORT_H_ + #define DEVICE_BASE_DEVICE_BASE_EXPORT_H_ + +-#if defined(COMPONENT_BUILD) && defined(WIN32) ++#if defined(COMPONENT_BUILD) ++#if defined(WIN32) + + #if defined(DEVICE_BASE_IMPLEMENTATION) + #define DEVICE_BASE_EXPORT __declspec(dllexport) +@@ -13,12 +14,14 @@ + #define DEVICE_BASE_EXPORT __declspec(dllimport) + #endif + +-#elif defined(COMPONENT_BUILD) && !defined(WIN32) ++#else // !defined(WIN32) + + #define DEVICE_BASE_EXPORT __attribute__((visibility("default"))) + ++#endif // defined(WIN32) ++ + #else + #define DEVICE_BASE_EXPORT + #endif + + #endif // DEVICE_BASE_DEVICE_BASE_EXPORT_H_ + +diff --git a/src/3rdparty/chromium/device/base/device_info_query_win.cc b/src/3rdparty/chromium/device/base/device_info_query_win.cc +index f99c605..8c279f6 100644 +--- a/src/3rdparty/chromium/device/base/device_info_query_win.cc ++++ b/src/3rdparty/chromium/device/base/device_info_query_win.cc +@@ -46,7 +46,7 @@ bool DeviceInfoQueryWin::GetDeviceStringProperty(const DEVPROPKEY& property, + std::string* property_buffer) { + DEVPROPTYPE property_type; + DWORD required_size; +- if (SetupDiGetDeviceProperty(device_info_list_, &device_info_data_, &property, ++ if (SetupDiGetDevicePropertyW(device_info_list_, &device_info_data_, &property, + &property_type, nullptr, 0, &required_size, 0) || + GetLastError() != ERROR_INSUFFICIENT_BUFFER || + property_type != DEVPROP_TYPE_STRING) { +@@ -54,7 +54,7 @@ bool DeviceInfoQueryWin::GetDeviceStringProperty(const DEVPROPKEY& property, + } + + std::u16string buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + device_info_list_, &device_info_data_, &property, &property_type, + reinterpret_cast(base::WriteInto(&buffer, required_size)), + required_size, nullptr, 0)) { +diff --git a/src/3rdparty/chromium/device/bluetooth/BUILD.gn b/src/3rdparty/chromium/device/bluetooth/BUILD.gn +index af32815..a0cfec4 100644 +--- a/src/3rdparty/chromium/device/bluetooth/BUILD.gn ++++ b/src/3rdparty/chromium/device/bluetooth/BUILD.gn +@@ -13,7 +13,7 @@ if (is_android) { + } + + config("bluetooth_config") { +- if (is_win) { ++ if (is_win && !is_mingw) { + ldflags = [ + "/DELAYLOAD:BluetoothApis.dll", + +@@ -321,13 +321,33 @@ component("bluetooth") { + "bluetooth_task_manager_win.h", + "event_utils_winrt.h", + ] ++ if (is_mingw) { ++ sources -= [ ++ "bluetooth_adapter_winrt.cc", ++ "bluetooth_adapter_winrt.h", ++ "bluetooth_advertisement_winrt.cc", ++ "bluetooth_advertisement_winrt.h", ++ "bluetooth_device_winrt.cc", ++ "bluetooth_device_winrt.h", ++ "bluetooth_gatt_discoverer_winrt.cc", ++ "bluetooth_gatt_discoverer_winrt.h", ++ "bluetooth_pairing_winrt.cc", ++ "bluetooth_pairing_winrt.h", ++ "bluetooth_remote_gatt_characteristic_winrt.cc", ++ "bluetooth_remote_gatt_characteristic_winrt.h", ++ "bluetooth_remote_gatt_descriptor_winrt.cc", ++ "bluetooth_remote_gatt_descriptor_winrt.h", ++ "bluetooth_remote_gatt_service_winrt.cc", ++ "bluetooth_remote_gatt_service_winrt.h", ++ ] ++ } + + libs = [ + # Bthprops must be listed before BluetoothApis or else delay loading + # crashes. +- "Bthprops.lib", +- "BluetoothApis.lib", +- "setupapi.lib", ++ "bthprops", ++ "bluetoothapis", ++ "setupapi", + ] + } + +diff --git a/src/3rdparty/chromium/device/bluetooth/bluetooth_adapter_win.cc b/src/3rdparty/chromium/device/bluetooth/bluetooth_adapter_win.cc +index b37b0ae..8d8085f 100644 +--- a/src/3rdparty/chromium/device/bluetooth/bluetooth_adapter_win.cc ++++ b/src/3rdparty/chromium/device/bluetooth/bluetooth_adapter_win.cc +@@ -20,7 +20,9 @@ + #include "base/task/sequenced_task_runner.h" + #include "base/task/single_thread_task_runner.h" + #include "device/base/features.h" ++#if defined(COMPILER_MSVC) + #include "device/bluetooth/bluetooth_adapter_winrt.h" ++#endif + #include "device/bluetooth/bluetooth_classic_win.h" + #include "device/bluetooth/bluetooth_device_win.h" + #include "device/bluetooth/bluetooth_discovery_session_outcome.h" +@@ -39,7 +41,9 @@ scoped_refptr BluetoothAdapter::CreateAdapter() { + + // static + scoped_refptr BluetoothAdapterWin::CreateAdapter() { ++#if defined(COMPILER_MSVC) + return base::WrapRefCounted(new BluetoothAdapterWinrt()); ++#endif + } + + // static +diff --git a/src/3rdparty/chromium/device/bluetooth/bluetooth_export.h b/src/3rdparty/chromium/device/bluetooth/bluetooth_export.h +index 7b82a39..3e99299 100644 +--- a/src/3rdparty/chromium/device/bluetooth/bluetooth_export.h ++++ b/src/3rdparty/chromium/device/bluetooth/bluetooth_export.h +@@ -5,7 +5,8 @@ + #ifndef DEVICE_BLUETOOTH_BLUETOOTH_EXPORT_H_ + #define DEVICE_BLUETOOTH_BLUETOOTH_EXPORT_H_ + +-#if defined(COMPONENT_BUILD) && defined(WIN32) ++#if defined(COMPONENT_BUILD) ++#if defined(WIN32) + + #if defined(DEVICE_BLUETOOTH_IMPLEMENTATION) + #define DEVICE_BLUETOOTH_EXPORT __declspec(dllexport) +@@ -13,12 +14,14 @@ + #define DEVICE_BLUETOOTH_EXPORT __declspec(dllimport) + #endif + +-#elif defined(COMPONENT_BUILD) && !defined(WIN32) ++#else // !defined(WIN32) + + #define DEVICE_BLUETOOTH_EXPORT __attribute__((visibility("default"))) + ++#endif // defined(WIN32) ++ + #else + #define DEVICE_BLUETOOTH_EXPORT + #endif + + #endif // DEVICE_BLUETOOTH_BLUETOOTH_EXPORT_H_ + +diff --git a/src/3rdparty/chromium/device/bluetooth/bluetooth_init_win.cc b/src/3rdparty/chromium/device/bluetooth/bluetooth_init_win.cc +index 6dfae97..2ea4fa0 100644 +--- a/src/3rdparty/chromium/device/bluetooth/bluetooth_init_win.cc ++++ b/src/3rdparty/chromium/device/bluetooth/bluetooth_init_win.cc +@@ -6,6 +6,7 @@ + + #include "base/threading/scoped_thread_priority.h" + ++#if defined(COMPILER_MSVC) + namespace { + + // A frame-based exception handler filter function for a handler for exceptions +@@ -16,6 +17,7 @@ int FilterVisualCPPExceptions(DWORD exception_code) { + } + + } // namespace ++#endif + + namespace device { + namespace bluetooth_init_win { +diff --git a/src/3rdparty/chromium/device/fido/virtual_ctap2_device.cc b/src/3rdparty/chromium/device/fido/virtual_ctap2_device.cc +index fb4c5c8..bc52403 100644 +--- a/src/3rdparty/chromium/device/fido/virtual_ctap2_device.cc ++++ b/src/3rdparty/chromium/device/fido/virtual_ctap2_device.cc +@@ -11,6 +11,7 @@ + + #include + #include ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/device/fido/win/util.cc b/src/3rdparty/chromium/device/fido/win/util.cc +index f00190a..e52d476 100644 +--- a/src/3rdparty/chromium/device/fido/win/util.cc ++++ b/src/3rdparty/chromium/device/fido/win/util.cc +@@ -38,5 +38,9 @@ enum BiometricAvailability { + void DeviceHasBiometricsAvailableInternal( + base::OnceCallback callback) { ++#if defined(__MINGW32__) ++ std::move(callback).Run(false); ++ return; ++#else + SCOPED_MAY_LOAD_LIBRARY_AT_BACKGROUND_PRIORITY(); + // Lookup requires an asynchronous system API call, so cache the value. + static std::atomic availability = +@@ -93,5 +97,6 @@ void DeviceHasBiometricsAvailableInternal( + std::move(second_split.second).Run(false); + return; + } ++#endif + } + std::optional& GetBiometricOverride() { +diff --git a/src/3rdparty/chromium/device/gamepad/BUILD.gn b/src/3rdparty/chromium/device/gamepad/BUILD.gn +index eaf1dc3..e8699fb 100644 +--- a/src/3rdparty/chromium/device/gamepad/BUILD.gn ++++ b/src/3rdparty/chromium/device/gamepad/BUILD.gn +@@ -89,8 +89,18 @@ component("gamepad") { + "xinput_haptic_gamepad_win.cc", + "xinput_haptic_gamepad_win.h", + ] ++ if (is_mingw) { ++ sources -= [ ++ "wgi_data_fetcher_win.cc", ++ "wgi_data_fetcher_win.h", ++ "wgi_gamepad_device.cc", ++ "wgi_gamepad_device.h", ++ ] ++ libs = [ "hid" ] ++ } else { ++ libs = [ "hid.lib" ] ++ } + deps += [ "//device/base" ] +- libs = [ "hid.lib" ] + } + + if (is_linux || is_chromeos) { +diff --git a/src/3rdparty/chromium/device/gamepad/gamepad_export.h b/src/3rdparty/chromium/device/gamepad/gamepad_export.h +index 3479e78..d663a45 100644 +--- a/src/3rdparty/chromium/device/gamepad/gamepad_export.h ++++ b/src/3rdparty/chromium/device/gamepad/gamepad_export.h +@@ -5,7 +5,8 @@ + #ifndef DEVICE_GAMEPAD_GAMEPAD_EXPORT_H_ + #define DEVICE_GAMEPAD_GAMEPAD_EXPORT_H_ + +-#if defined(COMPONENT_BUILD) && defined(WIN32) ++#if defined(COMPONENT_BUILD) ++#if defined(WIN32) + + #if defined(DEVICE_GAMEPAD_IMPLEMENTATION) + #define DEVICE_GAMEPAD_EXPORT __declspec(dllexport) +@@ -13,12 +14,14 @@ + #define DEVICE_GAMEPAD_EXPORT __declspec(dllimport) + #endif + +-#elif defined(COMPONENT_BUILD) && !defined(WIN32) ++#else // !defined(WIN32) + + #define DEVICE_GAMEPAD_EXPORT __attribute__((visibility("default"))) + ++#endif // defined(WIN32) ++ + #else + #define DEVICE_GAMEPAD_EXPORT + #endif + + #endif // DEVICE_GAMEPAD_GAMEPAD_EXPORT_H_ + +diff --git a/src/3rdparty/chromium/device/gamepad/gamepad_platform_data_fetcher.h b/src/3rdparty/chromium/device/gamepad/gamepad_platform_data_fetcher.h +index e1039f5..8066f81 100644 +--- a/src/3rdparty/chromium/device/gamepad/gamepad_platform_data_fetcher.h ++++ b/src/3rdparty/chromium/device/gamepad/gamepad_platform_data_fetcher.h +@@ -43,6 +43,7 @@ void AddGamepadPlatformDataFetchers(GamepadDataFetcherManager* manager) { + + #elif BUILDFLAG(IS_WIN) + ++#if defined(COMPILER_MSVC) + // Windows.Gaming.Input is available in Windows 10.0.10240.0 and later. + if (base::FeatureList::IsEnabled( + features::kEnableWindowsGamingInputDataFetcher)) { +@@ -50,6 +51,9 @@ void AddGamepadPlatformDataFetchers(GamepadDataFetcherManager* manager) { + } else { + manager->AddFactory(new XInputDataFetcherWin::Factory()); + } ++#else ++ manager->AddFactory(new XInputDataFetcherWin::Factory()); ++#endif + manager->AddFactory(new NintendoDataFetcher::Factory()); + manager->AddFactory(new RawInputDataFetcher::Factory()); + +diff --git a/src/3rdparty/chromium/device/gamepad/wgi_data_fetcher_win.h b/src/3rdparty/chromium/device/gamepad/wgi_data_fetcher_win.h +index ef51baa..0fbb879 100644 +--- a/src/3rdparty/chromium/device/gamepad/wgi_data_fetcher_win.h ++++ b/src/3rdparty/chromium/device/gamepad/wgi_data_fetcher_win.h +@@ -5,6 +5,8 @@ + #ifndef DEVICE_GAMEPAD_WGI_DATA_FETCHER_WIN_H_ + #define DEVICE_GAMEPAD_WGI_DATA_FETCHER_WIN_H_ + ++#if defined(COMPILER_MSVC) ++ + #include + #include + +@@ -130,4 +132,6 @@ class DEVICE_GAMEPAD_EXPORT WgiDataFetcherWin final + + } // namespace device + ++#endif ++ + #endif // DEVICE_GAMEPAD_WGI_DATA_FETCHER_WIN_H_ +diff --git a/src/3rdparty/chromium/device/vr/vr_export.h b/src/3rdparty/chromium/device/vr/vr_export.h +index 43390e1..1674243 100644 +--- a/src/3rdparty/chromium/device/vr/vr_export.h ++++ b/src/3rdparty/chromium/device/vr/vr_export.h +@@ -5,7 +5,8 @@ + #ifndef DEVICE_VR_VR_EXPORT_H_ + #define DEVICE_VR_VR_EXPORT_H_ + +-#if defined(COMPONENT_BUILD) && defined(WIN32) ++#if defined(COMPONENT_BUILD) ++#if defined(COMPILER_MSVC) + + #if defined(DEVICE_VR_IMPLEMENTATION) + #define DEVICE_VR_EXPORT __declspec(dllexport) +@@ -13,12 +14,14 @@ + #define DEVICE_VR_EXPORT __declspec(dllimport) + #endif + +-#elif defined(COMPONENT_BUILD) && !defined(WIN32) ++#else // !defined(COMPILER_MSVC) + + #define DEVICE_VR_EXPORT __attribute__((visibility("default"))) + ++#endif // defined(COMPILER_MSVC) ++ + #else + #define DEVICE_VR_EXPORT + #endif + + #endif // DEVICE_VR_VR_EXPORT_H_ + diff --git a/mingw-w64-qt6-webengine-thirdparty/0008-chromium-gpu.patch b/mingw-w64-qt6-webengine-thirdparty/0008-chromium-gpu.patch new file mode 100644 index 0000000000000..28d362ab8d738 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0008-chromium-gpu.patch @@ -0,0 +1,587 @@ +diff --git a/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.cc b/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.cc +index 8ed9ace..204d5f4 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.cc ++++ b/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.cc +@@ -14,7 +14,7 @@ + #include "gpu/command_buffer/common/shared_image_usage.h" + #include "ui/gfx/buffer_format_util.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "ui/gfx/win/d3d_shared_fence.h" + #endif + +@@ -171,14 +171,14 @@ void SharedImageInterface::Release() const { + } + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void SharedImageInterface::UpdateSharedImage( + const SyncToken& sync_token, + scoped_refptr d3d_shared_fence, + const Mailbox& mailbox) { + NOTIMPLEMENTED_LOG_ONCE(); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + void SharedImageInterface::CreateSharedImagePool( + const SharedImagePoolId& pool_id, +diff --git a/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.h b/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.h +index efac09c..8e47d47 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/client/shared_image_interface.h +@@ -41,7 +41,7 @@ namespace gfx { + class GpuFence; + class Size; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + class D3DSharedFence; + #endif + } // namespace gfx +@@ -327,7 +327,7 @@ class GPU_EXPORT SharedImageInterface + bool register_with_image_pipe) = 0; + #endif // BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Update fence between processes. Register D3DSharedFence in GPU process + // first and then use DXGIHandleToken to identify the fence between processes + // and pass signaled fence value from current process to GPU process. +@@ -335,7 +335,7 @@ class GPU_EXPORT SharedImageInterface + const SyncToken& sync_token, + scoped_refptr d3d_shared_fence, + const Mailbox& mailbox); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + // Generates an unverified SyncToken that is released after all previous + // commands on this interface have executed on the service side. +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/BUILD.gn b/src/3rdparty/chromium/gpu/command_buffer/service/BUILD.gn +index 40c4f28..0d0deba 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/BUILD.gn ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/BUILD.gn +@@ -604,7 +604,18 @@ target(link_target_type, "gles2_sources") { + } + } + +- if (is_win) { ++ if (is_mingw) { ++ sources += [ ++ "shared_image/d3d_image_representation.cc", ++ "shared_image/d3d_image_representation.h", ++ "shared_image/d3d_image_utils.cc", ++ "shared_image/d3d_image_utils.h", ++ ] ++ libs = [ "dxguid" ] ++ all_dependent_configs = [ ":service_win_linker_flags" ] ++ } ++ ++ if (is_msvc) { + sources += [ + "dxgi_shared_handle_manager.cc", + "dxgi_shared_handle_manager.h", +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/d3d_image_backing.h b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/d3d_image_backing.h +index 90bb3a4..42c5af2 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/d3d_image_backing.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/d3d_image_backing.h +@@ -115,8 +115,10 @@ class GPU_GLES2_EXPORT D3DImageBacking final + std::vector view_formats, + scoped_refptr context_state) override; + #endif ++#if BUILDFLAG(IS_MSVC) + void UpdateExternalFence( + scoped_refptr external_fence) override; ++#endif + + bool BeginAccessD3D11(Microsoft::WRL::ComPtr d3d11_device, + bool write_access); +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.cc b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.cc +index 6878fb8..888aa44 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.cc ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.cc +@@ -20,7 +20,7 @@ + #include "gpu/command_buffer/service/shared_image/shared_image_representation.h" + #include "third_party/skia/include/core/SkColorSpace.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "ui/gfx/win/d3d_shared_fence.h" + #endif + +@@ -299,7 +299,7 @@ SharedImageBacking::ProduceLegacyOverlay(SharedImageManager* manager, + } + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void SharedImageBacking::UpdateExternalFence( + scoped_refptr external_fence) { + NOTIMPLEMENTED_LOG_ONCE(); +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.h b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.h +index 9440141..0982009 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_backing.h +@@ -363,7 +363,7 @@ class GPU_GLES2_EXPORT SharedImageBacking { + ProduceLegacyOverlay(SharedImageManager* manager, MemoryTypeTracker* tracker); + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + virtual void UpdateExternalFence( + scoped_refptr external_fence); + #endif +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc +index 77a72e4..39b472f 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc +@@ -255,7 +255,7 @@ SharedImageFactory::SharedImageFactory( + factories_.push_back(std::move(gl_texture_backing_factory)); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + if (gl::DirectCompositionSupported()) { + factories_.push_back( + std::make_unique(context_state_)); +@@ -276,7 +276,7 @@ SharedImageFactory::SharedImageFactory( + /*supports_cpu_upload=*/true); + factories_.push_back(std::move(gl_texture_backing_factory)); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(ENABLE_VULKAN) + // If Chrome and ANGLE are sharing the same vulkan device queue, AngleVulkan +@@ -692,7 +692,7 @@ bool SharedImageFactory::PresentSwapChain(const Mailbox& mailbox) { + (*it)->PresentSwapChain(); + return true; + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_FUCHSIA) + void SharedImageFactory::RegisterSysmemBufferCollection( +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.h b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.h +index 24fce45..534c006 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.h +@@ -105,7 +105,7 @@ class GPU_GLES2_EXPORT SharedImageFactory { + bool HasImages() const { return !shared_images_.empty(); } + void DestroyAllSharedImages(bool have_context); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + bool CreateSwapChain(const Mailbox& front_buffer_mailbox, + const Mailbox& back_buffer_mailbox, + viz::SharedImageFormat format, +@@ -115,7 +115,7 @@ class GPU_GLES2_EXPORT SharedImageFactory { + SkAlphaType alpha_type, + gpu::SharedImageUsageSet usage); + bool PresentSwapChain(const Mailbox& mailbox); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_FUCHSIA) + void RegisterSysmemBufferCollection(zx::eventpair service_handle, +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc +index b9bfa8c..39d3df5 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc +@@ -28,7 +28,7 @@ + #include "gpu/command_buffer/service/shared_image/shared_image_representation.h" + #include "ui/gl/trace_util.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "gpu/command_buffer/service/dxgi_shared_handle_manager.h" + #include "ui/gfx/win/d3d_shared_fence.h" + #include "ui/gl/direct_composition_support.h" +@@ -262,7 +262,7 @@ class SCOPED_LOCKABLE SharedImageManager::AutoLock { + SharedImageManager::SharedImageManager(bool thread_safe, + bool display_context_on_another_thread) + : display_context_on_another_thread_(display_context_on_another_thread) +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + , + dxgi_shared_handle_manager_( + base::MakeRefCounted()) +@@ -607,7 +607,7 @@ SharedImageManager::ProduceLegacyOverlay(const Mailbox& mailbox, + } + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void SharedImageManager::UpdateExternalFence( + const Mailbox& mailbox, + scoped_refptr external_fence) { +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.h b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.h +index 531c12e..f330d36 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.h +@@ -19,7 +19,7 @@ + #include "gpu/gpu_gles2_export.h" + #include "gpu/vulkan/buildflags.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + namespace gfx { + class D3DSharedFence; + } +@@ -128,7 +128,7 @@ class GPU_GLES2_EXPORT SharedImageManager + MemoryTypeTracker* ref); + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void UpdateExternalFence(const Mailbox& mailbox, + scoped_refptr external_fence); + #endif +@@ -158,7 +158,7 @@ class GPU_GLES2_EXPORT SharedImageManager + // method is to facilitate pageflip testing on the viz thread. + scoped_refptr GetNativePixmap(const gpu::Mailbox& mailbox); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + const scoped_refptr& dxgi_shared_handle_manager() + const { + return dxgi_shared_handle_manager_; +@@ -176,7 +176,7 @@ class GPU_GLES2_EXPORT SharedImageManager + + bool is_registered_as_memory_dump_provider_ = false; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + scoped_refptr dxgi_shared_handle_manager_; + #endif + +diff --git a/src/3rdparty/chromium/gpu/config/BUILD.gn b/src/3rdparty/chromium/gpu/config/BUILD.gn +index f49a550..28c58e3 100644 +--- a/src/3rdparty/chromium/gpu/config/BUILD.gn ++++ b/src/3rdparty/chromium/gpu/config/BUILD.gn +@@ -244,7 +244,11 @@ source_set("config_sources") { + if (!is_qtwebengine) { + deps += [ "//third_party/microsoft_dxheaders:dxguids" ] + } +- libs = [ "dxgi.lib" ] ++ if (is_msvc) { ++ libs = [ "dxgi.lib" ] ++ } else { ++ libs = [ "dxgi" ] ++ } + } + if (is_mac) { + sources += [ "gpu_info_collector_mac.mm" ] +diff --git a/src/3rdparty/chromium/gpu/config/gpu_info_collector_win.cc b/src/3rdparty/chromium/gpu/config/gpu_info_collector_win.cc +index 4bd1190..0e96b92 100644 +--- a/src/3rdparty/chromium/gpu/config/gpu_info_collector_win.cc ++++ b/src/3rdparty/chromium/gpu/config/gpu_info_collector_win.cc +@@ -5,9 +5,11 @@ + #include "gpu/config/gpu_info_collector.h" + + // C system before C++ system. ++//#if BUILDFLAG(USE_ML) +-#include ++#include ++//#endif + #include + #include + #include + #include + #include +@@ -35,7 +37,7 @@ + #include "third_party/microsoft_dxheaders/src/include/directx/dxcore.h" + #else + #include +-#include ++#include + #endif + #include "third_party/re2/src/re2/re2.h" + #include "ui/gl/direct_composition_support.h" +@@ -453,7 +455,7 @@ void GetGpuSupportedDirectXVersion(uint32_t& d3d12_feature_level, + // Check to see if the adapter supports Direct3D 12. + for (auto level : feature_levels) { +- if (SUCCEEDED(d3d12_create_device_proc(dxgi_adapter.Get(), level, +- _uuidof(ID3D12Device), +- &d3d12_device))) { ++ if (SUCCEEDED(d3d12_create_device_proc( ++ dxgi_adapter.Get(), level, IID_ID3D12Device, ++ reinterpret_cast(d3d12_device.GetAddressOf())))) { + d3d12_feature_level = level; + break; +diff --git a/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.cc b/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.cc +index 40801d4..2a2e901 100644 +--- a/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.cc ++++ b/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.cc +@@ -14,7 +14,7 @@ + #include "ui/gfx/gpu_fence.h" + #include "ui/gfx/gpu_memory_buffer.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "ui/gfx/win/d3d_shared_fence.h" + #endif + +@@ -228,7 +228,7 @@ void ClientSharedImageInterface::CopyToGpuMemoryBuffer( +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void ClientSharedImageInterface::CopyToGpuMemoryBufferAsync( + const SyncToken& sync_token, + const Mailbox& mailbox, + base::OnceCallback callback) { + proxy_->CopyToGpuMemoryBufferAsync(sync_token, mailbox, std::move(callback)); + } +diff --git a/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.h b/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.h +index 88cbde8..cc1bb8e 100644 +--- a/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.h ++++ b/src/3rdparty/chromium/gpu/ipc/client/client_shared_image_interface.h +@@ -78,7 +78,7 @@ class GPU_EXPORT ClientSharedImageInterface : public SharedImageInterface { + const SharedImageInfo& si_info) override; + void CopyToGpuMemoryBuffer(const SyncToken& sync_token, + const Mailbox& mailbox) override; +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void CopyToGpuMemoryBufferAsync( + const SyncToken& sync_token, + const Mailbox& mailbox, +diff --git a/src/3rdparty/chromium/gpu/ipc/client/shared_image_interface_proxy.cc b/src/3rdparty/chromium/gpu/ipc/client/shared_image_interface_proxy.cc +index 5b02cc3..74e61ed 100644 +--- a/src/3rdparty/chromium/gpu/ipc/client/shared_image_interface_proxy.cc ++++ b/src/3rdparty/chromium/gpu/ipc/client/shared_image_interface_proxy.cc +@@ -21,7 +21,7 @@ + #include "ui/gfx/buffer_types.h" + #include "ui/gfx/gpu_fence.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "ui/gfx/win/d3d_shared_fence.h" + #endif + +@@ -243,7 +243,7 @@ void SharedImageInterfaceProxy::CopyToGpuMemoryBuffer( + } + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void SharedImageInterfaceProxy::CopyToGpuMemoryBufferAsync( + const SyncToken& sync_token, + const Mailbox& mailbox, +@@ -307,7 +307,7 @@ void SharedImageInterfaceProxy::CopyNativeGmbToSharedMemoryAsync( + bool SharedImageInterfaceProxy::IsConnected() { + return host_->IsConnected(); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + void SharedImageInterfaceProxy::UpdateSharedImage(const SyncToken& sync_token, + const Mailbox& mailbox) { +@@ -499,7 +499,7 @@ SharedImageInterfaceProxy::CreateSwapChain(viz::SharedImageFormat format, + GrSurfaceOrigin surface_origin, + SkAlphaType alpha_type, + gpu::SharedImageUsageSet usage) { +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + const SwapChainMailboxes mailboxes = {Mailbox::Generate(), + Mailbox::Generate()}; + auto params = mojom::CreateSwapChainParams::New(); +@@ -526,12 +526,12 @@ SharedImageInterfaceProxy::CreateSwapChain(viz::SharedImageFormat format, + return mailboxes; + #else + NOTREACHED(); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + } + + void SharedImageInterfaceProxy::PresentSwapChain(const SyncToken& sync_token, + const Mailbox& mailbox) { +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + std::vector dependencies = + GenerateDependenciesFromSyncToken(std::move(sync_token), host_); + { +@@ -545,7 +545,7 @@ void SharedImageInterfaceProxy::PresentSwapChain(const SyncToken& sync_token, + } + #else + NOTREACHED(); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + } + + #if BUILDFLAG(IS_FUCHSIA) +diff --git a/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn b/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn +index 2886b9a..de10731 100644 +--- a/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn ++++ b/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn +diff --git a/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn b/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn +index 973cd33..73c19a3 100644 +--- a/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn ++++ b/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn +@@ -100,11 +100,19 @@ component("service") { + "gpu_memory_buffer_factory_dxgi.h", + "image_transport_surface_win.cc", + ] +- libs += [ +- "d3d11.lib", +- "dcomp.lib", +- "dxguid.lib", +- ] ++ if (is_msvc) { ++ libs += [ ++ "d3d11.lib", ++ "dcomp.lib", ++ "dxguid.lib", ++ ] ++ } else { ++ libs += [ ++ "d3d11", ++ "dcomp", ++ "dxguid", ++ ] ++ } + } + if (is_apple) { + sources += [ +diff --git a/src/3rdparty/chromium/gpu/ipc/service/gpu_channel.cc b/src/3rdparty/chromium/gpu/ipc/service/gpu_channel.cc +index d4df75d..a000f8b 100644 +--- a/src/3rdparty/chromium/gpu/ipc/service/gpu_channel.cc ++++ b/src/3rdparty/chromium/gpu/ipc/service/gpu_channel.cc +@@ -695,10 +695,15 @@ void GpuChannelMessageFilter::CopyToGpuMemoryBufferAsync( + CopyToGpuMemoryBufferAsyncCallback callback) { + if (!channel) { + std::move(callback).Run(false); ++ return; + } ++#if BUILDFLAG(IS_MSVC) + channel->shared_image_stub()->CopyToGpuMemoryBufferAsync( + mailbox, std::move(callback)); ++#else ++ std::move(callback).Run(false); ++#endif + }, + gpu_channel_->AsWeakPtr(), mailbox, + base::BindPostTask(base::SequencedTaskRunner::GetCurrentDefault(), + std::move(callback))); +diff --git a/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.cc b/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.cc +index 91caf7f..1541e52 100644 +--- a/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.cc ++++ b/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.cc +@@ -28,7 +28,7 @@ + #include "ui/gfx/gpu_memory_buffer.h" + #include "ui/gl/gl_context.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "ui/gfx/win/d3d_shared_fence.h" + #endif + +@@ -160,7 +160,7 @@ void SharedImageStub::ExecuteDeferredRequest( + std::move(request->get_destroy_shared_image_pool())); + break; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + case mojom::DeferredSharedImageRequest::Tag::kCreateSwapChain: + OnCreateSwapChain(std::move(request->get_create_swap_chain())); + break; +@@ -184,7 +184,7 @@ void SharedImageStub::ExecuteDeferredRequest( + OnUnregisterDxgiFence(unregister.mailbox, unregister.dxgi_token); + break; + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + } + } + +@@ -414,7 +414,7 @@ void SharedImageStub::OnDestroySharedImage(const Mailbox& mailbox) { + return; + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + registered_dxgi_fences_.erase(mailbox); + #endif + } +@@ -432,7 +432,7 @@ void SharedImageStub::OnCopyToGpuMemoryBuffer(const Mailbox& mailbox) { + } + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void SharedImageStub::CopyToGpuMemoryBufferAsync( + const Mailbox& mailbox, + base::OnceCallback callback) { +@@ -563,7 +563,7 @@ void SharedImageStub::OnUnregisterDxgiFence(const Mailbox& mailbox, + mailbox_fences.erase(fence_it); + } + +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_FUCHSIA) + void SharedImageStub::RegisterSysmemBufferCollection( +diff --git a/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.h b/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.h +index 6b0e287..2437c6e 100644 +--- a/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.h ++++ b/src/3rdparty/chromium/gpu/ipc/service/shared_image_stub.h +@@ -18,7 +18,7 @@ + #include "ui/gfx/gpu_extra_info.h" + + namespace gfx { +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + class D3DSharedFence; + #endif + +@@ -85,7 +85,7 @@ class GPU_IPC_SERVICE_EXPORT SharedImageStub : public MemoryTracker { + bool UpdateSharedImage(const Mailbox& mailbox, + gfx::GpuFenceHandle in_fence_handle); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void CopyToGpuMemoryBufferAsync(const Mailbox& mailbox, + base::OnceCallback callback); + #endif +@@ -117,7 +117,7 @@ class GPU_IPC_SERVICE_EXPORT SharedImageStub : public MemoryTracker { + void OnDestroySharedImage(const Mailbox& mailbox); + void OnRegisterSharedImageUploadBuffer(base::ReadOnlySharedMemoryRegion shm); + void OnCopyToGpuMemoryBuffer(const Mailbox& mailbox); +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void OnCreateSwapChain(mojom::CreateSwapChainParamsPtr params); + void OnPresentSwapChain(const Mailbox& mailbox); + void OnRegisterDxgiFence(const Mailbox& mailbox, +@@ -128,7 +128,7 @@ class GPU_IPC_SERVICE_EXPORT SharedImageStub : public MemoryTracker { + uint64_t fence_value); + void OnUnregisterDxgiFence(const Mailbox& mailbox, + gfx::DXGIHandleToken dxgi_token); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + void OnCreateSharedImagePool(mojom::CreateSharedImagePoolParamsPtr params); + void OnDestroySharedImagePool(mojom::DestroySharedImagePoolParamsPtr params); +@@ -159,7 +159,7 @@ class GPU_IPC_SERVICE_EXPORT SharedImageStub : public MemoryTracker { + base::ReadOnlySharedMemoryRegion upload_memory_; + base::ReadOnlySharedMemoryMapping upload_memory_mapping_; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Fences held by external processes. Registered and signaled from ipc + // channel. Using DXGIHandleToken to identify the fence. + base::flat_map>> +diff --git a/src/3rdparty/chromium/gpu/ipc/common/device_perf_info_mojom_traits.cc b/src/3rdparty/chromium/gpu/ipc/common/device_perf_info_mojom_traits.cc +index 98cb19e..2e9c4d2 100644 +--- a/src/3rdparty/chromium/gpu/ipc/common/device_perf_info_mojom_traits.cc ++++ b/src/3rdparty/chromium/gpu/ipc/common/device_perf_info_mojom_traits.cc +@@ -7,6 +7,10 @@ + + #include "build/build_config.h" + ++#if BUILDFLAG(IS_WIN) && !defined(D3D_FEATURE_LEVEL_1_0_GENERIC) ++#define D3D_FEATURE_LEVEL_1_0_GENERIC static_cast(0x1001) ++#endif ++ + namespace mojo { + + #if BUILDFLAG(IS_WIN) diff --git a/mingw-w64-qt6-webengine-thirdparty/0009-chromium-media.patch b/mingw-w64-qt6-webengine-thirdparty/0009-chromium-media.patch new file mode 100644 index 0000000000000..3b4644cfe57d0 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0009-chromium-media.patch @@ -0,0 +1,1207 @@ +diff --git a/src/3rdparty/chromium/media/audio/audio_manager.cc b/src/3rdparty/chromium/media/audio/audio_manager.cc +index 4febfda..40dc9e9 100644 +--- a/src/3rdparty/chromium/media/audio/audio_manager.cc ++++ b/src/3rdparty/chromium/media/audio/audio_manager.cc +@@ -108,12 +108,16 @@ AudioManager::~AudioManager() { + std::unique_ptr AudioManager::Create( + std::unique_ptr audio_thread, + AudioLogFactory* audio_log_factory) { ++#if BUILDFLAG(IS_MINGW) // missing CreateAudioManager ++ return nullptr; ++#else + std::unique_ptr manager = + CreateAudioManager(std::move(audio_thread), audio_log_factory); + #if BUILDFLAG(ENABLE_WEBRTC) + manager->InitializeDebugRecording(); + #endif + return manager; ++#endif + } + + // static +diff --git a/src/3rdparty/chromium/media/audio/simple_sources.cc b/src/3rdparty/chromium/media/audio/simple_sources.cc +index 6fd3b7e..db56ec9 100644 +--- a/src/3rdparty/chromium/media/audio/simple_sources.cc ++++ b/src/3rdparty/chromium/media/audio/simple_sources.cc +@@ -12,6 +12,7 @@ + #include + + #include ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/media/audio/win/core_audio_util_win.cc b/src/3rdparty/chromium/media/audio/win/core_audio_util_win.cc +index bd32ecb..d7f369c 100644 +--- a/src/3rdparty/chromium/media/audio/win/core_audio_util_win.cc ++++ b/src/3rdparty/chromium/media/audio/win/core_audio_util_win.cc +@@ -51,5 +51,27 @@ namespace { + constexpr uint32_t KSAUDIO_SPEAKER_UNSUPPORTED_COUW = 0xFFFFFFFF; +- ++#if defined(__MINGW32__) ++#ifndef KSAUDIO_SPEAKER_2POINT1 ++#define KSAUDIO_SPEAKER_2POINT1 \ ++ (KSAUDIO_SPEAKER_STEREO | SPEAKER_LOW_FREQUENCY) ++#endif ++#ifndef KSAUDIO_SPEAKER_3POINT0 ++#define KSAUDIO_SPEAKER_3POINT0 \ ++ (KSAUDIO_SPEAKER_STEREO | SPEAKER_FRONT_CENTER) ++#endif ++#ifndef KSAUDIO_SPEAKER_3POINT1 ++#define KSAUDIO_SPEAKER_3POINT1 \ ++ (KSAUDIO_SPEAKER_3POINT0 | SPEAKER_LOW_FREQUENCY) ++#endif ++#ifndef KSAUDIO_SPEAKER_5POINT0 ++#define KSAUDIO_SPEAKER_5POINT0 \ ++ (KSAUDIO_SPEAKER_3POINT0 | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) ++#endif ++#ifndef KSAUDIO_SPEAKER_7POINT0 ++#define KSAUDIO_SPEAKER_7POINT0 \ ++ (KSAUDIO_SPEAKER_5POINT0 | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) ++#endif ++#endif ++ + REFERENCE_TIME BufferSizeInFramesToTimeDelta(uint32_t frames, + DWORD bytes_per_sec, + WORD bytes_per_frame) { +@@ -221,21 +243,27 @@ ChannelConfig GuessChannelConfig(WORD channels) { + case 2: + DVLOG(2) << "KSAUDIO_SPEAKER_STEREO"; + return KSAUDIO_SPEAKER_STEREO; ++#if !defined(COMPILER_GCC) // FIXME: missing KSAUDIO_SPEAKER_2POINT1 + case 3: + DVLOG(2) << "KSAUDIO_SPEAKER_2POINT1"; + return KSAUDIO_SPEAKER_2POINT1; ++#endif + case 4: + DVLOG(2) << "KSAUDIO_SPEAKER_QUAD"; + return KSAUDIO_SPEAKER_QUAD; ++#if !defined(COMPILER_GCC) // FIXME: missing KSAUDIO_SPEAKER_5POINT0 + case 5: + DVLOG(2) << "KSAUDIO_SPEAKER_5POINT0"; + return KSAUDIO_SPEAKER_5POINT0; ++#endif + case 6: + DVLOG(2) << "KSAUDIO_SPEAKER_5POINT1"; + return KSAUDIO_SPEAKER_5POINT1; ++#if !defined(COMPILER_GCC) // FIXME: missing KSAUDIO_SPEAKER_7POINT0 + case 7: + DVLOG(2) << "KSAUDIO_SPEAKER_7POINT0"; + return KSAUDIO_SPEAKER_7POINT0; ++#endif + case 8: + DVLOG(2) << "KSAUDIO_SPEAKER_7POINT1"; + return KSAUDIO_SPEAKER_7POINT1; +@@ -1434,6 +1462,10 @@ std::pair CoreAudioUtil::GetVoiceProcessingEffectsAndCheckForAEC( + return {{}, false}; + }; + ++#if defined(__MINGW32__) ++ return false_and_log_no_effect(); ++#else ++ + // This check guarantees that the client has been initialized since that is + // required by the IAudioEffectsManager to function. The effects manager will + // only be able to report supported effects if the client is in communications +@@ -1499,6 +1531,7 @@ std::pair CoreAudioUtil::GetVoiceProcessingEffectsAndCheckForAEC( + } + + return std::make_pair(effects, echo_cancellation_is_available); ++#endif + } + + } // namespace media +diff --git a/src/3rdparty/chromium/media/audio/win/device_enumeration_win.cc b/src/3rdparty/chromium/media/audio/win/device_enumeration_win.cc +index e2f35a5..84d05fa 100644 +--- a/src/3rdparty/chromium/media/audio/win/device_enumeration_win.cc ++++ b/src/3rdparty/chromium/media/audio/win/device_enumeration_win.cc +@@ -76,6 +76,7 @@ static bool GetDeviceNamesWinImpl(EDataFlow data_flow, + device.unique_id = + base::WideToUTF8(static_cast(endpoint_device_id)); + ++#if !defined(COMPILER_GCC) // FIXME: missing Microsoft::WRL::ComPtr + // Retrieve user-friendly name of endpoint device. + // Example: "Microphone (Realtek High Definition Audio)". + Microsoft::WRL::ComPtr properties; +@@ -98,6 +99,7 @@ static bool GetDeviceNamesWinImpl(EDataFlow data_flow, + if (!suffix.empty()) + device.device_name += suffix; + } ++#endif + + // Add combination of user-friendly and unique name to the output list. + device_names->push_back(device); +diff --git a/src/3rdparty/chromium/media/base/audio_bus.cc b/src/3rdparty/chromium/media/base/audio_bus.cc +index 410e941..914a512 100644 +--- a/src/3rdparty/chromium/media/base/audio_bus.cc ++++ b/src/3rdparty/chromium/media/base/audio_bus.cc +@@ -13,6 +13,7 @@ + #include + + #include ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/media/base/audio_parameters.h b/src/3rdparty/chromium/media/base/audio_parameters.h +index 4219618..9ee8129 100644 +--- a/src/3rdparty/chromium/media/base/audio_parameters.h ++++ b/src/3rdparty/chromium/media/base/audio_parameters.h +@@ -30,7 +30,7 @@ namespace media { + // instead of in Audio{Input,Output}Buffer to be able to calculate size like so. + // Use a constexpr for the alignment value that's the same as + // AudioBus::kChannelAlignment, since MSVC doesn't accept the latter to be used. +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #pragma warning(push) + #pragma warning(disable : 4324) // Disable warning for added padding. + #endif +@@ -61,7 +61,7 @@ struct MEDIA_SHMEM_EXPORT alignas(kParametersAlignment) + uint32_t bitstream_data_size; + uint32_t bitstream_frames; + }; +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #pragma warning(pop) + #endif + +diff --git a/src/3rdparty/chromium/media/base/win/BUILD.gn b/src/3rdparty/chromium/media/base/win/BUILD.gn +index 5571e2d..3f5cd3c 100644 +--- a/src/3rdparty/chromium/media/base/win/BUILD.gn ++++ b/src/3rdparty/chromium/media/base/win/BUILD.gn +@@ -7,12 +7,14 @@ import("//build/config/jumbo.gni") + assert(is_win) + + config("delay_load_mf") { +- ldflags = [ +- "/DELAYLOAD:d3d11.dll", +- "/DELAYLOAD:mf.dll", +- "/DELAYLOAD:mfplat.dll", +- "/DELAYLOAD:mfreadwrite.dll", +- ] ++ if (is_msvc) { ++ ldflags = [ ++ "/DELAYLOAD:d3d11.dll", ++ "/DELAYLOAD:mf.dll", ++ "/DELAYLOAD:mfplat.dll", ++ "/DELAYLOAD:mfreadwrite.dll", ++ ] ++ } + } + + jumbo_component("media_foundation_util") { +@@ -34,14 +36,25 @@ jumbo_component("media_foundation_util") { + "//media/gpu:command_buffer_helper", + "//third_party/libyuv", + ] +- libs = [ +- "d3d11.lib", +- "mf.lib", +- "mfplat.lib", +- "mfreadwrite.lib", +- "dxguid.lib", +- "dxgi.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "d3d11.lib", ++ "mf.lib", ++ "mfplat.lib", ++ "mfreadwrite.lib", ++ "dxguid.lib", ++ "dxgi.lib", ++ ] ++ } else { ++ libs = [ ++ "d3d11", ++ "mf", ++ "mfplat", ++ "mfreadwrite", ++ "dxguid", ++ "dxgi", ++ ] ++ } + + # MediaFoundation is not available on Windows N, so must be delay loaded. + all_dependent_configs = [ ":delay_load_mf" ] +@@ -59,11 +72,19 @@ component("color_space_util_win") { + "//media/base", + "//ui/gfx:color_space", + ] +- libs = [ +- "mf.lib", +- "mfplat.lib", +- "mfreadwrite.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "mf.lib", ++ "mfplat.lib", ++ "mfreadwrite.lib", ++ ] ++ } else { ++ libs = [ ++ "mf", ++ "mfplat", ++ "mfreadwrite", ++ ] ++ } + + # MediaFoundation is not available on Windows N, so must be delay loaded. + all_dependent_configs = [ ":delay_load_mf" ] +diff --git a/src/3rdparty/chromium/media/base/win/color_space_util_win.cc b/src/3rdparty/chromium/media/base/win/color_space_util_win.cc +index d6bad9a..3d603f5 100644 +--- a/src/3rdparty/chromium/media/base/win/color_space_util_win.cc ++++ b/src/3rdparty/chromium/media/base/win/color_space_util_win.cc +@@ -9,6 +9,35 @@ + + #include + ++#if defined(__MINGW32__) ++#if !defined(MFVideoPrimaries_Display_P3) ++#define MFVideoPrimaries_Display_P3 static_cast(13) ++#endif ++ ++#if !defined(MFVideoTransFunc_BT1361_ECG) ++#define MFVideoTransFunc_BT1361_ECG \ ++ static_cast(18) ++#endif ++#if !defined(MFVideoTransFunc_SMPTE428) ++#define MFVideoTransFunc_SMPTE428 static_cast(19) ++#endif ++ ++#if !defined(MFVideoTransferMatrix_Identity) ++#define MFVideoTransferMatrix_Identity \ ++ static_cast(6) ++#endif ++#if !defined(MFVideoTransferMatrix_FCC47) ++#define MFVideoTransferMatrix_FCC47 static_cast(7) ++#endif ++#if !defined(MFVideoTransferMatrix_YCgCo) ++#define MFVideoTransferMatrix_YCgCo static_cast(8) ++#endif ++#if !defined(MFVideoTransferMatrix_SMPTE2085) ++#define MFVideoTransferMatrix_SMPTE2085 \ ++ static_cast(9) ++#endif ++#endif ++ + #include "base/logging.h" + #include "media/base/video_color_space.h" + +diff --git a/src/3rdparty/chromium/media/base/win/mf_helpers.cc b/src/3rdparty/chromium/media/base/win/mf_helpers.cc +index a20de3d..b979fb1 100644 +--- a/src/3rdparty/chromium/media/base/win/mf_helpers.cc ++++ b/src/3rdparty/chromium/media/base/win/mf_helpers.cc +@@ -41,7 +41,9 @@ + namespace media { + + using Microsoft::WRL::ComPtr; ++#if !defined(COMPILER_GCC) // FIXME: missing Microsoft::WRL::MakeAndInitialize + using Microsoft::WRL::MakeAndInitialize; ++#endif + + namespace { + +@@ -147,6 +149,7 @@ HRESULT AddEncryptAttributes(const DecryptConfig& decrypt_config, + GUID* last_key_id) { + DVLOG(3) << __func__; + ++#if !defined(COMPILER_GCC) // FIXME: missing MFSampleEncryptionProtectionScheme + MFSampleEncryptionProtectionScheme mf_protection_scheme; + if (decrypt_config.encryption_scheme() == EncryptionScheme::kCenc) { + mf_protection_scheme = MFSampleEncryptionProtectionScheme:: +@@ -202,6 +205,7 @@ HRESULT AddEncryptAttributes(const DecryptConfig& decrypt_config, + GUID key_id = GetGUIDFromString(decrypt_config.key_id()); + RETURN_IF_FAILED(mf_sample->SetGUID(MFSampleExtension_Content_KeyID, key_id)); + *last_key_id = key_id; ++#endif + + // IV + size_t iv_length = decrypt_config.iv().length(); +@@ -217,6 +221,7 @@ HRESULT AddEncryptAttributes(const DecryptConfig& decrypt_config, + reinterpret_cast(decrypt_config.iv().c_str()), + iv_length)); + ++#if !defined(COMPILER_GCC) // FIXME: missing MFSampleExtension_Encryption_SubSample_Mapping + // Handle subsample entries. + const auto& subsample_entries = decrypt_config.subsamples(); + if (subsample_entries.empty()) { +@@ -235,6 +240,7 @@ HRESULT AddEncryptAttributes(const DecryptConfig& decrypt_config, + MFSampleExtension_Encryption_SubSample_Mapping, + reinterpret_cast(mf_subsample_entries.data()), + mf_sample_entries_size)); ++#endif + + return S_OK; + } +@@ -324,24 +330,34 @@ ChannelLayout ChannelConfigToChannelLayout(ChannelConfig config) { + return CHANNEL_LAYOUT_MONO; + case KSAUDIO_SPEAKER_STEREO: + return CHANNEL_LAYOUT_STEREO; ++#if defined(KSAUDIO_SPEAKER_2POINT1) + case KSAUDIO_SPEAKER_2POINT1: + return CHANNEL_LAYOUT_2POINT1; ++#endif ++#if defined(KSAUDIO_SPEAKER_3POINT0) + case KSAUDIO_SPEAKER_3POINT0: + return CHANNEL_LAYOUT_SURROUND; ++#endif ++#if defined(KSAUDIO_SPEAKER_3POINT1) + case KSAUDIO_SPEAKER_3POINT1: + return CHANNEL_LAYOUT_3_1; ++#endif + case KSAUDIO_SPEAKER_QUAD: + return CHANNEL_LAYOUT_QUAD; + case KSAUDIO_SPEAKER_SURROUND: + return CHANNEL_LAYOUT_4_0; ++#if defined(KSAUDIO_SPEAKER_5POINT0) + case KSAUDIO_SPEAKER_5POINT0: + return CHANNEL_LAYOUT_5_0; ++#endif + case KSAUDIO_SPEAKER_5POINT1: + return CHANNEL_LAYOUT_5_1_BACK; + case KSAUDIO_SPEAKER_5POINT1_SURROUND: + return CHANNEL_LAYOUT_5_1; ++#if defined(KSAUDIO_SPEAKER_7POINT0) + case KSAUDIO_SPEAKER_7POINT0: + return CHANNEL_LAYOUT_7_0; ++#endif + case KSAUDIO_SPEAKER_7POINT1: + return CHANNEL_LAYOUT_7_1_WIDE_BACK; + case KSAUDIO_SPEAKER_7POINT1_SURROUND: +@@ -710,6 +726,7 @@ HRESULT CreateDecryptConfigFromSample( + + EncryptionScheme encryption_scheme = EncryptionScheme::kUnencrypted; + UINT32 mf_protection_scheme = 0; ++#if !defined(COMPILER_GCC) // FIXME: missing MFSampleExtension_Encryption_ProtectionScheme + RETURN_IF_FAILED(mf_sample->GetUINT32( + MFSampleExtension_Encryption_ProtectionScheme, &mf_protection_scheme)); + switch (mf_protection_scheme) { +@@ -728,6 +745,7 @@ HRESULT CreateDecryptConfigFromSample( + << mf_protection_scheme; + return MF_E_UNEXPECTED; + } ++#endif + + // IV + UINT32 iv_length = 0; +@@ -754,6 +772,7 @@ HRESULT CreateDecryptConfigFromSample( + base::win::ScopedCoMem subsample_mappings; + uint32_t subsample_mappings_size = 0; + ++#if !defined(COMPILER_GCC) // FIXME: missing MFSampleExtension_Encryption_SubSample_Mapping + // If `MFSampleExtension_Encryption_SubSample_Mapping` attribute doesn't + // exist, we should not fail the call. i.e., Encrypted audio content. + if (SUCCEEDED(mf_sample->GetAllocatedBlob( +@@ -772,6 +791,7 @@ HRESULT CreateDecryptConfigFromSample( + } + } + } ++#endif + + // Key ID + const auto key_id_string = GetStringFromGUID(key_id); +@@ -783,6 +803,7 @@ HRESULT CreateDecryptConfigFromSample( + if (encryption_scheme == EncryptionScheme::kCenc) { + *decrypt_config = + DecryptConfig::CreateCencConfig(key_id_string, iv_string, subsamples); ++#if !defined(COMPILER_GCC) // FIXME: missing MFSampleExtension_Encryption_* + } else { + EncryptionPattern encryption_pattern; + +@@ -802,6 +823,7 @@ HRESULT CreateDecryptConfigFromSample( + DVLOG(3) << __func__ << ": encryption_pattern=" << encryption_pattern; + *decrypt_config = DecryptConfig::CreateCbcsConfig( + key_id_string, iv_string, subsamples, encryption_pattern); ++#endif + } + + return S_OK; +diff --git a/src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc b/src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc +index f00517a..ae07584 100644 +--- a/src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc ++++ b/src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc +@@ -19,7 +19,7 @@ + #include "media/capture/video/chromeos/public/cros_features.h" + #include "media/capture/video/chromeos/video_capture_device_factory_chromeos.h" + #include "media/capture/video/linux/video_capture_device_factory_linux.h" +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + #include "media/capture/video/win/video_capture_device_factory_win.h" + #elif BUILDFLAG(IS_APPLE) + #include "media/capture/video/apple/video_capture_device_factory_apple.h" +@@ -62,7 +62,7 @@ CreatePlatformSpecificVideoCaptureDeviceFactory( + if (base::SysInfo::IsRunningOnChromeOS()) + return std::make_unique(ui_task_runner); + return std::make_unique(ui_task_runner); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + return std::make_unique(); + #elif BUILDFLAG(IS_APPLE) + return std::make_unique(); +diff --git a/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc b/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc +index a6c9565..9842145 100644 +--- a/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc ++++ b/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc +@@ -24,7 +24,7 @@ namespace media { + + VideoCaptureBufferTrackerFactoryImpl::VideoCaptureBufferTrackerFactoryImpl() {} + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + VideoCaptureBufferTrackerFactoryImpl::VideoCaptureBufferTrackerFactoryImpl( + scoped_refptr dxgi_device_manager) + : dxgi_device_manager_(std::move(dxgi_device_manager)) {} +@@ -44,7 +44,7 @@ VideoCaptureBufferTrackerFactoryImpl::CreateTracker( + return std::make_unique(); + #elif BUILDFLAG(IS_LINUX) + return std::make_unique(); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + if (!dxgi_device_manager_) { + return nullptr; + } +@@ -53,7 +53,7 @@ VideoCaptureBufferTrackerFactoryImpl::CreateTracker( + return nullptr; + #endif + default: +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MSVC) || BUILDFLAG(IS_MAC) + // Since Windows and macOS capturer outputs NV12 only for GMBs and I420 + // for software frames, the pixel format is used to choose between shmem + // and gmb trackers. Therefore I420 shmem trackers must not be reusable +diff --git a/src/3rdparty/chromium/media/capture/video/win/BUILD.gn b/src/3rdparty/chromium/media/capture/video/win/BUILD.gn +index a06417b..ae4a334 100644 +--- a/src/3rdparty/chromium/media/capture/video/win/BUILD.gn ++++ b/src/3rdparty/chromium/media/capture/video/win/BUILD.gn +@@ -34,6 +34,22 @@ source_set("win") { + "video_capture_device_win.cc", + "video_capture_device_win.h", + ] ++ if (is_mingw) { ++ sources -= [ ++ "gpu_memory_buffer_tracker_win.cc", ++ "gpu_memory_buffer_tracker_win.h", ++ "sink_filter_win.cc", ++ "sink_filter_win.h", ++ "sink_input_pin_win.cc", ++ "sink_input_pin_win.h", ++ "video_capture_device_factory_win.cc", ++ "video_capture_device_factory_win.h", ++ "video_capture_device_mf_win.cc", ++ "video_capture_device_mf_win.h", ++ "video_capture_device_win.cc", ++ "video_capture_device_win.h", ++ ] ++ } + + public_deps = [ + "//media/capture:capture_base", +@@ -59,17 +75,19 @@ source_set("win") { + ] + + libs = [ +- "mf.lib", +- "mfplat.lib", +- "mfreadwrite.lib", +- "mfuuid.lib", ++ "mf", ++ "mfplat", ++ "mfreadwrite", ++ "mfuuid", + ] + +- ldflags = [ +- "/DELAYLOAD:mf.dll", +- "/DELAYLOAD:mfplat.dll", +- "/DELAYLOAD:mfreadwrite.dll", +- ] ++ if (is_msvc) { ++ ldflags = [ ++ "/DELAYLOAD:mf.dll", ++ "/DELAYLOAD:mfplat.dll", ++ "/DELAYLOAD:mfreadwrite.dll", ++ ] ++ } + } + + source_set("win_unittests") { +@@ -100,17 +118,19 @@ source_set("win_unittests") { + ] + + libs = [ +- "mf.lib", +- "mfplat.lib", +- "mfreadwrite.lib", +- "mfuuid.lib", +- "dxguid.lib", +- ] +- ldflags = [ +- "/DELAYLOAD:mf.dll", +- "/DELAYLOAD:mfplat.dll", +- "/DELAYLOAD:mfreadwrite.dll", ++ "mf", ++ "mfplat", ++ "mfreadwrite", ++ "mfuuid", ++ "dxguid", + ] ++ if (is_msvc) { ++ ldflags = [ ++ "/DELAYLOAD:mf.dll", ++ "/DELAYLOAD:mfplat.dll", ++ "/DELAYLOAD:mfreadwrite.dll", ++ ] ++ } + + testonly = true + } +diff --git a/src/3rdparty/chromium/media/capture/video/win/video_capture_device_factory_win.h b/src/3rdparty/chromium/media/capture/video/win/video_capture_device_factory_win.h +index b637a3b..71b1a38 100644 +--- a/src/3rdparty/chromium/media/capture/video/win/video_capture_device_factory_win.h ++++ b/src/3rdparty/chromium/media/capture/video/win/video_capture_device_factory_win.h +@@ -132,7 +132,9 @@ class CAPTURE_EXPORT VideoCaptureDeviceFactoryWin + + class UsageReportHandler; + scoped_refptr report_handler_; ++#if !defined(COMPILER_GCC) // FIXME: missing Microsoft::WRL::ComPtr + Microsoft::WRL::ComPtr monitor_; ++#endif + + base::WeakPtrFactory weak_ptr_factory_{this}; + }; +diff --git a/src/3rdparty/chromium/media/cdm/BUILD.gn b/src/3rdparty/chromium/media/cdm/BUILD.gn +index 06cafd0..6753eff 100644 +--- a/src/3rdparty/chromium/media/cdm/BUILD.gn ++++ b/src/3rdparty/chromium/media/cdm/BUILD.gn +@@ -128,7 +128,7 @@ source_set("cdm") { + public_deps += [ "//components/crash/core/common:crash_key" ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "media_foundation_cdm_data.cc", + "media_foundation_cdm_data.h", +diff --git a/src/3rdparty/chromium/media/cdm/api/content_decryption_module_export.h b/src/3rdparty/chromium/media/cdm/api/content_decryption_module_export.h +index 932708d..daea1c8 100644 +--- a/src/3rdparty/chromium/media/cdm/api/content_decryption_module_export.h ++++ b/src/3rdparty/chromium/media/cdm/api/content_decryption_module_export.h +@@ -7,7 +7,7 @@ + + // Define CDM_API so that functionality implemented by the CDM module + // can be exported to consumers. +-#if defined(_WIN32) ++#if defined(_MSC_VER) + + #if defined(CDM_IMPLEMENTATION) + #define CDM_API __declspec(dllexport) +@@ -15,9 +15,9 @@ + #define CDM_API __declspec(dllimport) + #endif // defined(CDM_IMPLEMENTATION) + +-#else // defined(_WIN32) ++#else // defined(_MSC_VER) + #define CDM_API __attribute__((visibility("default"))) +-#endif // defined(_WIN32) ++#endif // defined(_MSC_VER) + + // Define CDM_CLASS_API to export class types. We have to add visibility + // attributes to make sure virtual tables in CDM consumer and CDM implementation +@@ -25,14 +25,14 @@ + // about that for the internal symbols, but it has only become a practical issue + // after introduction of LTO devirtualization. See more details on + // https://crbug.com/609564#c35 +-#if defined(_WIN32) ++#if defined(_MSC_VER) + #if defined(__clang__) + #define CDM_CLASS_API [[clang::lto_visibility_public]] + #else + #define CDM_CLASS_API + #endif +-#else // defined(_WIN32) ++#else // defined(_MSC_VER) + #define CDM_CLASS_API __attribute__((visibility("default"))) +-#endif // defined(_WIN32) ++#endif // defined(_MSC_VER) + + #endif // CDM_CONTENT_DECRYPTION_MODULE_EXPORT_H_ +diff --git a/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.cc b/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.cc +index a2a9125..3ad5538 100644 +--- a/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.cc ++++ b/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.cc +@@ -8,11 +8,11 @@ + #include "media/base/cdm_context.h" + #include "media/cdm/cdm_helpers.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include + + #include "media/cdm/media_foundation_cdm_data.h" +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + namespace media { + +@@ -58,7 +58,7 @@ void CdmAuxiliaryHelper::GetStorageId(uint32_t version, StorageIdCB callback) { + std::move(callback).Run(version, std::vector()); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void CdmAuxiliaryHelper::GetMediaFoundationCdmData( + GetMediaFoundationCdmDataCB callback) { + std::move(callback).Run(std::make_unique( +@@ -69,6 +69,6 @@ void CdmAuxiliaryHelper::SetCdmClientToken( + const std::vector& client_token) {} + + void CdmAuxiliaryHelper::OnCdmEvent(CdmEvent event, HRESULT hresult) {} +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + } // namespace media +diff --git a/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.h b/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.h +index d3dc1a8..b3cc53e 100644 +--- a/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.h ++++ b/src/3rdparty/chromium/media/cdm/cdm_auxiliary_helper.h +@@ -91,11 +91,11 @@ class MEDIA_EXPORT CdmAuxiliaryHelper : public CdmAllocator, + ChallengePlatformCB callback) override; + void GetStorageId(uint32_t version, StorageIdCB callback) override; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void GetMediaFoundationCdmData(GetMediaFoundationCdmDataCB callback) override; + void SetCdmClientToken(const std::vector& client_token) override; + void OnCdmEvent(CdmEvent event, HRESULT hresult) override; +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + }; + + } // namespace media +diff --git a/src/3rdparty/chromium/media/cdm/cdm_document_service.h b/src/3rdparty/chromium/media/cdm/cdm_document_service.h +index 4daf875..e8d8119 100644 +--- a/src/3rdparty/chromium/media/cdm/cdm_document_service.h ++++ b/src/3rdparty/chromium/media/cdm/cdm_document_service.h +@@ -52,10 +52,10 @@ class MEDIA_EXPORT CdmDocumentService { + base::OnceCallback& storage_id)>; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + using GetMediaFoundationCdmDataCB = + base::OnceCallback)>; +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + // Allows authorized services to verify that the underlying platform is + // trusted. An example of a trusted platform is a Chrome OS device in +@@ -82,7 +82,7 @@ class MEDIA_EXPORT CdmDocumentService { + // version does not exist. + virtual void GetStorageId(uint32_t version, StorageIdCB callback) = 0; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Gets the Media Foundation cdm data for the origin associated with the CDM. + virtual void GetMediaFoundationCdmData( + GetMediaFoundationCdmDataCB callback) = 0; +@@ -97,7 +97,7 @@ class MEDIA_EXPORT CdmDocumentService { + // logic, e.g. disable the CDM in the current robustness level. For error + // events, the `hresult` provides more details about the error. + virtual void OnCdmEvent(CdmEvent event, HRESULT hresult) = 0; +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + }; + + } // namespace media +diff --git a/src/3rdparty/chromium/media/cdm/mock_helpers.h b/src/3rdparty/chromium/media/cdm/mock_helpers.h +index a8b290b..860636c 100644 +--- a/src/3rdparty/chromium/media/cdm/mock_helpers.h ++++ b/src/3rdparty/chromium/media/cdm/mock_helpers.h +@@ -57,12 +57,12 @@ class MockCdmAuxiliaryHelper : public CdmAuxiliaryHelper { + + MOCK_METHOD(void, RecordUkm, (const CdmMetricsData&), (override)); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + MOCK_METHOD(void, + GetMediaFoundationCdmData, + (GetMediaFoundationCdmDataCB callback), + (override)); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + private: + std::unique_ptr allocator_; +diff --git a/src/3rdparty/chromium/media/cdm/win/media_foundation_cdm.h b/src/3rdparty/chromium/media/cdm/win/media_foundation_cdm.h +index 0d17455..71b10f3 100644 +--- a/src/3rdparty/chromium/media/cdm/win/media_foundation_cdm.h ++++ b/src/3rdparty/chromium/media/cdm/win/media_foundation_cdm.h +@@ -5,6 +5,8 @@ + #ifndef MEDIA_CDM_WIN_MEDIA_FOUNDATION_CDM_H_ + #define MEDIA_CDM_WIN_MEDIA_FOUNDATION_CDM_H_ + ++#if defined(COMPILER_MSVC) ++ + #include + #include + +@@ -187,4 +189,6 @@ class MEDIA_EXPORT MediaFoundationCdm final : public ContentDecryptionModule, + + } // namespace media + ++#endif ++ + #endif // MEDIA_CDM_WIN_MEDIA_FOUNDATION_CDM_H_ +diff --git a/src/3rdparty/chromium/media/device_monitors/BUILD.gn b/src/3rdparty/chromium/media/device_monitors/BUILD.gn +index 8be9855..b637491 100644 +--- a/src/3rdparty/chromium/media/device_monitors/BUILD.gn ++++ b/src/3rdparty/chromium/media/device_monitors/BUILD.gn +@@ -37,7 +37,7 @@ source_set("device_monitors") { + frameworks = [ "Foundation.framework" ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "system_message_window_win.cc", + "system_message_window_win.h", +diff --git a/src/3rdparty/chromium/media/filters/BUILD.gn b/src/3rdparty/chromium/media/filters/BUILD.gn +index 60aaa65..f0fd5ef 100644 +--- a/src/3rdparty/chromium/media/filters/BUILD.gn ++++ b/src/3rdparty/chromium/media/filters/BUILD.gn +@@ -206,7 +206,7 @@ jumbo_source_set("filters") { + "passthrough_dts_audio_decoder.h", + ] + } +- if (is_win) { ++ if (is_msvc) { + sources += [ + "win/media_foundation_audio_decoder.cc", + "win/media_foundation_audio_decoder.h", +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +index 90fb46e..65f301d 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +@@ -125,6 +125,7 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { + if (stream->start_time != kNoFFmpegTimestamp) + start_time = ConvertFromTimeBase(stream->time_base, stream->start_time); + ++#if LIBAVFORMAT_VERSION_MAJOR < 61 + // Next try to use the first DTS value, for codecs where we know PTS == DTS + // (excludes all H26x codecs). The start time must be returned in PTS. + if (av_stream_get_first_dts(stream) != kInvalidPTSMarker && +@@ -136,6 +137,7 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { + if (first_pts < start_time) + start_time = first_pts; + } ++#endif + + return start_time; + } +diff --git a/src/3rdparty/chromium/media/gpu/BUILD.gn b/src/3rdparty/chromium/media/gpu/BUILD.gn +index 0e64edc..53cf6d0 100644 +--- a/src/3rdparty/chromium/media/gpu/BUILD.gn ++++ b/src/3rdparty/chromium/media/gpu/BUILD.gn +@@ -284,6 +284,30 @@ component("gpu") { + "windows/vp9_video_rate_control_wrapper.cc", + "windows/vp9_video_rate_control_wrapper.h", + ] ++ if (is_mingw) { ++ sources -= [ ++ "windows/av1_video_rate_control_wrapper.cc", ++ "windows/av1_video_rate_control_wrapper.h", ++ "windows/d3d12_video_helpers.cc", ++ "windows/d3d12_video_helpers.h", ++ "windows/h264_video_rate_control_wrapper.cc", ++ "windows/h264_video_rate_control_wrapper.h", ++ "windows/media_foundation_video_encode_accelerator_win.cc", ++ "windows/media_foundation_video_encode_accelerator_win.h", ++ "windows/mf_video_encoder_shared_state.cc", ++ "windows/mf_video_encoder_shared_state.h", ++ "windows/mf_video_encoder_switches.cc", ++ "windows/mf_video_encoder_switches.h", ++ "windows/mf_video_encoder_util.cc", ++ "windows/mf_video_encoder_util.h", ++ "windows/mf_video_processor_accelerator.cc", ++ "windows/mf_video_processor_accelerator.h", ++ "windows/video_rate_control_wrapper.cc", ++ "windows/video_rate_control_wrapper.h", ++ "windows/vp9_video_rate_control_wrapper.cc", ++ "windows/vp9_video_rate_control_wrapper.h", ++ ] ++ } + if (!is_qtwebengine) { + sources += [ + "windows/d3d12_video_encode_accelerator.cc", +@@ -308,27 +332,40 @@ component("gpu") { + "//third_party/libvpx:libvpxrc", + "//ui/display", + ] +- libs += [ +- "d3d9.lib", +- "d3d11.lib", +- "d3d12.lib", +- "dxgi.lib", +- "dxva2.lib", +- "dxgi.lib", +- "strmiids.lib", +- "mf.lib", +- "mfplat.lib", +- "mfuuid.lib", +- ] +- ldflags += [ +- "/DELAYLOAD:d3d9.dll", +- "/DELAYLOAD:d3d11.dll", +- "/DELAYLOAD:d3d12.dll", +- "/DELAYLOAD:dxva2.dll", +- "/DELAYLOAD:dxgi.dll", +- "/DELAYLOAD:mf.dll", +- "/DELAYLOAD:mfplat.dll", +- ] ++ if (is_msvc) { ++ libs += [ ++ "d3d9.lib", ++ "d3d11.lib", ++ "d3d12.lib", ++ "dxva2.lib", ++ "dxgi.lib", ++ "strmiids.lib", ++ "mf.lib", ++ "mfplat.lib", ++ "mfuuid.lib", ++ ] ++ ldflags += [ ++ "/DELAYLOAD:d3d9.dll", ++ "/DELAYLOAD:d3d11.dll", ++ "/DELAYLOAD:d3d12.dll", ++ "/DELAYLOAD:dxva2.dll", ++ "/DELAYLOAD:dxgi.dll", ++ "/DELAYLOAD:mf.dll", ++ "/DELAYLOAD:mfplat.dll", ++ ] ++ } else { ++ libs += [ ++ "d3d9", ++ "d3d11", ++ "d3d12", ++ "dxgi", ++ "dxva2", ++ "strmiids", ++ "mf", ++ "mfplat", ++ "mfuuid", ++ ] ++ } + } + + if (use_ozone) { +@@ -689,7 +726,7 @@ source_set("unit_tests") { + deps += [ "//media/gpu/mac:unit_tests" ] + } + +- if (is_win || use_vaapi) { ++ if (is_msvc || use_vaapi) { + sources += [ + "av1_builder_unittest.cc", + "h264_builder_unittest.cc", +diff --git a/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc b/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc +index d36cd42..61101c7 100644 +--- a/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc ++++ b/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc +diff --git a/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc b/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc +index ece8b87..fa9c3c7 100644 +--- a/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc ++++ b/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc +@@ -10,0 +11 @@ ++#include "build/build_config.h" +@@ -68,0 +70 @@ class D3D11VideoDeviceWrapper : public D3DVideoDeviceWrapper { ++#if !BUILDFLAG(IS_MINGW) +@@ -113,0 +116 @@ class D3D12VideoDeviceWrapper : public D3DVideoDeviceWrapper { ++#endif +@@ -394,0 +398,3 @@ SupportedResolutionRangeMap GetSupportedD3D12VideoDecoderResolutions( ++#if BUILDFLAG(IS_MINGW) ++ return GetSupportedD3DVideoDecoderResolutions(nullptr, workarounds); ++#else +@@ -402,0 +409 @@ SupportedResolutionRangeMap GetSupportedD3D12VideoDecoderResolutions( ++#endif +diff --git a/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc b/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc +index 72ab1b4..c277986 100644 +--- a/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc ++++ b/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc +diff --git a/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_selector.cc b/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_selector.cc +index deb6529..aca4ae4 100644 +--- a/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_selector.cc ++++ b/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_selector.cc +@@ -254,9 +254,11 @@ std::unique_ptr CopyTextureSelector::CreateTextureWrapper( + if (FAILED(device->CreateTexture2D(&texture_desc, nullptr, &out_texture))) + return nullptr; + ++#if defined(COMPILER_MSVC) + if (FAILED( + SetDebugName(out_texture.Get(), "D3D11Decoder_CopyTextureSelector"))) + return nullptr; ++#endif + + return std::make_unique( + size, +diff --git a/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_wrapper.cc b/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_wrapper.cc +index 5a0ec8e..2185868 100644 +--- a/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_wrapper.cc ++++ b/src/3rdparty/chromium/media/gpu/windows/d3d11_texture_wrapper.cc +@@ -134,6 +134,7 @@ D3D11Status DefaultTexture2DWrapper::Init( + picture_buffer_gpu_resource_init_done_cb_ = + std::move(picture_buffer_gpu_resource_init_done_cb); + ++#if defined(COMPILER_MSVC) + // Start construction of the GpuResources. + // We send the texture itself, since we assume that we're using the angle + // device for decoding. Sharing seems not to work very well. Otherwise, we +@@ -151,6 +152,7 @@ D3D11Status DefaultTexture2DWrapper::Init( + video_device_, texture, array_slice, std::move(picture_buffer), + std::move(gpu_resource_init_cb)); + return D3D11Status::Codes::kOk; ++#endif + } + + void DefaultTexture2DWrapper::OnError(D3D11Status status) { +@@ -193,6 +195,7 @@ DefaultTexture2DWrapper::GpuResources::GpuResources( + + auto* shared_image_manager = helper_->GetSharedImageManager(); + ++#if defined(COMPILER_MSVC) + // Usage flags to allow the display compositor to draw from it, video to + // decode from it, and webgl/canvas to read from it. + gpu::SharedImageUsageSet usage = +@@ -280,6 +283,7 @@ DefaultTexture2DWrapper::GpuResources::GpuResources( + std::move(gpu_resource_init_cb) + .Run(std::move(picture_buffer), std::move(shared_image_rep), + std::move(shared_image)); ++#endif + } + + DefaultTexture2DWrapper::GpuResources::~GpuResources() = default; +diff --git a/src/3rdparty/chromium/media/gpu/windows/mf_audio_encoder.cc b/src/3rdparty/chromium/media/gpu/windows/mf_audio_encoder.cc +index 0d2ec9c..f4e14fe 100644 +--- a/src/3rdparty/chromium/media/gpu/windows/mf_audio_encoder.cc ++++ b/src/3rdparty/chromium/media/gpu/windows/mf_audio_encoder.cc +@@ -403,6 +403,7 @@ void MFAudioEncoder::Initialize(const Options& options, + return; + } + ++#if !defined(COMPILER_GCC) // FIXME: missing CODECAPI_AVEncAACEnableVBR + if (options_.bitrate_mode.has_value() && + options_.bitrate_mode.value() == AudioEncoder::BitrateMode::kVariable && + options.codec == AudioCodec::kAAC) { +@@ -421,6 +422,7 @@ void MFAudioEncoder::Initialize(const Options& options, + } + } + } ++#endif + + // We skip getting the stream counts and IDs because encoders only have one + // input and output stream, and the ID of each is always 0. +diff --git a/src/3rdparty/chromium/media/midi/BUILD.gn b/src/3rdparty/chromium/media/midi/BUILD.gn +index 0ba1991..ac0e10e 100644 +--- a/src/3rdparty/chromium/media/midi/BUILD.gn ++++ b/src/3rdparty/chromium/media/midi/BUILD.gn +@@ -148,12 +148,23 @@ component("midi") { + "midi_manager_winrt.cc", + "midi_manager_winrt.h", + ] +- +- libs += [ "setupapi.lib" ] ++ if (is_mingw) { ++ sources -= [ ++ "midi_manager_winrt.cc", ++ "midi_manager_winrt.h", ++ ] ++ libs += [ "setupapi" ] ++ } else { ++ libs += [ "setupapi.lib" ] ++ } + + # This library is included in base in static builds. + if (is_component_build) { +- libs += [ "cfgmgr32.lib" ] ++ if (is_mingw) { ++ libs += [ "cfgmgr32" ] ++ } else { ++ libs += [ "cfgmgr32.lib" ] ++ } + } + } + +diff --git a/src/3rdparty/chromium/media/midi/midi_manager_win.cc b/src/3rdparty/chromium/media/midi/midi_manager_win.cc +index 23c31dd..8853534 100644 +--- a/src/3rdparty/chromium/media/midi/midi_manager_win.cc ++++ b/src/3rdparty/chromium/media/midi/midi_manager_win.cc +@@ -899,9 +899,11 @@ void MidiManagerWin::SendOnTaskRunner(MidiManagerClient* client, + } + + MidiManager* MidiManager::Create(MidiService* service) { ++#if defined(COMPILER_MSVC) + if (base::FeatureList::IsEnabled(features::kMidiManagerWinrt)) { + return new MidiManagerWinrt(service); + } ++#endif + return new MidiManagerWin(service); + } + +diff --git a/src/3rdparty/chromium/media/mojo/clients/BUILD.gn b/src/3rdparty/chromium/media/mojo/clients/BUILD.gn +index e5086da..e0485a6 100644 +--- a/src/3rdparty/chromium/media/mojo/clients/BUILD.gn ++++ b/src/3rdparty/chromium/media/mojo/clients/BUILD.gn +@@ -107,7 +107,7 @@ jumbo_source_set("clients") { + "//ui/gl:gl", + ] + } +- if (is_win) { ++ if (is_msvc) { + sources += [ + "win/media_foundation_renderer_client.cc", + "win/media_foundation_renderer_client.h", +diff --git a/src/3rdparty/chromium/media/mojo/mojom/BUILD.gn b/src/3rdparty/chromium/media/mojo/mojom/BUILD.gn +index 50c2f63..950c7bf 100644 +--- a/src/3rdparty/chromium/media/mojo/mojom/BUILD.gn ++++ b/src/3rdparty/chromium/media/mojo/mojom/BUILD.gn +@@ -708,7 +708,7 @@ mojom("mojom") { + }, + ] + +- if (is_win) { ++ if (is_msvc) { + cpp_typemaps += [ + { + types = [ +diff --git a/src/3rdparty/chromium/media/mojo/mojom/cdm_document_service.mojom b/src/3rdparty/chromium/media/mojo/mojom/cdm_document_service.mojom +index 4775950..08680f6 100644 +--- a/src/3rdparty/chromium/media/mojo/mojom/cdm_document_service.mojom ++++ b/src/3rdparty/chromium/media/mojo/mojom/cdm_document_service.mojom +@@ -63,18 +63,18 @@ interface CdmDocumentService { + // Gets the Media FoundationCDM data for the origin associated with the CDM. + // - `media_foundation_cdm_data`: The CDM data for the origin associated with + // the CDM. +- [EnableIf=is_win] ++ [EnableIf=is_msvc] + GetMediaFoundationCdmData() => (MediaFoundationCdmData cdm_data); + + // Sets the client token for the origin associated with the CDM. The token is + // set by the CDM. The token is then saved in the Pref Service so that it can + // be reused by the CDM for that same origin in the future. +- [EnableIf=is_win] ++ [EnableIf=is_msvc] + SetCdmClientToken(array client_token); + + // Reports a CDM event, which can facilitate metrics reporting or fallback + // logic. For error events, the `hresult` provides more details about the + // error. +- [EnableIf=is_win] ++ [EnableIf=is_msvc] + OnCdmEvent(CdmEvent event, uint32 hresult); + }; +diff --git a/src/3rdparty/chromium/media/mojo/services/BUILD.gn b/src/3rdparty/chromium/media/mojo/services/BUILD.gn +index 563c903..39696a9 100644 +--- a/src/3rdparty/chromium/media/mojo/services/BUILD.gn ++++ b/src/3rdparty/chromium/media/mojo/services/BUILD.gn +@@ -188,7 +188,7 @@ jumbo_component("services") { + deps += [ "//media/cdm:cdm_api" ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "media_foundation_gpu_info_monitor.cc", + "media_foundation_gpu_info_monitor.h", +diff --git a/src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client_win.cc b/src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client_win.cc +index bd33420..b394675 100644 +--- a/src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client_win.cc ++++ b/src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client_win.cc +@@ -126,7 +126,11 @@ class GpuMojoMediaClientWin final : public GpuMojoMediaClient { + std::unique_ptr CreatePlatformAudioDecoder( + scoped_refptr task_runner, + std::unique_ptr media_log) final { ++#if defined(COMPILER_MSVC) + return MediaFoundationAudioDecoder::Create(); ++#else ++ return nullptr; ++#endif + } + + VideoDecoderType GetPlatformDecoderImplementationType() final { +diff --git a/src/3rdparty/chromium/media/mojo/services/media_service_factory.cc b/src/3rdparty/chromium/media/mojo/services/media_service_factory.cc +index 9e1ffc8..b0f1720 100644 +--- a/src/3rdparty/chromium/media/mojo/services/media_service_factory.cc ++++ b/src/3rdparty/chromium/media/mojo/services/media_service_factory.cc +@@ -17,7 +17,7 @@ + #include "media/mojo/services/android_mojo_media_client.h" // nogncheck + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "media/mojo/services/media_foundation_mojo_media_client.h" + #endif + +@@ -28,7 +28,7 @@ std::unique_ptr CreateMediaService( + #if BUILDFLAG(IS_ANDROID) + return std::make_unique( + std::make_unique(), std::move(receiver)); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + return std::make_unique( + std::make_unique(), std::move(receiver)); + #else +diff --git a/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.cc b/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.cc +index 9becbb9..e5a3346 100644 +--- a/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.cc ++++ b/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.cc +@@ -60,7 +60,7 @@ url::Origin MojoCdmHelper::GetCdmOrigin() { + return cdm_origin; + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void MojoCdmHelper::GetMediaFoundationCdmData( + GetMediaFoundationCdmDataCB callback) { + ConnectToCdmDocumentService(); +@@ -77,7 +77,7 @@ void MojoCdmHelper::OnCdmEvent(CdmEvent event, HRESULT hresult) { + ConnectToCdmDocumentService(); + cdm_document_service_->OnCdmEvent(event, hresult); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + cdm::Buffer* MojoCdmHelper::CreateCdmBuffer(size_t capacity) { + return GetAllocator()->CreateCdmBuffer(capacity); +diff --git a/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.h b/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.h +index 9bed939..745df11 100644 +--- a/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.h ++++ b/src/3rdparty/chromium/media/mojo/services/mojo_cdm_helper.h +@@ -51,11 +51,11 @@ class MEDIA_MOJO_EXPORT MojoCdmHelper final : public CdmAuxiliaryHelper, + const std::string& challenge, + ChallengePlatformCB callback) final; + void GetStorageId(uint32_t version, StorageIdCB callback) final; +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void GetMediaFoundationCdmData(GetMediaFoundationCdmDataCB callback) final; + void SetCdmClientToken(const std::vector& client_token) final; + void OnCdmEvent(CdmEvent event, HRESULT hresult) final; +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + // MojoCdmFileIO::Delegate implementation. + void CloseCdmFileIO(MojoCdmFileIO* cdm_file_io) final; +diff --git a/src/3rdparty/chromium/media/renderers/BUILD.gn b/src/3rdparty/chromium/media/renderers/BUILD.gn +index 3f27372..05c5333 100644 +--- a/src/3rdparty/chromium/media/renderers/BUILD.gn ++++ b/src/3rdparty/chromium/media/renderers/BUILD.gn +@@ -63,7 +63,7 @@ source_set("renderers") { + "//ui/gl", + ] + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "win/media_engine_extension.cc", + "win/media_engine_extension.h", diff --git a/mingw-w64-qt6-webengine-thirdparty/0010-chromium-net.patch b/mingw-w64-qt6-webengine-thirdparty/0010-chromium-net.patch new file mode 100644 index 0000000000000..7f9eccca976f0 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0010-chromium-net.patch @@ -0,0 +1,228 @@ +diff --git a/src/3rdparty/chromium/net/BUILD.gn b/src/3rdparty/chromium/net/BUILD.gn +index ae1600a..a4de257 100644 +--- a/src/3rdparty/chromium/net/BUILD.gn ++++ b/src/3rdparty/chromium/net/BUILD.gn +@@ -1420,6 +1420,14 @@ jumbo_component("net") { + "ssl/client_cert_store_win.h", + "ssl/ssl_platform_key_win.cc", + ] ++ if (is_mingw) { ++ sources -= [ ++ "base/network_change_notifier_win.cc", ++ "base/network_change_notifier_win.h", ++ "base/network_cost_change_notifier_win.cc", ++ "base/network_cost_change_notifier_win.h", ++ ] ++ } + } + + if (use_kerberos) { +@@ -1617,7 +1625,20 @@ jumbo_component("net") { + ] + } + +- if (is_win) { ++ if (is_mingw) { ++ libs = [ ++ "crypt32", ++ "dhcpcsvc", ++ "iphlpapi", ++ "ncrypt", ++ "rpcrt4", ++ "secur32", ++ "urlmon", ++ "winhttp", ++ ] ++ } ++ ++ if (is_msvc) { + libs = [ + "crypt32.lib", + "dhcpcsvc.lib", +@@ -3381,7 +3402,12 @@ target(_test_target_type, "net_unittests") { + } + } + +- if (is_win) { ++ if (is_mingw) { ++ libs = [ ++ "iphlpapi", ++ "ncrypt", ++ ] ++ } else if (is_msvc) { + libs = [ + "iphlpapi.lib", + "ncrypt.lib", +@@ -3395,7 +3421,7 @@ target(_test_target_type, "net_unittests") { + "//net/data/ssl/chrome_root_store:gen_root_store_test_inc", + ] + +- if (is_win) { ++ if (is_msvc) { + sources += [ "cert/internal/trust_store_win_unittest.cc" ] + sources += [ "cert/internal/path_builder_trust_store_win_unittest.cc" ] + libs += [ "crypt32.lib" ] +diff --git a/src/3rdparty/chromium/net/base/network_change_notifier.cc b/src/3rdparty/chromium/net/base/network_change_notifier.cc +index 4d0bbdd..ba8cdf4 100644 +--- a/src/3rdparty/chromium/net/base/network_change_notifier.cc ++++ b/src/3rdparty/chromium/net/base/network_change_notifier.cc +@@ -302,7 +302,7 @@ std::unique_ptr NetworkChangeNotifier::CreateIfNeeded( + initial_type, initial_subtype); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + std::unique_ptr network_change_notifier = + std::make_unique(); + network_change_notifier->WatchForAddressChange(); +diff --git a/src/3rdparty/chromium/net/dns/host_resolver_system_task.cc b/src/3rdparty/chromium/net/dns/host_resolver_system_task.cc +index 5c79b0a..20bd084 100644 +--- a/src/3rdparty/chromium/net/dns/host_resolver_system_task.cc ++++ b/src/3rdparty/chromium/net/dns/host_resolver_system_task.cc +@@ -542,13 +542,13 @@ int SystemHostResolverCall(const std::string& host, + if (host_resolver_flags & HOST_RESOLVER_CANONNAME) + hints.ai_flags |= AI_CANONNAME; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // See crbug.com/1176970. Flag not documented (other than the declaration + // comment in ws2def.h) but confirmed by Microsoft to work for this purpose + // and be safe. + if (host_resolver_flags & HOST_RESOLVER_AVOID_MULTICAST) + hints.ai_flags |= AI_DNS_ONLY; +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + // Restrict result set to only this socket type to avoid duplicates. + hints.ai_socktype = SOCK_STREAM; +diff --git a/src/3rdparty/chromium/net/http/http_auth_sspi_win.h b/src/3rdparty/chromium/net/http/http_auth_sspi_win.h +index b46a627..6b02e63 100644 +--- a/src/3rdparty/chromium/net/http/http_auth_sspi_win.h ++++ b/src/3rdparty/chromium/net/http/http_auth_sspi_win.h +@@ -14,7 +14,9 @@ + + // security.h needs to be included for CredHandle. Unfortunately CredHandle + // is a typedef and can't be forward declared. ++#ifndef SECURITY_WIN32 + #define SECURITY_WIN32 1 ++#endif + #include + + #include +diff --git a/src/3rdparty/chromium/net/socket/tcp_socket_win.cc b/src/3rdparty/chromium/net/socket/tcp_socket_win.cc +index 79505e9..9402ab1 100644 +--- a/src/3rdparty/chromium/net/socket/tcp_socket_win.cc ++++ b/src/3rdparty/chromium/net/socket/tcp_socket_win.cc +@@ -968,6 +968,7 @@ int TCPSocketWin::DoConnect() { + return ERR_ADDRESS_INVALID; + } + ++#if !defined(COMPILER_GCC) // FIXME: missing SO_RANDOMIZE_PORT + // Set option to choose a random port, if the socket is not already bound. + // Ignore failures, which may happen if the socket was already bound. + if (base::win::GetVersion() >= base::win::Version::WIN10_20H1 && +@@ -977,6 +978,7 @@ int TCPSocketWin::DoConnect() { + reinterpret_cast(&randomize_port), + sizeof(randomize_port)); + } ++#endif + + if (!connect(socket_, storage.addr(), storage.addr_len)) { + // Connected without waiting! +diff --git a/src/3rdparty/chromium/net/socket/udp_socket_win.cc b/src/3rdparty/chromium/net/socket/udp_socket_win.cc +index 8e6f516..ea43cc8 100644 +--- a/src/3rdparty/chromium/net/socket/udp_socket_win.cc ++++ b/src/3rdparty/chromium/net/socket/udp_socket_win.cc +@@ -501,12 +501,14 @@ int UDPSocketWin::InternalConnect(const IPEndPoint& address) { + DCHECK(!is_connected()); + DCHECK(!remote_address_.get()); + ++#if !defined(COMPILER_GCC) // FIXME: missing SO_RANDOMIZE_PORT + // Always do a random bind. + // Ignore failures, which may happen if the socket was already bound. + DWORD randomize_port_value = 1; + setsockopt(socket_, SOL_SOCKET, SO_RANDOMIZE_PORT, + reinterpret_cast(&randomize_port_value), + sizeof(randomize_port_value)); ++#endif + + SockaddrStorage storage; + if (!address.ToSockAddr(storage.addr(), &storage.addr_len)) { +@@ -647,6 +649,7 @@ int UDPSocketWin::SetRecvTos() { + } + int v6_only = 0; + int ecn = 1; ++#if !defined(COMPILER_GCC) // FIXME: missing IPV6_RECVECN, IP_RECVECN + if (addr_family_ == AF_INET6 && !address.address().IsIPv4MappedIPv6()) { + rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_RECVECN, + reinterpret_cast(&ecn), sizeof(ecn)); +@@ -673,6 +676,7 @@ int UDPSocketWin::SetRecvTos() { + return LogAndReturnError(); + } + } ++#endif + wsa_recv_msg_ = GetRecvMsgPointer(); + if (wsa_recv_msg_ == nullptr) { + return LogAndReturnError(); +@@ -1537,6 +1541,7 @@ int DscpManager::PrepareForSend(const IPEndPoint& remote_address) { + // We won't try this address again if we get an error. + configured_.emplace(remote_address); + ++#if !defined(COMPILER_GCC) // FIXME: missing QOS_NON_ADAPTIVE_FLOW + // We don't need to call SetFlow if we already have a qos flow. + bool new_flow = flow_id_ == 0; + +@@ -1565,6 +1570,7 @@ int DscpManager::PrepareForSend(const IPEndPoint& remote_address) { + api_->SetFlow(qos_handle_, flow_id_, QOSSetOutgoingDSCPValue, sizeof(buf), + &buf, 0, nullptr); + } ++#endif + + return OK; + } +diff --git a/src/3rdparty/chromium/net/ssl/client_cert_store_win.cc b/src/3rdparty/chromium/net/ssl/client_cert_store_win.cc +index a1d1925..3179092 100644 +--- a/src/3rdparty/chromium/net/ssl/client_cert_store_win.cc ++++ b/src/3rdparty/chromium/net/ssl/client_cert_store_win.cc +@@ -16,7 +16,9 @@ + + #include + ++#ifndef SECURITY_WIN32 + #define SECURITY_WIN32 ++#endif + #include + + #include "base/functional/bind.h" +diff --git a/src/3rdparty/chromium/net/ssl/ssl_platform_key_win.cc b/src/3rdparty/chromium/net/ssl/ssl_platform_key_win.cc +index 8f0919f..a0b3445 100644 +--- a/src/3rdparty/chromium/net/ssl/ssl_platform_key_win.cc ++++ b/src/3rdparty/chromium/net/ssl/ssl_platform_key_win.cc +@@ -258,6 +258,7 @@ class SSLPlatformKeyCNG : public ThreadedSSLPrivateKey::Delegate { + // result, if this is a TPM-based key, we only report PSS as supported if + // the salt length will match the digest length. + bool supports_pss = true; ++#if !defined(COMPILER_GCC) // FIXME: missing NCRYPT_PCP_PSS*, NCRYPT_TPM_PSS* + if (provider_name_ == MS_PLATFORM_KEY_STORAGE_PROVIDER) { + DWORD salt_size = 0; + DWORD size_of_salt_size = sizeof(salt_size); +@@ -269,6 +270,7 @@ class SSLPlatformKeyCNG : public ThreadedSSLPrivateKey::Delegate { + supports_pss = false; + } + } ++#endif + if (prefer_sha1_) { + std::vector ret = { + SSL_SIGN_RSA_PKCS1_SHA1, +diff --git a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h +index ffe1a7f..4666f32 100644 +--- a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h ++++ b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h +@@ -4,6 +4,7 @@ + #include + #include + ++#include + #include + + #include "quiche/common/platform/api/quiche_export.h" diff --git a/mingw-w64-qt6-webengine-thirdparty/0011-chromium-sandbox.patch b/mingw-w64-qt6-webengine-thirdparty/0011-chromium-sandbox.patch new file mode 100644 index 0000000000000..0638f8e2fe16e --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0011-chromium-sandbox.patch @@ -0,0 +1,283 @@ +diff --git a/src/3rdparty/chromium/sandbox/win/BUILD.gn b/src/3rdparty/chromium/sandbox/win/BUILD.gn +index 5c47439..4a3da81 100644 +--- a/src/3rdparty/chromium/sandbox/win/BUILD.gn ++++ b/src/3rdparty/chromium/sandbox/win/BUILD.gn +@@ -188,10 +188,17 @@ static_library("sandbox") { + "//build/config/win:maybe_set_appcontainer_acls", + ] + +- libs = [ +- "ntdll.lib", +- "userenv.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "ntdll.lib", ++ "userenv.lib", ++ ] ++ } else { ++ libs = [ ++ "ntdll", ++ "userenv", ++ ] ++ } + } + + test("sbox_integration_tests") { +diff --git a/src/3rdparty/chromium/sandbox/win/src/interception_agent.cc b/src/3rdparty/chromium/sandbox/win/src/interception_agent.cc +index 519b686..227b265 100644 +--- a/src/3rdparty/chromium/sandbox/win/src/interception_agent.cc ++++ b/src/3rdparty/chromium/sandbox/win/src/interception_agent.cc +@@ -47,7 +47,7 @@ InterceptionAgent* InterceptionAgent::GetInterceptionAgent() { + + size_t array_bytes = g_interceptions->num_intercepted_dlls * sizeof(void*); + s_singleton = reinterpret_cast( +- new (NT_ALLOC) char[array_bytes + sizeof(InterceptionAgent)]); ++ new char[array_bytes + sizeof(InterceptionAgent)]); + + bool success = s_singleton->Init(g_interceptions); + if (!success) { +@@ -111,7 +111,7 @@ bool InterceptionAgent::OnDllLoad(const UNICODE_STRING* full_path, + size_t buffer_bytes = offsetof(DllInterceptionData, thunks) + + dll_info->num_functions * sizeof(ThunkData); + dlls_[i] = reinterpret_cast( +- new (NT_PAGE, base_address) char[buffer_bytes]); ++ new char[buffer_bytes]); + + DCHECK_NT(dlls_[i]); + if (!dlls_[i]) +diff --git a/src/3rdparty/chromium/sandbox/win/src/nt_internals.h b/src/3rdparty/chromium/sandbox/win/src/nt_internals.h +index 8df2c68..4844504 100644 +--- a/src/3rdparty/chromium/sandbox/win/src/nt_internals.h ++++ b/src/3rdparty/chromium/sandbox/win/src/nt_internals.h +@@ -40,12 +40,14 @@ typedef NTSTATUS(WINAPI* NtOpenFileFunction)(OUT PHANDLE FileHandle, + + typedef NTSTATUS(WINAPI* NtCloseFunction)(IN HANDLE Handle); + ++#ifdef _MSC_VER + typedef struct _FILE_RENAME_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; + } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; ++#endif + + typedef NTSTATUS(WINAPI* NtSetInformationFileFunction)( + IN HANDLE FileHandle, +@@ -54,6 +56,7 @@ typedef NTSTATUS(WINAPI* NtSetInformationFileFunction)( + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass); + ++#ifdef _MSC_VER + typedef struct FILE_BASIC_INFORMATION { + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; +@@ -61,11 +64,13 @@ typedef struct FILE_BASIC_INFORMATION { + LARGE_INTEGER ChangeTime; + ULONG FileAttributes; + } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; ++#endif + + typedef NTSTATUS(WINAPI* NtQueryAttributesFileFunction)( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_BASIC_INFORMATION FileAttributes); + ++#ifdef _MSC_VER + typedef struct _FILE_NETWORK_OPEN_INFORMATION { + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; +@@ -75,6 +80,7 @@ typedef struct _FILE_NETWORK_OPEN_INFORMATION { + LARGE_INTEGER EndOfFile; + ULONG FileAttributes; + } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; ++#endif + + typedef NTSTATUS(WINAPI* NtQueryFullAttributesFileFunction)( + IN POBJECT_ATTRIBUTES ObjectAttributes, +@@ -147,8 +153,10 @@ typedef NTSTATUS(WINAPI* NtOpenProcessFunction)(OUT PHANDLE ProcessHandle, + ObjectAttributes, + IN PCLIENT_ID ClientId); + ++#ifdef _MSC_VER + // Provide ThreadImpersonationToken which is not in THREADINFOCLASS. + constexpr auto ThreadImpersonationToken = static_cast(5); ++#endif + + typedef NTSTATUS(WINAPI* NtSetInformationThreadFunction)( + IN HANDLE ThreadHandle, +@@ -208,8 +216,10 @@ typedef NTSTATUS(WINAPI* NtOpenProcessTokenExFunction)( + // ----------------------------------------------------------------------- + // Memory + ++#ifdef _MSC_VER + // Don't really need this structure right now. + typedef PVOID PRTL_HEAP_PARAMETERS; ++#endif + + typedef PVOID(WINAPI* RtlCreateHeapFunction)(IN ULONG Flags, + IN PVOID HeapBase OPTIONAL, +@@ -271,8 +281,10 @@ typedef NTSTATUS(WINAPI* NtProtectVirtualMemoryFunction)( + // ----------------------------------------------------------------------- + // Objects + ++#ifdef _MSC_VER + // Add some field not in OBJECT_INFORMATION_CLASS. + constexpr auto ObjectNameInformation = static_cast(1); ++#endif + + typedef enum _POOL_TYPE { + NonPagedPool, +@@ -284,6 +296,7 @@ typedef enum _POOL_TYPE { + NonPagedPoolCacheAlignedMustS + } POOL_TYPE; + ++#ifdef _MSC_VER + typedef struct _OBJECT_BASIC_INFORMATION { + ULONG Attributes; + ACCESS_MASK GrantedAccess; +@@ -326,6 +339,7 @@ typedef struct _OBJECT_TYPE_INFORMATION { + typedef struct _OBJECT_NAME_INFORMATION { + UNICODE_STRING ObjectName; + } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; ++#endif + + typedef NTSTATUS(WINAPI* NtQueryObjectFunction)( + IN HANDLE Handle, +diff --git a/src/3rdparty/chromium/sandbox/win/src/sandbox_nt_util.cc b/src/3rdparty/chromium/sandbox/win/src/sandbox_nt_util.cc +index 26158cc..ea4119c 100644 +--- a/src/3rdparty/chromium/sandbox/win/src/sandbox_nt_util.cc ++++ b/src/3rdparty/chromium/sandbox/win/src/sandbox_nt_util.cc +@@ -19,6 +19,7 @@ + #include "base/compiler_specific.h" + #include "base/containers/span.h" + #include "base/win/pe_image.h" ++#include "build/build_config.h" + #include "sandbox/win/src/internal_types.h" + #include "sandbox/win/src/nt_internals.h" + #include "sandbox/win/src/sandbox_factory.h" +@@ -36,7 +37,7 @@ namespace { + + // Uses value of FILE_INFORMATION_CLASS defined in Wdm.h but not in user-mode. + // https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_file_information_class +-constexpr uint32_t FileRenameInformation = 10; ++constexpr uint32_t kFileRenameInformation = 10; + + #if defined(_WIN64) + // Align a pointer to the next allocation granularity boundary. +@@ -326,7 +327,9 @@ NTSTATUS CopyData(void* destination, const void* source, size_t bytes) { + __try { + GetNtExports()->memcpy(destination, source, bytes); + } __except (EXCEPTION_EXECUTE_HANDLER) { ++#ifdef _MSC_VER + ret = (NTSTATUS)GetExceptionCode(); ++#endif + } + return ret; + } +@@ -352,7 +355,7 @@ NTSTATUS CopyNameAndAttributes( + break; + + size_t size = in_object->ObjectName->Length / sizeof(wchar_t); +- out_name->reset(new (NT_ALLOC) wchar_t[size + 1]); ++ out_name->reset(new wchar_t[size + 1]); + if (!*out_name) + break; + +@@ -369,7 +372,9 @@ NTSTATUS CopyNameAndAttributes( + ret = STATUS_SUCCESS; + } while (false); + } __except (EXCEPTION_EXECUTE_HANDLER) { ++#ifdef _MSC_VER + ret = (NTSTATUS)GetExceptionCode(); ++#endif + } + + if (!NT_SUCCESS(ret) && *out_name) +@@ -475,7 +480,7 @@ UNICODE_STRING* AnsiToUnicode(const char* string) { + ansi_string.MaximumLength * sizeof(wchar_t) + sizeof(UNICODE_STRING); + + UNICODE_STRING* out_string = +- reinterpret_cast(new (NT_ALLOC) char[name_bytes]); ++ reinterpret_cast(new char[name_bytes]); + if (!out_string) + return nullptr; + +@@ -558,7 +563,7 @@ UNICODE_STRING* GetBackingFilePath(PVOID address) { + + for (;;) { + MEMORY_SECTION_NAME* section_name = reinterpret_cast( +- new (NT_ALLOC) char[buffer_bytes]); ++ new char[buffer_bytes]); + + if (!section_name) + return nullptr; +@@ -611,7 +616,7 @@ UNICODE_STRING* ExtractModuleName(const UNICODE_STRING* module_path) { + // Because module_path is a UNICODE_STRING, size_bytes will be small enough + // to make the static_cast below safe. + DCHECK_NT(UINT16_MAX > size_bytes); +- char* str_buffer = new (NT_ALLOC) char[size_bytes + sizeof(UNICODE_STRING)]; ++ char* str_buffer = new char[size_bytes + sizeof(UNICODE_STRING)]; + if (!str_buffer) + return nullptr; + +@@ -669,6 +674,6 @@ bool IsSupportedRenameCall(FILE_RENAME_INFORMATION* file_info, + DWORD length, + uint32_t file_info_class) { +- if (FileRenameInformation != file_info_class) ++ if (kFileRenameInformation != file_info_class) + return false; + + if (length < sizeof(FILE_RENAME_INFORMATION)) +diff --git a/src/3rdparty/chromium/sandbox/win/src/signed_interception.cc b/src/3rdparty/chromium/sandbox/win/src/signed_interception.cc +index 2e792bb..e94fb88 100644 +--- a/src/3rdparty/chromium/sandbox/win/src/signed_interception.cc ++++ b/src/3rdparty/chromium/sandbox/win/src/signed_interception.cc +@@ -69,7 +69,7 @@ NTSTATUS TargetNtCreateSection(NtCreateSectionFunction orig_CreateSection, + } + + CountedParameterSet params; +- params[NameBased::NAME] = ParamPickerMake(path->ObjectName.Buffer); ++ params[NameBased::NAME] = ParamPickerMake(path->Name.Buffer); + + // Check if this will be sent to the broker. + if (!QueryBroker(IpcTag::NTCREATESECTION, params.GetBase())) +diff --git a/src/3rdparty/chromium/sandbox/win/src/target_process.cc b/src/3rdparty/chromium/sandbox/win/src/target_process.cc +index df0be21..4c963d8 100644 +--- a/src/3rdparty/chromium/sandbox/win/src/target_process.cc ++++ b/src/3rdparty/chromium/sandbox/win/src/target_process.cc +@@ -249,7 +249,7 @@ ResultCode TargetProcess::TransferVariable(const char* name, + if (!module) + return SBOX_ERROR_CANNOT_LOADLIBRARY_EXECUTABLE; + +- target_address = ::GetProcAddress(module, name); ++ target_address = reinterpret_cast(::GetProcAddress(module, name)); + ::FreeLibrary(module); + + if (!target_address) +diff --git a/src/3rdparty/chromium/sandbox/win/src/win_utils.cc b/src/3rdparty/chromium/sandbox/win/src/win_utils.cc +index 6ebaf2c..0ef44a9 100644 +--- a/src/3rdparty/chromium/sandbox/win/src/win_utils.cc ++++ b/src/3rdparty/chromium/sandbox/win/src/win_utils.cc +@@ -98,8 +98,8 @@ std::optional GetPathFromHandle(HANDLE handle) { + OBJECT_NAME_INFORMATION* name = + reinterpret_cast(buffer->data()); + return std::wstring( +- name->ObjectName.Buffer, +- name->ObjectName.Length / sizeof(name->ObjectName.Buffer[0])); ++ name->Name.Buffer, ++ name->Name.Length / sizeof(name->Name.Buffer[0])); + } + + std::optional GetTypeNameFromHandle(HANDLE handle) { +@@ -110,8 +110,8 @@ std::optional GetTypeNameFromHandle(HANDLE handle) { + return std::nullopt; + OBJECT_TYPE_INFORMATION* name = + reinterpret_cast(buffer->data()); +- return std::wstring(name->Name.Buffer, +- name->Name.Length / sizeof(name->Name.Buffer[0])); ++ return std::wstring(name->TypeName.Buffer, ++ name->TypeName.Length / sizeof(name->TypeName.Buffer[0])); + } + + bool CopyToChildMemory(HANDLE child, diff --git a/mingw-w64-qt6-webengine-thirdparty/0012-chromium-services.patch b/mingw-w64-qt6-webengine-thirdparty/0012-chromium-services.patch new file mode 100644 index 0000000000000..cbbab74644922 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0012-chromium-services.patch @@ -0,0 +1,525 @@ +diff --git a/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_provider.cc b/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_provider.cc +index de925c9..82f5808 100644 +--- a/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_provider.cc ++++ b/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_provider.cc +@@ -68,7 +68,9 @@ std::unique_ptr PlatformSensorProvider::Create() { + return std::make_unique(); + #elif BUILDFLAG(IS_ANDROID) + return std::make_unique(); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MINGW) ++ return std::make_unique(); ++#elif BUILDFLAG(IS_MSVC) + if (PlatformSensorProvider::UseWindowsWinrt()) { + return std::make_unique(); + } else { +diff --git a/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_reader_win.cc b/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_reader_win.cc +index 1343660..616f10f 100644 +--- a/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_reader_win.cc ++++ b/src/3rdparty/chromium/services/device/generic_sensor/platform_sensor_reader_win.cc +@@ -13,7 +13,9 @@ + + #include + #include ++#if defined(COMPILER_MSVC) + #include ++#endif + + #include + +@@ -255,6 +257,7 @@ std::unique_ptr CreateReaderInitParamsForSensor( + + } // namespace + ++#if defined(COMPILER_MSVC) + // Class that implements ISensorEvents used by the ISensor interface to dispatch + // state and data change events. + class EventListener +@@ -358,6 +361,7 @@ class EventListener + const raw_ptr platform_sensor_reader_; + SensorReading last_sensor_reading_; + }; ++#endif + + // static + std::unique_ptr PlatformSensorReaderWin32::Create( +@@ -386,8 +390,12 @@ std::unique_ptr PlatformSensorReaderWin32::Create( + if (FAILED(hr)) + return nullptr; + ++#if defined(COMPILER_MSVC) + return base::WrapUnique( + new PlatformSensorReaderWin32(sensor, std::move(params))); ++#else ++ return nullptr; ++#endif + } + + // static +@@ -408,6 +416,7 @@ Microsoft::WRL::ComPtr PlatformSensorReaderWin32::GetSensorForType( + return sensor; + } + ++#if defined(COMPILER_MSVC) + PlatformSensorReaderWin32::PlatformSensorReaderWin32( + Microsoft::WRL::ComPtr sensor, + std::unique_ptr params) +@@ -421,6 +430,7 @@ PlatformSensorReaderWin32::PlatformSensorReaderWin32( + DCHECK(init_params_->reader_func); + DCHECK(sensor_); + } ++#endif + + void PlatformSensorReaderWin32::SetClient(Client* client) { + base::AutoLock autolock(lock_); +diff --git a/src/3rdparty/chromium/services/device/geolocation/BUILD.gn b/src/3rdparty/chromium/services/device/geolocation/BUILD.gn +index a2f8504..0717e89 100644 +--- a/src/3rdparty/chromium/services/device/geolocation/BUILD.gn ++++ b/src/3rdparty/chromium/services/device/geolocation/BUILD.gn +@@ -92,7 +92,7 @@ source_set("geolocation") { + ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "win/location_provider_winrt.cc", + "win/location_provider_winrt.h", +diff --git a/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.cc b/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.cc +index c4f4b0f..b9220ff 100644 +--- a/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.cc ++++ b/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.cc +@@ -23,7 +23,9 @@ namespace device { + + namespace { + ++#if !defined(__MINGW32__) + using ::ABI::Windows::Devices::Geolocation::GeolocationAccessStatus; ++#endif + using ::ABI::Windows::Security::Authorization::AppCapabilityAccess:: + IAppCapability; + using ::Microsoft::WRL::ComPtr; +@@ -246,6 +248,9 @@ void SystemGeolocationSourceWin::OnLaunchUriFailure(HRESULT result) { + } + + void SystemGeolocationSourceWin::OpenSystemPermissionSetting() { ++#if defined(__MINGW32__) ++ RecordUmaLaunchSettingsResult(E_NOTIMPL); ++#else + using ::ABI::Windows::Foundation::IUriRuntimeClass; + using ::ABI::Windows::Foundation::IUriRuntimeClassFactory; + using ::ABI::Windows::System::ILauncherStatics; +@@ -303,9 +308,13 @@ void SystemGeolocationSourceWin::OpenSystemPermissionSetting() { + << logging::SystemErrorCodeToString(hr); + RecordUmaLaunchSettingsResult(hr); + } ++#endif + } + + void SystemGeolocationSourceWin::RequestPermission() { ++#if defined(__MINGW32__) ++ RecordUmaRequestAccessResult(E_NOTIMPL); ++#else + using ::ABI::Windows::Devices::Geolocation::IGeolocatorStatics; + if (request_location_access_op_) { + return; +@@ -343,8 +352,10 @@ void SystemGeolocationSourceWin::RequestPermission() { + return; + } + has_pending_system_prompt_ = true; ++#endif + } + ++#if !defined(__MINGW32__) + void SystemGeolocationSourceWin::OnRequestLocationAccessSuccess( + GeolocationAccessStatus status) { + RecordUmaRequestAccessResult(S_OK); +@@ -358,5 +369,6 @@ void SystemGeolocationSourceWin::OnRequestLocationAccessFailure( + RecordUmaRequestAccessResult(result); + request_location_access_op_.Reset(); + } ++#endif + + } // namespace device +diff --git a/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.h b/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.h +index 453e88c..ff083b2 100644 +--- a/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.h ++++ b/src/3rdparty/chromium/services/device/public/cpp/geolocation/system_geolocation_source_win.h +@@ -48,16 +48,19 @@ class COMPONENT_EXPORT(GEOLOCATION) SystemGeolocationSourceWin + void OnLaunchUriSuccess(uint8_t launched); + void OnLaunchUriFailure(HRESULT result); + ++#if !defined(__MINGW32__) + void OnRequestLocationAccessSuccess( + ABI::Windows::Devices::Geolocation::GeolocationAccessStatus + geolocation_access_status); + void OnRequestLocationAccessFailure(HRESULT result); ++#endif + + // The pending operation for launching the settings page, or nullptr if not + // launching the settings page. + Microsoft::WRL::ComPtr> + launch_uri_op_; + ++#if !defined(__MINGW32__) + // The pending operation for requesting location access, or nullptr if not + // requesting access. + Microsoft::WRL::ComPtr> + request_location_access_op_; ++#endif + + // True if the user was prompted to grant location permissions and the + // permission status has not yet changed. Used for metrics logging. +diff --git a/src/3rdparty/chromium/services/device/hid/BUILD.gn b/src/3rdparty/chromium/services/device/hid/BUILD.gn +index 89a178a..7f266d4 100644 +--- a/src/3rdparty/chromium/services/device/hid/BUILD.gn ++++ b/src/3rdparty/chromium/services/device/hid/BUILD.gn +@@ -59,10 +59,17 @@ source_set("hid") { + "hid_service_win.cc", + "hid_service_win.h", + ] +- libs = [ +- "hid.lib", +- "setupapi.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "hid.lib", ++ "setupapi.lib", ++ ] ++ } else { ++ libs = [ ++ "hid", ++ "setupapi", ++ ] ++ } + } + + if (is_mac) { +diff --git a/src/3rdparty/chromium/services/device/hid/hid_service_win.cc b/src/3rdparty/chromium/services/device/hid/hid_service_win.cc +index c96b6f1..5d36b9d 100644 +--- a/src/3rdparty/chromium/services/device/hid/hid_service_win.cc ++++ b/src/3rdparty/chromium/services/device/hid/hid_service_win.cc +@@ -12,7 +12,9 @@ + #include + #include + #include ++#if defined(COMPILER_MSVC) + #include ++#endif + #include + + #include +@@ -80,7 +82,7 @@ std::optional GetDeviceStringProperty( + const DEVPROPKEY& property_key) { + DEVPROPTYPE property_type; + DWORD required_size; +- if (SetupDiGetDeviceProperty(device_info_set, &device_info_data, ++ if (SetupDiGetDevicePropertyW(device_info_set, &device_info_data, + &property_key, &property_type, + /*PropertyBuffer=*/nullptr, + /*PropertyBufferSize=*/0, &required_size, +@@ -102,7 +104,7 @@ std::optional GetDeviceStringProperty( + return std::nullopt; + + std::wstring property_buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + device_info_set, &device_info_data, &property_key, &property_type, + reinterpret_cast( + base::WriteInto(&property_buffer, required_size)), +@@ -124,7 +126,7 @@ std::optional GetDeviceGuidProperty( + const DEVPROPKEY& property_key) { + DEVPROPTYPE property_type; + GUID property_buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + device_info_set, &device_info_data, &property_key, &property_type, + reinterpret_cast(&property_buffer), sizeof(property_buffer), + /*RequiredSize=*/nullptr, /*Flags=*/0)) { +diff --git a/src/3rdparty/chromium/services/device/serial/BUILD.gn b/src/3rdparty/chromium/services/device/serial/BUILD.gn +index 70e64a8..dbaa1fd 100644 +--- a/src/3rdparty/chromium/services/device/serial/BUILD.gn ++++ b/src/3rdparty/chromium/services/device/serial/BUILD.gn +@@ -8,8 +8,12 @@ if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac) { + config("platform_support") { + visibility = [ ":serial" ] + if (is_win) { +- libs = [ "setupapi.lib" ] +- ldflags = [ "/DELAYLOAD:setupapi.dll" ] ++ if (is_msvc) { ++ libs = [ "setupapi.lib" ] ++ ldflags = [ "/DELAYLOAD:setupapi.dll" ] ++ } else { ++ libs = [ "setupapi" ] ++ } + } + } + +diff --git a/src/3rdparty/chromium/services/device/serial/serial_device_enumerator_win.cc b/src/3rdparty/chromium/services/device/serial/serial_device_enumerator_win.cc +index a5c7dc3..d357ce7 100644 +--- a/src/3rdparty/chromium/services/device/serial/serial_device_enumerator_win.cc ++++ b/src/3rdparty/chromium/services/device/serial/serial_device_enumerator_win.cc +@@ -9,6 +9,7 @@ + #define INITGUID + #include + #include ++#include + #include + #include + #include +@@ -50,7 +51,7 @@ std::optional GetProperty(HDEVINFO dev_info, + + DEVPROPTYPE property_type; + DWORD required_size; +- if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property, ++ if (SetupDiGetDevicePropertyW(dev_info, dev_info_data, &property, + &property_type, /*PropertyBuffer=*/nullptr, + /*PropertyBufferSize=*/0, &required_size, + /*Flags=*/0) || +@@ -60,7 +61,7 @@ std::optional GetProperty(HDEVINFO dev_info, + } + + std::wstring buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + dev_info, dev_info_data, &property, &property_type, + reinterpret_cast(base::WriteInto(&buffer, required_size)), + required_size, /*RequiredSize=*/nullptr, /*Flags=*/0)) { +diff --git a/src/3rdparty/chromium/services/device/usb/BUILD.gn b/src/3rdparty/chromium/services/device/usb/BUILD.gn +index 77ae219..ffa4e15 100644 +--- a/src/3rdparty/chromium/services/device/usb/BUILD.gn ++++ b/src/3rdparty/chromium/services/device/usb/BUILD.gn +@@ -80,12 +80,21 @@ static_library("usb") { + "usb_service_win.h", + ] + +- libs = [ +- "advapi32.lib", +- "ole32.lib", +- "setupapi.lib", +- "winusb.lib", +- ] ++ if (is_msvc) { ++ libs = [ ++ "advapi32.lib", ++ "ole32.lib", ++ "setupapi.lib", ++ "winusb.lib", ++ ] ++ } else { ++ libs = [ ++ "advapi32", ++ "ole32", ++ "setupapi", ++ "winusb", ++ ] ++ } + + deps += [ "//third_party/re2" ] + } +diff --git a/src/3rdparty/chromium/services/device/usb/usb_service_win.cc b/src/3rdparty/chromium/services/device/usb/usb_service_win.cc +index 0888473..310943b 100644 +--- a/src/3rdparty/chromium/services/device/usb/usb_service_win.cc ++++ b/src/3rdparty/chromium/services/device/usb/usb_service_win.cc +@@ -67,7 +67,7 @@ std::optional GetDeviceUint32Property(HDEVINFO dev_info, + + DEVPROPTYPE property_type; + uint32_t buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + dev_info, dev_info_data, &property, &property_type, + reinterpret_cast(&buffer), sizeof(buffer), nullptr, 0)) { + USB_PLOG(ERROR) << "SetupDiGetDeviceProperty(" << property << ") failed"; +@@ -94,7 +94,7 @@ std::optional GetDeviceStringProperty( + + DEVPROPTYPE property_type; + DWORD required_size; +- if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property, ++ if (SetupDiGetDevicePropertyW(dev_info, dev_info_data, &property, + &property_type, nullptr, 0, &required_size, 0)) { + USB_LOG(ERROR) << "SetupDiGetDeviceProperty(" << property + << ") unexpectedly succeeded"; +@@ -114,7 +114,7 @@ std::optional GetDeviceStringProperty( + } + + std::wstring buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + dev_info, dev_info_data, &property, &property_type, + reinterpret_cast(base::WriteInto(&buffer, required_size)), + required_size, nullptr, 0)) { +@@ -135,7 +135,7 @@ std::optional> GetDeviceStringListProperty( + + DEVPROPTYPE property_type; + DWORD required_size; +- if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property, ++ if (SetupDiGetDevicePropertyW(dev_info, dev_info_data, &property, + &property_type, nullptr, 0, &required_size, 0)) { + USB_LOG(ERROR) << "SetupDiGetDeviceProperty(" << property + << ") unexpectedly succeeded"; +@@ -160,7 +160,7 @@ std::optional> GetDeviceStringListProperty( + } + + std::wstring buffer; +- if (!SetupDiGetDeviceProperty( ++ if (!SetupDiGetDevicePropertyW( + dev_info, dev_info_data, &property, &property_type, + reinterpret_cast(base::WriteInto(&buffer, required_size)), + required_size, nullptr, 0)) { +diff --git a/src/3rdparty/chromium/services/proxy_resolver_win/BUILD.gn b/src/3rdparty/chromium/services/proxy_resolver_win/BUILD.gn +index ed4b004..fb72ec5 100644 +--- a/src/3rdparty/chromium/services/proxy_resolver_win/BUILD.gn ++++ b/src/3rdparty/chromium/services/proxy_resolver_win/BUILD.gn +@@ -13,7 +13,11 @@ component("proxy_resolver_win") { + "winhttp_api_wrapper_impl.h", + ] + +- libs = [ "winhttp.lib" ] ++ if (is_msvc) { ++ libs = [ "winhttp.lib" ] ++ } else { ++ libs = [ "winhttp" ] ++ } + + deps = [ + "//base", +diff --git a/src/3rdparty/chromium/services/shape_detection/BUILD.gn b/src/3rdparty/chromium/services/shape_detection/BUILD.gn +index 8480cdf..2ba4c25 100644 +--- a/src/3rdparty/chromium/services/shape_detection/BUILD.gn ++++ b/src/3rdparty/chromium/services/shape_detection/BUILD.gn +@@ -38,7 +38,7 @@ source_set("lib") { + "QuartzCore.framework", + "Vision.framework", + ] +- } else if (is_win) { ++ } else if (is_msvc) { + sources += [ + "detection_utils_win.cc", + "detection_utils_win.h", +diff --git a/src/3rdparty/chromium/services/shape_detection/face_detection_provider_win.h b/src/3rdparty/chromium/services/shape_detection/face_detection_provider_win.h +index f6b3823..53e5206 100644 +--- a/src/3rdparty/chromium/services/shape_detection/face_detection_provider_win.h ++++ b/src/3rdparty/chromium/services/shape_detection/face_detection_provider_win.h +@@ -14,7 +14,9 @@ + #include "base/memory/weak_ptr.h" + #include "mojo/public/cpp/bindings/pending_receiver.h" + #include "mojo/public/cpp/bindings/self_owned_receiver.h" ++#if defined(COMPILER_MSVC) + #include "services/shape_detection/face_detection_impl_win.h" ++#endif + #include "services/shape_detection/public/mojom/facedetection_provider.mojom.h" + + namespace shape_detection { +@@ -43,11 +45,13 @@ class FaceDetectionProviderWin + shape_detection::mojom::FaceDetectorOptionsPtr options) override; + + private: ++#if defined(COMPILER_MSVC) + void OnFaceDetectorCreated( + mojo::PendingReceiver receiver, + ABI::Windows::Graphics::Imaging::BitmapPixelFormat pixel_format, + Microsoft::WRL::ComPtr + face_detector); ++#endif + + mojo::SelfOwnedReceiverRef receiver_; + base::WeakPtrFactory weak_factory_{this}; +diff --git a/src/3rdparty/chromium/services/shape_detection/shape_detection_service.cc b/src/3rdparty/chromium/services/shape_detection/shape_detection_service.cc +index ad24ba9..1a75a04 100644 +--- a/src/3rdparty/chromium/services/shape_detection/shape_detection_service.cc ++++ b/src/3rdparty/chromium/services/shape_detection/shape_detection_service.cc +@@ -27,7 +27,7 @@ + #include "services/shape_detection/barcode_detection_provider_impl.h" + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "services/shape_detection/face_detection_provider_win.h" + #elif BUILDFLAG(IS_MAC) + #include "services/shape_detection/face_detection_provider_mac.h" +@@ -69,7 +69,7 @@ void ShapeDetectionService::BindFaceDetectionProvider( + receiver.PassPipe().release().value()); + #elif BUILDFLAG(IS_MAC) + FaceDetectionProviderMac::Create(std::move(receiver)); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + FaceDetectionProviderWin::Create(std::move(receiver)); + #else + FaceDetectionProviderImpl::Create(std::move(receiver)); +diff --git a/src/3rdparty/chromium/services/video_capture/device_media_to_mojo_adapter.cc b/src/3rdparty/chromium/services/video_capture/device_media_to_mojo_adapter.cc +index eac863c..a9db714 100644 +--- a/src/3rdparty/chromium/services/video_capture/device_media_to_mojo_adapter.cc ++++ b/src/3rdparty/chromium/services/video_capture/device_media_to_mojo_adapter.cc +@@ -162,15 +162,15 @@ void DeviceMediaToMojoAdapter::StartInternal( + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "CreateVideoCaptureBufferPoolImpl"); + // Create a dedicated buffer pool for the device usage session. +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + buffer_pool = base::MakeRefCounted( + requested_settings.buffer_type, max_buffer_pool_buffer_count(), + std::make_unique( + dxgi_device_manager_)); +-#else // BUILDFLAG(IS_WIN) ++#else // BUILDFLAG(IS_MSVC) + buffer_pool = base::MakeRefCounted( + requested_settings.buffer_type, max_buffer_pool_buffer_count()); +-#endif // !BUILDFLAG(IS_WIN) ++#endif // !BUILDFLAG(IS_MSVC) + } + + #if BUILDFLAG(IS_CHROMEOS) +diff --git a/src/3rdparty/chromium/services/video_capture/video_capture_service_impl.cc b/src/3rdparty/chromium/services/video_capture/video_capture_service_impl.cc +index 76ce891..1717f84 100644 +--- a/src/3rdparty/chromium/services/video_capture/video_capture_service_impl.cc ++++ b/src/3rdparty/chromium/services/video_capture/video_capture_service_impl.cc +@@ -319,6 +319,7 @@ void VideoCaptureServiceImpl::LazyInitializeDeviceFactory() { + + LazyInitializeGpuDependenciesContext(); + ++#if !BUILDFLAG(IS_MINGW) + // Create the platform-specific device factory. + // The task runner passed to CreateFactory is used for things that need to + // happen on a "UI thread equivalent", e.g. obtaining screen rotation on +@@ -328,6 +329,7 @@ void VideoCaptureServiceImpl::LazyInitializeDeviceFactory() { + + auto video_capture_system = std::make_unique( + std::move(media_device_factory)); ++#endif + + #if BUILDFLAG(IS_CHROMEOS) + device_factory_ = std::make_unique( +@@ -340,7 +342,7 @@ void VideoCaptureServiceImpl::LazyInitializeDeviceFactory() { + device_factory_ash_adapter_ = + std::make_unique( + device_factory_.get()); +-#else ++#elif !BUILDFLAG(IS_MINGW) + device_factory_ = std::make_unique( + std::make_unique(std::move(video_capture_system))); + #endif // BUILDFLAG(IS_CHROMEOS) +diff --git a/src/3rdparty/chromium/services/webnn/BUILD.gn b/src/3rdparty/chromium/services/webnn/BUILD.gn +index 9d662a5..51893ed 100644 +--- a/src/3rdparty/chromium/services/webnn/BUILD.gn ++++ b/src/3rdparty/chromium/services/webnn/BUILD.gn +@@ -47,7 +47,7 @@ component("webnn_service") { + "//services/webnn/public/mojom", + ] + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "dml/adapter.cc", + "dml/adapter.h", +@@ -179,7 +179,7 @@ source_set("tests") { + "webnn_test_utils.h", + ] + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "dml/adapter_test.cc", + "dml/command_queue_test.cc", diff --git a/mingw-w64-qt6-webengine-thirdparty/0013-chromium-tools.patch b/mingw-w64-qt6-webengine-thirdparty/0013-chromium-tools.patch new file mode 100644 index 0000000000000..da5dfac43697f --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0013-chromium-tools.patch @@ -0,0 +1,118 @@ +diff --git a/src/3rdparty/chromium/tools/grit/grit/tool/build.py b/src/3rdparty/chromium/tools/grit/grit/tool/build.py +index f3f61c4..6e83785 100644 +--- a/src/3rdparty/chromium/tools/grit/grit/tool/build.py ++++ b/src/3rdparty/chromium/tools/grit/grit/tool/build.py +@@ -362,6 +362,10 @@ are exported to translation interchange files (e.g. XMB files), etc. + 'chrome_messages_json_gzip', 'policy_templates'): + return 'utf_8' + # TODO(gfeher) modify here to set utf-8 encoding for admx/adml ++ if sys.platform == 'win32' and 'MINGW' in sys.version: ++ # windres cannot handle utf-16 encoding ++ if output_type == 'rc_all': ++ return 'utf_8' + return 'utf_16' + + def Process(self): +diff --git a/src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn b/src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn +index 7b28151..8d0539f 100644 +--- a/src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn ++++ b/src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn +@@ -99,6 +99,9 @@ group("telemetry_chrome_test") { + "//build/win:copy_cdb_to_output", + "//third_party/crashpad/crashpad/tools:crashpad_database_util", + ] ++ if (is_mingw) { ++ data_deps -= [ "//build/win:copy_cdb_to_output", ] ++ } + } + } + +diff --git a/src/3rdparty/chromium/tools/protoc_wrapper/protoc_convert.py b/src/3rdparty/chromium/tools/protoc_wrapper/protoc_convert.py +index 4c730ce..22275f1 100644 +--- a/src/3rdparty/chromium/tools/protoc_wrapper/protoc_convert.py ++++ b/src/3rdparty/chromium/tools/protoc_wrapper/protoc_convert.py +@@ -19,8 +19,8 @@ def Main(): + help='Path to output file that will be used as stdout.') + args, passthrough_args = parser.parse_known_args() + +- stdin = open(args.infile, 'r') +- stdout = open(args.outfile, 'w') ++ stdin = open(args.infile, 'r', encoding='utf-8') ++ stdout = open(args.outfile, 'w', encoding='utf-8') + + subprocess.check_call([args.protoc] + passthrough_args, stdin=stdin, + stdout=stdout) +diff --git a/src/3rdparty/chromium/tools/protoc_wrapper/protoc_wrapper.py b/src/3rdparty/chromium/tools/protoc_wrapper/protoc_wrapper.py +index d339b34..8373a2c 100755 +--- a/src/3rdparty/chromium/tools/protoc_wrapper/protoc_wrapper.py ++++ b/src/3rdparty/chromium/tools/protoc_wrapper/protoc_wrapper.py +@@ -53,7 +53,7 @@ def WriteIncludes(headers, include): + for filename in headers: + include_point_found = False + contents = [] +- with open(filename) as f: ++ with open(filename, 'r', encoding='utf-8') as f: + for line in f: + stripped_line = line.strip() + contents.append(stripped_line) +@@ -68,7 +68,7 @@ def WriteIncludes(headers, include): + raise RuntimeError("Include point not found in header: " + "{0} .".format(filename)) + +- with open(filename, "w") as f: ++ with open(filename, 'w', encoding='utf-8') as f: + for line in contents: + print(line, file=f) + +diff --git a/src/3rdparty/chromium/tools/typescript/ts_library.py b/src/3rdparty/chromium/tools/typescript/ts_library.py +index 4045174..2bb5dcd 100644 +--- a/src/3rdparty/chromium/tools/typescript/ts_library.py ++++ b/src/3rdparty/chromium/tools/typescript/ts_library.py +@@ -177,8 +177,11 @@ def main(argv): + assert isMappingAllowed(is_ash_target, target_path, mapping_path), \ + f'Cannot use mapping to Ash-specific folder {mapping_path} from ' \ + f'non-Ash target {target_path}' +- path_mappings[mapping[0]].append(os.path.join('./', mapping[1])) ++ # Avoid 'IndexError: list out of range' error ++ if len(mapping) > 1: ++ path_mappings[mapping[0]].append(os.path.join('./', mapping[1])) + ++ tsconfig['compilerOptions']['baseUrl'] = '.' + tsconfig['compilerOptions']['paths'] = path_mappings + + tsconfig_file = f'tsconfig_{args.output_suffix}.json' +diff --git a/src/3rdparty/chromium/tools/v8_context_snapshot/BUILD.gn b/src/3rdparty/chromium/tools/v8_context_snapshot/BUILD.gn +index ab42865..b7acd42 100644 +--- a/src/3rdparty/chromium/tools/v8_context_snapshot/BUILD.gn ++++ b/src/3rdparty/chromium/tools/v8_context_snapshot/BUILD.gn +@@ -124,7 +124,7 @@ if (use_v8_context_snapshot) { + # disable it while taking a V8 snapshot. + config("disable_icf") { + visibility = [ ":*" ] # Only targets in this file can depend on this. +- if (is_win) { ++ if (is_msvc) { + ldflags = [ "/OPT:NOICF" ] # link.exe, but also lld-link.exe. + } else if (is_apple && !use_lld) { + ldflags = [ "-Wl,-no_deduplicate" ] # ld64. +diff --git a/src/3rdparty/chromium/tools/win/DebugVisualizers/BUILD.gn b/src/3rdparty/chromium/tools/win/DebugVisualizers/BUILD.gn +index 3e13d74..e952c11 100644 +--- a/src/3rdparty/chromium/tools/win/DebugVisualizers/BUILD.gn ++++ b/src/3rdparty/chromium/tools/win/DebugVisualizers/BUILD.gn +@@ -20,11 +20,15 @@ assert(is_win) + config("chrome") { + # chrome.natvis listed as an input in //base:base to guarantee relinking on + # changes. +- ldflags = [ "/NATVIS:" + rebase_path("chrome.natvis", root_build_dir) ] ++ if (is_msvc) { ++ ldflags = [ "/NATVIS:" + rebase_path("chrome.natvis", root_build_dir) ] ++ } + } + + config("blink") { + # blink.natvis listed as an input in + # //third_party/blink/renderer/platform/wtf to guarantee relinking on changes. +- ldflags = [ "/NATVIS:" + rebase_path("blink.natvis", root_build_dir) ] ++ if (is_msvc) { ++ ldflags = [ "/NATVIS:" + rebase_path("blink.natvis", root_build_dir) ] ++ } + } diff --git a/mingw-w64-qt6-webengine-thirdparty/0014-chromium-ui.patch b/mingw-w64-qt6-webengine-thirdparty/0014-chromium-ui.patch new file mode 100644 index 0000000000000..fb0128bae8134 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0014-chromium-ui.patch @@ -0,0 +1,851 @@ +diff --git a/src/3rdparty/chromium/ui/accessibility/ax_text_attributes.h b/src/3rdparty/chromium/ui/accessibility/ax_text_attributes.h +index 001c839..f4fdd11 100644 +--- a/src/3rdparty/chromium/ui/accessibility/ax_text_attributes.h ++++ b/src/3rdparty/chromium/ui/accessibility/ax_text_attributes.h +@@ -5,6 +5,7 @@ + #ifndef UI_ACCESSIBILITY_AX_TEXT_ATTRIBUTES_H_ + #define UI_ACCESSIBILITY_AX_TEXT_ATTRIBUTES_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/ui/aura/BUILD.gn b/src/3rdparty/chromium/ui/aura/BUILD.gn +index 65f84ba..083fd86 100644 +--- a/src/3rdparty/chromium/ui/aura/BUILD.gn ++++ b/src/3rdparty/chromium/ui/aura/BUILD.gn +@@ -166,7 +166,12 @@ jumbo_component("aura") { + ] + } + +- if (is_win) { ++ if (is_mingw) { ++ libs = [ ++ "wtsapi32", ++ "dwmapi", ++ ] ++ } else { + libs = [ + "wtsapi32.lib", + "dwmapi.lib", +diff --git a/src/3rdparty/chromium/ui/base/BUILD.gn b/src/3rdparty/chromium/ui/base/BUILD.gn +index 903993c..55fae4c 100644 +--- a/src/3rdparty/chromium/ui/base/BUILD.gn ++++ b/src/3rdparty/chromium/ui/base/BUILD.gn +@@ -293,11 +293,19 @@ jumbo_component("base") { + "win/window_event_target.cc", + "win/window_event_target.h", + ] +- ldflags = [ "/DELAYLOAD:dwmapi.dll" ] +- libs += [ +- "dwmapi.lib", +- "wtsapi32.lib", +- ] ++ if (is_mingw) { ++ cflags_cc = [ "-Wno-sign-conversion" ] ++ libs += [ ++ "dwmapi", ++ "wtsapi32", ++ ] ++ } else { ++ ldflags = [ "/DELAYLOAD:dwmapi.dll" ] ++ libs += [ ++ "dwmapi.lib", ++ "wtsapi32.lib", ++ ] ++ } + } + + if (is_mac) { +diff --git a/src/3rdparty/chromium/ui/base/ime/init/input_method_factory.cc b/src/3rdparty/chromium/ui/base/ime/init/input_method_factory.cc +index c99fd18..a30da75 100644 +--- a/src/3rdparty/chromium/ui/base/ime/init/input_method_factory.cc ++++ b/src/3rdparty/chromium/ui/base/ime/init/input_method_factory.cc +@@ -12,7 +12,7 @@ + #include "ui/base/ui_base_features.h" + #include "ui/gfx/switches.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "ui/base/ime/win/input_method_win_tsf.h" + #elif BUILDFLAG(IS_APPLE) + #include "ui/base/ime/mac/input_method_mac.h" +@@ -52,7 +52,7 @@ std::unique_ptr CreateInputMethod( + if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kHeadless)) + return base::WrapUnique(new MockInputMethod(ime_key_event_dispatcher)); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + return std::make_unique(ime_key_event_dispatcher, widget); + #elif BUILDFLAG(IS_APPLE) + return std::make_unique(ime_key_event_dispatcher); +diff --git a/src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc b/src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc +index ce9d6fe..2623229 100644 +--- a/src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc ++++ b/src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc +@@ -12,7 +12,7 @@ + #if defined(USE_AURA) && BUILDFLAG(IS_LINUX) + #include "ui/base/ime/linux/fake_input_method_context.h" + #include "ui/base/ime/linux/linux_input_method_context_factory.h" +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + #include "ui/base/ime/init/input_method_factory.h" + #include "ui/base/ime/win/tsf_bridge.h" + #endif +@@ -21,13 +21,13 @@ namespace ui { + + void InitializeInputMethod() { + TRACE_EVENT0("startup", "ui::InitializeInputMethod"); +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + TSFBridge::Initialize(); + #endif + } + + void ShutdownInputMethod() { +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + TSFBridge::Shutdown(); + #endif + } +@@ -39,7 +39,7 @@ void InitializeInputMethodForTesting() { + -> std::unique_ptr { + return std::make_unique(); + }); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + TSFBridge::InitializeForTesting(); + #endif + } +@@ -49,7 +49,7 @@ void ShutdownInputMethodForTesting() { + // The function owns the factory (as a static variable that's returned by + // reference), so setting this to an empty factory will free the old one. + GetInputMethodContextFactoryForTest() = LinuxInputMethodContextFactory(); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + TSFBridge::Shutdown(); + #endif + } +diff --git a/src/3rdparty/chromium/ui/base/ime/input_method.h b/src/3rdparty/chromium/ui/base/ime/input_method.h +index 03d9c95..74c0d32 100644 +--- a/src/3rdparty/chromium/ui/base/ime/input_method.h ++++ b/src/3rdparty/chromium/ui/base/ime/input_method.h +@@ -47,7 +47,7 @@ class TextInputClient; + // ui::InputMethod and owns it. + class InputMethod { + public: +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + typedef LRESULT NativeEventResult; + #else + typedef int32_t NativeEventResult; +@@ -66,7 +66,7 @@ class InputMethod { + // Called when the top-level system window loses keyboard focus. + virtual void OnBlur() = 0; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Called when the focused window receives native IME messages that are not + // translated into other predefined event callbacks. Currently this method is + // used only for IME functionalities specific to Windows. +diff --git a/src/3rdparty/chromium/ui/base/ime/mock_input_method.cc b/src/3rdparty/chromium/ui/base/ime/mock_input_method.cc +index 2218718..d9da6b7 100644 +--- a/src/3rdparty/chromium/ui/base/ime/mock_input_method.cc ++++ b/src/3rdparty/chromium/ui/base/ime/mock_input_method.cc +@@ -67,7 +67,7 @@ void MockInputMethod::OnBlur() { + observer_list_.Notify(&InputMethodObserver::OnBlur); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + bool MockInputMethod::OnUntranslatedIMEMessage(const CHROME_MSG event, + NativeEventResult* result) { + if (result) +diff --git a/src/3rdparty/chromium/ui/base/ime/mock_input_method.h b/src/3rdparty/chromium/ui/base/ime/mock_input_method.h +index aa57ed6..c88e910 100644 +--- a/src/3rdparty/chromium/ui/base/ime/mock_input_method.h ++++ b/src/3rdparty/chromium/ui/base/ime/mock_input_method.h +@@ -38,7 +38,7 @@ class COMPONENT_EXPORT(UI_BASE_IME) MockInputMethod : public InputMethod { + void OnFocus() override; + void OnBlur() override; + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + bool OnUntranslatedIMEMessage(const CHROME_MSG event, + NativeEventResult* result) override; + void OnInputLocaleChanged() override; +diff --git a/src/3rdparty/chromium/ui/base/ime/win/BUILD.gn b/src/3rdparty/chromium/ui/base/ime/win/BUILD.gn +index 9db7511..ec8bcdd 100644 +--- a/src/3rdparty/chromium/ui/base/ime/win/BUILD.gn ++++ b/src/3rdparty/chromium/ui/base/ime/win/BUILD.gn +@@ -30,7 +30,24 @@ jumbo_component("win") { + "virtual_keyboard_debounce_timer.cc", + "virtual_keyboard_debounce_timer.h", + ] +- jumbo_excluded_sources = [ "tsf_text_store.cc" ] ++ if (is_mingw) { ++ sources -= [ ++ "input_method_win_tsf.cc", ++ "input_method_win_tsf.h", ++ "on_screen_keyboard_display_manager_input_pane.cc", # requires ++ "on_screen_keyboard_display_manager_input_pane.h", ++ "tsf_bridge.cc", ++ "tsf_bridge.h", ++ "tsf_event_router.cc", ++ "tsf_event_router.h", ++ "tsf_input_scope.cc", ++ "tsf_input_scope.h", ++ "tsf_text_store.cc", ++ "tsf_text_store.h", ++ ] ++ } else { ++ jumbo_excluded_sources = [ "tsf_text_store.cc" ] ++ } + + defines = [ "IS_UI_BASE_IME_WIN_IMPL" ] + +diff --git a/src/3rdparty/chromium/ui/base/ime/win/input_method_win_base.cc b/src/3rdparty/chromium/ui/base/ime/win/input_method_win_base.cc +index a21238e..aaf5886 100644 +--- a/src/3rdparty/chromium/ui/base/ime/win/input_method_win_base.cc ++++ b/src/3rdparty/chromium/ui/base/ime/win/input_method_win_base.cc +@@ -42,10 +42,14 @@ constexpr size_t kExtraNumberOfChars = 20; + + std::unique_ptr CreateKeyboardController( + HWND attached_window_handle) { ++#if defined(COMPILER_MSVC) + if (base::win::GetVersion() >= base::win::Version::WIN10_RS4) { + return std::make_unique( + attached_window_handle); + } else { ++#else ++ if (base::win::GetVersion() >= base::win::Version::WIN8) { ++#endif + return std::make_unique( + attached_window_handle); + } +diff --git a/src/3rdparty/chromium/ui/base/ime/win/on_screen_keyboard_display_manager_input_pane.h b/src/3rdparty/chromium/ui/base/ime/win/on_screen_keyboard_display_manager_input_pane.h +index f89b23d..e43e369 100644 +--- a/src/3rdparty/chromium/ui/base/ime/win/on_screen_keyboard_display_manager_input_pane.h ++++ b/src/3rdparty/chromium/ui/base/ime/win/on_screen_keyboard_display_manager_input_pane.h +@@ -5,6 +5,8 @@ + #ifndef UI_BASE_IME_WIN_ON_SCREEN_KEYBOARD_DISPLAY_MANAGER_INPUT_PANE_H_ + #define UI_BASE_IME_WIN_ON_SCREEN_KEYBOARD_DISPLAY_MANAGER_INPUT_PANE_H_ + ++#if defined(COMPILER_MSVC) ++ + #include + #include + #include +@@ -83,4 +85,6 @@ class COMPONENT_EXPORT(UI_BASE_IME_WIN) + + } // namespace ui + ++#endif // COMPILER_MSVC ++ + #endif // UI_BASE_IME_WIN_ON_SCREEN_KEYBOARD_DISPLAY_MANAGER_INPUT_PANE_H_ +diff --git a/src/3rdparty/chromium/ui/display/BUILD.gn b/src/3rdparty/chromium/ui/display/BUILD.gn +index 180c1a9..1780e8b 100644 +--- a/src/3rdparty/chromium/ui/display/BUILD.gn ++++ b/src/3rdparty/chromium/ui/display/BUILD.gn +@@ -98,6 +98,12 @@ jumbo_component("display") { + "win/uwp_text_scale_factor.cc", + "win/uwp_text_scale_factor.h", + ] ++ if (is_mingw) { ++ sources -= [ ++ "win/uwp_text_scale_factor.cc", ++ "win/uwp_text_scale_factor.h", ++ ] ++ } + } + + if (is_ios) { +diff --git a/src/3rdparty/chromium/ui/display/win/dpi.cc b/src/3rdparty/chromium/ui/display/win/dpi.cc +index cc3c603..2e91de8 100644 +--- a/src/3rdparty/chromium/ui/display/win/dpi.cc ++++ b/src/3rdparty/chromium/ui/display/win/dpi.cc +@@ -8,7 +8,9 @@ + + #include "base/win/scoped_hdc.h" + #include "ui/display/display.h" ++#if defined(COMPILER_MSVC) + #include "ui/display/win/uwp_text_scale_factor.h" ++#endif + + namespace display { + namespace win { +@@ -37,7 +39,9 @@ int GetDPIFromScalingFactor(float device_scaling_factor) { + } + + double GetAccessibilityFontScale() { ++#if defined(COMPILER_MSVC) + return 1.0 / UwpTextScaleFactor::Instance()->GetTextScaleFactor(); ++#endif + } + + namespace internal { +diff --git a/src/3rdparty/chromium/ui/display/win/screen_win.cc b/src/3rdparty/chromium/ui/display/win/screen_win.cc +index 0d27762..70fcc1d 100644 +--- a/src/3rdparty/chromium/ui/display/win/screen_win.cc ++++ b/src/3rdparty/chromium/ui/display/win/screen_win.cc +@@ -65,9 +65,13 @@ std::optional GetPerMonitorDPI(HMONITOR monitor) { + + float GetScaleFactorForDPI(int dpi, bool include_accessibility) { + const float scale = display::win::internal::GetScalingFactorFromDPI(dpi); ++#if defined(COMPILER_MSVC) + return include_accessibility + ? (scale * UwpTextScaleFactor::Instance()->GetTextScaleFactor()) + : scale; ++#else ++ return scale; ++#endif + } + + // Gets the raw monitor scale factor. +@@ -969,10 +973,12 @@ void ScreenWin::Initialize() { + base::BindRepeating(&ScreenWin::OnWndProc, base::Unretained(this))); + UpdateFromDisplayInfos(GetDisplayInfosFromSystem()); + ++#if defined(COMPILER_MSVC) + // We want to remember that we've observed a screen metrics object so that we + // can remove ourselves as an observer at some later point (either when the + // metrics object notifies us it's going away or when we are destructed). + scale_factor_observation_.Observe(UwpTextScaleFactor::Instance()); ++#endif + } + + std::optional ScreenWin::MonitorInfoFromScreenPoint( +@@ -1159,6 +1165,7 @@ int ScreenWin::GetSystemMetricsForScaleFactor(float scale_factor, + GetPrimaryDisplay().device_scale_factor()); + } + ++#if defined(COMPILER_MSVC) + void ScreenWin::OnUwpTextScaleFactorChanged() { + UpdateAllDisplaysAndNotify(); + } +@@ -1167,6 +1174,7 @@ void ScreenWin::OnUwpTextScaleFactorCleanup(UwpTextScaleFactor* source) { + scale_factor_observation_.Reset(); + UwpTextScaleFactor::Observer::OnUwpTextScaleFactorCleanup(source); + } ++#endif + + bool ScreenWin::PerProcessDPIAwarenessDisabledForTesting() const { + return per_process_dpi_awareness_disabled_for_testing_; +diff --git a/src/3rdparty/chromium/ui/display/win/screen_win.h b/src/3rdparty/chromium/ui/display/win/screen_win.h +index 19aefcf..6efba30 100644 +--- a/src/3rdparty/chromium/ui/display/win/screen_win.h ++++ b/src/3rdparty/chromium/ui/display/win/screen_win.h +@@ -40,8 +40,12 @@ class DisplayInfo; + } // namespace internal + + class DISPLAY_EXPORT ScreenWin : public Screen, ++#if defined(COMPILER_MSVC) + public ColorProfileReader::Client, + public UwpTextScaleFactor::Observer { ++#else ++ public ColorProfileReader::Client { ++#endif + public: + ScreenWin(); + +@@ -276,8 +280,10 @@ class DISPLAY_EXPORT ScreenWin : public Screen, + //----------------------------------------------------------------- + // UwpTextScaleFactor::Observer: + ++#if defined(COMPILER_MSVC) + void OnUwpTextScaleFactorChanged() override; + void OnUwpTextScaleFactorCleanup(UwpTextScaleFactor* source) override; ++#endif + + // Tests don't want to use the actual DPI settings of the monitor(s) on + // the machine running the test. +@@ -307,8 +313,10 @@ class DISPLAY_EXPORT ScreenWin : public Screen, + // Information gathered from DXGI adapters and outputs. + gfx::mojom::DXGIInfoPtr dxgi_info_; + ++#if defined(COMPILER_MSVC) + base::ScopedObservation + scale_factor_observation_{this}; ++#endif + + // Used to avoid calling GetSystemMetricsForDpi in unit tests. + bool per_process_dpi_awareness_disabled_for_testing_ = false; +diff --git a/src/3rdparty/chromium/ui/events/BUILD.gn b/src/3rdparty/chromium/ui/events/BUILD.gn +index 8e3b944..1aa519d 100644 +--- a/src/3rdparty/chromium/ui/events/BUILD.gn ++++ b/src/3rdparty/chromium/ui/events/BUILD.gn +@@ -250,6 +250,10 @@ jumbo_component("events") { + "win/stylus_handwriting_properties_win.cc", + "win/system_event_state_lookup.cc", + ] ++ ++ if (is_mingw) { ++ sources -= [ "win/stylus_handwriting_properties_win.cc" ] # requires ShellHandwriting.h ++ } + } + + if (is_mac) { +@@ -499,6 +503,10 @@ jumbo_component("gesture_detection") { + + defines = [ "GESTURE_DETECTION_IMPLEMENTATION" ] + ++ if (is_mingw && is_clang) { ++ cflags_cc = [ "-Wno-vla-cxx-extension" ] ++ } ++ + if (is_android) { + sources += [ "gesture_detection/gesture_configuration_android.cc" ] + } else if (is_ios) { +diff --git a/src/3rdparty/chromium/ui/gfx/BUILD.gn b/src/3rdparty/chromium/ui/gfx/BUILD.gn +index 9e55ad4..398f962 100644 +--- a/src/3rdparty/chromium/ui/gfx/BUILD.gn ++++ b/src/3rdparty/chromium/ui/gfx/BUILD.gn +@@ -56,10 +56,12 @@ if (is_win) { + config("gfx_win_linker_flags") { + # This is in a separate config so the flags can be applied to dependents. + # ldflags in GN aren't automatically inherited. +- ldflags = [ +- # Linking with OneCore.lib causes the following dlls to load. +- "/DELAYLOAD:api-ms-win-core-handle-l1-1-0.dll", +- ] ++ if (is_msvc) { ++ ldflags = [ ++ # Linking with OneCore.lib causes the following dlls to load. ++ "/DELAYLOAD:api-ms-win-core-handle-l1-1-0.dll", ++ ] ++ } + } + } + +@@ -245,6 +247,14 @@ jumbo_component("gfx") { + "win/window_impl.cc", + "win/window_impl.h", + ] ++ if (is_mingw) { ++ sources -= [ ++ "win/d3d_shared_fence.cc", ++ "win/d3d_shared_fence.h", ++ "win/text_analysis_source.cc", ++ "win/text_analysis_source.h" ++ ] ++ } + } + if (is_apple) { + sources += [ "font_render_params_mac.cc" ] +diff --git a/src/3rdparty/chromium/ui/gfx/codec/BUILD.gn b/src/3rdparty/chromium/ui/gfx/codec/BUILD.gn +index def3b78..6ad85d8 100644 +--- a/src/3rdparty/chromium/ui/gfx/codec/BUILD.gn ++++ b/src/3rdparty/chromium/ui/gfx/codec/BUILD.gn +@@ -36,7 +36,7 @@ jumbo_component("codec") { + ] + } + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/wd4324" ] # Structure was padded due to __declspec(align()), + # which is uninteresting. + } +diff --git a/src/3rdparty/chromium/ui/gl/BUILD.gn b/src/3rdparty/chromium/ui/gl/BUILD.gn +index 8c44b2d..ae2ac89 100644 +--- a/src/3rdparty/chromium/ui/gl/BUILD.gn ++++ b/src/3rdparty/chromium/ui/gl/BUILD.gn +@@ -276,15 +276,24 @@ jumbo_component("gl") { + "vsync_thread_win_dxgi.h", + ] + +- libs = [ +- "dxgi.lib", +- "dxguid.lib", +- "dwmapi.lib", +- ] +- ldflags = [ +- "/DELAYLOAD:dwmapi.dll", +- "/DELAYLOAD:dxgi.dll", +- ] ++ if (is_mingw) { ++ configs -= [ "//build/config/compiler:no_rtti" ] ++ libs = [ ++ "dxgi", ++ "dxguid", ++ "dwmapi", ++ ] ++ } else { ++ libs = [ ++ "dxgi.lib", ++ "dxguid.lib", ++ "dwmapi.lib", ++ ] ++ ldflags = [ ++ "/DELAYLOAD:dwmapi.dll", ++ "/DELAYLOAD:dxgi.dll", ++ ] ++ } + deps += [ + "//ui/base", + "//ui/display:display", +diff --git a/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc b/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc +index f44333e..2a077eb 100644 +--- a/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc ++++ b/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc +@@ -32,6 +32,7 @@ bool NeedSwapChainPresenter(const DCLayerOverlayParams* overlay) { + DCLayerOverlayType::kDCompVisualContent; + } + ++#if !defined(COMPILER_GCC) // FIXME: missing Microsoft::WRL::ComPtr + // Unconditionally get a IDCompositionVisual2 as a IDCompositionVisual3. + // + // |IDCompositionVisual3| should be available since Windows 8.1, but we noticed +@@ -68,6 +69,7 @@ D2D_MATRIX_4X4_F TransformToD2D_MATRIX_4X4_F(const gfx::Transform& transform) { + t.rc(0, 2), t.rc(1, 2), t.rc(2, 2), t.rc(3, 2), + t.rc(0, 3), t.rc(1, 3), t.rc(2, 3), t.rc(3, 3)); + } ++#endif + + // The size the surfaces in the pool. Used in |VisualSubtree::Update| to + // determine how to scale the background color visual. This can be any size +@@ -610,6 +612,7 @@ bool DCLayerTree::VisualTree::VisualSubtree::Update( + } + } + ++#if !defined(COMPILER_GCC) + if (opacity_changed) { + if (opacity_ != 1) { + hr = CheckedCastToVisual3(clip_visual_)->SetOpacity(opacity_); +@@ -626,6 +629,7 @@ bool DCLayerTree::VisualTree::VisualSubtree::Update( + CHECK_EQ(hr, S_OK); + } + } ++#endif + + if (rounded_corner_bounds_changed) { + if (!rounded_corner_bounds_.IsEmpty()) { +@@ -688,6 +692,7 @@ bool DCLayerTree::VisualTree::VisualSubtree::Update( + } + } + ++#if !defined(COMPILER_GCC) + if (quad_to_root_transform_changed) { + if (quad_to_root_transform_.Is2dTransform()) { + const D2D_MATRIX_3X2_F matrix = +@@ -702,6 +707,7 @@ bool DCLayerTree::VisualTree::VisualSubtree::Update( + CHECK_EQ(hr, S_OK); + } + } ++#endif + + if (nearest_neighbor_filter_changed) { + hr = transform_visual_->SetBitmapInterpolationMode( +@@ -768,6 +774,7 @@ bool DCLayerTree::VisualTree::VisualSubtree::Update( + // update. No visual changes are needed in this case. + } + ++#if !defined(COMPILER_GCC) + if (quad_rect_changed || background_color_surface_changed || + background_color_changed) { + if (!background_color_surface_ || background_color.fA == 0.0) { +@@ -791,6 +798,7 @@ bool DCLayerTree::VisualTree::VisualSubtree::Update( + CHECK_EQ(hr, S_OK); + } + } ++#endif + + if (quad_to_root_transform_changed || quad_rect_changed || + allow_antialiasing_changed) { +@@ -1396,6 +1405,8 @@ base::expected DCLayerTree::CommitAndClearPendingOverlays( + ++ Microsoft::WRL::ComPtr primary_plane_surface_unknown; ++ primary_plane_surface_.As(&primary_plane_surface_unknown); + overlay.overlay_image = DCLayerOverlayImage( +- overlay.overlay_image->size(), primary_plane_surface_, ++ overlay.overlay_image->size(), primary_plane_surface_unknown, + primary_plane_surface_serial_++); + did_update_primary_plane_damage = true; + } else { +diff --git a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc +index 7f71dc1..20d6d21 100644 +--- a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc ++++ b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc +@@ -63,6 +63,7 @@ void DelegatedInkPointRendererGpu::InitMessagePipeline( + bool DelegatedInkPointRendererGpu::Initialize( + IDCompositionDevice2* dcomp_device2, + IDXGISwapChain1* root_swap_chain) { ++#if !defined(COMPILER_GCC) + if (swap_chain_ == root_swap_chain && delegated_ink_trail_) { + return true; + } +@@ -89,6 +90,9 @@ bool DelegatedInkPointRendererGpu::Initialize( + force_new_ink_trail_ = true; + + return true; ++#else ++ return false; ++#endif + } + + bool DelegatedInkPointRendererGpu::DelegatedInkIsSupported( +@@ -99,9 +103,11 @@ bool DelegatedInkPointRendererGpu::DelegatedInkIsSupported( + return false; + } + ++#if !defined(COMPILER_GCC) + Microsoft::WRL::ComPtr ink_trail_device; + HRESULT hr = dcomp_device.As(&ink_trail_device); + return hr == S_OK; ++#endif + } + + uint64_t DelegatedInkPointRendererGpu::GetMaximumNumberOfPointerIdsForTesting() +@@ -161,6 +167,7 @@ void DelegatedInkPointRendererGpu::ReportPointsDrawn() { + + void DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint( + std::unique_ptr metadata) { ++#if !defined(COMPILER_GCC) + TRACE_EVENT_WITH_FLOW1( + "delegated_ink_trails", + "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint", +@@ -253,6 +260,7 @@ void DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint( + metadata_ = std::move(metadata); + DrawSavedTrailPoints(); + force_new_ink_trail_ = false; ++#endif + } + + void DelegatedInkPointRendererGpu::StoreDelegatedInkPoint( +@@ -481,8 +489,10 @@ DelegatedInkPointRendererGpu::MakeDelegatedInkOverlay( + ink_layer.clip_rect = std::make_optional( + 0, 0, presentation_rect.right(), presentation_rect.bottom()); + ink_layer.transform = gfx::Transform::MakeTranslation( + metadata->presentation_area().OffsetFromOrigin()); ++#if !defined(COMPILER_GCC) + ink_layer.overlay_image = DCLayerOverlayImage(presentation_area_enclosed_size, + delegated_ink_trail_); ++#endif + ink_layer.layer_id = gfx::OverlayLayerId::MakeVizInternal( + gfx::OverlayLayerId::VizInternalId::kDelegatedInkTrail); + SetDelegatedInkTrailStartPoint(std::move(metadata)); +@@ -498,6 +508,7 @@ bool DelegatedInkPointRendererGpu::DrawDelegatedInkPoint( + return false; + } + ++#if !defined(COMPILER_GCC) + DCHECK(delegated_ink_trail_); + + DCompositionInkTrailPoint ink_point; +@@ -535,6 +546,9 @@ bool DelegatedInkPointRendererGpu::DrawDelegatedInkPoint( + } + delegated_ink_points_[point.pointer_id()][point] = token; + return true; ++#else ++ return false; ++#endif + } + + void DelegatedInkPointRendererGpu::InitializeForTesting( +diff --git a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.h b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.h +index 7864d26..f1763ed 100644 +--- a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.h ++++ b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.h +@@ -128,15 +128,19 @@ class GL_EXPORT DelegatedInkPointRendererGpu + + bool DrawDelegatedInkPoint(const gfx::DelegatedInkPoint& point); + ++#if !defined(COMPILER_GCC) /* FIXME: missing IDCompositionDelegatedInkTrail from wrl/client.h */ + // The delegated ink trail object that the ink trail is drawn on. This is the + // content of the ink visual. + Microsoft::WRL::ComPtr delegated_ink_trail_; ++#endif + + // The swap chain whose updates |delegated_ink_trail_| is synchronized with. + // If null, |delegated_ink_trail_| is synchronized with DComp commit. + raw_ptr swap_chain_ = nullptr; + ++#if !defined(COMPILER_GCC) /* FIXME: missing IDCompositionInkTrailDevice from wrl/client.h */ + Microsoft::WRL::ComPtr ink_trail_device_; ++#endif + + // The most recent metadata received. The metadata marks the last point of + // the app rendered stroke, which corresponds to the first point of the +diff --git a/src/3rdparty/chromium/ui/gl/direct_composition_support.cc b/src/3rdparty/chromium/ui/gl/direct_composition_support.cc +index e8e41ff..bf76367 100644 +--- a/src/3rdparty/chromium/ui/gl/direct_composition_support.cc ++++ b/src/3rdparty/chromium/ui/gl/direct_composition_support.cc +@@ -624,6 +624,7 @@ using PFN_DCOMPOSITION_WAIT = HRESULT(WINAPI*)(UINT count, + DWORD timeoutInMs); + PFN_DCOMPOSITION_WAIT g_wait_for_compositor_clock_function = nullptr; + ++#if !defined(COMPILER_GCC) + // DCompositionGetFrameId function pointer + using PFN_DCOMPOSITION_GET_FRAME_ID = + HRESULT(WINAPI*)(COMPOSITION_FRAME_ID_TYPE frameIdType, +@@ -638,6 +639,7 @@ using PFN_DCOMPOSITION_GET_STATISTICS = + COMPOSITION_TARGET_ID* targetIds, + UINT* actualTargetIdCount); + PFN_DCOMPOSITION_GET_STATISTICS g_get_statistics_function = nullptr; ++#endif + + HRESULT DCompositionWaitForCompositorClock(UINT count, + const HANDLE* handles, +@@ -646,6 +648,7 @@ HRESULT DCompositionWaitForCompositorClock(UINT count, + return g_wait_for_compositor_clock_function(count, handles, timeoutInMs); + } + ++#if !defined(COMPILER_GCC) + HRESULT DCompositionGetFrameId(COMPOSITION_FRAME_ID_TYPE frameIdType, + COMPOSITION_FRAME_ID* frameId) { + DCHECK(g_get_frame_id_function); +@@ -661,6 +664,7 @@ HRESULT DCompositionGetStatistics(COMPOSITION_FRAME_ID frameId, + return g_get_statistics_function(frameId, frameStats, targetIdCount, + targetIds, actualTargetIdCount); + } ++#endif + + void InitializeDirectComposition( + Microsoft::WRL::ComPtr d3d11_device) { +@@ -720,6 +724,7 @@ void InitializeDirectComposition( + g_d3d11_device = d3d11_device.Detach(); + + if (features::UseCompositorClockVSyncInterval()) { ++#if !defined(COMPILER_GCC) + g_get_frame_id_function = reinterpret_cast( + ::GetProcAddress(dcomp_module, "DCompositionGetFrameId")); + CHECK(g_get_frame_id_function); +@@ -728,6 +733,7 @@ void InitializeDirectComposition( + reinterpret_cast( + ::GetProcAddress(dcomp_module, "DCompositionGetStatistics")); + CHECK(g_get_statistics_function); ++#endif + + g_wait_for_compositor_clock_function = + reinterpret_cast(::GetProcAddress( +diff --git a/src/3rdparty/chromium/ui/gl/direct_composition_support.h b/src/3rdparty/chromium/ui/gl/direct_composition_support.h +index 4b376cd..d88798c 100644 +--- a/src/3rdparty/chromium/ui/gl/direct_composition_support.h ++++ b/src/3rdparty/chromium/ui/gl/direct_composition_support.h +@@ -25,6 +25,7 @@ HRESULT DCompositionWaitForCompositorClock(UINT count, + const HANDLE* handles, + DWORD timeoutInMs); + ++#if !defined(COMPILER_GCC) /* FIXME: missing COMPOSITION_FRAME_ID, COMPOSITION_FRAME_ID_TYPE from dcomp.h */ + // Wrapper for DcompositionGetFrameId Win32 dcomp.h function + HRESULT DCompositionGetFrameId(COMPOSITION_FRAME_ID_TYPE frameIdType, + COMPOSITION_FRAME_ID* frameId); +@@ -35,6 +36,7 @@ HRESULT DCompositionGetStatistics(COMPOSITION_FRAME_ID frameId, + UINT targetIdCount, + COMPOSITION_TARGET_ID* targetIds, + UINT* actualTargetIdCount); ++#endif + + // Initialize direct composition with the given d3d11 device. + GL_EXPORT void InitializeDirectComposition( +diff --git a/src/3rdparty/chromium/ui/gl/init/BUILD.gn b/src/3rdparty/chromium/ui/gl/init/BUILD.gn +index f8fd6c7..ed77b43 100644 +--- a/src/3rdparty/chromium/ui/gl/init/BUILD.gn ++++ b/src/3rdparty/chromium/ui/gl/init/BUILD.gn +@@ -52,8 +52,12 @@ jumbo_component("init") { + "gl_initializer_win.cc", + ] + +- libs = [ "dwmapi.lib" ] +- ldflags = [ "/DELAYLOAD:dwmapi.dll" ] ++ if (is_mingw) { ++ libs = [ "dwmapi" ] ++ } else { ++ libs = [ "dwmapi.lib" ] ++ ldflags = [ "/DELAYLOAD:dwmapi.dll" ] ++ } + } else if (is_mac) { + sources += [ + "gl_factory_mac.cc", +diff --git a/src/3rdparty/chromium/ui/gl/swap_chain_presenter.cc b/src/3rdparty/chromium/ui/gl/swap_chain_presenter.cc +index d15792c..99658d2 100644 +--- a/src/3rdparty/chromium/ui/gl/swap_chain_presenter.cc ++++ b/src/3rdparty/chromium/ui/gl/swap_chain_presenter.cc +@@ -413,6 +413,7 @@ bool TryDisableDesktopPlane(IDXGIDecodeSwapChain* decode_swap_chain, + return false; + } + ++#if !defined(COMPILER_GCC) + // Set the target region to the specified rectangle if necessary. + RECT target_region = target_rect.ToRECT(); + if (target_region != original_target_rect) { +@@ -424,6 +425,7 @@ bool TryDisableDesktopPlane(IDXGIDecodeSwapChain* decode_swap_chain, + return false; + } + } ++#endif + + return true; + } +diff --git a/src/3rdparty/chromium/ui/native_theme/BUILD.gn b/src/3rdparty/chromium/ui/native_theme/BUILD.gn +index f7ac0fc..1bf278b 100644 +--- a/src/3rdparty/chromium/ui/native_theme/BUILD.gn ++++ b/src/3rdparty/chromium/ui/native_theme/BUILD.gn +@@ -128,7 +128,11 @@ if (is_win) { + "//ui/gfx", + ] + +- libs = [ "uxtheme.lib" ] ++ if (is_mingw) { ++ libs = [ "uxtheme" ] ++ } else { ++ libs = [ "uxtheme.lib" ] ++ } + } + } else { + source_set("native_theme_browser") { +diff --git a/src/3rdparty/chromium/ui/shell_dialogs/BUILD.gn b/src/3rdparty/chromium/ui/shell_dialogs/BUILD.gn +index 2c003ec..9e59882 100644 +--- a/src/3rdparty/chromium/ui/shell_dialogs/BUILD.gn ++++ b/src/3rdparty/chromium/ui/shell_dialogs/BUILD.gn +@@ -41,7 +41,7 @@ jumbo_component("shell_dialogs") { + "//url", + ] + +- if (is_chromeos || is_castos) { ++ if (is_chromeos || is_castos || is_mingw) { + sources += [ "shell_dialog_stub.cc" ] + } + +@@ -84,7 +84,7 @@ jumbo_component("shell_dialogs") { + ] + } + +- if (is_win) { ++ if (is_msvc) { + sources += [ + "auto_close_dialog_event_handler_win.cc", + "auto_close_dialog_event_handler_win.h", +diff --git a/src/3rdparty/chromium/ui/gfx/win/direct_write.cc b/src/3rdparty/chromium/ui/gfx/win/direct_write.cc +index 7641f6b..9d272de 100644 +--- a/src/3rdparty/chromium/ui/gfx/win/direct_write.cc ++++ b/src/3rdparty/chromium/ui/gfx/win/direct_write.cc +@@ -74,9 +74,15 @@ bool GetFontCollection(Microsoft::WRL::ComPtr& factory, + + for (UINT32 font_index = 0; font_index < n_fonts; ++font_index) { + Microsoft::WRL::ComPtr font_face; ++#if defined(__MINGW32__) ++ hr = factory3->CreateFontFaceReference_(font_file.Get(), font_index, ++ DWRITE_FONT_SIMULATIONS_NONE, ++ &font_face); ++#else + hr = factory3->CreateFontFaceReference(font_file.Get(), font_index, + DWRITE_FONT_SIMULATIONS_NONE, + &font_face); ++#endif + DCHECK(SUCCEEDED(hr)); + + hr = font_set_builder->AddFontFaceReference(font_face.Get()); +diff --git a/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.h b/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.h +index 3917a54..4156127 100644 +--- a/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.h ++++ b/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.h +@@ -29,7 +29,9 @@ class GL_EXPORT VSyncProviderWinDComp : public gfx::VSyncProvider { + bool IsHWClock() const override; + + private: ++#if !defined(COMPILER_GCC) + std::optional prev_frame_stats_; ++#endif + }; + + } // namespace gl diff --git a/mingw-w64-qt6-webengine-thirdparty/0015-chromium-v8.patch b/mingw-w64-qt6-webengine-thirdparty/0015-chromium-v8.patch new file mode 100644 index 0000000000000..b371ff2133a3e --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0015-chromium-v8.patch @@ -0,0 +1,399 @@ +diff --git a/src/3rdparty/chromium/v8/BUILD.gn b/src/3rdparty/chromium/v8/BUILD.gn +index 2a36740..54903a6 100644 +--- a/src/3rdparty/chromium/v8/BUILD.gn ++++ b/src/3rdparty/chromium/v8/BUILD.gn +@@ -37,7 +37,7 @@ declare_args() { + v8_enable_future = false + + # Sets -DENABLE_SYSTEM_INSTRUMENTATION. Enables OS-dependent event tracing +- v8_enable_system_instrumentation = (is_win || is_mac) && !v8_use_perfetto ++ v8_enable_system_instrumentation = (is_msvc || is_mac) && !v8_use_perfetto + + # Sets the GUID for the ETW provider + v8_etw_guid = "" +@@ -1559,14 +1559,14 @@ config("toolchain") { + + if (v8_current_cpu == "x86") { + defines += [ "V8_TARGET_ARCH_IA32" ] +- if (is_win) { ++ if (is_msvc) { + # Ensure no surprising artifacts from 80bit double math with x86. + cflags += [ "/arch:SSE2" ] + } + } + if (v8_current_cpu == "x64") { + defines += [ "V8_TARGET_ARCH_X64" ] +- if (is_win) { ++ if (is_msvc) { + # Increase the initial stack size. The default is 1MB, this is 2MB. This + # applies only to executables and shared libraries produced by V8 since + # ldflags are not pushed to dependants. +@@ -1598,7 +1598,7 @@ config("toolchain") { + } + + if (v8_no_inline) { +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/Ob0" ] + } else { + cflags += [ +@@ -1643,7 +1643,7 @@ config("toolchain") { + ] + } + +- if (!is_clang && !is_win) { ++ if (!is_clang && !is_msvc) { + cflags += [ + # Disable gcc warnings for optimizations based on the assumption that + # signed overflow does not occur. Generates false positives (see +@@ -6284,7 +6284,7 @@ v8_source_set("v8_base_without_compiler") { + if (v8_enable_i18n_support) { + deps += [ ":run_gen-regexp-special-case" ] + sources += [ "$target_gen_dir/src/regexp/special-case.cc" ] +- if (is_win) { ++ if (is_msvc) { + deps += [ "$v8_icu_path:icudata" ] + } + } else { +@@ -6710,11 +6710,19 @@ v8_component("v8_libbase") { + + defines += [ "_CRT_RAND_S" ] # for rand_s() + +- libs = [ +- "dbghelp.lib", +- "winmm.lib", +- "ws2_32.lib", +- ] ++ if (is_mingw) { ++ libs = [ ++ "dbghelp", ++ "winmm", ++ "ws2_32", ++ ] ++ } else { ++ libs = [ ++ "dbghelp.lib", ++ "winmm.lib", ++ "ws2_32.lib", ++ ] ++ } + + if (v8_enable_etw_stack_walking) { + libs += [ "advapi32.lib" ] # Needed for TraceLoggingProvider.h +@@ -7172,8 +7180,10 @@ v8_source_set("v8_heap_base") { + + if (current_cpu == "x64") { +- if (is_win) { +- # Prefer a masm version with unwind directives. +- sources += [ "src/heap/base/asm/x64/push_registers_masm.asm" ] ++ if (is_win && is_msvc) { ++ # Prefer a masm version with unwind directives when using MSVC tools. ++ sources += [ "src/heap/base/asm/x64/push_registers_masm.asm" ] ++ } else if (is_win) { ++ sources += [ "src/heap/base/asm/x64/push_registers_asm.cc" ] + } else { + sources += [ "src/heap/base/asm/x64/push_registers_asm.cc" ] + } +@@ -7589,5 +7597,5 @@ if (current_toolchain == v8_snapshot_toolchain) { + # disable it while taking a V8 snapshot. + config("disable_icf") { + visibility = [ ":*" ] # Only targets in this file can depend on this. +- if (is_win) { ++ if (is_msvc) { + ldflags = [ "/OPT:NOICF" ] # link.exe, but also lld-link.exe. + } else if (is_apple && !use_lld) { + ldflags = [ "-Wl,-no_deduplicate" ] # ld64. +diff --git a/src/3rdparty/chromium/v8/src/heap/base/asm/x64/push_registers_asm.cc b/src/3rdparty/chromium/v8/src/heap/base/asm/x64/push_registers_asm.cc +index 8f74a36..a4708f3 100644 +--- a/src/3rdparty/chromium/v8/src/heap/base/asm/x64/push_registers_asm.cc ++++ b/src/3rdparty/chromium/v8/src/heap/base/asm/x64/push_registers_asm.cc +@@ -21,8 +21,48 @@ + // at the call. + // Source: https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-1.0.pdf + +-#ifdef _WIN64 ++#if defined(_WIN64) && !defined(__MINGW32__) + #error "The masm based version must be used for Windows" ++#endif ++ ++#if defined(_WIN64) && defined(__MINGW32__) ++asm( ++ ".globl PushAllRegistersAndIterateStack \n" ++ "PushAllRegistersAndIterateStack: \n" ++ " push %rbp \n" ++ " mov %rsp, %rbp \n" ++ " push $0xCDCDCD \n" ++ " push %rsi \n" ++ " push %rdi \n" ++ " push %rbx \n" ++ " push %r12 \n" ++ " push %r13 \n" ++ " push %r14 \n" ++ " push %r15 \n" ++ " sub $160, %rsp \n" ++ " movdqa %xmm6, 144(%rsp) \n" ++ " movdqa %xmm7, 128(%rsp) \n" ++ " movdqa %xmm8, 112(%rsp) \n" ++ " movdqa %xmm9, 96(%rsp) \n" ++ " movdqa %xmm10, 80(%rsp) \n" ++ " movdqa %xmm11, 64(%rsp) \n" ++ " movdqa %xmm12, 48(%rsp) \n" ++ " movdqa %xmm13, 32(%rsp) \n" ++ " movdqa %xmm14, 16(%rsp) \n" ++ " movdqa %xmm15, (%rsp) \n" ++ // Pass 1st parameter (rcx) unchanged (Stack*). ++ // Pass 2nd parameter (rdx) unchanged (StackVisitor*). ++ // Save 3rd parameter (r8; IterateStackCallback). ++ " mov %r8, %r9 \n" ++ // Pass 3rd parameter as rsp (stack pointer). ++ " mov %rsp, %r8 \n" ++ " call *%r9 \n" ++ " add $224, %rsp \n" ++ " pop %rbp \n" ++ " ret \n"); ++#else ++#ifdef _WIN64 ++#error "The masm based version must be used for Windows" + #endif + + asm( +@@ -65,3 +105,4 @@ asm( + ".Lfunc_end0-PushAllRegistersAndIterateStack \n" + #endif // !defined(__APPLE__) + ); ++#endif +diff --git a/src/3rdparty/chromium/v8/include/v8config.h b/src/3rdparty/chromium/v8/include/v8config.h +index e8bb19d..bdabd40 100644 +--- a/src/3rdparty/chromium/v8/include/v8config.h ++++ b/src/3rdparty/chromium/v8/include/v8config.h +@@ -360,6 +360,13 @@ path. Add it with -I to the command line + + #if defined(__GNUC__) // Clang in gcc mode. + # define V8_CC_GNU 1 ++# if defined(__MINGW32__) ++# define V8_CC_MINGW32 1 ++# endif ++# if defined(__MINGW64__) ++# define V8_CC_MINGW64 1 ++# endif ++# define V8_CC_MINGW (V8_CC_MINGW32 || V8_CC_MINGW64) + #endif + + # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline)) +@@ -824,7 +831,7 @@ V8 shared library set USING_V8_SHARED. + #elif defined(_M_IX86) || defined(__i386__) + #define V8_HOST_ARCH_IA32 1 + #define V8_HOST_ARCH_32_BIT 1 +-#elif defined(__AARCH64EL__) || defined(_M_ARM64) ++#elif defined(__AARCH64EL__) || defined(_M_ARM64) || defined(__aarch64__) + #define V8_HOST_ARCH_ARM64 1 + #define V8_HOST_ARCH_64_BIT 1 + #elif defined(__ARMEL__) +@@ -870,7 +877,7 @@ V8 shared library set USING_V8_SHARED. + #define V8_TARGET_ARCH_X64 1 + #elif defined(_M_IX86) || defined(__i386__) + #define V8_TARGET_ARCH_IA32 1 +-#elif defined(__AARCH64EL__) || defined(_M_ARM64) ++#elif defined(__AARCH64EL__) || defined(_M_ARM64) || defined(__aarch64__) + #define V8_TARGET_ARCH_ARM64 1 + #elif defined(__ARMEL__) + #define V8_TARGET_ARCH_ARM 1 +diff --git a/src/3rdparty/chromium/v8/src/base/bits.h b/src/3rdparty/chromium/v8/src/base/bits.h +index 7d7b232..ef5a279 100644 +--- a/src/3rdparty/chromium/v8/src/base/bits.h ++++ b/src/3rdparty/chromium/v8/src/base/bits.h +@@ -10,13 +10,18 @@ + + #include "src/base/base-export.h" + #include "src/base/macros.h" +-#if V8_CC_MSVC ++#if V8_OS_WIN + #include +-#endif +-#if V8_OS_WIN32 + #include "src/base/win32-headers.h" + #endif + ++#if V8_CC_MINGW ++#undef RotateLeft32 ++#undef RotateLeft64 ++#undef RotateRight32 ++#undef RotateRight64 ++#endif ++ + namespace v8 { + namespace base { + namespace bits { +diff --git a/src/3rdparty/chromium/v8/src/base/debug/stack_trace_win.cc b/src/3rdparty/chromium/v8/src/base/debug/stack_trace_win.cc +index f981bec..16655d5 100644 +--- a/src/3rdparty/chromium/v8/src/base/debug/stack_trace_win.cc ++++ b/src/3rdparty/chromium/v8/src/base/debug/stack_trace_win.cc +@@ -81,7 +81,7 @@ bool InitializeSymbols() { + } + + wchar_t exe_path[MAX_PATH]; +- GetModuleFileName(nullptr, exe_path, MAX_PATH); ++ GetModuleFileNameW(nullptr, exe_path, MAX_PATH); + std::wstring exe_path_wstring(exe_path); + // To get the path without the filename, we just need to remove the final + // slash and everything after it. +diff --git a/src/3rdparty/chromium/v8/src/base/export-template.h b/src/3rdparty/chromium/v8/src/base/export-template.h +index 861cfe4..8107672 100644 +--- a/src/3rdparty/chromium/v8/src/base/export-template.h ++++ b/src/3rdparty/chromium/v8/src/base/export-template.h +@@ -153,8 +153,10 @@ + + EXPORT_TEMPLATE_TEST(DEFAULT, ); + EXPORT_TEMPLATE_TEST(DEFAULT, __attribute__((visibility("default")))); ++#ifdef _MSC_VER + EXPORT_TEMPLATE_TEST(MSVC_HACK, __declspec(dllexport)); + EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); ++#endif + + #undef EXPORT_TEMPLATE_TEST + #undef EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT +diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h +index 4684ade..cfe7dee 100644 +--- a/src/3rdparty/chromium/v8/src/base/macros.h ++++ b/src/3rdparty/chromium/v8/src/base/macros.h +@@ -304,8 +304,12 @@ V8_INLINE A implicit_cast(A x) { + # else + # define V8_PTR_PREFIX "" + # endif // V8_HOST_ARCH_64_BIT +-#elif V8_CC_MINGW64 +-# define V8_PTR_PREFIX "I64" ++#elif V8_CC_MINGW ++# if V8_TARGET_ARCH_X64 ++# define V8_PTR_PREFIX "I64" ++# else ++# define V8_PTR_PREFIX "" ++# endif + #elif V8_HOST_ARCH_64_BIT + # define V8_PTR_PREFIX "l" + #else +diff --git a/src/3rdparty/chromium/v8/src/base/platform/platform-win32.cc b/src/3rdparty/chromium/v8/src/base/platform/platform-win32.cc +index 95805a8..0b5b214 100644 +--- a/src/3rdparty/chromium/v8/src/base/platform/platform-win32.cc ++++ b/src/3rdparty/chromium/v8/src/base/platform/platform-win32.cc +@@ -80,7 +80,6 @@ inline void MemoryFence() { + __asm__ __volatile__("xchgl %%eax,%0 ":"=r" (barrier)); + } + +-#endif // __MINGW64_VERSION_MAJOR + + + int localtime_s(tm* out_tm, const time_t* time) { +@@ -133,6 +132,7 @@ int strncpy_s(char* dest, size_t dest_size, const char* source, size_t count) { + return 0; + } + ++#endif // __MINGW64_VERSION_MAJOR + #endif // __MINGW32__ + + namespace v8 { +@@ -802,13 +802,13 @@ void OS::EnsureWin32MemoryAPILoaded() { + static bool loaded = false; + if (!loaded) { + VirtualAlloc2 = (VirtualAlloc2_t)GetProcAddress( +- GetModuleHandle(L"kernelbase.dll"), "VirtualAlloc2"); ++ GetModuleHandleW(L"kernelbase.dll"), "VirtualAlloc2"); + + MapViewOfFile3 = (MapViewOfFile3_t)GetProcAddress( +- GetModuleHandle(L"kernelbase.dll"), "MapViewOfFile3"); ++ GetModuleHandleW(L"kernelbase.dll"), "MapViewOfFile3"); + + UnmapViewOfFile2 = (UnmapViewOfFile2_t)GetProcAddress( +- GetModuleHandle(L"kernelbase.dll"), "UnmapViewOfFile2"); ++ GetModuleHandleW(L"kernelbase.dll"), "UnmapViewOfFile2"); + + loaded = true; + } +@@ -1091,7 +1091,7 @@ bool OS::DiscardSystemPages(void* address, size_t size) { + reinterpret_cast(-1)) + discard_virtual_memory = + reinterpret_cast(GetProcAddress( +- GetModuleHandle(L"Kernel32.dll"), "DiscardVirtualMemory")); ++ GetModuleHandleW(L"Kernel32.dll"), "DiscardVirtualMemory")); + // Use DiscardVirtualMemory when available because it releases faster than + // MEM_RESET. + DiscardVirtualMemoryFunction discard_function = discard_virtual_memory.load(); +diff --git a/src/3rdparty/chromium/v8/src/base/platform/time.cc b/src/3rdparty/chromium/v8/src/base/platform/time.cc +index 4bede53..482aca2 100644 +--- a/src/3rdparty/chromium/v8/src/base/platform/time.cc ++++ b/src/3rdparty/chromium/v8/src/base/platform/time.cc +@@ -799,6 +799,8 @@ ThreadTicks ThreadTicks::Now() { + if (now != 0) + return ThreadTicks(now); + UNREACHABLE(); ++#elif V8_OS_WIN ++ return ThreadTicks::GetForThread(::GetCurrentThread()); + #elif V8_OS_DARWIN + return ThreadTicks(ComputeThreadTicks()); + #elif V8_OS_FUCHSIA +@@ -808,8 +810,6 @@ ThreadTicks ThreadTicks::Now() { + return ThreadTicks(ClockNow(CLOCK_THREAD_CPUTIME_ID)); + #elif V8_OS_SOLARIS + return ThreadTicks(gethrvtime() / Time::kNanosecondsPerMicrosecond); +-#elif V8_OS_WIN +- return ThreadTicks::GetForThread(::GetCurrentThread()); + #else + UNREACHABLE(); + #endif +diff --git a/src/3rdparty/chromium/v8/src/common/assert-scope.h b/src/3rdparty/chromium/v8/src/common/assert-scope.h +index f9e8542..123b693 100644 +--- a/src/3rdparty/chromium/v8/src/common/assert-scope.h ++++ b/src/3rdparty/chromium/v8/src/common/assert-scope.h +@@ -65,7 +65,7 @@ class V8_NODISCARD PerThreadAssertScope + PerThreadAssertScope(const PerThreadAssertScope&) = delete; + PerThreadAssertScope& operator=(const PerThreadAssertScope&) = delete; + +- V8_EXPORT_PRIVATE static bool IsAllowed(); ++ static bool IsAllowed(); + + void Release(); + +diff --git a/src/3rdparty/chromium/v8/src/diagnostics/unwinding-info-win64.cc b/src/3rdparty/chromium/v8/src/diagnostics/unwinding-info-win64.cc +index 1312609..0290c5a 100644 +--- a/src/3rdparty/chromium/v8/src/diagnostics/unwinding-info-win64.cc ++++ b/src/3rdparty/chromium/v8/src/diagnostics/unwinding-info-win64.cc +@@ -473,7 +473,7 @@ static decltype( + void LoadNtdllUnwindingFunctionsOnce() { + // Load functions from the ntdll.dll module. + HMODULE ntdll_module = +- LoadLibraryEx(L"ntdll.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32); ++ LoadLibraryExW(L"ntdll.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32); + DCHECK_NOT_NULL(ntdll_module); + + // This fails on Windows 7. +diff --git a/src/3rdparty/chromium/v8/src/profiler/heap-snapshot-generator.cc b/src/3rdparty/chromium/v8/src/profiler/heap-snapshot-generator.cc +index 53bdb78..16354fb 100644 +--- a/src/3rdparty/chromium/v8/src/profiler/heap-snapshot-generator.cc ++++ b/src/3rdparty/chromium/v8/src/profiler/heap-snapshot-generator.cc +@@ -426,11 +426,11 @@ HeapSnapshot::HeapSnapshot(HeapProfiler* profiler, + static_assert(kSystemPointerSize != 4 || sizeof(HeapGraphEdge) == 12); + static_assert(kSystemPointerSize != 8 || sizeof(HeapGraphEdge) == 24); + static_assert(kSystemPointerSize != 4 || sizeof(HeapEntry) == 32); +-#if V8_CC_MSVC ++#if V8_OS_WIN + static_assert(kSystemPointerSize != 8 || sizeof(HeapEntry) == 48); +-#else // !V8_CC_MSVC ++#else // !V8_OS_WIN + static_assert(kSystemPointerSize != 8 || sizeof(HeapEntry) == 40); +-#endif // !V8_CC_MSVC ++#endif // !V8_OS_WIN + memset(&gc_subroot_entries_, 0, sizeof(gc_subroot_entries_)); + } + +diff --git a/src/3rdparty/chromium/v8/src/snapshot/snapshot-utils.cc b/src/3rdparty/chromium/v8/src/snapshot/snapshot-utils.cc +index ea04fce..e67eb47 100644 +--- a/src/3rdparty/chromium/v8/src/snapshot/snapshot-utils.cc ++++ b/src/3rdparty/chromium/v8/src/snapshot/snapshot-utils.cc +@@ -7,7 +7,7 @@ + #include "src/base/sanitizer/msan.h" + + #ifdef V8_USE_ZLIB +-#include "third_party/zlib/zlib.h" ++#include + #endif + + namespace v8 { diff --git a/mingw-w64-qt6-webengine-thirdparty/0016-chromium-others.patch b/mingw-w64-qt6-webengine-thirdparty/0016-chromium-others.patch new file mode 100644 index 0000000000000..9812fd3eb4b11 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0016-chromium-others.patch @@ -0,0 +1,151 @@ +diff --git a/src/3rdparty/chromium/crypto/BUILD.gn b/src/3rdparty/chromium/crypto/BUILD.gn +index 4f4c450..43466aa 100644 +--- a/src/3rdparty/chromium/crypto/BUILD.gn ++++ b/src/3rdparty/chromium/crypto/BUILD.gn +@@ -122,10 +122,12 @@ component("crypto") { + "unexportable_key_win.h", + "user_verifying_key_win.cc", + ] +- libs = [ +- "crypt32.lib", +- "ncrypt.lib", +- ] ++ if (is_mingw) { ++ sources -= [ "user_verifying_key_win.cc" ] ++ libs = [ "ncrypt" ] ++ } else { ++ libs = [ "ncrypt.lib" ] ++ } + } + + # Some files are built when NSS is used for the platform certificate library. +diff --git a/src/3rdparty/chromium/crypto/unexportable_key_win.cc b/src/3rdparty/chromium/crypto/unexportable_key_win.cc +index 26757d1..e4425c1 100644 +--- a/src/3rdparty/chromium/crypto/unexportable_key_win.cc ++++ b/src/3rdparty/chromium/crypto/unexportable_key_win.cc +@@ -178,6 +178,7 @@ std::optional> GetP256ECDSASPKI(NCRYPT_KEY_HANDLE key) { + return std::nullopt; + } + ++#if !defined(COMPILER_GCC) // FIXME: missing NCRYPT_ECC_CURVE_NAME_PROPERTY + // Sometimes NCrypt will return a generic dwMagic even when asked for a P-256 + // key. In that case, do extra validation to make sure that `key` is in fact + // a P-256 key. +@@ -194,6 +195,7 @@ std::optional> GetP256ECDSASPKI(NCRYPT_KEY_HANDLE key) { + return std::nullopt; + } + } ++#endif + + uint8_t x962[1 + 32 + 32]; + x962[0] = POINT_CONVERSION_UNCOMPRESSED; +@@ -699,6 +701,7 @@ class VirtualUnexportableKeyProviderWin + return nullptr; + } + ++#if !defined(COMPILER_GCC) // FIXME: missing NCRYPT_USE_VIRTUAL_ISOLATION_FLAG + ScopedNCryptKey key; + { + SCOPED_MAY_LOAD_LIBRARY_AT_BACKGROUND_PRIORITY(); +@@ -740,6 +743,7 @@ class VirtualUnexportableKeyProviderWin + default: + return nullptr; + } ++#endif + } + + std::unique_ptr FromKeyName( +diff --git a/src/3rdparty/chromium/skia/BUILD.gn b/src/3rdparty/chromium/skia/BUILD.gn +index 9b6e42e..74d7312 100644 +--- a/src/3rdparty/chromium/skia/BUILD.gn ++++ b/src/3rdparty/chromium/skia/BUILD.gn +@@ -412,7 +412,9 @@ component("skia") { + sources -= [ "//third_party/skia/src/utils/SkParsePath.cpp" ] + } + +- if (is_win) { ++ if (is_mingw) { ++ libs = [ "fontsub" ] ++ } else if (is_msvc) { + libs = [ "fontsub.lib" ] + } + +@@ -709,10 +711,14 @@ template("skia_source_set") { + configs -= [ "//build/config/compiler:afdo_optimize_size" ] + } + if (is_win) { +- cflags_cc = [ +- "/wd5041", # out-of-line definition for constexpr static data member is +- # not needed and is deprecated in C++17 +- ] ++ if (is_mingw) { ++ cflags_cc = [ "-Wno-missing-field-initializers" ] ++ } else { ++ cflags_cc = [ ++ "/wd5041", # out-of-line definition for constexpr static data member is ++ # not needed and is deprecated in C++17 ++ ] ++ } + } + } + } +@@ -757,7 +763,7 @@ skia_source_set("skia_core_and_effects") { + if (current_cpu == "x86" || current_cpu == "x64") { + skia_source_set("skia_opts_hsw") { + sources = skia_opts.hsw_sources +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + "-mavx2", + "-mbmi", +@@ -832,7 +838,7 @@ skia_source_set("skia_opts") { + if (current_cpu == "x64") { + skia_source_set("skcms_TransformHsw") { + sources = skcms_TransformHsw +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + "-w", + "-mavx2", +@@ -846,7 +852,7 @@ if (current_cpu == "x64") { + } + skia_source_set("skcms_TransformSkx") { + sources = skcms_TransformSkx +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + "-w", + "-mavx512f", +@@ -873,7 +879,7 @@ if (current_cpu == "x64") { + } + + source_set("skcms_TransformBaseline_and_public") { +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ + "-w", + "-std=c11", +diff --git a/src/3rdparty/chromium/sql/sqlite_result_code.cc b/src/3rdparty/chromium/sql/sqlite_result_code.cc +index c1b96e2..870dc21 100644 +--- a/src/3rdparty/chromium/sql/sqlite_result_code.cc ++++ b/src/3rdparty/chromium/sql/sqlite_result_code.cc +@@ -158,7 +158,7 @@ constexpr SqliteResultCodeMappingEntry kResultCodeMapping[] = { + {SQLITE_ERROR_SNAPSHOT, + static_cast(SqliteLoggedResultCode::kUnusedChrome)}, + #ifdef SQLITE_ENABLE_SNAPSHOT +-#error "This code assumes that Chrome does not use sqlite3_snapshot_open()" ++#error This code assumes that Chrome does not use sqlite3_snapshot_open() + #endif + + // Chrome does not use blocking Posix advisory file lock requests. +@@ -166,8 +166,8 @@ constexpr SqliteResultCodeMappingEntry kResultCodeMapping[] = { + static_cast(SqliteLoggedResultCode::kUnusedChrome)}, + #ifdef SQLITE_ENABLE_SETLK_TIMEOUT + #error \ +- "This code assumes that Chrome does not use blocking Posix advisory \ +-file lock requests" ++ This code assumes that Chrome does not use blocking Posix advisory \ ++file lock requests + #endif + + {SQLITE_READONLY_ROLLBACK, diff --git a/mingw-w64-qt6-webengine-thirdparty/0101-chromium-third-party-angle.patch b/mingw-w64-qt6-webengine-thirdparty/0101-chromium-third-party-angle.patch new file mode 100644 index 0000000000000..d4353e10921f4 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0101-chromium-third-party-angle.patch @@ -0,0 +1,208 @@ +diff --git a/src/3rdparty/chromium/third_party/angle/BUILD.gn b/src/3rdparty/chromium/third_party/angle/BUILD.gn +index 34b9fed..de41235 100644 +--- a/src/3rdparty/chromium/third_party/angle/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/angle/BUILD.gn +@@ -327,7 +327,7 @@ config("extra_warnings") { + } + + # Enable more default warnings on Windows. +- if (is_win) { ++ if (is_msvc) { + cflags += [ + "/we4244", # Conversion: possible loss of data. + "/we4312", # Conversion: greater size. +@@ -667,7 +667,15 @@ angle_static_library("angle_gpu_info_util") { + deps += [ "$angle_root/src/common/vulkan:angle_vulkan_entry_points" ] + } + +- if (is_win) { ++ if (is_mingw) { ++ sources += libangle_gpu_info_util_win_sources ++ libs += [ ++ "setupapi", ++ "dxgi", ++ ] ++ } ++ ++ if (is_msvc) { + sources += libangle_gpu_info_util_win_sources + if (!angle_is_winuwp) { + libs += [ "setupapi.lib" ] +@@ -815,7 +823,7 @@ angle_static_library("translator") { + ":angle_version_info", + ] + +- if (is_win) { ++ if (is_msvc) { + # Necessary to suppress some system header xtree warnings in Release. + # For some reason this warning doesn't get triggered in Chromium + cflags = [ "/wd4718" ] +@@ -996,7 +1004,7 @@ config("libANGLE_config") { + ldflags = [] + defines += [ "LIBANGLE_IMPLEMENTATION" ] + +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/wd4530" ] # C++ exception handler used, but unwind semantics + # are not enabled. + } +@@ -1095,7 +1103,14 @@ angle_source_set("libANGLE_no_vulkan") { + ":includes", + ] + +- if (is_win && !angle_is_winuwp) { ++ if (is_mingw) { ++ libs += [ ++ "gdi32", ++ "user32", ++ ] ++ } ++ ++ if (is_msvc && !angle_is_winuwp) { + libs += [ + "gdi32.lib", + "user32.lib", +@@ -1127,7 +1142,11 @@ angle_source_set("libANGLE_no_vulkan") { + } + + if (angle_enable_d3d11) { +- libs += [ "dxguid.lib" ] ++ if (is_mingw) { ++ libs += [ "dxguid" ] ++ } else { ++ libs += [ "dxguid.lib" ] ++ } + } + + if (angle_enable_metal) { +@@ -1501,5 +1501,6 @@ angle_static_library("libGLESv2_thin_static") { + + angle_static_library("libGLESv2_static") { + sources = libglesv2_sources ++ output_name = "libGLESv2" + public_deps = [ ":libGLESv2_thin_static" ] + } +@@ -1592,5 +1592,6 @@ if (angle_enable_vulkan) { + } + + libEGL_template("libEGL_static") { ++ output_name = "libEGL" + target_type = "angle_static_library" + public_configs = [ ":angle_static_config" ] + deps = [ ":libGLESv2_static" ] +diff --git a/src/3rdparty/chromium/third_party/angle/src/libANGLE/MemoryProgramCache.cpp b/src/3rdparty/chromium/third_party/angle/src/libANGLE/MemoryProgramCache.cpp +index ec2047d..8567d86 100644 +--- a/src/3rdparty/chromium/third_party/angle/src/libANGLE/MemoryProgramCache.cpp ++++ b/src/3rdparty/chromium/third_party/angle/src/libANGLE/MemoryProgramCache.cpp +@@ -8,7 +8,9 @@ + // layer to warm up the cache from disk. + + // Include zlib first, otherwise FAR gets defined elsewhere. ++#ifndef USE_SYSTEM_ZLIB + #define USE_SYSTEM_ZLIB ++#endif + #include "compression_utils_portable.h" + + #include "libANGLE/MemoryProgramCache.h" +diff --git a/src/3rdparty/chromium/third_party/angle/src/libANGLE/angletypes.cpp b/src/3rdparty/chromium/third_party/angle/src/libANGLE/angletypes.cpp +index 21cc33e..2713f61 100644 +--- a/src/3rdparty/chromium/third_party/angle/src/libANGLE/angletypes.cpp ++++ b/src/3rdparty/chromium/third_party/angle/src/libANGLE/angletypes.cpp +@@ -14,7 +14,9 @@ + + #include + ++#ifndef USE_SYSTEM_ZLIB + #define USE_SYSTEM_ZLIB ++#endif + #include "compression_utils_portable.h" + + namespace gl +diff --git a/src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/d3d/BUILD.gn b/src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/d3d/BUILD.gn +index 55227c3..5da1f87 100644 +--- a/src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/d3d/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/d3d/BUILD.gn +@@ -27,15 +27,21 @@ angle_source_set("angle_d3d_shared") { + if (angle_enable_d3d9) { + config("angle_d3d9_backend_config") { + defines = [ "ANGLE_ENABLE_D3D9" ] +- ldflags = [ "/DELAYLOAD:d3d9.dll" ] ++ if (is_msvc) { ++ ldflags = [ "/DELAYLOAD:d3d9.dll" ] ++ } + } + + angle_source_set("angle_d3d9_backend") { + sources = d3d9_backend_sources +- libs = [ +- "d3d9.lib", +- "delayimp.lib", +- ] ++ if (is_mingw) { ++ libs = [ "d3d9" ] ++ } else { ++ libs = [ ++ "d3d9.lib", ++ "delayimp.lib", ++ ] ++ } + public_deps = [ ":angle_d3d_shared" ] + public_configs = [ ":angle_d3d9_backend_config" ] + } +@@ -52,7 +58,11 @@ if (angle_enable_d3d11) { + angle_source_set("angle_d3d11_backend") { + sources = d3d11_backend_sources + +- libs = [ "dxguid.lib" ] ++ if (is_mingw) { ++ libs = [ "dxguid" ] ++ } else { ++ libs = [ "dxguid.lib" ] ++ } + + public_deps = [ ":angle_d3d_shared" ] + public_configs = [ ":angle_d3d11_backend_config" ] +diff --git a/src/3rdparty/chromium/third_party/angle/util/capture/traces_export.h b/src/3rdparty/chromium/third_party/angle/util/capture/traces_export.h +index 95a888c..048508d 100644 +--- a/src/3rdparty/chromium/third_party/angle/util/capture/traces_export.h ++++ b/src/3rdparty/chromium/third_party/angle/util/capture/traces_export.h +@@ -13,7 +13,7 @@ + + // See util/util_export.h for details on import/export labels. + #if !defined(ANGLE_TRACE_EXPORT) +-# if defined(_WIN32) ++# if defined(_MSC_VER) + # if defined(ANGLE_TRACE_IMPLEMENTATION) + # define ANGLE_TRACE_EXPORT __declspec(dllexport) + # else +@@ -27,7 +27,7 @@ + #endif // !defined(ANGLE_TRACE_EXPORT) + + #if !defined(ANGLE_TRACE_LOADER_EXPORT) +-# if defined(_WIN32) ++# if defined(_MSC_VER) + # if defined(ANGLE_TRACE_LOADER_IMPLEMENTATION) + # define ANGLE_TRACE_LOADER_EXPORT __declspec(dllexport) + # else +@@ -41,7 +41,7 @@ + #endif // !defined(ANGLE_TRACE_LOADER_EXPORT) + + #if !defined(ANGLE_REPLAY_EXPORT) +-# if defined(_WIN32) ++# if defined(_MSC_VER) + # if defined(ANGLE_REPLAY_IMPLEMENTATION) + # define ANGLE_REPLAY_EXPORT __declspec(dllexport) + # else +diff --git a/src/3rdparty/chromium/third_party/angle/util/util_export.h b/src/3rdparty/chromium/third_party/angle/util/util_export.h +index 36fb6b7..8cd58b4 100644 +--- a/src/3rdparty/chromium/third_party/angle/util/util_export.h ++++ b/src/3rdparty/chromium/third_party/angle/util/util_export.h +@@ -12,7 +12,7 @@ + // We define "IMPLEMENTATION" to get the dllexport label when compiling the + // util library. Consumers get the dllimport label by default. + #if !defined(ANGLE_UTIL_EXPORT) +-# if defined(_WIN32) ++# if defined(_MSC_VER) + # if defined(LIBANGLE_UTIL_IMPLEMENTATION) + # define ANGLE_UTIL_EXPORT __declspec(dllexport) + # else diff --git a/mingw-w64-qt6-webengine-thirdparty/0102-chromium-third-party-blink.patch b/mingw-w64-qt6-webengine-thirdparty/0102-chromium-third-party-blink.patch new file mode 100644 index 0000000000000..bf32ada8f55d8 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0102-chromium-third-party-blink.patch @@ -0,0 +1,410 @@ +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn +index c3b22d1..806836a 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn +@@ -37,7 +37,7 @@ config("inside_blink") { + "BLINK_IMPLEMENTATION=1", + "INSIDE_BLINK", + ] +- if (is_clang || !is_win) { ++ if (is_clang || !is_msvc) { + cflags += [ + "-Wno-unused-variable", + ] +@@ -68,7 +68,7 @@ import("//build/config/pch.gni") + + config("blink_pch") { + if (enable_precompiled_headers) { +- if (is_win) { ++ if (is_msvc) { + # This is a string rather than a file GN knows about. It has to match + # exactly what's in the /FI flag below, and what might appear in the + # source code in quotes for an #include directive. +@@ -82,6 +82,8 @@ config("blink_pch") { + + # Force include the header. + cflags = [ "/FI$precompiled_header" ] ++ } else if (is_mingw) { ++ precompiled_source = "//third_party/blink/renderer/build/win/precompile.h" + } else if (is_mac) { + precompiled_source = "//third_party/blink/renderer/build/mac/prefix.h" + } else if (is_linux) { +@@ -96,7 +98,7 @@ config("config") { + cflags = [] + defines = [] + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + "/wd4305", # Truncation from 'type1' to 'type2'. + "/wd4324", # Struct padded due to declspec(align). +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc +index 8754ee3..aa1f79e 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc +@@ -109,7 +109,7 @@ + + namespace blink { + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Defined in v8_initializer_win.cc. + v8::FilterETWSessionByURLResult FilterETWSessionByURLCallback( + v8::Local context, +@@ -791,9 +791,9 @@ void V8Initializer::InitializeV8Common(v8::Isolate* isolate) { + isolate->SetIsJSApiWrapperNativeErrorCallback(IsDOMExceptionWrapper); + isolate->SetMetricsRecorder(std::make_shared(isolate)); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + isolate->SetFilterETWSessionByURL2Callback(FilterETWSessionByURLCallback); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + V8ContextSnapshot::EnsureInterfaceTemplates(isolate); + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/core/BUILD.gn +index 6acda03..94874e9 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/BUILD.gn +@@ -147,7 +147,7 @@ config("blink_core_pch") { + # Add precompiled header (pch) support when enabled, possible and + # making sense. + if (enable_precompiled_headers) { +- if (is_win) { ++ if (is_msvc) { + # This is a string rather than a file GN knows about. It has to match + # exactly what's in the /FI flag below, and what might appear in the + # source code in quotes for an #include directive. +@@ -161,7 +161,7 @@ config("blink_core_pch") { + + # Force include the header. + cflags = [ "/FI$precompiled_header" ] +- } else if (is_mac || is_linux) { ++ } else if (is_mac || is_linux || is_mingw) { + precompiled_source = "//third_party/blink/renderer/core/precompile_core.h" + } + } +@@ -1363,7 +1363,7 @@ target("jumbo_" + core_generated_target_type, "core_generated") { + defines += [ "USING_V8_SHARED" ] + } + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + # In generated bindings code: "switch contains default but no case". + # 4701 and 4702 are disabled because of issues in Bison-generated +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/css/css_numeric_literal_value.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/css/css_numeric_literal_value.cc +index 831ee12..dbc8cb9 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/css/css_numeric_literal_value.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/css/css_numeric_literal_value.cc +@@ -194,11 +194,11 @@ bool CSSNumericLiteralValue::IsComputationallyIndependent() const { + } + + static String FormatNumber(double number, const char* suffix) { +-#if BUILDFLAG(IS_WIN) && _MSC_VER < 1900 ++#if BUILDFLAG(IS_MSVC) && _MSC_VER < 1900 + unsigned oldFormat = _set_output_format(_TWO_DIGIT_EXPONENT); + #endif + String result = String::Format("%.6g%s", number, suffix); +-#if BUILDFLAG(IS_WIN) && _MSC_VER < 1900 ++#if BUILDFLAG(IS_MSVC) && _MSC_VER < 1900 + _set_output_format(oldFormat); + #endif + return result; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/BUILD.gn +index 1590812..9c05d0d 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/BUILD.gn +@@ -106,7 +106,7 @@ jumbo_source_set("generated") { + "//third_party/blink/renderer/core:core_include_dirs", + ] + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/wd4702" ] # Unreachable code. + } + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_object.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_object.cc +index 2e40cde..7377154 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_object.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_object.cc +@@ -315,7 +315,9 @@ struct SameSizeAsLayoutObject : public GarbageCollected, + #endif + }; + ++#if !BUILDFLAG(IS_MINGW) // FIXME: check fails on MinGW + ASSERT_SIZE(LayoutObject, SameSizeAsLayoutObject); ++#endif + + bool LayoutObject::affects_parent_block_ = false; + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/precompile_core.h b/src/3rdparty/chromium/third_party/blink/renderer/core/precompile_core.h +index e88f40c..f307da4 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/precompile_core.h ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/precompile_core.h +@@ -9,7 +9,7 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PRECOMPILE_CORE_H_ + #define THIRD_PARTY_BLINK_RENDERER_CORE_PRECOMPILE_CORE_H_ + +-#if defined(_MSC_VER) ++#if defined(_WIN32) + #include "third_party/blink/renderer/build/win/precompile.h" + #elif defined(__APPLE__) + #include "third_party/blink/renderer/build/mac/prefix.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/BUILD.gn +index 3c80db0..41a935a 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/BUILD.gn +@@ -216,7 +216,7 @@ jumbo_component("modules") { + public_deps = sub_modules + allow_circular_includes_from = sub_modules + +- if (is_win) { ++ if (is_msvc) { + cflags = + [ "/wd4334" ] # Result of 32-bit shift implicitly converted to 64 bits. + } +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/BUILD.gn +index 4a39384..a23a143 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/BUILD.gn +@@ -194,7 +194,7 @@ blink_modules_sources("webaudio") { + "wave_shaper_processor.h", + ] + +- if (is_win) { ++ if (is_msvc) { + # Result of 32-bit shift implicitly converted to 64 bits. + cflags = [ "/wd4334" ] + } +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn +index 64383a0..90b095a 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn +@@ -273,7 +273,7 @@ config("blink_platform_pch") { + visibility = [] + visibility = [ "./*" ] + if (enable_precompiled_headers) { +- if (is_win) { ++ if (is_msvc) { + # This is a string rather than a file GN knows about. It has to match + # exactly what's in the /FI flag below, and what might appear in the + # source code in quotes for an #include directive. +@@ -287,7 +287,7 @@ config("blink_platform_pch") { + + # Force include the header. + cflags = [ "/FI$precompiled_header" ] +- } else if (is_mac || is_linux) { ++ } else if (is_mac || is_linux || is_mingw) { + precompiled_source = + "//third_party/blink/renderer/platform/precompile_platform.h" + } +@@ -1892,14 +1892,16 @@ jumbo_component("platform") { + "text/locale_icu.cc", + "text/locale_icu.h", + ] +- cflags = [ +- "/wd4334", # Result of 32-bit shift implicitly converted to 64 bits. +- "/wd4724", # Modulo by 0. +- ] +- +- # TODO(crbug.com/40915226): Remove the need to ignore this warning. +- if (is_component_build) { +- ldflags = [ "/IGNORE:4217" ] ++ if (is_msvc) { ++ cflags = [ ++ "/wd4334", # Result of 32-bit shift implicitly converted to 64 bits. ++ "/wd4724", # Modulo by 0. ++ ] ++ ++ # TODO(crbug.com/40915226): Remove the need to ignore this warning. ++ if (is_component_build) { ++ ldflags = [ "/IGNORE:4217" ] ++ } + } + } + +@@ -2135,7 +2137,7 @@ jumbo_static_library("test_support") { + allow_circular_includes_from = + [ "//third_party/blink/renderer/platform/loader:test_support" ] + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/wd4267" ] # Truncation from size_t to int. + } + } +@@ -2649,7 +2651,7 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "//third_party/blink/renderer:non_test_config", + ] + public_deps = [ ":blink_platform_public_deps" ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX" ] + } else { + cflags = [ "-mavx" ] +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_platform_data.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_platform_data.cc +index b6d9af8..e40b42a 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_platform_data.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_platform_data.cc +@@ -57,6 +57,7 @@ + namespace blink { + namespace { + ++#if !BUILDFLAG(IS_MINGW) + // These functions are also implemented in sandbox_ipc_linux.cc + // Converts gfx::FontRenderParams::Hinting to WebFontRenderStyle::hintStyle. + // Returns an int for serialization, but the underlying Blink type is a char. +@@ -86,6 +87,7 @@ int ConvertSubpixelRendering( + NOTREACHED() << "Unexpected subpixel rendering value " << rendering; + return 0; + } ++#endif + + } // namespace + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/precompile_platform.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/precompile_platform.h +index 83a9e90..2fdc22d 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/precompile_platform.h ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/precompile_platform.h +@@ -10,7 +10,7 @@ + + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_PRECOMPILE_PLATFORM_H_ + +-#if defined(_MSC_VER) ++#if defined(_WIN32) + #include "third_party/blink/renderer/build/win/precompile.h" + #elif defined(__APPLE__) + #include "third_party/blink/renderer/build/mac/prefix.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/BUILD.gn +index 291bb34..910a36b 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/BUILD.gn +@@ -21,7 +21,7 @@ visibility = [ + ] + + config("wtf_config") { +- if (is_win) { ++ if (is_msvc) { + cflags = [ + # Don't complain about calling specific versions of templatized + # functions (e.g. in RefPtrHashMap.h). +@@ -35,6 +35,8 @@ config("wtf_config") { + # build. + cflags += [ "/wd4291" ] + } ++ } else { ++ cflags = [ "-Wno-template-id-cdtor" ] + } + } + +@@ -251,7 +253,7 @@ jumbo_component("wtf") { + ] + } + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/wd4068" ] # Unknown pragma. + + # Inject Visual Studio debug visualizers for our types into all targets +@@ -357,7 +359,7 @@ jumbo_source_set("wtf_unittests_sources") { + "vector_test.cc", + ] + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/wd4068" ] # Unknown pragma. + } + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc +index 0ae79af..b5627ae 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc +@@ -93,7 +93,7 @@ size_t GetUnderestimatedStackSize() { + #endif + } + return pthread_get_stacksize_np(pthread_self()); +-#elif BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#elif BUILDFLAG(IS_WIN) + return Threading::ThreadStackSize(); + #else + #error "Stack frame size estimation not supported on this platform." +@@ -135,7 +135,7 @@ void* GetStackStart() { + #endif + #elif BUILDFLAG(IS_APPLE) + return pthread_get_stackaddr_np(pthread_self()); +-#elif BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#elif BUILDFLAG(IS_WIN) + // On Windows stack limits for the current thread are available in + // the thread information block (TIB). + // On Windows ARM64, stack limits could be retrieved by calling +@@ -184,7 +184,7 @@ void InitializeMainThreadStackEstimate() { + g_main_thread_underestimated_stack_size = underestimated_stack_size; + } + +-#if BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + size_t ThreadStackSize() { + // Notice that we cannot use the TIB's StackLimit for the stack end, as i + // tracks the end of the committed range. We're after the end of the reserved +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.h +index 17dde31..2507bc7 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.h ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.h +@@ -29,7 +29,7 @@ WTF_EXPORT extern uintptr_t g_main_thread_underestimated_stack_size; + + WTF_EXPORT void InitializeMainThreadStackEstimate(); + +-#if BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + size_t ThreadStackSize(); + #endif + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.cc +index 3a4c9d4..e333875 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.cc +@@ -50,7 +50,7 @@ void Threading::Initialize() { + WtfThreading(); + } + +-#if BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + size_t Threading::ThreadStackSize() { + // Needed to bootstrap Threading on Windows, because this value is needed + // before the main thread data is fully initialized. +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.h +index 302a200..a348959 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.h ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading.h +@@ -77,7 +77,7 @@ class WTF_EXPORT Threading { + // Must be called on the main thread before any callers to wtfThreadData(). + static void Initialize(); + +-#if BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + static size_t ThreadStackSize(); + #endif + +@@ -86,7 +86,7 @@ class WTF_EXPORT Threading { + + base::PlatformThreadId thread_id_; + +-#if BUILDFLAG(IS_WIN) && defined(COMPILER_MSVC) ++#if BUILDFLAG(IS_WIN) + size_t thread_stack_size_ = 0u; + #endif + +diff --git a/src/3rdparty/chromium/third_party/blink/tools/BUILD.gn b/src/3rdparty/chromium/third_party/blink/tools/BUILD.gn +index b7d7a70..fc0b5c1 100644 +--- a/src/3rdparty/chromium/third_party/blink/tools/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/tools/BUILD.gn +@@ -41,7 +41,7 @@ group("wpt_tests_isolate") { + if (!is_ios) { + data_deps += [ ":wpt_tests_mojo_bindings" ] + } +- if (is_win) { ++ if (is_msvc) { + data_deps += [ "//build/win:copy_cdb_to_output" ] + } + } diff --git a/mingw-w64-qt6-webengine-thirdparty/0103-chromium-third-party-breakpad.patch b/mingw-w64-qt6-webengine-thirdparty/0103-chromium-third-party-breakpad.patch new file mode 100644 index 0000000000000..fc182f6a754b8 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0103-chromium-third-party-breakpad.patch @@ -0,0 +1,139 @@ +diff --git a/src/3rdparty/chromium/third_party/breakpad/BUILD.gn b/src/3rdparty/chromium/third_party/breakpad/BUILD.gn +index a721ae2..50a2faa 100644 +--- a/src/3rdparty/chromium/third_party/breakpad/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/breakpad/BUILD.gn +@@ -1083,6 +1083,9 @@ if (is_win) { + "$visual_studio_path/DIA SDK/include", + "breakpad/src", + ] ++ if (is_mingw) { ++ include_dirs -= [ "$visual_studio_path/DIA SDK/include" ] ++ } + + sources = [ + "breakpad/src/tools/windows/converter/ms_symbol_server_converter.cc", +@@ -1090,7 +1093,11 @@ if (is_win) { + + deps = [ "//third_party/breakpad:common_windows" ] + +- libs = [ "Pathcch.lib" ] ++ if (is_mingw) { ++ libs = [ "pathcch" ] ++ } else { ++ libs = [ "Pathcch.lib" ] ++ } + } + + executable("dump_syms") { +@@ -1105,18 +1112,23 @@ if (is_win) { + + deps = [ "//third_party/breakpad:common_windows" ] + +- lib_dirs = [] +- if (current_cpu == "x64") { +- lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] ++ if (is_mingw) { ++ include_dirs -= [ "$visual_studio_path/DIA SDK/include" ] ++ libs = [ "imagehlp" ] + } else { +- lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] ++ lib_dirs = [] ++ if (current_cpu == "x64") { ++ lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] ++ } else { ++ lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] ++ } ++ ++ libs = [ ++ "diaguids.lib", ++ "imagehlp.lib", ++ ] + } + +- libs = [ +- "diaguids.lib", +- "imagehlp.lib", +- ] +- + if (is_clang) { + # clang complains about microsoft-specific goto extensions. Instead of + # rewriting decade-old, goto-ridden code, disable the warning. +@@ -1131,19 +1143,24 @@ if (is_win) { + ] + sources = [ "breakpad/src/tools/windows/symupload/symupload.cc" ] + deps = [ "//third_party/breakpad:common_windows" ] +- ldflags = [ "/LARGEADDRESSAWARE" ] +- lib_dirs = [] +- if (current_cpu == "x64") { +- lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] ++ ++ if (is_mingw) { ++ libs = [ "imagehlp" ] + } else { +- lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] ++ ldflags = [ "/LARGEADDRESSAWARE" ] ++ lib_dirs = [] ++ if (current_cpu == "x64") { ++ lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] ++ } else { ++ lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] ++ } ++ ++ libs = [ ++ "diaguids.lib", ++ "imagehlp.lib", ++ ] + } + +- libs = [ +- "diaguids.lib", +- "imagehlp.lib", +- ] +- + if (is_clang) { + # clang complains about microsoft-specific goto extensions. Instead of + # rewriting decade-old, goto-ridden code, disable the warning. +@@ -1172,23 +1189,29 @@ if (is_win) { + "//third_party/breakpad:ms_symbol_server_converter", + ] + +- ldflags = [ +- "/DELAYLOAD:dbghelp.dll", +- "/DELAYLOAD:dwmapi.dll", +- "/DELAYLOAD:uxtheme.dll", +- ] + +- lib_dirs = [] +- if (current_cpu == "x64") { +- lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] ++ if (is_mingw) { ++ include_dirs -= [ "$visual_studio_path/DIA SDK/include" ] ++ libs = [ "imagehlp" ] + } else { +- lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] +- } ++ ldflags = [ ++ "/DELAYLOAD:dbghelp.dll", ++ "/DELAYLOAD:dwmapi.dll", ++ "/DELAYLOAD:uxtheme.dll", ++ ] + +- libs = [ +- "diaguids.lib", +- "imagehlp.lib", +- ] ++ lib_dirs = [] ++ if (current_cpu == "x64") { ++ lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] ++ } else { ++ lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] ++ } ++ ++ libs = [ ++ "diaguids.lib", ++ "imagehlp.lib", ++ ] ++ } + + if (is_clang) { + # clang complains about microsoft-specific goto extensions. Instead of diff --git a/mingw-w64-qt6-webengine-thirdparty/0104-chromium-third-party-crashpad.patch b/mingw-w64-qt6-webengine-thirdparty/0104-chromium-third-party-crashpad.patch new file mode 100644 index 0000000000000..c9e39086dbc03 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0104-chromium-third-party-crashpad.patch @@ -0,0 +1,416 @@ +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn +index bd150ab..440c76f 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn +@@ -85,8 +85,10 @@ crashpad_static_library("client") { + ] + + if (crashpad_is_win) { +- libs = [ "rpcrt4.lib" ] +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union ++ libs = [ "rpcrt4" ] ++ if (is_msvc) { ++ cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union ++ } + } + + if (crashpad_is_apple) { +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.cc b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.cc +index 102398a..5b4f4d8 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.cc ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.cc +@@ -16,6 +16,7 @@ + + #include + ++#ifdef _MSC_VER + extern "C" { + + int strcasecmp(const char* s1, const char* s2) { +@@ -23,3 +24,4 @@ int strcasecmp(const char* s1, const char* s2) { + } + + } // extern "C" ++#endif +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.h +index 497553f..4d029f4 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/strings.h +@@ -15,6 +15,7 @@ + #ifndef CRASHPAD_COMPAT_WIN_STRINGS_H_ + #define CRASHPAD_COMPAT_WIN_STRINGS_H_ + ++#ifdef _MSC_VER + #ifdef __cplusplus + extern "C" { + #endif +@@ -25,4 +26,8 @@ int strcasecmp(const char* s1, const char* s2); + } // extern "C" + #endif + ++#else ++#include_next ++#endif ++ + #endif // CRASHPAD_COMPAT_WIN_STRINGS_H_ +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/time.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/time.h +index 65ec3a0..9904f3a 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/time.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/time.h +@@ -15,6 +15,10 @@ + #ifndef CRASHPAD_COMPAT_WIN_SYS_TIME_H_ + #define CRASHPAD_COMPAT_WIN_SYS_TIME_H_ + ++#ifdef _MSC_VER + #include ++#else ++#include_next ++#endif + + #endif // CRASHPAD_COMPAT_WIN_SYS_TIME_H_ +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/types.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/types.h +index 208ac8f..f5c7e9e 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/types.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/sys/types.h +@@ -15,8 +15,12 @@ + #ifndef CRASHPAD_COMPAT_WIN_SYS_TYPES_H_ + #define CRASHPAD_COMPAT_WIN_SYS_TYPES_H_ + ++#ifdef _MSC_VER + // This is intended to be roughly equivalent to #include_next. + #include <../ucrt/sys/types.h> ++#else ++#include_next ++#endif + + #include + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.cc b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.cc +index 491c377..790bdd4 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.cc ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.cc +@@ -33,8 +33,38 @@ const char* strptime(const char* buf, const char* format, struct tm* tm) { + return nullptr; + } + ++#ifdef _MSC_VER + time_t timegm(struct tm* tm) { + return _mkgmtime(tm); + } ++#else ++// https://stackoverflow.com/questions/16647819/timegm-cross-platform ++// Algorithm: http://howardhinnant.github.io/date_algorithms.html ++int days_from_epoch(int y, int m, int d) { ++ y -= m <= 2; ++ int era = y / 400; ++ int yoe = y - era * 400; // [0, 399] ++ int doy = (153 * (m + (m > 2 ? -3 : 9)) + 2) / 5 + d - 1; // [0, 365] ++ int doe = yoe * 365 + yoe / 4 - yoe / 100 + doy; // [0, 146096] ++ return era * 146097 + doe - 719468; ++} ++ ++// It does not modify broken-down time ++time_t timegm(struct tm* tm) { ++ int year = tm->tm_year + 1900; ++ int month = tm->tm_mon; // 0-11 ++ if (month > 11) { ++ year += month / 12; ++ month %= 12; ++ } else if (month < 0) { ++ int years_diff = (11 - month) / 12; ++ year -= years_diff; ++ month += 12 * years_diff; ++ } ++ int days_since_epoch = days_from_epoch(year, month + 1, tm->tm_mday); ++ ++ return 60 * (60 * (24L * days_since_epoch + tm->tm_hour) + tm->tm_min) + tm->tm_sec; ++} ++#endif + + } // extern "C" +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.h +index 534dc34..0d73370 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/time.h +@@ -15,8 +15,12 @@ + #ifndef CRASHPAD_COMPAT_WIN_TIME_H_ + #define CRASHPAD_COMPAT_WIN_TIME_H_ + ++#ifdef _MSC_VER + // This is intended to be roughly equivalent to #include_next. + #include <../ucrt/time.h> ++#else ++#include_next ++#endif + + #ifdef __cplusplus + extern "C" { +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winbase.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winbase.h +index 6ac32f7..5ccbf99 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winbase.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winbase.h +@@ -15,8 +15,12 @@ + #ifndef CRASHPAD_COMPAT_WIN_WINBASE_H_ + #define CRASHPAD_COMPAT_WIN_WINBASE_H_ + ++#ifdef _MSC_VER + // include_next + #include <../um/winbase.h> ++#else ++#include_next ++#endif + + // 10.0.15063.0 SDK + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winnt.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winnt.h +index be441a5..4714613 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winnt.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winnt.h +@@ -15,8 +15,12 @@ + #ifndef CRASHPAD_COMPAT_WIN_WINNT_H_ + #define CRASHPAD_COMPAT_WIN_WINNT_H_ + ++#ifdef _MSC_VER + // include_next + #include <../um/winnt.h> ++#else ++#include_next ++#endif + + // https://msdn.microsoft.com/library/aa373184.aspx: "Note that this structure + // definition was accidentally omitted from WinNT.h." +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winternl.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winternl.h +index 1038866..cd8f578 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winternl.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/win/winternl.h +@@ -15,8 +15,12 @@ + #ifndef CRASHPAD_COMPAT_WIN_WINTERNL_H_ + #define CRASHPAD_COMPAT_WIN_WINTERNL_H_ + ++#ifdef _MSC_VER + // include_next + #include <../um/winternl.h> ++#else ++#include_next ++#endif + + // 10.0.16299.0 SDK + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn +index 104e850..c0771e7 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn +@@ -306,7 +306,9 @@ if (crashpad_is_win) { + + sources = [ "win/crashy_signal.cc" ] + +- cflags = [ "/wd4702" ] # Unreachable code. ++ if (is_msvc) { ++ cflags = [ "/wd4702" ] # Unreachable code. ++ } + + deps = [ + "../client", +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn +index f239546..bc44d17 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn +@@ -81,7 +81,7 @@ crashpad_static_library("minidump") { + "../util", + ] + +- if (crashpad_is_win) { ++ if (crashpad_is_win && is_msvc) { + cflags = [ + "/wd4201", # nonstandard extension used : nameless struct/union + "/wd4324", # 'struct' : structure was padded due to __declspec(align()) +@@ -142,7 +142,7 @@ static_library("test_support") { + "../util", + ] + +- if (crashpad_is_win) { ++ if (crashpad_is_win && is_msvc) { + cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } +@@ -186,7 +186,7 @@ source_set("minidump_test") { + "../util", + ] + +- if (crashpad_is_win) { ++ if (crashpad_is_win && is_msvc) { + cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn +index 2ae944c..fd8ce5c 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn +@@ -254,8 +254,10 @@ crashpad_static_library("snapshot") { + ] + + if (crashpad_is_win) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union +- libs = [ "powrprof.lib" ] ++ if (is_msvc) { ++ cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union ++ } ++ libs = [ "powrprof" ] + } + } + +@@ -274,7 +276,7 @@ static_library("context") { + "../util", + ] + +- if (crashpad_is_win) { ++ if (crashpad_is_win && is_msvc) { + cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } +@@ -324,7 +326,7 @@ static_library("test_support") { + "../util", + ] + +- if (crashpad_is_win) { ++ if (crashpad_is_win && is_msvc) { + cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } +@@ -473,7 +475,9 @@ source_set("snapshot_test") { + } + + if (crashpad_is_win) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union ++ if (is_msvc) { ++ cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union ++ } + + data_deps += [ + ":crashpad_snapshot_test_annotations", +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn +index a067b14..5a9a406 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn +@@ -548,7 +548,7 @@ crashpad_static_library("util") { + "win/xp_compat.h", + ] + +- if (current_cpu != "arm64") { ++ if (is_msvc && current_cpu != "arm64") { + sources += [ + "misc/capture_context_win.asm", + "win/safe_terminate_process.asm", + ] +@@ -551,7 +551,7 @@ crashpad_static_library("util") { + "misc/capture_context_win.asm", + "win/safe_terminate_process.asm", + ] +- } else { ++ } else if (!is_mingw) { + # When building with clang, clang-cl is used as the assembler. Since + # clang-cl recognizes a different assembly dialect than Microsoft’s + # armasm64 macro assembler, the same .asm file can’t be used for each. As + # a workaround, use a prebuilt .obj file when the Microsoft-dialect +@@ -608,7 +608,15 @@ crashpad_static_library("util") { + configs += [ "../build:crashpad_is_ios_app_extension" ] + } + +- if (crashpad_is_win) { ++ if (crashpad_is_win && is_mingw) { ++ libs = [ ++ "user32", ++ "version", ++ "winhttp", ++ ] ++ } ++ ++ if (crashpad_is_win && is_msvc) { + libs = [ + "user32.lib", + +@@ -714,7 +722,11 @@ if (!crashpad_is_android && !crashpad_is_ios) { + } + + if (crashpad_is_win) { +- libs = [ "ws2_32.lib" ] ++ if (is_mingw) { ++ libs = [ "ws2_32" ] ++ } else { ++ libs = [ "ws2_32.lib" ] ++ } + } + + if (crashpad_use_boringssl_for_http_transport_socket) { +@@ -957,10 +969,17 @@ source_set("util_test") { + } + + if (crashpad_is_win) { +- libs = [ +- "rpcrt4.lib", +- "dbghelp.lib", +- ] ++ if (is_mingw) { ++ libs = [ ++ "rpcrt4", ++ "dbghelp", ++ ] ++ } else { ++ libs = [ ++ "rpcrt4.lib", ++ "dbghelp.lib", ++ ] ++ } + data_deps += [ + ":crashpad_util_test_loader_lock_test", + ":crashpad_util_test_process_info_test_child", +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/stdlib/aligned_allocator.cc b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/stdlib/aligned_allocator.cc +index d30c8b3..395ce8a 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/stdlib/aligned_allocator.cc ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/stdlib/aligned_allocator.cc +@@ -22,7 +22,9 @@ + #include + #elif BUILDFLAG(IS_WIN) + #include ++#if BUILDFLAG(IS_MSVC) + #include ++#endif + #endif // BUILDFLAG(IS_POSIX) + + namespace { +@@ -34,8 +36,10 @@ void ThrowBadAlloc() { + #if BUILDFLAG(IS_POSIX) || defined(_LIBCPP_STD_VER) + // This works with both libc++ and libstdc++. + std::__throw_bad_alloc(); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + std::_Xbad_alloc(); ++#elif BUILDFLAG(IS_MINGW) ++ std::bad_alloc(); + #endif // BUILDFLAG(IS_POSIX) + } + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/win/process_info.cc b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/win/process_info.cc +index 910b183..16c7082 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/win/process_info.cc ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/win/process_info.cc +@@ -117,11 +117,19 @@ bool ReadStruct(HANDLE process, WinVMAddress at, T* into) { + &bytes_read)) { + // We don't have a name for the type we're reading, so include the signature + // to get the type of T. ++#if defined(COMPILER_MSVC) + PLOG(ERROR) << "ReadProcessMemory " << __FUNCSIG__; ++#else ++ PLOG(ERROR) << "ReadProcessMemory " << __PRETTY_FUNCTION__; ++#endif + return false; + } + if (bytes_read != sizeof(T)) { ++#if defined(COMPILER_MSVC) + LOG(ERROR) << "ReadProcessMemory " << __FUNCSIG__ << " incorrect size"; ++#else ++ LOG(ERROR) << "ReadProcessMemory " << __PRETTY_FUNCTION__ << " incorrect size"; ++#endif + return false; + } + return true; diff --git a/mingw-w64-qt6-webengine-thirdparty/0105-chromium-third-party-ffmpeg.patch b/mingw-w64-qt6-webengine-thirdparty/0105-chromium-third-party-ffmpeg.patch new file mode 100644 index 0000000000000..040c2d7949ba0 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0105-chromium-third-party-ffmpeg.patch @@ -0,0 +1,65 @@ +diff --git a/src/3rdparty/chromium/third_party/ffmpeg/BUILD.gn b/src/3rdparty/chromium/third_party/ffmpeg/BUILD.gn +index c04ed59..2ded187 100644 +--- a/src/3rdparty/chromium/third_party/ffmpeg/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/ffmpeg/BUILD.gn +@@ -89,7 +89,7 @@ config("ffmpeg_dependent_config") { + ] + } + +-if (is_win) { ++if (is_msvc) { + # Stub generator script and signatures of all functions used by Chrome. + generate_stubs_script = "//tools/generate_stubs/generate_stubs.py" + +@@ -123,6 +123,7 @@ config("ffmpeg_warnings") { + + # ffmpeg uses its own deprecated functions. + "-Wno-deprecated-declarations", ++ "-Wno-deprecated-pragma", + + # ffmpeg doesn't care about pointer constness. + "-Wno-incompatible-pointer-types", +@@ -145,6 +146,7 @@ config("ffmpeg_warnings") { + + # ffmpeg has a lot of unused variables. + "-Wno-unused-variable", ++ "-Wno-unused-but-set-variable", + + # This fires on `av_assert0(!"valid element size")` in utils.c + "-Wno-string-conversion", +@@ -378,7 +380,21 @@ target(link_target_type, "ffmpeg_internal") { + if (is_ios) { + libs -= [ "rt" ] + } +- } else if (is_win) { ++ } else if (is_mingw) { ++ configs -= [ "//build/config/win:lean_and_mean" ] ++ ++ defines += [ ++ "_ISOC99_SOURCE", ++ "_LARGEFILE_SOURCE", ++ "HAVE_AV_CONFIG_H", ++ ] ++ ++ cflags += [ ++ "-fno-math-errno", ++ "-fno-signed-zeros", ++ "-fno-tree-vectorize", ++ ] ++ } else if (is_msvc) { + defines += [ + "_ISOC99_SOURCE", + "_LARGEFILE_SOURCE", +diff --git a/src/3rdparty/chromium/third_party/ffmpeg/libavutil/internal.h b/src/3rdparty/chromium/third_party/ffmpeg/libavutil/internal.h +index 6937169..f2b4b61 100644 +--- a/src/3rdparty/chromium/third_party/ffmpeg/libavutil/internal.h ++++ b/src/3rdparty/chromium/third_party/ffmpeg/libavutil/internal.h +@@ -123,7 +123,7 @@ void avpriv_request_sample(void *avc, + const char *msg, ...) av_printf_format(2, 3); + #endif + +-#if HAVE_LIBC_MSVCRT ++#if defined(_MSC_VER) && HAVE_LIBC_MSVCRT + #include + #if defined(_VC_CRT_MAJOR_VERSION) && _VC_CRT_MAJOR_VERSION < 14 + #pragma comment(linker, "/include:" EXTERN_PREFIX "avpriv_strtod") diff --git a/mingw-w64-qt6-webengine-thirdparty/0106-chromium-third-party-pdfium.patch b/mingw-w64-qt6-webengine-thirdparty/0106-chromium-third-party-pdfium.patch new file mode 100644 index 0000000000000..66e32a56cef90 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0106-chromium-third-party-pdfium.patch @@ -0,0 +1,115 @@ +diff --git a/src/3rdparty/chromium/third_party/pdfium/BUILD.gn b/src/3rdparty/chromium/third_party/pdfium/BUILD.gn +index acb6ef6..9c0b29b 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/pdfium/BUILD.gn +@@ -59,11 +59,14 @@ config("pdfium_common_config") { + # Override -Wno-c++11-narrowing. + cflags += [ "-Wc++11-narrowing" ] + + # May flag some issues when converting int to size_t. + cflags += [ "-Wtautological-unsigned-zero-compare" ] ++ } else if (is_mingw) { ++ # Suppress myriad of incomplete enumeration warnings ++ cflags += [ "-Wno-switch" ] + } + +- if (!is_win && !is_clang) { ++ if (!is_msvc && !is_clang) { + cflags += [ + # Override -Wno-narrowing for GCC. + "-Wnarrowing", +diff --git a/src/3rdparty/chromium/third_party/pdfium/skia/BUILD.gn b/src/3rdparty/chromium/third_party/pdfium/skia/BUILD.gn +index 234ebd7..d38eb81 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/skia/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/pdfium/skia/BUILD.gn +@@ -176,11 +176,13 @@ config("skia_library_config") { + # starts up, depending on the actual device memory). + "SK_DEFAULT_FONT_CACHE_LIMIT=1048576", # 1024 * 1024 + ] ++ } else if (is_mingw) { ++ defines += [ "SK_DEFAULT_FONT_CACHE_COUNT_LIMIT=256" ] + } else { + defines += [ "SK_DEFAULT_FONT_CACHE_LIMIT=20971520" ] # 20 * 1024 * 1024 + } + +- if (is_win) { ++ if (is_msvc) { + defines += [ + # On windows, GDI handles are a scarse system-wide resource so we have to + # keep the glyph cache, which holds up to 4 GDI handles per entry, to a +@@ -259,7 +261,11 @@ component("skia") { + ] + + if (is_win) { +- libs = [ "fontsub.lib" ] ++ if (is_mingw) { ++ libs = [ "fontsub" ] ++ } else { ++ libs = [ "fontsub.lib" ] ++ } + } + + # need separate win section to handle chromes auto gn filter +@@ -452,7 +458,7 @@ skia_source_set("skia_core_and_effects") { + if (current_cpu == "x86" || current_cpu == "x64") { + skia_source_set("skia_opts_hsw") { + sources = skia_opts.hsw_sources +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + "-mavx2", + "-mbmi", +@@ -461,7 +467,7 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "-mfma", + ] + } +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } + visibility = [ ":skia_opts" ] +@@ -508,7 +514,7 @@ skia_source_set("skia_opts") { + if (current_cpu == "x64") { + skia_source_set("skcms_TransformHsw") { + sources = skcms_TransformHsw +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + "-w", + "-march=haswell", +@@ -521,7 +527,7 @@ if (current_cpu == "x64") { + } + skia_source_set("skcms_TransformSkx") { + sources = skcms_TransformSkx +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + "-w", + "-march=skylake-avx512", +@@ -544,7 +550,7 @@ if (current_cpu == "x64") { + } + + source_set("skcms_TransformBaseline_and_public") { +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ + "-w", + "-std=c11", +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/BUILD.gn b/src/3rdparty/chromium/third_party/pdfium/third_party/BUILD.gn +index 3209fdd..7e0d5e6 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/BUILD.gn +@@ -471,6 +471,13 @@ if (pdf_enable_xfa_tiff) { + if (is_win) { + # Need to undefine the macro since it is redefined in tif_jpeg.c. + configs -= [ "//build/config/win:lean_and_mean" ] ++ if (is_mingw) { ++ cflags = [ ++ "-Wno-integer-overflow", ++ "-Wno-overflow", ++ "-Wno-shift-count-overflow" ++ ] ++ } + } + deps = [ + ":zlib", diff --git a/mingw-w64-qt6-webengine-thirdparty/0107-chromium-third-party-perfetto.patch b/mingw-w64-qt6-webengine-thirdparty/0107-chromium-third-party-perfetto.patch new file mode 100644 index 0000000000000..12002acea722a --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0107-chromium-third-party-perfetto.patch @@ -0,0 +1,273 @@ +diff --git a/src/3rdparty/chromium/third_party/perfetto/gn/BUILD.gn b/src/3rdparty/chromium/third_party/perfetto/gn/BUILD.gn +index 6ac0622..b3fa98c 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/gn/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/perfetto/gn/BUILD.gn +@@ -319,7 +319,7 @@ config("protobuf_gen_config") { + "-Wno-undef", + ] + } +- if (!is_clang && is_win) { ++ if (!is_clang && is_msvc) { + # MSVC + cflags += [ + "/wd4838", # conversion from 'unsigned long' to 'int' requires a +diff --git a/src/3rdparty/chromium/third_party/perfetto/gn/perfetto.gni b/src/3rdparty/chromium/third_party/perfetto/gn/perfetto.gni +index 5fd06f7..aef84a7 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/gn/perfetto.gni ++++ b/src/3rdparty/chromium/third_party/perfetto/gn/perfetto.gni +@@ -395,9 +395,11 @@ declare_args() { + perfetto_use_system_zlib = false + } + +-if (is_win) { ++if (is_msvc) { + # clang-cl + perfetto_isystem_cflag = "/I" ++} else if (is_mingw) { ++ perfetto_isystem_cflag = "-I" + } else { + perfetto_isystem_cflag = "-isystem" + } +diff --git a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/protozero/message_arena.h b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/protozero/message_arena.h +index 9e4fef4..3f429c5 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/protozero/message_arena.h ++++ b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/protozero/message_arena.h +@@ -66,7 +66,10 @@ class MessageArena { + // but could happen if some client does some overly clever std::move() trick). + void Reset() { + PERFETTO_DCHECK(!blocks_.empty()); +- blocks_.resize(1); ++ auto first = blocks_.begin(); ++ auto after_first = first; ++ if (++after_first != blocks_.end()) ++ blocks_.erase_after(first, blocks_.end()); + auto& block = blocks_.front(); + block.entries = 0; + PERFETTO_ASAN_POISON(block.storage, sizeof(block.storage)); +diff --git a/src/3rdparty/chromium/third_party/perfetto/gn/standalone/BUILD.gn b/src/3rdparty/chromium/third_party/perfetto/gn/standalone/BUILD.gn +index 254a157..319386f 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/gn/standalone/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/perfetto/gn/standalone/BUILD.gn +@@ -40,7 +40,7 @@ hermetic_clang_suppressions = [ "-Wno-c99-designator" ] + # is_clang -> could be clang-on-linux, clang-on-mac or clang-cl.exe. + + config("extra_warnings") { +- if (is_win) { ++ if (is_msvc) { + cflags = [ + "/W2", + "/wd4244", # conversion from 'float' to 'int', possible loss of data +@@ -150,10 +150,10 @@ config("rtti_cflags") { + # configurations (specifically, those that use -fsanitize=vptr). Since we + # don't know if anyone linking in perfetto will use -fsanitize=vptr, don't + # pass -fno-rtti when is_ubsan is true. + if (!is_ubsan) { +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/GR-" ] + } else { + cflags_cc = [ "-fno-rtti" ] + } + } +@@ -164,7 +164,7 @@ config("c++17") { + + # Used in buildtools dependencies for standalone builds. + config("c++17") { +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/std:c++17" ] + } else { + cflags_cc = [ "-std=c++17" ] +@@ -167,7 +167,7 @@ config("c++17") { + # Used in buildtools dependencies for standalone builds. + config("c++20") { + visibility = [ "//buildtools:libc++config" ] +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/std:c++20" ] + } else { + cflags_cc = [ "-std=c++20" ] +@@ -203,7 +203,7 @@ config("default") { + ] + } + +- if (is_clang || !is_win) { # Clang or GCC, but not MSVC. ++ if (is_clang || !is_msvc) { # Clang or GCC, but not MSVC. + cflags += [ + "-fstrict-aliasing", + "-Wformat", +@@ -217,12 +217,12 @@ config("default") { + cflags += [ "-Wno-deprecated" ] + } + +- if (!is_clang && is_win) { ++ if (!is_clang && is_msvc) { + # MSVC + cflags += [ "/permissive-" ] + } + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + "/bigobj", # Some of our files are bigger than the regular limits. + "/Gy", # Enable function-level linking. +@@ -240,6 +240,8 @@ config("default") { + if (!use_custom_libcxx) { + defines += [ "_HAS_EXCEPTIONS=0" ] # Disables exceptions in MSVC STL. + } ++ } else if (is_mingw) { ++ cflags += [ "-fstack-protector-strong" ] + } else if (!is_wasm) { # !is_win + cflags += [ + "-g", +@@ -250,7 +252,7 @@ config("default") { + + # Treat warnings as errors, but give up on fuzzer builds. + if (!is_fuzzer) { +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/WX" ] + } else { + cflags += [ "-Werror" ] +@@ -259,7 +261,7 @@ config("default") { + + if (is_clang) { + cflags += [ "-fcolor-diagnostics" ] +- if (!is_win) { ++ if (!is_msvc) { + cflags += [ "-fdiagnostics-show-template-tree" ] + } + } +@@ -282,7 +284,7 @@ config("default") { + ldflags += [ "-flto=full" ] + } + +- if (is_win) { ++ if (is_msvc) { + # We support only x86/x64 builds on Windows. + assert(current_cpu == "x64" || current_cpu == "x86") + } else if (current_cpu == "arm") { +@@ -352,23 +354,25 @@ config("default") { + libs += [ "socket" ] + } + +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + # When using MSVC we need to manually pass the include dirs. clang-cl.exe + # doesn't need them because it's smart enough to figure out the right path + # by querying the registry on its own. + include_dirs = win_msvc_inc_dirs # Defined in msvc.gni. + } + +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/Zi" ] + } + if (is_debug) { +- if (is_win) { ++ if (is_msvc) { + if (is_clang) { + # Required to see symbols in windbg when building with clang-cl.exe. + cflags += [ "-gcodeview-ghash" ] + ldflags = [ "/DEBUG:GHASH" ] + } ++ } else if (is_mingw) { ++ cflags += [ "-g" ] + } else if (!is_qnx) { + libs += [ "dl" ] + } +@@ -407,7 +411,7 @@ config("default") { + + config("debug_noopt") { + cflags = [] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/Od" ] + } else { + cflags = [ "-O0" ] +@@ -419,7 +423,7 @@ config("debug_noopt") { + + config("release") { + # Compiler flags for release builds. +- if (is_win) { ++ if (is_msvc) { + cflags = [ + "/O2", + "/Zc:inline", +@@ -431,7 +435,7 @@ config("release") { + } else { + cflags = [ "-O3" ] + } +- if (!is_win) { ++ if (!is_msvc) { + cflags += [ + "-fdata-sections", + "-ffunction-sections", +@@ -439,13 +443,15 @@ config("release") { + } + + # Linker flags for release builds. +- if (is_win) { ++ if (is_msvc) { + ldflags = [ + "/OPT:REF", + "/OPT:ICF", + "/INCREMENTAL:NO", + "/FIXED:NO", + ] ++ } else if (is_mingw) { ++ ldflags = [ "-Wl,--gc-sections" ] + } else if (is_mac) { + ldflags = [ "-dead_strip" ] + } else if (is_qnx) { +diff --git a/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/llvm.gni b/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/llvm.gni +index 13bae47..8d924f4 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/llvm.gni ++++ b/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/llvm.gni +@@ -45,7 +45,7 @@ if (is_linux_host) { + + # _mac_toolchain_dirs[0] contains the mac toolchain dir. + mac_clangrt_dir = _mac_toolchain_dirs[1] +-} else if (is_win_host) { ++} else if (is_msvc) { + if (is_hermetic_clang) { + # Use the toolchain pulled by //tools/install-build-deps. This tracks + # chromium's llvm dist. +diff --git a/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/msvc.gni b/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/msvc.gni +index 7ec7313..d809c14 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/msvc.gni ++++ b/src/3rdparty/chromium/third_party/perfetto/gn/standalone/toolchain/msvc.gni +@@ -15,7 +15,7 @@ + # We should never get in here by accident from the Chromium tree. + assert(!defined(build_with_chromium) || !build_with_chromium) + +-if (is_win_host) { ++if (is_msvc) { + _find_msvc_out = exec_script("win_find_msvc.py", [], "list lines") + + # The output looks like this (without the line number "N:" part): +diff --git a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/sys_types.h b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/sys_types.h +index fa04a63..2f584a5 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/sys_types.h ++++ b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/sys_types.h +@@ -27,7 +27,7 @@ + + #if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + +-#if !PERFETTO_BUILDFLAG(PERFETTO_COMPILER_GCC) ++#if PERFETTO_BUILDFLAG(PERFETTO_COMPILER_MSVC) + // MinGW has these. clang-cl and MSVC, which use just the Windows SDK, don't. + using uid_t = int; + using pid_t = int; +diff --git a/src/3rdparty/chromium/third_party/perfetto/src/base/string_utils.cc b/src/3rdparty/chromium/third_party/perfetto/src/base/string_utils.cc +index 2defa73..ece8d4e 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/src/base/string_utils.cc ++++ b/src/3rdparty/chromium/third_party/perfetto/src/base/string_utils.cc +@@ -21,6 +21,7 @@ + #include + + #include ++#include + + #if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) + #include diff --git a/mingw-w64-qt6-webengine-thirdparty/0108-chromium-third-party-skia.patch b/mingw-w64-qt6-webengine-thirdparty/0108-chromium-third-party-skia.patch new file mode 100644 index 0000000000000..edb320d54e225 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0108-chromium-third-party-skia.patch @@ -0,0 +1,562 @@ +diff --git a/src/3rdparty/chromium/third_party/skia/BUILD.gn b/src/3rdparty/chromium/third_party/skia/BUILD.gn +index 3626895..ff51f84 100644 +--- a/src/3rdparty/chromium/third_party/skia/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/skia/BUILD.gn +@@ -170,7 +170,7 @@ is_loong64 = current_cpu == "loong64" + opts("hsw") { + enabled = is_x86 + sources = skia_opts.hsw_sources +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ "-march=haswell" ] +@@ -180,7 +180,7 @@ opts("hsw") { + opts("skx") { + enabled = is_x86 + sources = skia_opts.skx_sources +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX512" ] + } else { + cflags = [ "-march=skylake-avx512" ] +@@ -503,7 +503,11 @@ optional("fontmgr_win_gdi") { + public_defines = [ "SK_FONTMGR_GDI_AVAILABLE" ] + public = skia_ports_windows_fonts_public + sources = skia_ports_fonthost_win_sources +- libs = [ "Gdi32.lib" ] ++ if (is_mingw) { ++ libs = [ "gdi32" ] ++ } else { ++ libs = [ "Gdi32.lib" ] ++ } + } + + if (skia_lex) { +@@ -1032,7 +1036,11 @@ optional("gpu") { + "src/gpu/ganesh/gl/win/GrGLMakeWinInterface.cpp", + ] + if (target_cpu != "arm64") { +- libs += [ "OpenGL32.lib" ] ++ if (is_mingw) { ++ libs += [ "opengl32" ] ++ } else { ++ libs += [ "OpenGL32.lib" ] ++ } + } + } else { + sources += [ "src/gpu/ganesh/gl/GrGLMakeNativeInterface_none.cpp" ] +@@ -1064,11 +1072,19 @@ optional("gpu") { + if (skia_enable_direct3d_debug_layer) { + public_defines += [ "SK_ENABLE_D3D_DEBUG_LAYER" ] + } +- libs += [ +- "d3d12.lib", +- "dxgi.lib", +- "d3dcompiler.lib", +- ] ++ if (is_mingw) { ++ libs += [ ++ "d3d12", ++ "dxgi", ++ "d3dcompiler", ++ ] ++ } else { ++ libs += [ ++ "d3d12.lib", ++ "dxgi.lib", ++ "d3dcompiler.lib", ++ ] ++ } + } + + cflags_objcc = [] +@@ -1702,17 +1718,27 @@ skia_component("skia") { + "src/ports/SkDebug_win.cpp", + "src/ports/SkImageGeneratorWIC.cpp", + ] +- libs += [ +- "Ole32.lib", +- "OleAut32.lib", +- ] +- +- if (!skia_enable_winuwp) { ++ if (is_mingw) { + libs += [ +- "FontSub.lib", +- "User32.lib", +- "Usp10.lib", ++ "ole32", ++ "oleaut32", ++ "fontsub", ++ "user32", ++ "usp10", + ] ++ } else { ++ libs += [ ++ "Ole32.lib", ++ "OleAut32.lib", ++ ] ++ ++ if (!skia_enable_winuwp) { ++ libs += [ ++ "FontSub.lib", ++ "User32.lib", ++ "Usp10.lib", ++ ] ++ } + } + } else { + sources += [ "src/ports/SkOSFile_posix.cpp" ] +@@ -1963,5 +1963,5 @@ config("cpp17") { + config("cpp17") { +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/std:c++17" ] + } else { + cflags_cc = [ "-std=c++17" ] +@@ -1999,7 +1999,7 @@ if (((skia_enable_fontmgr_fontconfig && skia_use_freetype) || + "tools/fiddle/examples.cpp", + "tools/fiddle/examples.h", + ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ + "/wd4756", # Overflow in constant arithmetic + "/wd4305", # truncation from 'double' to 'float' +@@ -2178,9 +2204,16 @@ if (skia_enable_tools) { + "tools/gpu/gl/win/SkWGL.h", + "tools/gpu/gl/win/SkWGL_win.cpp", + ] +- libs += [ "Gdi32.lib" ] +- if (target_cpu != "arm64") { +- libs += [ "OpenGL32.lib" ] ++ if (is_mingw) { ++ libs += [ "gdi32" ] ++ if (target_cpu != "arm64") { ++ libs += [ "opengl32" ] ++ } ++ } else { ++ libs += [ "Gdi32.lib" ] ++ if (target_cpu != "arm64") { ++ libs += [ "OpenGL32.lib" ] ++ } + } + } + } +@@ -2397,7 +2430,9 @@ if (skia_enable_tools) { + } else if (is_mac) { + sources += [ "tools/AutoreleasePool.mm" ] + frameworks += [ "Foundation.framework" ] +- } else if (is_win && !skia_enable_winuwp) { ++ } else if (is_mingw) { ++ libs += [ "dbghelp" ] ++ } else if (is_msvc && !skia_enable_winuwp) { + libs += [ "DbgHelp.lib" ] + } + +diff --git a/src/3rdparty/chromium/third_party/skia/gn/BUILDCONFIG.gn b/src/3rdparty/chromium/third_party/skia/gn/BUILDCONFIG.gn +index cd4030a..57b6e52 100644 +--- a/src/3rdparty/chromium/third_party/skia/gn/BUILDCONFIG.gn ++++ b/src/3rdparty/chromium/third_party/skia/gn/BUILDCONFIG.gn +@@ -72,6 +72,10 @@ is_mac = current_os == "mac" + is_wasm = current_os == "wasm" + is_win = current_os == "win" + ++# Helpers set from qt ++is_mingw = false ++is_msvc = false ++ + # This is just to make the Dawn build files happy. Skia itself uses target_os = "linux" + # for ChromeOS, so this variable will not affect Skia proper. + is_chromeos = false +@@ -126,7 +130,7 @@ if (is_android) { + } + } + +-if (target_os == "win") { ++if (is_msvc) { + # By default we look for 2017 (Enterprise, Pro, and Community), then 2015. If MSVC is installed in a + # non-default location, you can set win_vc to inform us where it is. + +@@ -137,7 +141,7 @@ if (target_os == "win") { + # directory. + } + +-if (target_os == "win") { ++if (is_msvc) { + if (win_toolchain_version == "") { + win_toolchain_version = exec_script("//gn/highest_version_dir.py", + [ +@@ -231,7 +235,7 @@ if (!is_official_build) { + [ "//gn/skia:warnings_for_public_headers" ] + } + +-if (is_win) { ++if (is_msvc) { + # Windows tool chain + set_default_toolchain("//gn/toolchain:msvc") + default_toolchain_name = "msvc" +diff --git a/src/3rdparty/chromium/third_party/skia/gn/skia/BUILD.gn b/src/3rdparty/chromium/third_party/skia/gn/skia/BUILD.gn +index ebc2322..ad22014 100644 +--- a/src/3rdparty/chromium/third_party/skia/gn/skia/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/skia/gn/skia/BUILD.gn +@@ -62,7 +62,7 @@ config("default") { + # Disable warnings about unknown attributes. + # (These unknown attribute warnings are on by default, so we don't make + # disabling them part of :warnings, as some targets remove :warnings.) +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + cflags += [ + "/wd5030", + "/wd5051", +@@ -97,7 +97,7 @@ config("default") { + asmflags += [ target_triple ] + } + +- if (is_win) { ++ if (is_msvc) { + if (is_clang && current_cpu == "arm64") { + cflags += [ "--target=arm64-windows" ] + } +@@ -141,6 +141,16 @@ config("default") { + "$win_sdk/Lib/$win_sdk_version/um/$current_cpu", + "$win_vc/Tools/MSVC/$win_toolchain_version/lib/$current_cpu", + ] ++ } else if (is_mingw) { ++ cflags += [ "-Wa,-mbig-obj" ] ++ if (current_cpu == "x64") { ++ cflags += [ "-msse3" ] ++ } ++ defines += [ ++ "_CRT_SECURE_NO_WARNINGS", ++ "WIN32_LEAN_AND_MEAN", ++ "NOMINMAX", ++ ] + } else { + cflags += [ + "-fPIC", +@@ -173,7 +183,7 @@ config("default") { + ] + } + +- if (malloc != "" && !is_win) { ++ if (malloc != "" && !is_msvc) { + cflags += [ + "-fno-builtin-malloc", + "-fno-builtin-calloc", +@@ -190,7 +200,7 @@ config("default") { + + if (show_includes) { + assert(is_clang, "show_includes requires clang to build.") +- if (is_win) { ++ if (is_msvc) { + cflags += [ + "/clang:-H", + "/clang:-fshow-skipped-includes", +@@ -370,7 +380,7 @@ config("default") { + cflags += [ "-fno-sanitize=function" ] + } + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + # On Release builds, we get strange warnings about string literals. + "/GF-", +@@ -422,14 +432,14 @@ config("warnings") { + cflags_objcc = [] + + if (werror) { +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/WX" ] + } else { + cflags += [ "-Werror" ] + } + } + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + "/W3", # Turn on lots of warnings. + +@@ -647,7 +657,7 @@ config("warnings") { + } + + config("warnings_for_public_headers") { +- if (is_clang) { ++ if (is_clang && !is_mingw) { + cflags = [ + "-Wsign-conversion", + "-Wunused-parameter", +@@ -675,7 +685,7 @@ config("debug_symbols") { + "-gline-tables-only", + "-funwind-tables", # Helps make in-process backtraces fuller. + ] +- } else if (is_win) { ++ } else if (is_msvc) { + cflags = [ "/Z7" ] + if (is_clang) { + cflags += [ "-gcodeview-ghash" ] +@@ -693,7 +703,7 @@ config("debug_symbols") { + + config("no_rtti") { + if (sanitize != "ASAN") { # -fsanitize=vptr requires RTTI +- if (is_win) { ++ if (is_msvc) { + cflags_cc = [ "/GR-" ] + } else { + cflags_cc = [ "-fno-rtti" ] +@@ -704,7 +714,7 @@ config("no_rtti") { + + config("optimize") { + ldflags = [] +- if (is_win) { ++ if (is_msvc) { + cflags = [ + "/O2", + "/Zc:inline", +@@ -759,12 +769,12 @@ config("trivial_abi") { + # + # As of 2024, only GCC is aggressive about strict aliasing. Clang isn't. + config("strict_aliasing") { +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ "-fstrict-aliasing" ] + } + } + config("no_strict_aliasing") { +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ "-fno-strict-aliasing" ] + } + } +@@ -782,7 +792,9 @@ config("executable") { + "-rdynamic", + "-Wl,-rpath,\$ORIGIN", + ] +- } else if (is_win) { ++ } else if (is_mingw) { ++ ldflags = [ "-mconsole" ] ++ } else if (is_msvc) { + ldflags = [ + "/SUBSYSTEM:CONSOLE", # Quiet "no subsystem specified; CONSOLE assumed". + "/INCREMENTAL:NO", # Quiet warnings about failing to incrementally link +diff --git a/src/3rdparty/chromium/third_party/skia/gn/toolchain/BUILD.gn b/src/3rdparty/chromium/third_party/skia/gn/toolchain/BUILD.gn +index 4d4abc9..adac4e1 100644 +--- a/src/3rdparty/chromium/third_party/skia/gn/toolchain/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/skia/gn/toolchain/BUILD.gn +@@ -56,7 +56,7 @@ declare_args() { + } + + # For 'shell' see https://ninja-build.org/manual.html#ref_rule_command +-if (host_os == "win") { ++if (host_os == "win" && !is_mingw) { + shell = "cmd.exe /c " + stamp = "$shell echo >" + } else { +@@ -342,6 +342,8 @@ template("gcc_like_toolchain") { + rpath = "-Wl,-soname,$soname" + if (is_mac || is_ios) { + rpath = "-Wl,-install_name,@rpath/$soname" ++ } else if (is_mingw) { ++ rpath ="" + } + + rspfile = "{{output}}.rsp" +@@ -365,6 +367,8 @@ template("gcc_like_toolchain") { + output_prefix = "lib" + if (is_mac || is_ios) { + default_output_extension = ".dylib" ++ } else if (is_mingw) { ++ default_output_extension = ".dll" + } else { + default_output_extension = ".so" + } +@@ -394,6 +398,10 @@ template("gcc_like_toolchain") { + command = "$link {{ldflags}} $_start_group @$rspfile {{frameworks}} {{solibs}} $_end_group {{libs}} -o $exe_name" + + outputs = [ "$exe_name" ] ++ output_extension = "" ++ if (is_mingw) { ++ output_extension = ".exe" ++ } + description = "link {{output}}" + if (0 <= link_pool_depth) { + pool = ":link_pool($default_toolchain)" +diff --git a/src/3rdparty/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h b/src/3rdparty/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h +index 777105c..a7f3be5 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h ++++ b/src/3rdparty/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h +@@ -1374,7 +1374,7 @@ SI F approx_powf(F x, float y) { return approx_powf(x, F_(y)); } + #endif + + SI F from_half(U16 h) { +-#if defined(SKRP_CPU_NEON) && defined(SK_CPU_ARM64) ++#if defined(SKRP_CPU_NEON) && defined(SK_CPU_ARM64) && !defined(__GNUC__) + #if defined(__ARM_FP16_FORMAT_IEEE) + return vcvt_f32_f16((float16x4_t)h); + #else +@@ -1403,7 +1403,7 @@ SI F from_half(U16 h) { + } + + SI U16 to_half(F f) { +-#if defined(SKRP_CPU_NEON) && defined(SK_CPU_ARM64) ++#if defined(SKRP_CPU_NEON) && defined(SK_CPU_ARM64) && !defined(__GNUC__) + #if defined(__ARM_FP16_FORMAT_IEEE) + return (U16)vcvt_f16_f32(f); + #else +@@ -1561,7 +1561,11 @@ static void start_pipeline(size_t dx, size_t dy, + } + + #if SK_HAS_MUSTTAIL ++#if defined(__clang__) + #define SKRP_MUSTTAIL [[clang::musttail]] ++#else ++ #define SKRP_MUSTTAIL [[musttail]] ++#endif + #else + #define SKRP_MUSTTAIL + #endif +diff --git a/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp b/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp +index 5d202aa..6247351 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp +@@ -74,7 +74,9 @@ using SkUniqueFTSize = std::unique_ptr + // Flag SK_FREETYPE_DLOPEN: also try dlopen to get newer features. ++#ifndef _WIN32 + #define SK_FREETYPE_DLOPEN (0x1) ++#endif + #ifndef SK_FREETYPE_MINIMUM_RUNTIME_VERSION + # if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || \ + defined(SK_BUILD_FOR_GOOGLE3) || \ +diff --git a/src/3rdparty/chromium/third_party/skia/src/ports/SkScalerContext_win_dw.cpp b/src/3rdparty/chromium/third_party/skia/src/ports/SkScalerContext_win_dw.cpp +index 62c65a8..dbc20b2 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/ports/SkScalerContext_win_dw.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/ports/SkScalerContext_win_dw.cpp +@@ -50,6 +50,10 @@ + #include + #include + ++#ifndef _MSC_VER ++#define GetGlyphImageFormats GetGlyphImageFormats_ ++#endif ++ + namespace { + static inline const constexpr bool kSkShowTextBlitCoverage = false; + +@@ -623,11 +627,11 @@ bool SkScalerContext_DW::drawColorV1Paint(SkCanvas& canvas, + auto drawChildren = [&](uint32_t childCount) -> bool { + if (childCount != 0) { + DWRITE_PAINT_ELEMENT childElement; +- HRB(reader.MoveToFirstChild(&childElement)); ++ HRB(reader.MoveToFirstChild(&childElement, 0)); + this->drawColorV1Paint(canvas, reader, childElement); + + for (uint32_t i = 1; i < childCount; i++) { +- HRB(reader.MoveToNextSibling(&childElement)); ++ HRB(reader.MoveToNextSibling(&childElement, 0)); + this->drawColorV1Paint(canvas, reader, childElement); + } + +@@ -1179,13 +1183,13 @@ bool SkScalerContext_DW::drawColorV1Paint(SkCanvas& canvas, + DWRITE_PAINT_ELEMENT sourceElement; + DWRITE_PAINT_ELEMENT backdropElement; + +- HRBM(reader.MoveToFirstChild(&sourceElement), "Could not move to child."); +- HRBM(reader.MoveToNextSibling(&backdropElement), "Could not move to sibiling."); ++ HRBM(reader.MoveToFirstChild(&sourceElement, 0), "Could not move to child."); ++ HRBM(reader.MoveToNextSibling(&backdropElement, 0), "Could not move to sibiling."); + canvas.saveLayer(nullptr, nullptr); + this->drawColorV1Paint(canvas, reader, backdropElement); + + HRBM(reader.MoveToParent(), "Could not move to parent."); +- HRBM(reader.MoveToFirstChild(&sourceElement), "Could not move to child."); ++ HRBM(reader.MoveToFirstChild(&sourceElement, 0), "Could not move to child."); + canvas.saveLayer(nullptr, &blendModePaint); + this->drawColorV1Paint(canvas, reader, sourceElement); + +@@ -1216,7 +1220,7 @@ bool SkScalerContext_DW::drawColorV1Image(const SkGlyph& glyph, SkCanvas& canvas + DWRITE_PAINT_ELEMENT paintElement; + D2D_RECT_F clipBox; + DWRITE_PAINT_ATTRIBUTES attributes; +- HRBM(paintReader->SetCurrentGlyph(glyphIndex, &paintElement, &clipBox, &attributes), ++ HRBM(paintReader->SetCurrentGlyph(glyphIndex, &paintElement, 0, &clipBox, &attributes), + "Could not set current glyph."); + + if (paintElement.paintType == DWRITE_PAINT_TYPE_NONE) { +@@ -1245,7 +1249,8 @@ bool SkScalerContext_DW::drawColorV1Image(const SkGlyph& glyph, SkCanvas& canvas + + // The DirectWrite interface returns resolved colors if these are provided. + // Indexes and alphas are reported but there is no reason to duplicate the color calculation. +- paintReader->SetTextColor(dw_color_from(SkColor4f::FromColor(fRec.fForegroundColor))); ++ auto dwColor = dw_color_from(SkColor4f::FromColor(fRec.fForegroundColor)); ++ paintReader->SetTextColor(&dwColor); + paintReader->SetCustomColorPalette(typeface->fDWPalette.get(), typeface->fPaletteEntryCount); + + return this->drawColorV1Paint(canvas, *paintReader, paintElement); +@@ -1282,11 +1287,11 @@ bool SkScalerContext_DW::generateColorV1PaintBounds( + return true; + } + DWRITE_PAINT_ELEMENT childElement; +- HRB(reader.MoveToFirstChild(&childElement)); ++ HRB(reader.MoveToFirstChild(&childElement, 0)); + this->generateColorV1PaintBounds(ctm, bounds, reader, childElement); + + for (uint32_t i = 1; i < childCount; ++i) { +- HRB(reader.MoveToNextSibling(&childElement)); ++ HRB(reader.MoveToNextSibling(&childElement, 0)); + this->generateColorV1PaintBounds(ctm, bounds, reader, childElement); + } + +@@ -1432,7 +1437,7 @@ bool SkScalerContext_DW::generateColorV1Metrics(const SkGlyph& glyph, SkRect* bo + D2D_RECT_F clipBox; + DWRITE_PAINT_ATTRIBUTES attributes; + // If the glyph is not color this will succeed but return paintType NONE. +- HRBM(paintReader->SetCurrentGlyph(glyphIndex, &paintElement, &clipBox, &attributes), ++ HRBM(paintReader->SetCurrentGlyph(glyphIndex, &paintElement, 0, &clipBox, &attributes), + "Could not set the current glyph."); + + if (paintElement.paintType == DWRITE_PAINT_TYPE_NONE) { +diff --git a/src/3rdparty/chromium/third_party/skia/src/xps/SkXPSDevice.cpp b/src/3rdparty/chromium/third_party/skia/src/xps/SkXPSDevice.cpp +index bfb9b7e..68ed158 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/xps/SkXPSDevice.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/xps/SkXPSDevice.cpp +@@ -323,7 +323,7 @@ bool SkXPSDevice::endSheet() { + return true; + } + +-static HRESULT subset_typeface(const SkXPSDevice::TypefaceUse& current) { ++HRESULT subset_typeface(const SkXPSDevice::TypefaceUse& current) { + //The CreateFontPackage API is only supported on desktop, not in UWP + #if defined(SK_WINUWP) + return E_NOTIMPL; +diff --git a/src/3rdparty/chromium/third_party/skia/modules/skcms/src/Transform_inl.h b/src/3rdparty/chromium/third_party/skia/modules/skcms/src/Transform_inl.h +index 24a7ac7..f6c4a7b 100644 +--- a/src/3rdparty/chromium/third_party/skia/modules/skcms/src/Transform_inl.h ++++ b/src/3rdparty/chromium/third_party/skia/modules/skcms/src/Transform_inl.h +@@ -161,8 +161,7 @@ SI F F_from_Half(U16 half) { + #elif defined(USING_AVX512F) + return (F)_mm512_cvtph_ps((__m256i)half); + #elif defined(USING_AVX_F16C) +- typedef int16_t __attribute__((vector_size(16))) I16; +- return __builtin_ia32_vcvtph2ps256((I16)half); ++ return (F)_mm256_cvtph_ps((__m128i)half); + #else + U32 wide = cast(half); + // A half is 1-5-10 sign-exponent-mantissa, with 15 exponent bias. +diff --git a/src/3rdparty/chromium/third_party/skia/modules/skcms/src/skcms_internals.h b/src/3rdparty/chromium/third_party/skia/modules/skcms/src/skcms_internals.h +index e52070e..8f8d891 100644 +--- a/src/3rdparty/chromium/third_party/skia/modules/skcms/src/skcms_internals.h ++++ b/src/3rdparty/chromium/third_party/skia/modules/skcms/src/skcms_internals.h +@@ -57,7 +57,7 @@ + #define SKCMS_HAS_MUSTTAIL 1 + #endif + #elif !defined(__clang__) && !defined(SKCMS_HAS_MUSTTAIL) +- #if __has_cpp_attribute(clang::musttail) ++ #if __has_cpp_attribute(clang::musttail) && !defined(__MINGW32__) + #define SKCMS_HAS_MUSTTAIL 1 + #else + #define SKCMS_HAS_MUSTTAIL 0 diff --git a/mingw-w64-qt6-webengine-thirdparty/0109-chromium-third-party-vulkan.patch b/mingw-w64-qt6-webengine-thirdparty/0109-chromium-third-party-vulkan.patch new file mode 100644 index 0000000000000..48cdf04f93784 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0109-chromium-third-party-vulkan.patch @@ -0,0 +1,103 @@ +diff --git a/src/3rdparty/chromium/third_party/vulkan-loader/src/BUILD.gn b/src/3rdparty/chromium/third_party/vulkan-loader/src/BUILD.gn +index 40135e7..f9b0799 100644 +--- a/src/3rdparty/chromium/third_party/vulkan-loader/src/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/vulkan-loader/src/BUILD.gn +@@ -37,7 +37,7 @@ if (is_win) { + + config("vulkan_internal_config") { + defines = [ "VK_ENABLE_BETA_EXTENSIONS" ] +- if (is_clang || !is_win) { ++ if (is_clang || !is_msvc) { + cflags = [ + "-Wno-conversion", + "-Wno-extra-semi", +@@ -80,6 +80,6 @@ config("vulkan_loader_config") { + + cflags = [] +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/wd4201" ] + } + if (is_linux || is_chromeos) { +@@ -87,6 +87,9 @@ config("vulkan_loader_config") { + "LOADER_ENABLE_LINUX_SORT", + ] + } ++ if (!vulkan_loader_shared) { ++ defines += [ "BUILD_STATIC_LOADER" ] ++ } + } + + if (!is_android) { +@@ -228,7 +231,13 @@ if (!is_android) { + "$target_gen_dir/loader.rc", + "loader/vulkan-1.def", + ] +- if (!is_clang) { ++ if (!vulkan_loader_shared) { ++ sources -= [ ++ "loader/loader.rc", ++ "loader/vulkan-1.def", ++ ] ++ } ++ if (is_msvc && !is_clang) { + cflags = [ + "/wd4054", # Type cast from function pointer + "/wd4055", # Type cast from data pointer +@@ -247,8 +256,12 @@ if (!is_android) { + if (is_clang) { + cflags = [ "-Wno-incompatible-pointer-types" ] + } +- libs = [ "Cfgmgr32.lib" ] +- deps += [ ":gen_loader_rc" ] ++ if (is_mingw) { ++ libs = [ "cfgmgr32" ] ++ } else { ++ libs = [ "Cfgmgr32.lib" ] ++ deps += [ ":gen_loader_rc" ] ++ } + } + if (is_linux || is_chromeos) { + sources += [ +diff --git a/src/3rdparty/chromium/third_party/vulkan-loader/src/loader/loader_windows.c b/src/3rdparty/chromium/third_party/vulkan-loader/src/loader/loader_windows.c +index f73659c..b8f701f 100644 +--- a/src/3rdparty/chromium/third_party/vulkan-loader/src/loader/loader_windows.c ++++ b/src/3rdparty/chromium/third_party/vulkan-loader/src/loader/loader_windows.c +@@ -95,6 +95,7 @@ void windows_initialization(void) { + #endif + } + ++#ifndef BUILD_STATIC_LOADER + BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) { + (void)hinst; + switch (reason) { +@@ -116,6 +117,7 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) { + } + return TRUE; + } ++#endif + + bool windows_add_json_entry(const struct loader_instance *inst, + char **reg_data, // list of JSON files +diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/BUILD.gn b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/BUILD.gn +index 97aab3a..fad0e7a 100644 +--- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/BUILD.gn +@@ -10,7 +10,7 @@ declare_args() { + + config("vulkan_memory_allocator_config") { + include_dirs = [ "include" ] +- if (is_clang) { ++ if (is_clang || !is_msvc) { + cflags_cc = [ + "-Wno-c++98-compat-extra-semi", + "-Wno-deprecated-copy", +@@ -22,7 +22,7 @@ config("vulkan_memory_allocator_config") { + "-Wno-unused-variable", + ] + } +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + cflags_cc = [ + "/wd4189", # local variable is initialized but not referenced + ] diff --git a/mingw-w64-qt6-webengine-thirdparty/0110-chromium-third-party-webrtc.patch b/mingw-w64-qt6-webengine-thirdparty/0110-chromium-third-party-webrtc.patch new file mode 100644 index 0000000000000..b24c020dae0f6 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0110-chromium-third-party-webrtc.patch @@ -0,0 +1,302 @@ +diff --git a/src/3rdparty/chromium/third_party/webrtc/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/BUILD.gn +index 253f5d0..6778fc0 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/BUILD.gn +@@ -422,7 +422,7 @@ config("common_config") { + ] + } + +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + # MSVC warning suppressions (needed to use Abseil). + # TODO(bugs.webrtc.org/9274): Remove these warnings as soon as MSVC allows + # external headers warning suppression (or fix them upstream). +@@ -486,8 +486,8 @@ config("common_config") { + + if (!build_with_chromium && rtc_win_undef_unicode) { + cflags += [ +- "/UUNICODE", +- "/U_UNICODE", ++ "-UUNICODE", ++ "-U_UNICODE", + ] + } + +diff --git a/src/3rdparty/chromium/third_party/webrtc/common_audio/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/common_audio/BUILD.gn +index 4845bc7..8b86311 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/common_audio/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/common_audio/BUILD.gn +@@ -248,7 +248,7 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "resampler/sinc_resampler_sse.cc", + ] + +- if (is_posix || is_fuchsia) { ++ if (is_posix || is_fuchsia || is_mingw) { + cflags = [ "-msse2" ] + } + +@@ -267,7 +267,7 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "resampler/sinc_resampler_avx2.cc", + ] + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/BUILD.gn +index a0bda5f..5835b05 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/BUILD.gn +@@ -261,7 +261,7 @@ if (current_cpu == "x86" || current_cpu == "x64") { + "vector_math_avx2.cc", + ] + +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/agc2/rnn_vad/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/agc2/rnn_vad/BUILD.gn +index 025794d..8cab438 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/agc2/rnn_vad/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/agc2/rnn_vad/BUILD.gn +@@ -121,7 +121,7 @@ rtc_source_set("vector_math") { + if (current_cpu == "x86" || current_cpu == "x64") { + rtc_library("vector_math_avx2") { + sources = [ "vector_math_avx2.cc" ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn +index eaedf62..a5309f4 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn +@@ -530,11 +530,19 @@ rtc_library("desktop_capture") { + "window_finder_win.cc", + "window_finder_win.h", + ] +- libs = [ +- "d3d11.lib", +- "dxgi.lib", +- "shcore.lib", +- ] ++ if (is_mingw) { ++ libs = [ ++ "d3d11", ++ "dxgi", ++ "shcore", ++ ] ++ } else { ++ libs = [ ++ "d3d11.lib", ++ "dxgi.lib", ++ "shcore.lib", ++ ] ++ } + deps += [ + "../../rtc_base:win32", + "../../rtc_base/containers:flat_map", +@@ -688,7 +696,7 @@ if (use_desktop_capture_differ_sse2) { + "differ_vector_sse2.h", + ] + +- if (is_posix || is_fuchsia) { ++ if (is_posix || is_fuchsia || is_mingw) { + cflags = [ "-msse2" ] + } + } +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/desktop_capture_utils.cc b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/desktop_capture_utils.cc +index 476ddc4..80a3ded 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/desktop_capture_utils.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/desktop_capture_utils.cc +@@ -10,7 +10,12 @@ + + #include "modules/desktop_capture/win/desktop_capture_utils.h" + ++#ifdef _MSC_VER + #include "rtc_base/strings/string_builder.h" ++#else ++#include ++#include ++#endif + + namespace webrtc { + namespace desktop_capture { +@@ -27,10 +27,22 @@ namespace utils { + // Generates a human-readable string from a COM error. + std::string ComErrorToString(const _com_error& error) { + char buffer[1024]; ++#ifdef _MSC_VER + webrtc::SimpleStringBuilder string_builder(buffer); + // Use _bstr_t to simplify the wchar to char conversion for ErrorMessage(). + _bstr_t error_message(error.ErrorMessage()); + string_builder.AppendFormat("HRESULT: 0x%08X, Message: %s", error.Error(), + static_cast(error_message)); + return string_builder.str(); ++#else ++ int offset = snprintf(buffer, sizeof(buffer), ++ "HRESULT: 0x%08lX, Message: ", error.Error()); ++#ifdef _UNICODE ++ wcstombs(buffer + offset, error.ErrorMessage(), sizeof(buffer) - offset); ++#else ++ strcpy(buffer + offset, error.ErrorMessage(), sizeof(buffer) - offset); ++#endif ++ buffer[sizeof(buffer) - 1] = 0; ++ return buffer; ++#endif + } + + } // namespace utils +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn +index ccdecd0..848445b 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn +@@ -575,7 +575,11 @@ rtc_library("timeutils") { + + libs = [] + if (is_win) { +- libs += [ "winmm.lib" ] ++ if (is_mingw) { ++ libs += [ "winmm" ] ++ } else { ++ libs += [ "winmm.lib" ] ++ } + deps += [ ":win32" ] + } + } +@@ -1094,11 +1098,19 @@ if (is_win) { + ":stringutils", + ] + +- libs = [ +- "crypt32.lib", +- "iphlpapi.lib", +- "secur32.lib", +- ] ++ if (is_mingw) { ++ libs = [ ++ "crypt32", ++ "iphlpapi", ++ "secur32", ++ ] ++ } else { ++ libs = [ ++ "crypt32.lib", ++ "iphlpapi.lib", ++ "secur32.lib", ++ ] ++ } + + defines = [ "_CRT_NONSTDC_NO_DEPRECATE" ] + } +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc b/src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc +index d64ea68..f943485 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc +@@ -24,5 +24,6 @@ + #endif + + #if defined(WEBRTC_WIN) ++#include "build/build_config.h" + #include + + // The SetThreadDescription API was brought in version 1607 of Windows 10. +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/system/rtc_export_template.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/system/rtc_export_template.h +index 4ac7043..050dc23 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/system/rtc_export_template.h ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/system/rtc_export_template.h +@@ -185,8 +185,10 @@ + + RTC_EXPORT_TEMPLATE_TEST(DEFAULT, ); // NOLINT + RTC_EXPORT_TEMPLATE_TEST(DEFAULT, __attribute__((visibility("default")))); ++#ifdef _MSC_VER + RTC_EXPORT_TEMPLATE_TEST(MSVC_HACK, __declspec(dllexport)); + RTC_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); ++#endif + + #undef RTC_EXPORT_TEMPLATE_TEST + #undef RTC_EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/create_direct3d_device.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/create_direct3d_device.h +index 7c21f87..66bc9a3 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/create_direct3d_device.h ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/create_direct3d_device.h +@@ -11,8 +11,20 @@ + #ifndef RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_ + #define RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_ + ++#ifdef _MSC_VER + #include + #include ++#else ++#include ++#include ++#include ++ ++extern "C" { ++// This function is only used in decltype(..) ++HRESULT __stdcall CreateDirect3D11DeviceFromDXGIDevice( ++ ::IDXGIDevice* dxgiDevice, ::IInspectable** graphicsDevice); ++} ++#endif + #include + #include + +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/windows_version.cc b/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/windows_version.cc +index 93af137..6914722 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/windows_version.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/win/windows_version.cc +@@ -17,7 +17,7 @@ + #include "rtc_base/checks.h" + #include "rtc_base/string_utils.h" + +-#if !defined(__clang__) && _MSC_FULL_VER < 191125507 ++#if !defined(__clang__) && defined(_MSC_VER) && _MSC_FULL_VER < 191125507 + #error VS 2017 Update 3.2 or higher is required + #endif + +diff --git a/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn +index 786c469..65c2377 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn +@@ -67,7 +67,11 @@ rtc_library("system_wrappers") { + } + + if (is_win) { +- libs += [ "winmm.lib" ] ++ if (is_mingw) { ++ libs += [ "winmm" ] ++ } else { ++ libs += [ "winmm.lib" ] ++ } + + # Windows needs ../rtc_base due to include of + # webrtc/rtc_base/win32.h in source/clock.cc. +diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +index c5eeba5..7314e5c 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni ++++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +@@ -232,7 +232,7 @@ declare_args() { + # When set to true, a capturer implementation that uses the + # Windows.Graphics.Capture APIs will be available for use. This introduces a + # dependency on the Win 10 SDK v10.0.17763.0. +- rtc_enable_win_wgc = is_win ++ rtc_enable_win_wgc = is_msvc + + # Includes the dav1d decoder in the internal decoder factory when set to true. + rtc_include_dav1d_in_internal_decoder_factory = true +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/window_capture_utils.h b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/window_capture_utils.h +index 2bb5caf..892124e 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/window_capture_utils.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/win/window_capture_utils.h +@@ -11,7 +11,7 @@ + #ifndef MODULES_DESKTOP_CAPTURE_WIN_WINDOW_CAPTURE_UTILS_H_ + #define MODULES_DESKTOP_CAPTURE_WIN_WINDOW_CAPTURE_UTILS_H_ + +-#include ++#include + #include + #include + diff --git a/mingw-w64-qt6-webengine-thirdparty/0111-chromium-third-party-others.patch b/mingw-w64-qt6-webengine-thirdparty/0111-chromium-third-party-others.patch new file mode 100644 index 0000000000000..6bcc22682a360 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0111-chromium-third-party-others.patch @@ -0,0 +1,850 @@ +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn b/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn +index ffb658c..9d1374e 100644 +--- a/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn +@@ -211,7 +211,7 @@ config("absl_define_config") { + + config("absl_default_cflags_cc") { + cflags_cc = [] +- if (is_clang) { ++ if (is_clang && !is_mingw) { + cflags_cc += [ + # TODO(crbug.com/588506): Explicitly enable conversion warnings. + "-Wbool-conversion", +@@ -250,7 +250,7 @@ config("absl_test_cflags_cc") { + + config("absl_test_config") { + cflags_cc = [] +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + cflags_cc += [ "/wd4996" ] + } + if (is_clang) { +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/BUILD.gn b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/BUILD.gn +index 0a7a1b4..039d95f 100644 +--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/BUILD.gn +@@ -194,6 +194,9 @@ absl_source_set("base") { + ":spinlock_wait", + "//third_party/abseil-cpp/absl/meta:type_traits", + ] ++ if (is_mingw) { ++ libs = [ ":libpthread.a" ] ++ } + } + + # This should be an executable() more than a test. +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/thread_identity.h b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/thread_identity.h +index f6196ec..a1e72e0 100644 +--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/thread_identity.h ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/thread_identity.h +@@ -20,7 +20,7 @@ + #ifndef ABSL_BASE_INTERNAL_THREAD_IDENTITY_H_ + #define ABSL_BASE_INTERNAL_THREAD_IDENTITY_H_ + +-#ifndef _WIN32 ++#ifndef _MSC_VER + #include + // Defines __GOOGLE_GRTE_VERSION__ (via glibc-specific features.h) when + // supported. +@@ -217,7 +217,7 @@ void ClearCurrentThreadIdentity(); + #error ABSL_THREAD_IDENTITY_MODE cannot be directly set + #elif defined(ABSL_FORCE_THREAD_IDENTITY_MODE) + #define ABSL_THREAD_IDENTITY_MODE ABSL_FORCE_THREAD_IDENTITY_MODE +-#elif defined(_WIN32) && !defined(__MINGW32__) ++#elif defined(_WIN32) + #define ABSL_THREAD_IDENTITY_MODE ABSL_THREAD_IDENTITY_MODE_USE_CPP11 + #elif defined(__clang__) && defined(__MINGW32__) && defined(_WIN32) + #define ABSL_THREAD_IDENTITY_MODE ABSL_THREAD_IDENTITY_MODE_USE_CPP11 +diff --git a/src/3rdparty/chromium/third_party/boringssl/BUILD.gn b/src/3rdparty/chromium/third_party/boringssl/BUILD.gn +index cb5c369..5e1363c 100644 +--- a/src/3rdparty/chromium/third_party/boringssl/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/boringssl/BUILD.gn +@@ -99,7 +99,7 @@ if (enable_rust) { + } + } + +-if (is_msan || (is_msvc && current_cpu == "arm64" && !is_clang)) { ++if (is_msan || is_mingw || (is_msvc && current_cpu == "arm64" && !is_clang)) { + # MSan instrumentation is incompatible with assembly optimizations. + # BoringSSL's GAS-compatible assembly knows how to detect MSan, but the NASM + # assembly does not, so we check for MSan explicitly. +@@ -111,7 +111,7 @@ if (is_msan || (is_msvc && current_cpu == "arm64" && !is_clang)) { + visibility = [ ":*" ] + testonly = true + } +-} else if (is_win && (current_cpu == "x86" || current_cpu == "x64")) { ++} else if (is_msvc && (current_cpu == "x86" || current_cpu == "x64")) { + # Windows' x86 and x86_64 assembly is built with NASM. + import("//third_party/nasm/nasm_assemble.gni") + nasm_assemble("boringssl_asm") { +diff --git a/src/3rdparty/chromium/third_party/boringssl/src/include/openssl/base.h b/src/3rdparty/chromium/third_party/boringssl/src/include/openssl/base.h +index b9db335..23f6ac6 100644 +--- a/src/3rdparty/chromium/third_party/boringssl/src/include/openssl/base.h ++++ b/src/3rdparty/chromium/third_party/boringssl/src/include/openssl/base.h +@@ -26,6 +26,7 @@ + #if defined(__MINGW32__) + // stdio.h is needed on MinGW for __MINGW_PRINTF_FORMAT. + #include ++#undef X509_NAME + #endif + + #if defined(__APPLE__) +diff --git a/src/3rdparty/chromium/third_party/ced/BUILD.gn b/src/3rdparty/chromium/third_party/ced/BUILD.gn +index bf1d7ad..990784f 100644 +--- a/src/3rdparty/chromium/third_party/ced/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/ced/BUILD.gn +@@ -51,7 +51,7 @@ static_library("ced") { + + public_configs = [ ":ced_config" ] + +- if (is_win) { ++ if (is_msvc) { + defines = [ "COMPILER_MSVC" ] + cflags = [ + "/wd4005", # Macro defined twice. +@@ -76,7 +76,7 @@ test("ced_unittests") { + + configs += [ ":ced_config_private" ] + +- if (is_win) { ++ if (is_msvc) { + defines = [ "COMPILER_MSVC" ] + cflags = [ + "/wd4310", # Truncation of constant value. +diff --git a/src/3rdparty/chromium/third_party/cpuinfo/BUILD.gn b/src/3rdparty/chromium/third_party/cpuinfo/BUILD.gn +index 0730ae9..d66eb7c 100644 +--- a/src/3rdparty/chromium/third_party/cpuinfo/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/cpuinfo/BUILD.gn +@@ -11,7 +11,7 @@ config("cpuinfo_include") { + } + + config("cpuinfo_config") { +- if (is_clang || !is_win) { ++ if (is_clang || !is_msvc) { + cflags = [ + # For chipset.c and utils.h. + "-Wno-implicit-function-declaration", +@@ -50,6 +50,9 @@ source_set("cpuinfo") { + ":os_specific", + ] + ++ if (is_mingw) { ++ configs -= [ "//build/config/win:nominmax" ] ++ } + configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/sanitizers:default_sanitizer_flags", +diff --git a/src/3rdparty/chromium/third_party/cpuinfo/src/src/x86/windows/init.c b/src/3rdparty/chromium/third_party/cpuinfo/src/src/x86/windows/init.c +index d233280..3c4d776 100644 +--- a/src/3rdparty/chromium/third_party/cpuinfo/src/src/x86/windows/init.c ++++ b/src/3rdparty/chromium/third_party/cpuinfo/src/src/x86/windows/init.c +@@ -16,12 +16,21 @@ + #define CPUINFO_ALLOCA _alloca + #endif + ++#ifndef _WIN32 ++#define max(a,b) \ ++({ \ ++ __typeof__ (a) _a = (a); \ ++ __typeof__ (b) _b = (b); \ ++ _a > _b ? _a : _b; \ ++}) ++#endif ++ + static inline uint32_t bit_mask(uint32_t bits) { + return (UINT32_C(1) << bits) - UINT32_C(1); + } + + static inline uint32_t low_index_from_kaffinity(KAFFINITY kaffinity) { +-#if defined(_M_X64) || defined(_M_AMD64) ++#if defined(_M_X64) || defined(_M_AMD64) || defined(__x86_64__) + unsigned long index; + _BitScanForward64(&index, (unsigned __int64)kaffinity); + return (uint32_t)index; +diff --git a/src/3rdparty/chromium/third_party/crc32c/BUILD.gn b/src/3rdparty/chromium/third_party/crc32c/BUILD.gn +index 1ff0f72..d27d29a 100644 +--- a/src/3rdparty/chromium/third_party/crc32c/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crc32c/BUILD.gn +@@ -33,7 +33,7 @@ config("crc32c_config") { + "HAVE_SSE42=0", + ] + } +- if (is_clang || !is_win) { ++ if (is_clang || !is_msvc) { + defines += [ "HAVE_BUILTIN_PREFETCH=1" ] + } else { + defines += [ "HAVE_BUILTIN_PREFETCH=0" ] +@@ -85,7 +85,7 @@ source_set("crc32c_sse42") { + + configs += [ ":crc32c_config" ] + if (current_cpu == "x86" || current_cpu == "x64") { +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + cflags = [ "/arch:AVX" ] + } else { + cflags = [ "-msse4.2" ] +diff --git a/src/3rdparty/chromium/third_party/dav1d/BUILD.gn b/src/3rdparty/chromium/third_party/dav1d/BUILD.gn +index 22a80ef..bcb0df8 100644 +--- a/src/3rdparty/chromium/third_party/dav1d/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/dav1d/BUILD.gn +@@ -77,7 +77,7 @@ config("dav1d_config") { + "libdav1d/include/dav1d", + platform_config_root, + ] +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + include_dirs += [ "libdav1d/include/compat/msvc" ] + } + } +@@ -87,7 +87,7 @@ dav1d_copts = [ + "-D_POSIX_C_SOURCE=200112L", + ] + +-if (is_win) { ++if (is_msvc) { + if (!is_clang) { + dav1d_copts += [ "/wd4028" ] + } +@@ -96,7 +96,7 @@ if (is_win) { + if (is_apple) { + dav1d_copts += [ "-D_DARWIN_C_SOURCE" ] + } +- if (is_linux || is_chromeos || is_android || current_os == "aix") { ++ if (is_linux || is_chromeos || is_android || is_mingw || current_os == "aix") { + if (!is_clang) { + dav1d_copts += [ "-D_GNU_SOURCE" ] + } +@@ -110,8 +110,8 @@ if (is_clang && (current_cpu == "arm" || current_cpu == "arm64" || + } + + if (is_clang && (current_cpu == "arm" || current_cpu == "arm64" || + current_cpu == "arm64e")) { +- if (is_win) { ++ if (is_msvc) { + dav1d_copts += [ "/clang:-fno-align-functions" ] + } else { + dav1d_copts += [ "-fno-align-functions" ] +diff --git a/src/3rdparty/chromium/third_party/dav1d/config/win/arm64/config.h b/src/3rdparty/chromium/third_party/dav1d/config/win/arm64/config.h +index db94257..b283a58 100644 +--- a/src/3rdparty/chromium/third_party/dav1d/config/win/arm64/config.h ++++ b/src/3rdparty/chromium/third_party/dav1d/config/win/arm64/config.h +@@ -109,6 +109,6 @@ + + #define __USE_MINGW_ANSI_STDIO 1 + +-#define fseeko _fseeki64 ++// #define fseeko _fseeki64 + +-#define ftello _ftelli64 ++// #define ftello _ftelli64 +diff --git a/src/3rdparty/chromium/third_party/dav1d/config/win/x64/config.h b/src/3rdparty/chromium/third_party/dav1d/config/win/x64/config.h +index 114f988..61ede82 100644 +--- a/src/3rdparty/chromium/third_party/dav1d/config/win/x64/config.h ++++ b/src/3rdparty/chromium/third_party/dav1d/config/win/x64/config.h +@@ -105,6 +105,6 @@ + + #define __USE_MINGW_ANSI_STDIO 1 + +-#define fseeko _fseeki64 ++// #define fseeko _fseeki64 + +-#define ftello _ftelli64 ++// #define ftello _ftelli64 +diff --git a/src/3rdparty/chromium/third_party/dav1d/config/win/x86/config.h b/src/3rdparty/chromium/third_party/dav1d/config/win/x86/config.h +index a0ee49d..3061e60 100644 +--- a/src/3rdparty/chromium/third_party/dav1d/config/win/x86/config.h ++++ b/src/3rdparty/chromium/third_party/dav1d/config/win/x86/config.h +@@ -107,6 +107,6 @@ + + #define __USE_MINGW_ANSI_STDIO 1 + +-#define fseeko _fseeki64 ++// #define fseeko _fseeki64 + +-#define ftello _ftelli64 ++// #define ftello _ftelli64 +diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/common/BUILD.gn b/src/3rdparty/chromium/third_party/dawn/src/dawn/common/BUILD.gn +index 64ab821..c0e8a6a 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/dawn/common/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/common/BUILD.gn +@@ -160,7 +160,7 @@ config("internal_config") { + "-Wunused-macros", + ] + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + # clang-cl doesn't know -pedantic, pass it explicitly to the clang driver + "/clang:-pedantic", +@@ -173,7 +173,7 @@ config("internal_config") { + } + } + +- if (!is_clang && is_win) { ++ if (!is_clang && is_msvc) { + # Dawn extends wgpu enums with internal enums. + # MSVC considers these invalid switch values. crbug.com/dawn/397. + cflags += [ "/wd4063" ] +diff --git a/src/3rdparty/chromium/third_party/flac/BUILD.gn b/src/3rdparty/chromium/third_party/flac/BUILD.gn +index 330dada..26d4443 100644 +--- a/src/3rdparty/chromium/third_party/flac/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/flac/BUILD.gn +@@ -137,10 +137,17 @@ source_set("bundled_flac") { + + # win_utf8_io.c defines this itself. + configs -= [ "//build/config/win:lean_and_mean" ] +- cflags = [ +- "/wd4334", # 32-bit shift converted to 64 bits. +- "/wd4267", # Converting from size_t to unsigned on 64-bit. +- ] ++ if (is_mingw) { ++ defines += [ ++ "HAVE_FSEEKO", ++ "HAVE_INTTYPES_H", ++ ] ++ } else { ++ cflags = [ ++ "/wd4334", # 32-bit shift converted to 64 bits. ++ "/wd4267", # Converting from size_t to unsigned on 64-bit. ++ ] ++ } + } else { + defines += [ "HAVE_INTTYPES_H" ] + } +diff --git a/src/3rdparty/chromium/third_party/hunspell/BUILD.gn b/src/3rdparty/chromium/third_party/hunspell/BUILD.gn +index caa1392..2aa855c 100644 +--- a/src/3rdparty/chromium/third_party/hunspell/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/hunspell/BUILD.gn +@@ -77,7 +77,7 @@ static_library("hunspell") { + + cflags = [] + +- if (is_win) { ++ if (is_msvc) { + cflags += [ + # TODO(jschuh): http://crbug.com/167187 size_t -> int + "/wd4267", +diff --git a/src/3rdparty/chromium/third_party/jsoncpp/BUILD.gn b/src/3rdparty/chromium/third_party/jsoncpp/BUILD.gn +index 0d445cc..1bb59db 100644 +--- a/src/3rdparty/chromium/third_party/jsoncpp/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/jsoncpp/BUILD.gn +@@ -35,7 +35,7 @@ source_set("jsoncpp") { + + include_dirs = [ "source/src/lib_json" ] + +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags_cc = [ "-Wno-implicit-fallthrough" ] + } + } +diff --git a/src/3rdparty/chromium/third_party/leveldatabase/BUILD.gn b/src/3rdparty/chromium/third_party/leveldatabase/BUILD.gn +index db16e21..df742ff 100644 +--- a/src/3rdparty/chromium/third_party/leveldatabase/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/leveldatabase/BUILD.gn +@@ -132,7 +132,7 @@ component("leveldatabase") { + "//third_party/snappy", + ] + +- if (is_win) { ++ if (is_msvc) { + # leveldb compiles with a limited set of warnings enabled, and is not + # likely to accept fixes for other warnings. See crbug.com/698013 + cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. +@@ -169,7 +169,7 @@ static_library("leveldb_static") { + "//third_party/snappy", + ] + +- if (is_win) { ++ if (is_msvc) { + # leveldb compiles with a limited set of warnings enabled, and is not + # likely to accept fixes for other warnings. See crbug.com/698013 + cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. +@@ -248,7 +248,7 @@ test("leveldb_unittests") { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + +- if (is_win) { ++ if (is_msvc) { + # util\cache_test.cc(167): warning C4018: '<': signed/unsigned mismatch + # util\cache_test.cc(171): warning C4018: '<': signed/unsigned mismatch + cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. +diff --git a/src/3rdparty/chromium/third_party/libaom/BUILD.gn b/src/3rdparty/chromium/third_party/libaom/BUILD.gn +index 2b96a91..aad4004 100644 +--- a/src/3rdparty/chromium/third_party/libaom/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/libaom/BUILD.gn +@@ -115,7 +115,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-msse2" ] + } + sources = aom_av1_common_intrin_sse2 +@@ -130,7 +130,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-msse3" ] + } + sources = aom_av1_encoder_intrin_sse3 +@@ -142,7 +142,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-mssse3" ] + } + sources = aom_av1_common_intrin_ssse3 +@@ -159,7 +159,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-msse4.1" ] + } + sources = aom_av1_common_intrin_sse4_1 +@@ -174,7 +174,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-msse4.2" ] + } + sources = aom_av1_encoder_intrin_sse4_2 +@@ -186,7 +186,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX" ] + } else { + cflags = [ "-mavx" ] +@@ -200,7 +200,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ "-mavx2" ] +@@ -239,7 +239,7 @@ if (current_cpu == "arm64") { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-march=armv8-a+crc" ] + } + sources = aom_av1_encoder_intrin_arm_crc32 +@@ -251,7 +251,7 @@ if (current_cpu == "arm64") { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-march=armv8.2-a+dotprod" ] + } + sources = aom_av1_common_intrin_neon_dotprod +@@ -265,7 +265,7 @@ if (current_cpu == "arm64") { + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] + configs -= [ "//build/config/compiler:default_init_stack_vars" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-march=armv8.2-a+dotprod+i8mm" ] + } + sources = aom_av1_common_intrin_neon_i8mm +@@ -336,6 +336,13 @@ static_library("libaom") { + # overflows in the transform functions. + defines += [ "DO_RANGE_CHECK_CLAMP=1" ] + } ++ if (is_win) { ++ if (is_mingw) { ++ defines = [ "HAVE_PTHREAD_H=1" ] ++ } else { ++ defines = [ "HAVE_PTHREAD_H=0" ] ++ } ++ } + deps = [] + if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + deps += [ +@@ -391,6 +398,13 @@ static_library("libaomrc") { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libaom_config" ] ++ if (is_win) { ++ if (is_mingw) { ++ defines = [ "HAVE_PTHREAD_H=1" ] ++ } else { ++ defines = [ "HAVE_PTHREAD_H=0" ] ++ } ++ } + + public_configs = [ ":libaom_public_config" ] + public_deps = [ ":libaom" ] +diff --git a/src/3rdparty/chromium/third_party/libaom/source/config/win/arm64-cpu-detect/config/aom_config.h b/src/3rdparty/chromium/third_party/libaom/source/config/win/arm64-cpu-detect/config/aom_config.h +index 2f86dfa..1b19e43 100644 +--- a/src/3rdparty/chromium/third_party/libaom/source/config/win/arm64-cpu-detect/config/aom_config.h ++++ b/src/3rdparty/chromium/third_party/libaom/source/config/win/arm64-cpu-detect/config/aom_config.h +@@ -84,7 +84,6 @@ + #define HAVE_NEON 1 + #define HAVE_NEON_DOTPROD 1 + #define HAVE_NEON_I8MM 1 +-#define HAVE_PTHREAD_H 0 + #define HAVE_RVV 0 + #define HAVE_SSE 0 + #define HAVE_SSE2 0 +diff --git a/src/3rdparty/chromium/third_party/libaom/source/config/win/ia32/config/aom_config.h b/src/3rdparty/chromium/third_party/libaom/source/config/win/ia32/config/aom_config.h +index 5807d90..0a9d806 100644 +--- a/src/3rdparty/chromium/third_party/libaom/source/config/win/ia32/config/aom_config.h ++++ b/src/3rdparty/chromium/third_party/libaom/source/config/win/ia32/config/aom_config.h +@@ -84,7 +84,6 @@ + #define HAVE_NEON 0 + #define HAVE_NEON_DOTPROD 0 + #define HAVE_NEON_I8MM 0 +-#define HAVE_PTHREAD_H 0 + #define HAVE_RVV 0 + #define HAVE_SSE 1 + #define HAVE_SSE2 1 +diff --git a/src/3rdparty/chromium/third_party/libaom/source/config/win/x64/config/aom_config.h b/src/3rdparty/chromium/third_party/libaom/source/config/win/x64/config/aom_config.h +index 3728fcb..7c80c61 100644 +--- a/src/3rdparty/chromium/third_party/libaom/source/config/win/x64/config/aom_config.h ++++ b/src/3rdparty/chromium/third_party/libaom/source/config/win/x64/config/aom_config.h +@@ -84,7 +84,6 @@ + #define HAVE_NEON 0 + #define HAVE_NEON_DOTPROD 0 + #define HAVE_NEON_I8MM 0 +-#define HAVE_PTHREAD_H 0 + #define HAVE_RVV 0 + #define HAVE_SSE 1 + #define HAVE_SSE2 1 +diff --git a/src/3rdparty/chromium/third_party/libsrtp/BUILD.gn b/src/3rdparty/chromium/third_party/libsrtp/BUILD.gn +index 2f8638d..785bd9b 100644 +--- a/src/3rdparty/chromium/third_party/libsrtp/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/libsrtp/BUILD.gn +@@ -70,7 +70,7 @@ config("libsrtp_config") { + + config("libsrtp_warnings") { + cflags = [] +- if (is_win) { ++ if (is_msvc) { + cflags += [ "/wd4018" ] # Signed/unsigned mismatch in comparison + } + } +diff --git a/src/3rdparty/chromium/third_party/libvpx/BUILD.gn b/src/3rdparty/chromium/third_party/libvpx/BUILD.gn +index f34c555..9265105 100644 +--- a/src/3rdparty/chromium/third_party/libvpx/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/libvpx/BUILD.gn +@@ -102,7 +102,7 @@ config("libvpx_config") { + # libvpx has many static functions in header, which trigger this warning. + "-Wno-unused-function", + ] +- } else if (!is_win) { ++ } else if (!is_msvc) { + cflags = [ + "-Wno-unused-function", + "-Wno-sign-compare", +@@ -188,7 +188,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ "-mmmx" ] + } + if (current_cpu == "x86") { +@@ -204,7 +204,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-msse2" ] + } + if (current_cpu == "x86") { +@@ -220,7 +220,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-mssse3" ] + } + if (current_cpu == "x86") { +@@ -236,7 +236,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-msse4.1" ] + } + if (current_cpu == "x86") { +@@ -252,7 +252,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX" ] + } else { + cflags = [ "-mavx" ] +@@ -270,7 +270,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/arch:AVX2" ] + } else { + cflags = [ "-mavx2" ] +@@ -288,7 +288,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (is_win) { ++ if (is_msvc) { + # clang-cl does not accept this flag. + # https://bugs.chromium.org/p/chromium/issues/detail?id=783370 + cflags = [ "/arch:AVX512" ] +@@ -356,7 +356,7 @@ if (current_cpu == "arm64") { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-march=armv8.2-a+dotprod" ] + } + if (cpu_arch_full == "arm64") { +@@ -373,7 +373,7 @@ if (current_cpu == "arm64") { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":libvpx_config" ] +- if (!is_win || is_clang) { ++ if (!is_msvc || is_clang) { + cflags = [ "-march=armv8.2-a+i8mm" ] + } + if (cpu_arch_full == "arm64") { +diff --git a/src/3rdparty/chromium/third_party/libxml/BUILD.gn b/src/3rdparty/chromium/third_party/libxml/BUILD.gn +index 2022a48..d3f6f21 100644 +--- a/src/3rdparty/chromium/third_party/libxml/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/libxml/BUILD.gn +@@ -31,7 +31,7 @@ config("libxml_config") { + } + + config("libxml_warnings") { +- if (is_win) { ++ if (is_win && !is_mingw) { + cflags_c = [ + "/wd4018", # Signed/unsigned mismatch in comparison. + "/wd4267", # TODO(brucedawson): http://crbug.com/554200 fix C4267 +@@ -70,7 +70,7 @@ config("libxml_warnings") { + # TODO(hans): See if we can fix upstream (http://crbug.com/763944). + "-Wno-enum-compare", + ] +- } else if (is_linux || is_chromeos) { ++ } else if (is_linux || is_chromeos || is_mingw) { + cflags = [ + # gcc spits out a bunch of warnings about passing too many arguments to + # __xmlSimpleError. +diff --git a/src/3rdparty/chromium/third_party/libxslt/BUILD.gn b/src/3rdparty/chromium/third_party/libxslt/BUILD.gn +index e3ac656..da68aff 100644 +--- a/src/3rdparty/chromium/third_party/libxslt/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/libxslt/BUILD.gn +@@ -96,13 +96,17 @@ static_library("bundled_libxslt") { + include_dirs = [ "linux" ] + } else if (is_win) { + include_dirs = [ "win32" ] +- cflags += [ +- "/wd4267", # size_t to int. ++ if (is_mingw) { ++ cflags += [ "-Wno-incompatible-pointer-types" ] ++ } else { ++ cflags += [ ++ "/wd4267", # size_t to int. + +- # TODO(brucedawson): http://crbug.com/554200 4311 is a VS +- # 2015 64-bit warning for pointer truncation +- "/wd4311", +- ] ++ # TODO(brucedawson): http://crbug.com/554200 4311 is a VS ++ # 2015 64-bit warning for pointer truncation ++ "/wd4311", ++ ] ++ } + } else if (is_apple) { + include_dirs = [ "mac" ] + } +diff --git a/src/3rdparty/chromium/third_party/libyuv/BUILD.gn b/src/3rdparty/chromium/third_party/libyuv/BUILD.gn +index 1ea260e..5ef7314 100644 +--- a/src/3rdparty/chromium/third_party/libyuv/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/libyuv/BUILD.gn +@@ -73,7 +73,7 @@ group("libyuv") { + all_dependent_configs = [ ":libyuv_config" ] + deps = [] + +- if (is_win && target_cpu == "x64" && !is_qtwebengine) { ++ if (is_msvc && target_cpu == "x64" && !is_qtwebengine) { + # Compile with clang in order to get inline assembly + public_deps = [ ":libyuv_internal(//build/toolchain/win:win_clang_x64)" ] + } else { +@@ -208,7 +208,7 @@ static_library("libyuv_internal") { + } + + # To enable AVX2 or other cpu optimization, pass flag here +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + # "-mpopcnt", + # "-mavx2", +@@ -339,14 +339,14 @@ if (libyuv_use_lasx) { + + if (libyuv_include_tests) { + config("libyuv_unittest_warnings_config") { +- if (!is_win) { ++ if (!is_msvc) { + cflags = [ + # TODO(fbarchard): Fix sign and unused variable warnings. + "-Wno-sign-compare", + "-Wno-unused-variable", + ] + } +- if (is_win) { ++ if (is_msvc) { + cflags = [ + "/wd4245", # signed/unsigned mismatch + "/wd4189", # local variable is initialized but not referenced +diff --git a/src/3rdparty/chromium/third_party/nasm/BUILD.gn b/src/3rdparty/chromium/third_party/nasm/BUILD.gn +index d9edea9..beabe3f 100644 +--- a/src/3rdparty/chromium/third_party/nasm/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/nasm/BUILD.gn +@@ -62,6 +62,12 @@ config("nasm_config") { + ] + + defines = [ "HAVE_CONFIG_H" ] ++ if (is_mingw) { ++ defines += [ ++ "HAVE_FSEEKO", ++ "HAVE_MEMPCPY", ++ ] ++ } + + if (is_clang) { + cflags = [ +diff --git a/src/3rdparty/chromium/third_party/nasm/include/nasmint.h b/src/3rdparty/chromium/third_party/nasm/include/nasmint.h +index 6be623b..8dcd889 100644 +--- a/src/3rdparty/chromium/third_party/nasm/include/nasmint.h ++++ b/src/3rdparty/chromium/third_party/nasm/include/nasmint.h +@@ -35,6 +35,7 @@ + + #if _I64_MAX == 9223372036854775807 + ++#ifdef _MSC_VER + /* Windows-based compiler: use __int64 */ + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; +@@ -42,6 +43,14 @@ typedef unsigned __int64 uint64_t; + #define _pri64 "I64" + #define INT64_C(x) x ## i64 + #define UINT64_C(x) x ## ui64 ++#else ++typedef signed long long int64_t; ++typedef unsigned long long uint64_t; ++#define _scn64 "ll" ++#define _pri64 "ll" ++#define INT64_C(x) x ## LL ++#define UINT64_C(x) x ## ULL ++#endif + + #elif LONG_MAX == 9223372036854775807L + +diff --git a/src/3rdparty/chromium/third_party/node/node.py b/src/3rdparty/chromium/third_party/node/node.py +index 4f483f6..906efea 100755 +--- a/src/3rdparty/chromium/third_party/node/node.py ++++ b/src/3rdparty/chromium/third_party/node/node.py +@@ -45,7 +45,11 @@ def GetBinaryPath(): + + + def RunNode(cmd_parts, stdout=None): +- cmd = [GetBinaryPath()] + cmd_parts ++ if sys.platform == 'win32' and 'MINGW' in sys.version: ++ # We have to invoke node.exe through winpty ++ cmd = ['node'] + cmd_parts ++ else: ++ cmd = [GetBinaryPath()] + cmd_parts + process = subprocess.Popen( + cmd, cwd=os.getcwd(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, + universal_newlines=True, encoding='utf-8') +diff --git a/src/3rdparty/chromium/third_party/protobuf/proto_library.gni b/src/3rdparty/chromium/third_party/protobuf/proto_library.gni +index e90d62b..57309d2 100644 +--- a/src/3rdparty/chromium/third_party/protobuf/proto_library.gni ++++ b/src/3rdparty/chromium/third_party/protobuf/proto_library.gni +@@ -618,7 +618,7 @@ template("proto_library") { + public_deps += [ "$_this_dir:protobuf_lite" ] + } + +- if (is_win) { ++ if (is_msvc) { + cflags = [ + # disable: C4125 decimal digit terminates octal escape sequence + # Protoc generates such sequences frequently, there's no obvious +diff --git a/src/3rdparty/chromium/third_party/sqlite/BUILD.gn b/src/3rdparty/chromium/third_party/sqlite/BUILD.gn +index b1eb6bf..27de2c4 100644 +--- a/src/3rdparty/chromium/third_party/sqlite/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/sqlite/BUILD.gn +@@ -173,7 +173,7 @@ config("sqlite_warnings") { + "-Wno-#warnings", + ] + } +- if (is_win && !is_clang) { ++ if (is_msvc && !is_clang) { + cflags += [ "/wd4101" ] # 'zTrace' unreferenced variable in src/src/vdbe.c + } + } +diff --git a/src/3rdparty/chromium/third_party/woff2/BUILD.gn b/src/3rdparty/chromium/third_party/woff2/BUILD.gn +index c6308da..01f1fbd 100644 +--- a/src/3rdparty/chromium/third_party/woff2/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/woff2/BUILD.gn +@@ -33,7 +33,7 @@ static_library("woff2_dec") { + public_configs = [ ":woff2_includes" ] + + # TODO(ksakamoto): http://crbug.com/167187 +- if (is_win) { ++ if (is_msvc) { + cflags = [ "/wd4267" ] # Conversion from size_t to 'type'. + } + } +diff --git a/src/3rdparty/chromium/third_party/lzma_sdk/BUILD.gn b/src/3rdparty/chromium/third_party/lzma_sdk/BUILD.gn +index 889b191..986e7a2 100644 +--- a/src/3rdparty/chromium/third_party/lzma_sdk/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/lzma_sdk/BUILD.gn +@@ -18,6 +18,6 @@ use_arm_neon_optimizations = (target_cpu == "arm" || target_cpu == "arm64") && + # https://sourceforge.net/p/sevenzip/discussion/45797/thread/768932e9dd/?limit=25#0d6c + # If enable_lzma_opt is enabled, disable_llvm_ml should be enabled as well. +-enable_lzma_opt = host_os == "win" && target_cpu == "x64" && !is_msan ++enable_lzma_opt = is_msvc && host_os == "win" && target_cpu == "x64" && !is_msan + if (enable_lzma_opt) { + assert(disable_llvm_ml) + } +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn b/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn +index 704d62f..25c0370 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn +@@ -151,7 +151,7 @@ config("internal_config") { + "${tint_root_dir}/include/", + ] + +- if (!is_clang && is_win) { ++ if (!is_clang && is_msvc) { + # MSVC needs a flag to enable a standard-compliant preprocessor. + cflags = [ "/Zc:preprocessor" ] + } diff --git a/mingw-w64-qt6-webengine-thirdparty/0113-chromium-mingw-followup.patch b/mingw-w64-qt6-webengine-thirdparty/0113-chromium-mingw-followup.patch new file mode 100644 index 0000000000000..a56d860c6882e --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0113-chromium-mingw-followup.patch @@ -0,0 +1,29345 @@ +diff --git a/src/3rdparty/chromium/build/config/compiler/BUILD.gn b/src/3rdparty/chromium/build/config/compiler/BUILD.gn +--- a/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2026-06-16 10:01:56.548441200 +0200 ++++ b/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2026-06-16 10:06:53.405286500 +0200 +@@ -548,7 +548,7 @@ + # compute, so only use it in the official build to avoid slowing down + # links. + ldflags += [ "-Wl,--build-id=sha1" ] +- } else if (current_os != "aix" && current_os != "zos") { ++ } else if (!is_mingw && current_os != "aix" && current_os != "zos") { + if (use_lld) { + ldflags += [ "-Wl,--build-id=fast" ] + } else { +@@ -771,7 +771,7 @@ + + # C11/C++11 compiler flags setup. + # --------------------------- +- if (is_linux || is_chromeos || is_android || current_os == "aix") { ++ if (is_linux || is_mingw || is_chromeos || is_android || current_os == "aix") { + if (is_clang) { + standard_prefix = "c" + +@@ -1070,7 +1070,7 @@ + } + } + +- if (is_clang && show_includes) { ++ if (is_clang && !is_mingw && show_includes) { + if (is_win) { + cflags += [ + "/clang:-H", +@@ -2993,7 +2993,7 @@ + "-Wl,-no_function_starts", + ] + } +- } else if (current_os != "aix" && current_os != "zos") { ++ } else if (!is_mingw && current_os != "aix" && current_os != "zos") { + # Non-Mac Posix flags. + # Aix does not support these. + +@@ -3377,7 +3377,7 @@ + + # On aix -gdwarf causes linker failures due to thread_local variables. + # On zos -gdwarf causes INSUFFICIENT ABOVE THE LINE STORAGE WAS AVAILABLE. +- if (current_os != "aix" && current_os != "zos") { ++ if (!is_mingw && current_os != "aix" && current_os != "zos") { + if (use_dwarf5) { + cflags += [ "-gdwarf-5" ] + if (enable_tetanus) { +diff --git a/src/3rdparty/chromium/build/config/gcc/BUILD.gn b/src/3rdparty/chromium/build/config/gcc/BUILD.gn +--- a/src/3rdparty/chromium/build/config/gcc/BUILD.gn 2026-06-16 10:01:56.550188200 +0200 ++++ b/src/3rdparty/chromium/build/config/gcc/BUILD.gn 2026-06-16 10:06:53.442928400 +0200 +@@ -32,7 +32,9 @@ + # + # See http://gcc.gnu.org/wiki/Visibility + config("symbol_visibility_hidden") { +- cflags = [ "-fvisibility=hidden" ] ++ if (!is_mingw) { ++ cflags = [ "-fvisibility=hidden" ] ++ } + if (enable_tetanus) { + rustflags = [ "-Zdefault-visibility=hidden" ] + } +diff --git a/src/3rdparty/chromium/build/config/qtwebengine_private_paths.gni b/src/3rdparty/chromium/build/config/qtwebengine_private_paths.gni +--- /dev/null ++++ b/src/3rdparty/chromium/build/config/qtwebengine_private_paths.gni 2026-06-16 10:07:10.614334200 +0200 +@@ -0,0 +1,4 @@ ++declare_args() { ++ qtwebengine_private_chromium_include_dir = "" ++ qtwebengine_private_tool_dir = "" ++} +diff --git a/src/3rdparty/chromium/BUILD.gn b/src/3rdparty/chromium/BUILD.gn +--- a/src/3rdparty/chromium/BUILD.gn 2026-06-16 10:01:56.542415200 +0200 ++++ b/src/3rdparty/chromium/BUILD.gn 2026-06-16 10:07:10.641953600 +0200 +@@ -1812,7 +1812,11 @@ + } + + group("qtwebengine") { +- deps = [ qtwebengine_target ] ++ deps = [ ++ qtwebengine_target, ++ "//third_party/perfetto/src/protozero/protoc_plugin:cppgen_plugin", ++ "//third_party/perfetto/src/protozero/protoc_plugin:protozero_plugin", ++ ] + } + + if (use_remoteexec && target_os != "chromeos" && rbe_exec_root != "/") { +diff --git a/src/3rdparty/chromium/chrome/browser/ui/BUILD.gn b/src/3rdparty/chromium/chrome/browser/ui/BUILD.gn +--- a/src/3rdparty/chromium/chrome/browser/ui/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/browser/ui/BUILD.gn 2026-06-16 10:06:56.440136500 +0200 +@@ -3356,7 +3356,7 @@ + "//ui/events:dom_keycode_converter", + ] + +- libs += [ "crypt32.lib" ] ++ libs += [ "crypt32" ] + + if (is_chrome_branded) { + sources += [ "webui/help/version_updater_win.cc" ] +diff --git a/src/3rdparty/chromium/chrome/browser/ui/webui/settings/about_handler.cc b/src/3rdparty/chromium/chrome/browser/ui/webui/settings/about_handler.cc +--- a/src/3rdparty/chromium/chrome/browser/ui/webui/settings/about_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/browser/ui/webui/settings/about_handler.cc 2026-06-16 10:06:29.222998500 +0200 +@@ -50,7 +50,7 @@ + #include "content/public/browser/web_ui.h" + #include "content/public/browser/web_ui_data_source.h" + #include "ui/base/l10n/l10n_util.h" +-#include "v8/include/v8-version-string.h" ++#include "v8-version-string.h" + + #if BUILDFLAG(IS_CHROMEOS) + #include +diff --git a/src/3rdparty/chromium/chrome/browser/ui/webui/version/version_ui.cc b/src/3rdparty/chromium/chrome/browser/ui/webui/version/version_ui.cc +--- a/src/3rdparty/chromium/chrome/browser/ui/webui/version/version_ui.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/browser/ui/webui/version/version_ui.cc 2026-06-16 10:06:29.224753900 +0200 +@@ -40,7 +40,7 @@ + #include "ui/base/l10n/l10n_util.h" + #include "ui/base/webui/web_ui_util.h" + #include "ui/webui/webui_util.h" +-#include "v8/include/v8-version-string.h" ++#include "v8-version-string.h" + + #if BUILDFLAG(IS_ANDROID) + #include "base/android/build_info.h" +diff --git a/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn b/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn +--- a/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn 2026-06-16 10:01:56.734747700 +0200 ++++ b/src/3rdparty/chromium/chrome/browser/updater/BUILD.gn 2026-06-16 10:06:56.943012400 +0200 +@@ -93,7 +93,7 @@ + "//chrome/common", + "//chrome/updater:browser_sources", + ] +- } else if (is_win) { ++ } else if (is_msvc) { + sources += [ + "scheduler_impl.cc", + "scheduler_win.cc", +diff --git a/src/3rdparty/chromium/chrome/credential_provider/gaiacp/BUILD.gn b/src/3rdparty/chromium/chrome/credential_provider/gaiacp/BUILD.gn +--- a/src/3rdparty/chromium/chrome/credential_provider/gaiacp/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/credential_provider/gaiacp/BUILD.gn 2026-06-16 10:06:57.045604500 +0200 +@@ -252,7 +252,7 @@ + libs = [ + "advapi32.lib", # For LookupAccountSid() + "credui.lib", # For CredPackAuthenticationBufferW() +- "crypt32.lib", # For CryptProtectData() ++ "crypt32", # For CryptProtectData() + "netapi32.lib", # For NetUserXXX() + "userenv.lib", # For GetUserProfileDirectoryW() + "winhttp.lib", # For WinHttpXXX() +diff --git a/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn b/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn +--- a/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn 2026-06-16 10:01:56.738763400 +0200 ++++ b/src/3rdparty/chromium/chrome/elevation_service/BUILD.gn 2026-06-16 10:06:57.051632900 +0200 +@@ -77,7 +77,7 @@ + + if (is_msvc) { + libs = [ +- "crypt32.lib", ++ "crypt32", + "rpcrt4.lib", + ] + } else { +diff --git a/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.cc b/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.cc +--- a/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.cc 2026-06-16 10:06:29.226765100 +0200 +@@ -70,11 +70,11 @@ + #include "ui/base/l10n/l10n_util.h" + #include "ui/gfx/geometry/size.h" + #include "url/url_util.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-typed-array.h" ++#include "cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" ++#include "v8-microtask-queue.h" ++#include "v8-typed-array.h" + + namespace { + +diff --git a/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h b/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h +--- a/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h 2026-06-16 10:06:29.228778400 +0200 +@@ -31,7 +31,7 @@ + #include "ui/accessibility/ax_position.h" + #include "ui/accessibility/ax_tree_observer.h" + #include "ui/accessibility/ax_tree_update_forward.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/chrome/renderer/benchmarking_extension.cc b/src/3rdparty/chromium/chrome/renderer/benchmarking_extension.cc +--- a/src/3rdparty/chromium/chrome/renderer/benchmarking_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/benchmarking_extension.cc 2026-06-16 10:06:29.230793300 +0200 +@@ -16,11 +16,11 @@ + #include "content/public/common/content_switches.h" + #include "content/public/renderer/render_thread.h" + #include "v8-local-handle.h" +-#include "v8/include//v8-function.h" +-#include "v8/include/v8-extension.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "/v8-function.h" ++#include "v8-extension.h" ++#include "v8-isolate.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + const char kBenchmarkingExtensionName[] = "v8/Benchmarking"; + +diff --git a/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.cc b/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.cc +--- a/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.cc 2026-06-16 10:06:29.232812300 +0200 +@@ -179,7 +179,7 @@ + #include "ui/base/resource/resource_bundle.h" + #include "ui/base/webui/jstemplate_builder.h" + #include "url/origin.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + #if BUILDFLAG(IS_ANDROID) + #include "chrome/renderer/sandbox_status_extension_android.h" +diff --git a/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.h b/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.h +--- a/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/chrome_content_renderer_client.h 2026-06-16 10:06:29.234824600 +0200 +@@ -33,7 +33,7 @@ + #include "services/service_manager/public/cpp/local_interface_provider.h" + #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" + #include "third_party/blink/public/common/tokens/tokens.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + #if BUILDFLAG(IS_WIN) + #include "chrome/common/conflicts/remote_module_watcher_win.h" +diff --git a/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.cc b/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.cc +--- a/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.cc 2026-06-16 10:06:29.238905300 +0200 +@@ -9,10 +9,10 @@ + #include "extensions/renderer/script_context.h" + #include "third_party/blink/public/common/safe_url_pattern.h" + #include "third_party/blink/public/web/web_url_pattern_to_safe_url_pattern.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-container.h" ++#include "v8-exception.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" + + namespace controlled_frame { + +diff --git a/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.h b/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.h +--- a/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives.h 2026-06-16 10:06:29.242672100 +0200 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_CONTROLLED_FRAME_WEB_URL_PATTERN_NATIVES_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace controlled_frame { + +diff --git a/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives_browsertest.cc b/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives_browsertest.cc +--- a/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives_browsertest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/controlled_frame/web_url_pattern_natives_browsertest.cc 2026-06-16 10:06:29.292315900 +0200 +@@ -16,7 +16,7 @@ + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/string_source_map.h" + #include "extensions/renderer/test_v8_extension_configuration.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace controlled_frame { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/accessibility_private_hooks_delegate.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/accessibility_private_hooks_delegate.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/accessibility_private_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/accessibility_private_hooks_delegate.h 2026-06-16 10:06:29.294326700 +0200 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_EXTENSIONS_API_ACCESSIBILITY_PRIVATE_HOOKS_DELEGATE_H_ + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/app_hooks_delegate.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/app_hooks_delegate.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/app_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/app_hooks_delegate.h 2026-06-16 10:06:29.298369300 +0200 +@@ -10,7 +10,7 @@ + #include "base/memory/raw_ptr.h" + #include "base/memory/weak_ptr.h" + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APIRequestHandler; +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/extension_hooks_delegate.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/extension_hooks_delegate.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/extension_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/extension_hooks_delegate.h 2026-06-16 10:06:29.300382800 +0200 +@@ -8,7 +8,7 @@ + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" + #include "extensions/renderer/bindings/api_signature.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class NativeRendererMessagingService; +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/identity_hooks_delegate.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/identity_hooks_delegate.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/identity_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/identity_hooks_delegate.h 2026-06-16 10:06:29.302395800 +0200 +@@ -7,7 +7,7 @@ + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" + #include "extensions/renderer/bindings/api_signature.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/media_galleries_custom_bindings.cc b/src/3rdparty/chromium/chrome/renderer/extensions/api/media_galleries_custom_bindings.cc +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/media_galleries_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/media_galleries_custom_bindings.cc 2026-06-16 10:06:29.304148600 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/page_capture_custom_bindings.cc b/src/3rdparty/chromium/chrome/renderer/extensions/api/page_capture_custom_bindings.cc +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/page_capture_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/page_capture_custom_bindings.cc 2026-06-16 10:06:29.306161000 +0200 +@@ -9,7 +9,7 @@ + #include "extensions/renderer/ipc_message_sender.h" + #include "extensions/renderer/script_context.h" + #include "third_party/blink/public/web/web_blob.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/platform_keys_natives.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/platform_keys_natives.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/platform_keys_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/platform_keys_natives.h 2026-06-16 10:06:29.308173400 +0200 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_EXTENSIONS_API_PLATFORM_KEYS_NATIVES_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.cc b/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.cc +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.cc 2026-06-16 10:06:29.310186200 +0200 +@@ -8,7 +8,7 @@ + #include "extensions/renderer/v8_helpers.h" + #include "gin/dictionary.h" + #include "third_party/blink/public/web/web_blob.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/printing_hooks_delegate.h 2026-06-16 10:06:29.312213600 +0200 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_EXTENSIONS_API_PRINTING_HOOKS_DELEGATE_H_ + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.cc b/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.cc +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.cc 2026-06-16 10:06:29.314227400 +0200 +@@ -11,7 +11,7 @@ + #include "storage/common/file_system/file_system_util.h" + #include "third_party/blink/public/web/web_dom_file_system.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/sync_file_system_custom_bindings.h 2026-06-16 10:06:29.314227400 +0200 +@@ -6,7 +6,7 @@ + #define CHROME_RENDERER_EXTENSIONS_API_SYNC_FILE_SYSTEM_CUSTOM_BINDINGS_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/chrome/renderer/extensions/api/tabs_hooks_delegate.h b/src/3rdparty/chromium/chrome/renderer/extensions/api/tabs_hooks_delegate.h +--- a/src/3rdparty/chromium/chrome/renderer/extensions/api/tabs_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/extensions/api/tabs_hooks_delegate.h 2026-06-16 10:06:29.316239700 +0200 +@@ -8,7 +8,7 @@ + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" + #include "extensions/renderer/bindings/api_signature.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class NativeRendererMessagingService; +diff --git a/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.cc b/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.cc +--- a/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.cc 2026-06-16 10:06:29.318258700 +0200 +@@ -14,8 +14,8 @@ + #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" ++#include "v8-context.h" ++#include "v8-function.h" + + // static + void GoogleAccountsPrivateApiExtension::Create(content::RenderFrame* frame) { +diff --git a/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.h b/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.h +--- a/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/google_accounts_private_api_extension.h 2026-06-16 10:06:29.320013000 +0200 +@@ -9,7 +9,7 @@ + #include "chrome/common/google_accounts_private_api_extension.mojom.h" + #include "content/public/renderer/render_frame_observer.h" + #include "mojo/public/cpp/bindings/associated_remote.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/chrome/renderer/loadtimes_extension_bindings.cc b/src/3rdparty/chromium/chrome/renderer/loadtimes_extension_bindings.cc +--- a/src/3rdparty/chromium/chrome/renderer/loadtimes_extension_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/loadtimes_extension_bindings.cc 2026-06-16 10:06:29.322025100 +0200 +@@ -11,11 +11,11 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_navigation_type.h" + #include "third_party/blink/public/web/web_performance_metrics_for_reporting.h" +-#include "v8/include/v8-extension.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-extension.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + using blink::WebDocumentLoader; + using blink::WebLocalFrame; +diff --git a/src/3rdparty/chromium/chrome/renderer/net/net_error_page_controller.cc b/src/3rdparty/chromium/chrome/renderer/net/net_error_page_controller.cc +--- a/src/3rdparty/chromium/chrome/renderer/net/net_error_page_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/net/net_error_page_controller.cc 2026-06-16 10:06:29.324039200 +0200 +@@ -7,10 +7,10 @@ + #include "gin/object_template_builder.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-context.h" ++#include "v8-microtask-queue.h" + + NetErrorPageController::Delegate::Delegate() = default; + NetErrorPageController::Delegate::~Delegate() = default; +diff --git a/src/3rdparty/chromium/chrome/renderer/net_benchmarking_extension.cc b/src/3rdparty/chromium/chrome/renderer/net_benchmarking_extension.cc +--- a/src/3rdparty/chromium/chrome/renderer/net_benchmarking_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/net_benchmarking_extension.cc 2026-06-16 10:06:29.328087800 +0200 +@@ -9,9 +9,9 @@ + #include "content/public/renderer/render_thread.h" + #include "mojo/public/cpp/bindings/remote.h" + #include "third_party/blink/public/platform/web_cache.h" +-#include "v8/include/v8-extension.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-extension.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + using blink::WebCache; + +diff --git a/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.cc b/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.cc +--- a/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.cc 2026-06-16 10:06:29.332113700 +0200 +@@ -50,8 +50,8 @@ + #include "ui/gfx/geometry/size.h" + #include "url/origin.h" + #include "url/url_util.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + using base::UserMetricsAction; + using content::RenderThread; +diff --git a/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.h b/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.h +--- a/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/plugins/chrome_plugin_placeholder.h 2026-06-16 10:06:29.334125900 +0200 +@@ -17,7 +17,7 @@ + #include "gin/public/wrappable_pointer_tags.h" + #include "mojo/public/cpp/bindings/receiver.h" + #include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + + class ChromePluginPlaceholder final + : public gin::Wrappable, +diff --git a/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.cc b/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.cc +--- a/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.cc 2026-06-16 10:06:29.337904300 +0200 +@@ -14,8 +14,8 @@ + #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + // static + PDFPluginPlaceholder* PDFPluginPlaceholder::CreatePDFPlaceholder( +diff --git a/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.h b/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.h +--- a/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/plugins/pdf_plugin_placeholder.h 2026-06-16 10:06:29.339926400 +0200 +@@ -7,7 +7,7 @@ + + #include "components/plugins/renderer/plugin_placeholder.h" + #include "gin/public/wrappable_pointer_tags.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + + // Placeholder that allows users to click to download a PDF for when + // plugins are disabled and the PDF fails to load. +diff --git a/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.cc b/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.cc +--- a/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.cc 2026-06-16 10:06:29.341937700 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/public/platform/web_url.h" + #include "third_party/blink/public/platform/web_url_request.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + SandboxStatusExtension::SandboxStatusExtension(content::RenderFrame* frame) + : content::RenderFrameObserver(frame) { +diff --git a/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.h b/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.h +--- a/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/sandbox_status_extension_android.h 2026-06-16 10:06:29.343949300 +0200 +@@ -13,7 +13,7 @@ + #include "content/public/renderer/render_frame_observer.h" + #include "mojo/public/cpp/bindings/associated_receiver.h" + #include "mojo/public/cpp/bindings/pending_associated_receiver.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/chrome/renderer/searchbox/searchbox_extension.cc b/src/3rdparty/chromium/chrome/renderer/searchbox/searchbox_extension.cc +--- a/src/3rdparty/chromium/chrome/renderer/searchbox/searchbox_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/searchbox/searchbox_extension.cc 2026-06-16 10:06:29.345966600 +0200 +@@ -57,9 +57,9 @@ + #include "ui/gfx/text_elider.h" + #include "url/gurl.h" + #include "url/url_constants.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller.cc b/src/3rdparty/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller.cc +--- a/src/3rdparty/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller.cc 2026-06-16 10:06:29.347977700 +0200 +@@ -16,10 +16,10 @@ + #include "gin/object_template_builder.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-context.h" ++#include "v8-microtask-queue.h" + + void SupervisedUserErrorPageController::Install( + content::RenderFrame* render_frame, +diff --git a/src/3rdparty/chromium/chrome/renderer/translate/translate_script_browsertest.cc b/src/3rdparty/chromium/chrome/renderer/translate/translate_script_browsertest.cc +--- a/src/3rdparty/chromium/chrome/renderer/translate/translate_script_browsertest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/translate/translate_script_browsertest.cc 2026-06-16 10:06:29.349988600 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_script_source.h" + #include "ui/base/resource/resource_bundle.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using blink::WebScriptSource; + +diff --git a/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.cc b/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.cc +--- a/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.cc 2026-06-16 10:06:29.351739300 +0200 +@@ -30,11 +30,11 @@ + #include "third_party/blink/public/platform/platform.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-array-buffer.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + #if !BUILDFLAG(IS_ANDROID) + #include "components/trusted_vault/trusted_vault_server_constants.h" +diff --git a/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.h b/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.h +--- a/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/trusted_vault_encryption_keys_extension.h 2026-06-16 10:06:29.355773200 +0200 +@@ -12,8 +12,8 @@ + #include "content/public/renderer/render_frame_observer.h" + #include "google_apis/gaia/gaia_id.h" + #include "mojo/public/cpp/bindings/associated_remote.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/chrome/renderer/v8_unwinder.cc b/src/3rdparty/chromium/chrome/renderer/v8_unwinder.cc +--- a/src/3rdparty/chromium/chrome/renderer/v8_unwinder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/v8_unwinder.cc 2026-06-16 10:06:29.357785400 +0200 +@@ -16,12 +16,12 @@ + #include "base/check_op.h" + #include "base/profiler/register_context_registers.h" + #include "build/build_config.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + #if defined(ARCH_CPU_ARM_FAMILY) && defined(ARCH_CPU_32_BITS) + // V8 requires the embedder to establish the architecture define. + #define V8_TARGET_ARCH_ARM 1 +-#include "v8/include/v8-unwinder-state.h" ++#include "v8-unwinder-state.h" + #endif + + namespace { +diff --git a/src/3rdparty/chromium/chrome/renderer/v8_unwinder.h b/src/3rdparty/chromium/chrome/renderer/v8_unwinder.h +--- a/src/3rdparty/chromium/chrome/renderer/v8_unwinder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/v8_unwinder.h 2026-06-16 10:06:29.361823500 +0200 +@@ -11,7 +11,7 @@ + #include "base/check_op.h" + #include "base/memory/raw_ptr.h" + #include "base/profiler/unwinder.h" +-#include "v8/include/v8-unwinder.h" ++#include "v8-unwinder.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/chrome/renderer/v8_unwinder_unittest.cc b/src/3rdparty/chromium/chrome/renderer/v8_unwinder_unittest.cc +--- a/src/3rdparty/chromium/chrome/renderer/v8_unwinder_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/v8_unwinder_unittest.cc 2026-06-16 10:06:29.363852500 +0200 +@@ -20,7 +20,7 @@ + #include "gin/public/isolate_holder.h" + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/chrome/renderer/wallet/boarding_pass_extractor.cc b/src/3rdparty/chromium/chrome/renderer/wallet/boarding_pass_extractor.cc +--- a/src/3rdparty/chromium/chrome/renderer/wallet/boarding_pass_extractor.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/chrome/renderer/wallet/boarding_pass_extractor.cc 2026-06-16 10:06:29.367616300 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_script_source.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace wallet { + +diff --git a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.cc b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.cc +--- a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.cc 2026-06-16 10:06:29.369635600 +0200 +@@ -10,7 +10,7 @@ + #include "base/functional/bind.h" + #include "components/dom_distiller/core/url_utils.h" + #include "content/public/renderer/render_frame.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace dom_distiller { + +diff --git a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.h b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.h +--- a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_js_render_frame_observer.h 2026-06-16 10:06:29.371654600 +0200 +@@ -9,7 +9,7 @@ + #include "content/public/renderer/render_frame.h" + #include "content/public/renderer/render_frame_observer.h" + #include "services/service_manager/public/cpp/binder_registry.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace dom_distiller { + +diff --git a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.cc b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.cc +--- a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.cc 2026-06-16 10:06:29.375687700 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.h b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.h +--- a/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/dom_distiller/content/renderer/distiller_native_javascript.h 2026-06-16 10:06:29.377704600 +0200 +@@ -11,7 +11,7 @@ + #include "content/public/renderer/render_frame.h" + #include "content/public/renderer/render_frame_observer.h" + #include "mojo/public/cpp/bindings/remote.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace dom_distiller { + +diff --git a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.cc b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.cc +--- a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.cc 2026-06-16 10:06:29.379719300 +0200 +@@ -13,10 +13,10 @@ + #include "components/guest_view/common/guest_view_constants.h" + #include "components/guest_view/renderer/guest_view_request.h" + #include "content/public/renderer/render_frame_observer.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-microtask-queue.h" ++#include "v8-primitive.h" + + namespace { + +diff --git a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.h b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.h +--- a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_container.h 2026-06-16 10:06:29.383482900 +0200 +@@ -10,8 +10,8 @@ + #include "base/containers/circular_deque.h" + #include "base/memory/raw_ptr.h" + #include "base/memory/weak_ptr.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.cc b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.cc +--- a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.cc 2026-06-16 10:06:29.385498500 +0200 +@@ -10,9 +10,9 @@ + #include "components/guest_view/renderer/guest_view_container.h" + #include "content/public/renderer/render_frame.h" + #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-microtask-queue.h" + + namespace guest_view { + +diff --git a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.h b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.h +--- a/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/guest_view/renderer/guest_view_request.h 2026-06-16 10:06:29.387510700 +0200 +@@ -12,8 +12,8 @@ + #include "base/values.h" + #include "components/guest_view/common/guest_view.mojom.h" + #include "mojo/public/cpp/bindings/associated_remote.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/components/js_injection/renderer/js_binding.cc b/src/3rdparty/chromium/components/js_injection/renderer/js_binding.cc +--- a/src/3rdparty/chromium/components/js_injection/renderer/js_binding.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/js_injection/renderer/js_binding.cc 2026-06-16 10:06:29.389522600 +0200 +@@ -33,9 +33,9 @@ + #include "third_party/blink/public/web/web_frame.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_message_port_converter.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/components/js_injection/renderer/js_binding.h b/src/3rdparty/chromium/components/js_injection/renderer/js_binding.h +--- a/src/3rdparty/chromium/components/js_injection/renderer/js_binding.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/js_injection/renderer/js_binding.h 2026-06-16 10:06:29.393548100 +0200 +@@ -18,8 +18,8 @@ + #include "gin/wrappable.h" + #include "mojo/public/cpp/bindings/associated_receiver.h" + #include "third_party/blink/public/common/messaging/string_message_codec.h" +-#include "v8/include/v8.h" +-#include "v8/include/cppgc/persistent.h" ++#include "v8.h" ++#include "cppgc/persistent.h" + + namespace v8 { + template +diff --git a/src/3rdparty/chromium/components/js_injection/renderer/js_communication.cc b/src/3rdparty/chromium/components/js_injection/renderer/js_communication.cc +--- a/src/3rdparty/chromium/components/js_injection/renderer/js_communication.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/js_injection/renderer/js_communication.cc 2026-06-16 10:06:29.395560400 +0200 +@@ -16,8 +16,8 @@ + #include "third_party/blink/public/web/web_script_source.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/v8.h" ++#include "cppgc/persistent.h" ++#include "v8.h" + + namespace js_injection { + namespace { +diff --git a/src/3rdparty/chromium/components/js_injection/renderer/js_communication.h b/src/3rdparty/chromium/components/js_injection/renderer/js_communication.h +--- a/src/3rdparty/chromium/components/js_injection/renderer/js_communication.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/js_injection/renderer/js_communication.h 2026-06-16 10:06:29.395560400 +0200 +@@ -15,7 +15,7 @@ + #include "mojo/public/cpp/bindings/associated_receiver.h" + #include "mojo/public/cpp/bindings/associated_remote.h" + #include "third_party/blink/public/platform/web_string.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/components/os_crypt/async/browser/BUILD.gn b/src/3rdparty/chromium/components/os_crypt/async/browser/BUILD.gn +--- a/src/3rdparty/chromium/components/os_crypt/async/browser/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/os_crypt/async/browser/BUILD.gn 2026-06-16 10:07:00.010783600 +0200 +@@ -57,7 +57,7 @@ + "//components/prefs", + ] + +- libs = [ "crypt32.lib" ] ++ libs = [ "crypt32" ] + } + } + +diff --git a/src/3rdparty/chromium/components/os_crypt/async/common/BUILD.gn b/src/3rdparty/chromium/components/os_crypt/async/common/BUILD.gn +--- a/src/3rdparty/chromium/components/os_crypt/async/common/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/os_crypt/async/common/BUILD.gn 2026-06-16 10:07:00.012791300 +0200 +@@ -96,7 +96,7 @@ + # :common_mojom which might be in different modules in a component-build. + source_set("crypto_lib") { + if (is_win) { +- libs = [ "crypt32.lib" ] ++ libs = [ "crypt32" ] + } + } + +@@ -118,6 +118,6 @@ + ] + + if (is_win) { +- libs = [ "crypt32.lib" ] ++ libs = [ "crypt32" ] + } + } +diff --git a/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn b/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn +--- a/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn 2026-06-16 10:01:56.802022900 +0200 ++++ b/src/3rdparty/chromium/components/os_crypt/sync/BUILD.gn 2026-06-16 10:07:00.014801900 +0200 +@@ -42,7 +42,7 @@ + sources += [ "os_crypt_win.cc" ] + deps += [ "//components/version_info" ] + if (is_msvc) { +- libs = [ "crypt32.lib" ] ++ libs = [ "crypt32" ] + } else { + libs = [ "crypt32" ] + } +diff --git a/src/3rdparty/chromium/components/pdf/renderer/pdf_view_web_plugin_client.cc b/src/3rdparty/chromium/components/pdf/renderer/pdf_view_web_plugin_client.cc +--- a/src/3rdparty/chromium/components/pdf/renderer/pdf_view_web_plugin_client.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/pdf/renderer/pdf_view_web_plugin_client.cc 2026-06-16 10:06:29.399324100 +0200 +@@ -37,10 +37,10 @@ + #include "ui/display/screen_info.h" + #include "ui/gfx/geometry/point_f.h" + #include "ui/gfx/geometry/rect.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + #if BUILDFLAG(ENABLE_PRINTING) + #include "components/printing/renderer/print_render_frame_helper.h" +diff --git a/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.cc b/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.cc +--- a/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.cc 2026-06-16 10:06:29.401336000 +0200 +@@ -18,8 +18,8 @@ + #include "third_party/blink/public/web/web_script_source.h" + #include "third_party/blink/public/web/web_serialized_script_value.h" + #include "third_party/re2/src/re2/re2.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace plugins { + +diff --git a/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.h b/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.h +--- a/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/plugins/renderer/plugin_placeholder.h 2026-06-16 10:06:29.403348100 +0200 +@@ -12,7 +12,7 @@ + #include "gin/wrappable.h" + #include "third_party/blink/public/web/blink.h" + #include "third_party/blink/public/web/web_plugin_params.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + + namespace plugins { + +diff --git a/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.cc b/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.cc +--- a/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.cc 2026-06-16 10:06:29.405360200 +0200 +@@ -13,10 +13,10 @@ + #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" ++#include "v8-microtask-queue.h" ++#include "cppgc/allocation.h" + + namespace security_interstitials { + +diff --git a/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.h b/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.h +--- a/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/security_interstitials/content/renderer/security_interstitial_page_controller.h 2026-06-16 10:06:29.407372000 +0200 +@@ -9,8 +9,8 @@ + #include "content/public/renderer/render_frame_observer.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/allocation.h" ++#include "cppgc/prefinalizer.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/components/system_cpu/BUILD.gn b/src/3rdparty/chromium/components/system_cpu/BUILD.gn +--- a/src/3rdparty/chromium/components/system_cpu/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/system_cpu/BUILD.gn 2026-06-16 10:07:00.643900800 +0200 +@@ -45,7 +45,7 @@ + "cpu_probe_win.h", + ] + +- libs += [ "pdh.lib" ] ++ libs += [ "pdh" ] + } + } + +diff --git a/src/3rdparty/chromium/components/viz/service/BUILD.gn b/src/3rdparty/chromium/components/viz/service/BUILD.gn +--- a/src/3rdparty/chromium/components/viz/service/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/components/viz/service/BUILD.gn 2026-06-16 10:07:00.907180000 +0200 +@@ -519,9 +519,9 @@ + ] + + libs = [ +- "d3d11.lib", +- "dxgi.lib", +- "dcomp.lib", ++ "d3d11", ++ "dxgi", ++ "dcomp", + ] + + ldflags = [ +diff --git a/src/3rdparty/chromium/content/browser/devtools/devtools_http_handler.cc b/src/3rdparty/chromium/content/browser/devtools/devtools_http_handler.cc +--- a/src/3rdparty/chromium/content/browser/devtools/devtools_http_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/browser/devtools/devtools_http_handler.cc 2026-06-16 10:06:29.409412700 +0200 +@@ -58,7 +58,7 @@ + #include "net/server/http_server_response_info.h" + #include "net/socket/server_socket.h" + #include "net/traffic_annotation/network_traffic_annotation.h" +-#include "v8/include/v8-version-string.h" ++#include "v8-version-string.h" + + #if BUILDFLAG(IS_ANDROID) + #include "base/android/build_info.h" +diff --git a/src/3rdparty/chromium/content/browser/devtools/protocol/browser_handler.cc b/src/3rdparty/chromium/content/browser/devtools/protocol/browser_handler.cc +--- a/src/3rdparty/chromium/content/browser/devtools/protocol/browser_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/browser/devtools/protocol/browser_handler.cc 2026-06-16 10:06:29.411424400 +0200 +@@ -45,7 +45,7 @@ + #include "net/base/filename_util.h" + #include "third_party/blink/public/common/permissions/permission_utils.h" + #include "url/gurl.h" +-#include "v8/include/v8-version-string.h" ++#include "v8-version-string.h" + + using blink::PermissionType; + +diff --git a/src/3rdparty/chromium/content/browser/indexed_db/indexed_db_data_format_version.cc b/src/3rdparty/chromium/content/browser/indexed_db/indexed_db_data_format_version.cc +--- a/src/3rdparty/chromium/content/browser/indexed_db/indexed_db_data_format_version.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/browser/indexed_db/indexed_db_data_format_version.cc 2026-06-16 10:06:29.413435000 +0200 +@@ -5,7 +5,7 @@ + #include "content/browser/indexed_db/indexed_db_data_format_version.h" + + #include "third_party/blink/public/web/web_serialized_script_value_version.h" +-#include "v8/include/v8-value-serializer-version.h" ++#include "v8-value-serializer-version.h" + + namespace content::indexed_db { + +diff --git a/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc b/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc +--- a/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc 2026-06-16 10:01:56.855286100 +0200 ++++ b/src/3rdparty/chromium/content/browser/installedapp/installed_app_provider_impl.cc 2026-06-16 10:06:03.963380100 +0200 +@@ -1,194 +1,194 @@ +-// Copyright 2017 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#include "content/browser/installedapp/installed_app_provider_impl.h" +- +-#include +- +-#include "base/check_is_test.h" +-#include "base/functional/bind.h" +-#include "base/functional/callback_helpers.h" +-#include "base/functional/concurrent_callbacks.h" +-#include "base/task/task_traits.h" +-#include "build/build_config.h" +-#include "content/browser/browser_thread_impl.h" +-#if !BUILDFLAG(IS_ANDROID) +-#include "content/browser/installedapp/fetch_related_web_apps_task.h" +-#endif // !BUILDFLAG(IS_ANDROID) +-#include "content/common/features.h" +-#include "content/public/browser/browser_context.h" +-#include "content/public/browser/render_frame_host.h" +-#include "content/public/browser/render_process_host.h" +-#include "content/public/browser/web_contents.h" +-#include "content/public/browser/web_contents_delegate.h" +-#include "content/public/common/content_features.h" +-#include "mojo/public/cpp/bindings/clone_traits.h" +-#include "third_party/blink/public/mojom/installedapp/related_application.mojom.h" +- +-#if BUILDFLAG(IS_WIN) +-#include "content/browser/installedapp/fetch_related_win_apps_task.h" +-#include "content/browser/installedapp/native_win_app_fetcher.h" +-#include "content/browser/installedapp/native_win_app_fetcher_impl.h" +-#endif +- +-namespace content { +- +-namespace { +-constexpr int kMaxNumberOfQueriedApps = 10; +- +-#if BUILDFLAG(IS_WIN) +-std::unique_ptr CreateNativeWinAppFetcher() { +- return std::make_unique(); +-} +-#endif // BUILDFLAG(IS_WIN) +-} +- +-InstalledAppProviderImpl::InstalledAppProviderImpl( +- RenderFrameHost& render_frame_host, +- mojo::PendingReceiver pending_receiver) +- : DocumentService(render_frame_host, std::move(pending_receiver)) { +-#if BUILDFLAG(IS_MSVC) +- native_win_app_fetcher_factory_ = +- base::BindRepeating(&CreateNativeWinAppFetcher); +-#endif // BUILDFLAG(IS_MSVC) +-} +- +-InstalledAppProviderImpl::~InstalledAppProviderImpl() = default; +- +-void InstalledAppProviderImpl::FilterInstalledApps( +- std::vector related_apps, +- const GURL& manifest_url, +- bool add_saved_related_applications, +- FilterInstalledAppsCallback callback) { +- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- if (!base::FeatureList::IsEnabled(::features::kInstalledAppProvider)) { +- base::SequencedTaskRunner::GetCurrentDefault()->PostTask( +- FROM_HERE, +- base::BindOnce(std::move(callback), +- std::vector())); +- return; +- } +- +- // If we failed to retrieve the manifest, fall back to the saved +- // related_apps. +- if (add_saved_related_applications) { +- WebContents* web_contents = +- WebContents::FromRenderFrameHost(&render_frame_host()); +- WebContentsDelegate* delegate = web_contents->GetDelegate(); +- if (delegate) { +- std::vector saved_related_apps = +- delegate->GetSavedRelatedApplications(web_contents); +- related_apps.insert(related_apps.end(), +- std::make_move_iterator(saved_related_apps.begin()), +- std::make_move_iterator(saved_related_apps.end())); +- } +- } +- +- if (related_apps.size() > kMaxNumberOfQueriedApps) { +- related_apps.resize(kMaxNumberOfQueriedApps); +- } +- +- base::ConcurrentCallbacks concurrent; +- +-#if BUILDFLAG(IS_MSVC) +- if (base::FeatureList::IsEnabled(::features::kFilterInstalledAppsWinMatching)) { +- StartTask(std::make_unique( +- native_win_app_fetcher_factory_.Run()), +- related_apps, concurrent.CreateCallback()); +- } +-#endif // BUILDFLAG(IS_MSVC) +- +-#if !BUILDFLAG(IS_ANDROID) +- if (base::FeatureList::IsEnabled( +- ::features::kFilterInstalledAppsWebAppMatching)) { +- StartTask(std::make_unique( +- render_frame_host().GetBrowserContext()), +- related_apps, concurrent.CreateCallback()); +- } +-#endif // !BUILDFLAG(IS_ANDROID) +- +- std::move(concurrent) +- .Done(base::BindOnce(&InstalledAppProviderImpl::AggregateTaskResults, +- weak_ptr_factory_.GetWeakPtr(), +- std::move(callback))); +-} +- +-void InstalledAppProviderImpl::StartTask( +- std::unique_ptr task, +- std::vector& related_apps, +- FetchRelatedAppsTaskCallback callback) { +- auto* task_ptr = task.get(); +- tasks_.insert({task_ptr, std::move(task)}); +- auto erase_task_cb = base::BindOnce(&InstalledAppProviderImpl::EraseTask, +- weak_ptr_factory_.GetWeakPtr(), task_ptr); +- task_ptr->Start(render_frame_host().GetLastCommittedURL(), +- mojo::Clone(related_apps), +- std::move(callback).Then(std::move(erase_task_cb))); +-} +- +-void InstalledAppProviderImpl::EraseTask(FetchRelatedAppsTask* task) { +- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- int num_removed = tasks_.erase(task); +- CHECK(num_removed != 0); +-} +- +-void InstalledAppProviderImpl::AggregateTaskResults( +- FilterInstalledAppsCallback callback, +- std::vector task_result_list) { +- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- std::vector matched_apps; +- +- for (FetchRelatedAppsTaskResult& result : task_result_list) { +- for (blink::mojom::RelatedApplicationPtr& app : result) { +- matched_apps.push_back(std::move(app)); +- } +- } +- +- // |is_off_the_record| should be checked at the end to prevent clients from +- // using timing functions to test if the user is in private. +- bool is_off_the_record = +- render_frame_host().GetProcess()->GetBrowserContext()->IsOffTheRecord(); +- +- if (is_off_the_record) { +- return std::move(callback).Run( +- std::vector()); +- } +- +- return std::move(callback).Run(mojo::Clone(matched_apps)); +-} +- +-#if BUILDFLAG(IS_MSVC) +-void InstalledAppProviderImpl::SetNativeWinAppFetcherFactoryForTesting( +- base::RepeatingCallback()> factory) { +- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- CHECK_IS_TEST(); +- native_win_app_fetcher_factory_ = std::move(factory); +-} +-#endif // BUILDFLAG(IS_MSVC) +- +-// static +-void InstalledAppProviderImpl::Create( +- RenderFrameHost& host, +- mojo::PendingReceiver receiver) { +- if (host.GetParentOrOuterDocument()) { +- // The renderer is supposed to disallow this and we shouldn't end up here. +- mojo::ReportBadMessage( +- "InstalledAppProvider only allowed for outermost main frame."); +- return; +- } +- +- // The object is bound to the lifetime of |host|'s current document and the +- // mojo connection. See DocumentService for details. +- new InstalledAppProviderImpl(host, std::move(receiver)); +-} +- +-// static +-InstalledAppProviderImpl* InstalledAppProviderImpl::CreateForTesting( +- RenderFrameHost& render_frame_host, +- mojo::PendingReceiver receiver) { +- CHECK_IS_TEST(); +- return new InstalledAppProviderImpl(render_frame_host, std::move(receiver)); +-} +- +-} // namespace content ++// Copyright 2017 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "content/browser/installedapp/installed_app_provider_impl.h" ++ ++#include ++ ++#include "base/check_is_test.h" ++#include "base/functional/bind.h" ++#include "base/functional/callback_helpers.h" ++#include "base/functional/concurrent_callbacks.h" ++#include "base/task/task_traits.h" ++#include "build/build_config.h" ++#include "content/browser/browser_thread_impl.h" ++#if !BUILDFLAG(IS_ANDROID) ++#include "content/browser/installedapp/fetch_related_web_apps_task.h" ++#endif // !BUILDFLAG(IS_ANDROID) ++#include "content/common/features.h" ++#include "content/public/browser/browser_context.h" ++#include "content/public/browser/render_frame_host.h" ++#include "content/public/browser/render_process_host.h" ++#include "content/public/browser/web_contents.h" ++#include "content/public/browser/web_contents_delegate.h" ++#include "content/public/common/content_features.h" ++#include "mojo/public/cpp/bindings/clone_traits.h" ++#include "third_party/blink/public/mojom/installedapp/related_application.mojom.h" ++ ++#if BUILDFLAG(IS_MSVC) ++#include "content/browser/installedapp/fetch_related_win_apps_task.h" ++#include "content/browser/installedapp/native_win_app_fetcher.h" ++#include "content/browser/installedapp/native_win_app_fetcher_impl.h" ++#endif // BUILDFLAG(IS_MSVC) ++ ++namespace content { ++ ++namespace { ++constexpr int kMaxNumberOfQueriedApps = 10; ++ ++#if BUILDFLAG(IS_MSVC) ++std::unique_ptr CreateNativeWinAppFetcher() { ++ return std::make_unique(); ++} ++#endif // BUILDFLAG(IS_MSVC) ++} ++ ++InstalledAppProviderImpl::InstalledAppProviderImpl( ++ RenderFrameHost& render_frame_host, ++ mojo::PendingReceiver pending_receiver) ++ : DocumentService(render_frame_host, std::move(pending_receiver)) { ++#if BUILDFLAG(IS_MSVC) ++ native_win_app_fetcher_factory_ = ++ base::BindRepeating(&CreateNativeWinAppFetcher); ++#endif // BUILDFLAG(IS_MSVC) ++} ++ ++InstalledAppProviderImpl::~InstalledAppProviderImpl() = default; ++ ++void InstalledAppProviderImpl::FilterInstalledApps( ++ std::vector related_apps, ++ const GURL& manifest_url, ++ bool add_saved_related_applications, ++ FilterInstalledAppsCallback callback) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if (!base::FeatureList::IsEnabled(::features::kInstalledAppProvider)) { ++ base::SequencedTaskRunner::GetCurrentDefault()->PostTask( ++ FROM_HERE, ++ base::BindOnce(std::move(callback), ++ std::vector())); ++ return; ++ } ++ ++ // If we failed to retrieve the manifest, fall back to the saved ++ // related_apps. ++ if (add_saved_related_applications) { ++ WebContents* web_contents = ++ WebContents::FromRenderFrameHost(&render_frame_host()); ++ WebContentsDelegate* delegate = web_contents->GetDelegate(); ++ if (delegate) { ++ std::vector saved_related_apps = ++ delegate->GetSavedRelatedApplications(web_contents); ++ related_apps.insert(related_apps.end(), ++ std::make_move_iterator(saved_related_apps.begin()), ++ std::make_move_iterator(saved_related_apps.end())); ++ } ++ } ++ ++ if (related_apps.size() > kMaxNumberOfQueriedApps) { ++ related_apps.resize(kMaxNumberOfQueriedApps); ++ } ++ ++ base::ConcurrentCallbacks concurrent; ++ ++#if BUILDFLAG(IS_MSVC) ++ if (base::FeatureList::IsEnabled(::features::kFilterInstalledAppsWinMatching)) { ++ StartTask(std::make_unique( ++ native_win_app_fetcher_factory_.Run()), ++ related_apps, concurrent.CreateCallback()); ++ } ++#endif // BUILDFLAG(IS_MSVC) ++ ++#if !BUILDFLAG(IS_ANDROID) ++ if (base::FeatureList::IsEnabled( ++ ::features::kFilterInstalledAppsWebAppMatching)) { ++ StartTask(std::make_unique( ++ render_frame_host().GetBrowserContext()), ++ related_apps, concurrent.CreateCallback()); ++ } ++#endif // !BUILDFLAG(IS_ANDROID) ++ ++ std::move(concurrent) ++ .Done(base::BindOnce(&InstalledAppProviderImpl::AggregateTaskResults, ++ weak_ptr_factory_.GetWeakPtr(), ++ std::move(callback))); ++} ++ ++void InstalledAppProviderImpl::StartTask( ++ std::unique_ptr task, ++ std::vector& related_apps, ++ FetchRelatedAppsTaskCallback callback) { ++ auto* task_ptr = task.get(); ++ tasks_.insert({task_ptr, std::move(task)}); ++ auto erase_task_cb = base::BindOnce(&InstalledAppProviderImpl::EraseTask, ++ weak_ptr_factory_.GetWeakPtr(), task_ptr); ++ task_ptr->Start(render_frame_host().GetLastCommittedURL(), ++ mojo::Clone(related_apps), ++ std::move(callback).Then(std::move(erase_task_cb))); ++} ++ ++void InstalledAppProviderImpl::EraseTask(FetchRelatedAppsTask* task) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ int num_removed = tasks_.erase(task); ++ CHECK(num_removed != 0); ++} ++ ++void InstalledAppProviderImpl::AggregateTaskResults( ++ FilterInstalledAppsCallback callback, ++ std::vector task_result_list) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ std::vector matched_apps; ++ ++ for (FetchRelatedAppsTaskResult& result : task_result_list) { ++ for (blink::mojom::RelatedApplicationPtr& app : result) { ++ matched_apps.push_back(std::move(app)); ++ } ++ } ++ ++ // |is_off_the_record| should be checked at the end to prevent clients from ++ // using timing functions to test if the user is in private. ++ bool is_off_the_record = ++ render_frame_host().GetProcess()->GetBrowserContext()->IsOffTheRecord(); ++ ++ if (is_off_the_record) { ++ return std::move(callback).Run( ++ std::vector()); ++ } ++ ++ return std::move(callback).Run(mojo::Clone(matched_apps)); ++} ++ ++#if BUILDFLAG(IS_MSVC) ++void InstalledAppProviderImpl::SetNativeWinAppFetcherFactoryForTesting( ++ base::RepeatingCallback()> factory) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ CHECK_IS_TEST(); ++ native_win_app_fetcher_factory_ = std::move(factory); ++} ++#endif // BUILDFLAG(IS_MSVC) ++ ++// static ++void InstalledAppProviderImpl::Create( ++ RenderFrameHost& host, ++ mojo::PendingReceiver receiver) { ++ if (host.GetParentOrOuterDocument()) { ++ // The renderer is supposed to disallow this and we shouldn't end up here. ++ mojo::ReportBadMessage( ++ "InstalledAppProvider only allowed for outermost main frame."); ++ return; ++ } ++ ++ // The object is bound to the lifetime of |host|'s current document and the ++ // mojo connection. See DocumentService for details. ++ new InstalledAppProviderImpl(host, std::move(receiver)); ++} ++ ++// static ++InstalledAppProviderImpl* InstalledAppProviderImpl::CreateForTesting( ++ RenderFrameHost& render_frame_host, ++ mojo::PendingReceiver receiver) { ++ CHECK_IS_TEST(); ++ return new InstalledAppProviderImpl(render_frame_host, std::move(receiver)); ++} ++ ++} // namespace content +diff --git a/src/3rdparty/chromium/content/browser/renderer_host/input/stylus_handwriting_controller_win.h b/src/3rdparty/chromium/content/browser/renderer_host/input/stylus_handwriting_controller_win.h +--- a/src/3rdparty/chromium/content/browser/renderer_host/input/stylus_handwriting_controller_win.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/browser/renderer_host/input/stylus_handwriting_controller_win.h 2026-06-16 10:07:11.009686300 +0200 +@@ -1,126 +1,128 @@ +-// Copyright 2024 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_STYLUS_HANDWRITING_CONTROLLER_WIN_H_ +-#define CONTENT_BROWSER_RENDERER_HOST_INPUT_STYLUS_HANDWRITING_CONTROLLER_WIN_H_ +- +-#include +-#include +-#include +-#include +-#include +- +-#include "base/functional/callback_forward.h" +-#include "base/memory/weak_ptr.h" +-#include "base/no_destructor.h" +-#include "content/common/content_export.h" +- +-namespace base { +-class ScopedClosureRunner; +-} +- +-namespace gfx { +-class Rect; +-class Size; +-} // namespace gfx +- +-namespace ui { +-struct StylusHandwritingPropertiesWin; +-class TextInputClient; +-} // namespace ui +- +-namespace content { +- +-class StylusHandwritingCallbackSinkWin; +- +-// Encapsulates the Shell Handwriting API. Receives signals from the application +-// to notify the Shell Handwriting API of relevant interactions, and forwards +-// information back to the renderer process to perform hit testing and focus +-// events. +-class CONTENT_EXPORT StylusHandwritingControllerWin { +- public: +- // Callback invoked in response to the Shell Handwriting API +- // ITfHandwritingSink::FocusHandwritingTarget method. +- using OnFocusHandwritingTargetCallback = +- base::RepeatingCallback; +- +- // Sets `g_thread_manager_instance_for_testing` using the provided mocked +- // thread manager instance, initializes the controller instance. Resets the +- // state upon exiting the scope (e.g., on the test fixture tear down). +- [[nodiscard]] static base::ScopedClosureRunner InitializeForTesting( +- ITfThreadMgr* thread_manager); +- +- // Returns true if Shell Handwriting API is available and the bindings +- // have been successfully set up. +- static bool IsHandwritingAPIAvailable(); +- +- // Checks if we're on a build which supports handwriting. Needed to work +- // around crbug.com/372506009. +- static bool StylusHandwritingSupportedOnBuild(); +- +- // Initializes the controller singleton instance. +- static void Initialize(); +- +- // Gets the controller instance if it was successfully initialized. +- // Nullptr otherwise. +- static StylusHandwritingControllerWin* GetInstance(); +- +- static Microsoft::WRL::ComPtr GetThreadManager(); +- +- StylusHandwritingControllerWin(const StylusHandwritingControllerWin&) = +- delete; +- StylusHandwritingControllerWin& operator=( +- const StylusHandwritingControllerWin&) = delete; +- virtual ~StylusHandwritingControllerWin(); +- +- // Returns the Handwriting Callback Sink Com pointer for testing. +- Microsoft::WRL::ComPtr +- GetCallbackSinkForTesting() const; +- +- // Used for testing instance initialization on builds that support handwriting +- // without having to deal with the hassel of mocking handwriting APIs or the +- // ThreadManager. +- static bool BindInterfacesCalledForTesting(); +- +- // Notify the Shell Handwriting API about the intent to write. At this point, +- // we delegate the input processing to the API which starts inking. After +- // intent is confirmed, the API will request that focus is updated by calling +- // ITfHandwritingSink::FocusHandwritingTarget. +- void OnStartStylusWriting( +- OnFocusHandwritingTargetCallback callback, +- const ui::StylusHandwritingPropertiesWin& properties, +- ui::TextInputClient& text_input_client); +- +- // Signal the Handwriting API whether focus has been updated successfully and +- // may begin committing edits or collect character bounds for evaluating +- // gesture recognition using TSF/IME APIs. +- void OnFocusHandled(ui::TextInputClient& text_input_client); +- +- // Signal the Handwriting API that focus was not updated successfully and must +- // cancel the inking session. +- void OnFocusFailed(ui::TextInputClient& text_input_client); +- +- private: +- friend class base::NoDestructor; +- +- // Binds interfaces and sets the global g_instance if the initialization is +- // successful. +- StylusHandwritingControllerWin(); +- +- // Binds required API interfaces if available. +- void BindInterfaces(); +- +- Microsoft::WRL::ComPtr +- handwriting_callback_sink_; +- Microsoft::WRL::ComPtr<::ITfHandwriting> handwriting_; +- // Stores the current text input client where handwriting was initiated. Used +- // to filter out calls that come from other clients, e.g., when the focused +- // window changes after the stylus writing has started. +- base::WeakPtr current_text_input_client_; +-}; +- +-} // namespace content +- +-#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_STYLUS_HANDWRITING_CONTROLLER_WIN_H_ ++// Copyright 2024 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_STYLUS_HANDWRITING_CONTROLLER_WIN_H_ ++#define CONTENT_BROWSER_RENDERER_HOST_INPUT_STYLUS_HANDWRITING_CONTROLLER_WIN_H_ ++ ++#if defined(COMPILER_MSVC) ++#include ++#endif ++#include ++#include ++#include ++#include ++ ++#include "base/functional/callback_forward.h" ++#include "base/memory/weak_ptr.h" ++#include "base/no_destructor.h" ++#include "content/common/content_export.h" ++ ++namespace base { ++class ScopedClosureRunner; ++} ++ ++namespace gfx { ++class Rect; ++class Size; ++} // namespace gfx ++ ++namespace ui { ++struct StylusHandwritingPropertiesWin; ++class TextInputClient; ++} // namespace ui ++ ++namespace content { ++ ++class StylusHandwritingCallbackSinkWin; ++ ++// Encapsulates the Shell Handwriting API. Receives signals from the application ++// to notify the Shell Handwriting API of relevant interactions, and forwards ++// information back to the renderer process to perform hit testing and focus ++// events. ++class CONTENT_EXPORT StylusHandwritingControllerWin { ++ public: ++ // Callback invoked in response to the Shell Handwriting API ++ // ITfHandwritingSink::FocusHandwritingTarget method. ++ using OnFocusHandwritingTargetCallback = ++ base::RepeatingCallback; ++ ++ // Sets `g_thread_manager_instance_for_testing` using the provided mocked ++ // thread manager instance, initializes the controller instance. Resets the ++ // state upon exiting the scope (e.g., on the test fixture tear down). ++ [[nodiscard]] static base::ScopedClosureRunner InitializeForTesting( ++ ITfThreadMgr* thread_manager); ++ ++ // Returns true if Shell Handwriting API is available and the bindings ++ // have been successfully set up. ++ static bool IsHandwritingAPIAvailable(); ++ ++ // Checks if we're on a build which supports handwriting. Needed to work ++ // around crbug.com/372506009. ++ static bool StylusHandwritingSupportedOnBuild(); ++ ++ // Initializes the controller singleton instance. ++ static void Initialize(); ++ ++ // Gets the controller instance if it was successfully initialized. ++ // Nullptr otherwise. ++ static StylusHandwritingControllerWin* GetInstance(); ++ ++ static Microsoft::WRL::ComPtr GetThreadManager(); ++ ++ StylusHandwritingControllerWin(const StylusHandwritingControllerWin&) = ++ delete; ++ StylusHandwritingControllerWin& operator=( ++ const StylusHandwritingControllerWin&) = delete; ++ virtual ~StylusHandwritingControllerWin(); ++ ++ // Returns the Handwriting Callback Sink Com pointer for testing. ++ Microsoft::WRL::ComPtr ++ GetCallbackSinkForTesting() const; ++ ++ // Used for testing instance initialization on builds that support handwriting ++ // without having to deal with the hassel of mocking handwriting APIs or the ++ // ThreadManager. ++ static bool BindInterfacesCalledForTesting(); ++ ++ // Notify the Shell Handwriting API about the intent to write. At this point, ++ // we delegate the input processing to the API which starts inking. After ++ // intent is confirmed, the API will request that focus is updated by calling ++ // ITfHandwritingSink::FocusHandwritingTarget. ++ void OnStartStylusWriting( ++ OnFocusHandwritingTargetCallback callback, ++ const ui::StylusHandwritingPropertiesWin& properties, ++ ui::TextInputClient& text_input_client); ++ ++ // Signal the Handwriting API whether focus has been updated successfully and ++ // may begin committing edits or collect character bounds for evaluating ++ // gesture recognition using TSF/IME APIs. ++ void OnFocusHandled(ui::TextInputClient& text_input_client); ++ ++ // Signal the Handwriting API that focus was not updated successfully and must ++ // cancel the inking session. ++ void OnFocusFailed(ui::TextInputClient& text_input_client); ++ ++ private: ++ friend class base::NoDestructor; ++ ++ // Binds interfaces and sets the global g_instance if the initialization is ++ // successful. ++ StylusHandwritingControllerWin(); ++ ++ // Binds required API interfaces if available. ++ void BindInterfaces(); ++ ++ Microsoft::WRL::ComPtr ++ handwriting_callback_sink_; ++ Microsoft::WRL::ComPtr<::ITfHandwriting> handwriting_; ++ // Stores the current text input client where handwriting was initiated. Used ++ // to filter out calls that come from other clients, e.g., when the focused ++ // window changes after the stylus writing has started. ++ base::WeakPtr current_text_input_client_; ++}; ++ ++} // namespace content ++ ++#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_STYLUS_HANDWRITING_CONTROLLER_WIN_H_ +diff --git a/src/3rdparty/chromium/content/browser/tracing/traces_internals/traces_internals_handler.cc b/src/3rdparty/chromium/content/browser/tracing/traces_internals/traces_internals_handler.cc +--- a/src/3rdparty/chromium/content/browser/tracing/traces_internals/traces_internals_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/browser/tracing/traces_internals/traces_internals_handler.cc 2026-06-16 10:06:29.415188100 +0200 +@@ -26,7 +26,7 @@ + #include "third_party/perfetto/protos/perfetto/config/trace_config.gen.h" + #include "third_party/snappy/src/snappy.h" + #include "third_party/webrtc_overrides/init_webrtc.h" +-#include "v8/include/v8-trace-categories.h" ++#include "v8-trace-categories.h" + + #if BUILDFLAG(IS_WIN) + #include "base/functional/bind.h" +diff --git a/src/3rdparty/chromium/content/browser/tracing/tracing_controller_impl.cc b/src/3rdparty/chromium/content/browser/tracing/tracing_controller_impl.cc +--- a/src/3rdparty/chromium/content/browser/tracing/tracing_controller_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/browser/tracing/tracing_controller_impl.cc 2026-06-16 10:06:29.419213200 +0200 +@@ -65,8 +65,8 @@ + #include "third_party/perfetto/protos/perfetto/trace/extension_descriptor.pbzero.h" + #include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h" + #include "third_party/webrtc_overrides/init_webrtc.h" +-#include "v8/include/v8-trace-categories.h" +-#include "v8/include/v8-version-string.h" ++#include "v8-trace-categories.h" ++#include "v8-version-string.h" + + #if BUILDFLAG(IS_CHROMEOS) + #include "chromeos/ash/components/system/statistics_provider.h" +diff --git a/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.cc b/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.cc +--- a/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.cc 2026-06-16 10:06:29.419213200 +0200 +@@ -5,8 +5,8 @@ + #include "content/public/renderer/chrome_object_extensions_utils.h" + + #include "gin/converter.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-object.h" ++#include "v8-context.h" ++#include "v8-object.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.h b/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.h +--- a/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/public/renderer/chrome_object_extensions_utils.h 2026-06-16 10:06:29.423236200 +0200 +@@ -6,7 +6,7 @@ + #define CONTENT_PUBLIC_RENDERER_CHROME_OBJECT_EXTENSIONS_UTILS_H_ + + #include "content/common/content_export.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + #include + +diff --git a/src/3rdparty/chromium/content/public/renderer/content_renderer_client.cc b/src/3rdparty/chromium/content/public/renderer/content_renderer_client.cc +--- a/src/3rdparty/chromium/content/public/renderer/content_renderer_client.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/public/renderer/content_renderer_client.cc 2026-06-16 10:06:29.425247400 +0200 +@@ -20,7 +20,7 @@ + #include "ui/gfx/icc_profile.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-initialization.h" ++#include "v8-initialization.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/public/renderer/content_renderer_client.h b/src/3rdparty/chromium/content/public/renderer/content_renderer_client.h +--- a/src/3rdparty/chromium/content/public/renderer/content_renderer_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/public/renderer/content_renderer_client.h 2026-06-16 10:06:29.425247400 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/public/web/web_navigation_policy.h" + #include "third_party/blink/public/web/web_navigation_type.h" + #include "ui/base/page_transition_types.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + #if !BUILDFLAG(IS_ANDROID) + #include "media/base/speech_recognition_client.h" +diff --git a/src/3rdparty/chromium/content/public/renderer/render_frame_observer.h b/src/3rdparty/chromium/content/public/renderer/render_frame_observer.h +--- a/src/3rdparty/chromium/content/public/renderer/render_frame_observer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/public/renderer/render_frame_observer.h 2026-06-16 10:06:29.427260300 +0200 +@@ -32,7 +32,7 @@ + #include "third_party/blink/public/web/web_performance_metrics_for_reporting.h" + #include "ui/accessibility/ax_mode.h" + #include "ui/base/page_transition_types.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class GURL; + +diff --git a/src/3rdparty/chromium/content/public/renderer/v8_value_converter.h b/src/3rdparty/chromium/content/public/renderer/v8_value_converter.h +--- a/src/3rdparty/chromium/content/public/renderer/v8_value_converter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/public/renderer/v8_value_converter.h 2026-06-16 10:06:29.429270900 +0200 +@@ -10,7 +10,7 @@ + #include "base/functional/callback.h" + #include "content/common/content_export.h" + #include "third_party/blink/public/platform/web_v8_value_converter.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace base { + class Value; +diff --git a/src/3rdparty/chromium/content/renderer/browser_exposed_renderer_interfaces.cc b/src/3rdparty/chromium/content/renderer/browser_exposed_renderer_interfaces.cc +--- a/src/3rdparty/chromium/content/renderer/browser_exposed_renderer_interfaces.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/browser_exposed_renderer_interfaces.cc 2026-06-16 10:06:29.431022000 +0200 +@@ -32,8 +32,8 @@ + #include "mojo/public/cpp/bindings/binder_map.h" + #include "mojo/public/cpp/bindings/pending_receiver.h" + #include "mojo/public/cpp/bindings/self_owned_receiver.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-statistics.h" ++#include "v8-isolate.h" ++#include "v8-statistics.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/dom_automation_controller.cc b/src/3rdparty/chromium/content/renderer/dom_automation_controller.cc +--- a/src/3rdparty/chromium/content/renderer/dom_automation_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/dom_automation_controller.cc 2026-06-16 10:06:29.433033500 +0200 +@@ -13,9 +13,9 @@ + #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/dom_automation_controller.h b/src/3rdparty/chromium/content/renderer/dom_automation_controller.h +--- a/src/3rdparty/chromium/content/renderer/dom_automation_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/dom_automation_controller.h 2026-06-16 10:06:29.435051600 +0200 +@@ -11,8 +11,8 @@ + #include "content/public/renderer/render_frame_observer.h" + #include "gin/wrappable.h" + #include "mojo/public/cpp/bindings/associated_remote.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/persistent.h" ++#include "cppgc/prefinalizer.h" + + namespace blink { + class WebLocalFrame; +diff --git a/src/3rdparty/chromium/content/renderer/gin_browsertest.cc b/src/3rdparty/chromium/content/renderer/gin_browsertest.cc +--- a/src/3rdparty/chromium/content/renderer/gin_browsertest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/gin_browsertest.cc 2026-06-16 10:06:29.435051600 +0200 +@@ -12,9 +12,9 @@ + #include "third_party/blink/public/common/switches.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_view.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/gpu_benchmarking_extension.cc b/src/3rdparty/chromium/content/renderer/gpu_benchmarking_extension.cc +--- a/src/3rdparty/chromium/content/renderer/gpu_benchmarking_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/gpu_benchmarking_extension.cc 2026-06-16 10:06:29.439078000 +0200 +@@ -72,15 +72,15 @@ + #include "ui/events/base_event_utils.h" + #include "ui/gfx/ca_layer_result.h" + #include "ui/gfx/geometry/size_f.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-persistent-handle.h" ++#include "v8-primitive.h" + + #if BUILDFLAG(IS_WIN) && !defined(NDEBUG) + // XpsObjectModel.h indirectly includes which is +diff --git a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.cc b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.cc +--- a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.cc 2026-06-16 10:06:29.441089800 +0200 +@@ -12,9 +12,9 @@ + #include "gin/function_template.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-local-handle.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.h b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.h +--- a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_object.h 2026-06-16 10:06:29.443112600 +0200 +@@ -15,7 +15,7 @@ + #include "gin/object_template_builder.h" + #include "gin/wrappable.h" + #include "mojo/public/cpp/bindings/remote.h" +-#include "v8/include/v8-util.h" ++#include "v8-util.h" + + namespace blink { + class WebLocalFrame; +diff --git a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter.cc b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter.cc +--- a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter.cc 2026-06-16 10:06:29.445123200 +0200 +@@ -22,7 +22,7 @@ + #include "content/common/android/gin_java_bridge_value.h" + #include "content/renderer/java/gin_java_bridge_object.h" + #include "gin/array_buffer.h" +-#include "v8/include/v8-typed-array.h" ++#include "v8-typed-array.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter_unittest.cc b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter_unittest.cc +--- a/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/java/gin_java_bridge_value_converter_unittest.cc 2026-06-16 10:06:29.445123200 +0200 +@@ -13,14 +13,14 @@ + #include "base/strings/stringprintf.h" + #include "content/common/android/gin_java_bridge_value.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" +-#include "v8/include/v8-template.h" ++#include "v8-array-buffer.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-microtask-queue.h" ++#include "v8-persistent-handle.h" ++#include "v8-primitive.h" ++#include "v8-script.h" ++#include "v8-template.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/java/gin_java_function_invocation_helper.cc b/src/3rdparty/chromium/content/renderer/java/gin_java_function_invocation_helper.cc +--- a/src/3rdparty/chromium/content/renderer/java/gin_java_function_invocation_helper.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/java/gin_java_function_invocation_helper.cc 2026-06-16 10:06:29.446884300 +0200 +@@ -13,7 +13,7 @@ + #include "content/public/renderer/v8_value_converter.h" + #include "content/renderer/java/gin_java_bridge_object.h" + #include "content/renderer/java/gin_java_bridge_value_converter.h" +-#include "v8/include/v8-exception.h" ++#include "v8-exception.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/render_frame_impl.cc b/src/3rdparty/chromium/content/renderer/render_frame_impl.cc +--- a/src/3rdparty/chromium/content/renderer/render_frame_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/render_frame_impl.cc 2026-06-16 10:06:29.452928700 +0200 +@@ -243,9 +243,9 @@ + #include "url/origin.h" + #include "url/url_constants.h" + #include "url/url_util.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-microtask-queue.h" + + #if BUILDFLAG(IS_ANDROID) + #include +diff --git a/src/3rdparty/chromium/content/renderer/render_frame_impl.h b/src/3rdparty/chromium/content/renderer/render_frame_impl.h +--- a/src/3rdparty/chromium/content/renderer/render_frame_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/render_frame_impl.h 2026-06-16 10:06:29.454936500 +0200 +@@ -126,7 +126,7 @@ + #include "ui/gfx/range/range.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + #if BUILDFLAG(IS_ANDROID) + #include "content/common/gin_java_bridge.mojom.h" +diff --git a/src/3rdparty/chromium/content/renderer/render_process_impl.cc b/src/3rdparty/chromium/content/renderer/render_process_impl.cc +--- a/src/3rdparty/chromium/content/renderer/render_process_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/render_process_impl.cc 2026-06-16 10:06:29.458958400 +0200 +@@ -47,7 +47,7 @@ + #include "third_party/blink/public/platform/web_runtime_features.h" + #include "third_party/blink/public/web/blink.h" + #include "third_party/blink/public/web/web_frame.h" +-#include "v8/include/v8-initialization.h" ++#include "v8-initialization.h" + + #if BUILDFLAG(IS_WIN) + #include "base/win/win_util.h" +diff --git a/src/3rdparty/chromium/content/renderer/render_thread_impl.cc b/src/3rdparty/chromium/content/renderer/render_thread_impl.cc +--- a/src/3rdparty/chromium/content/renderer/render_thread_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/render_thread_impl.cc 2026-06-16 10:06:29.462722500 +0200 +@@ -167,7 +167,7 @@ + #include "ui/base/ui_base_switches.h" + #include "ui/base/ui_base_switches_util.h" + #include "ui/display/display_switches.h" +-#include "v8/include/v8-extension.h" ++#include "v8-extension.h" + + #if BUILDFLAG(IS_ANDROID) + #include +diff --git a/src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_win.cc b/src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_win.cc +--- a/src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_win.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_win.cc 2026-06-16 10:06:04.108095300 +0200 +@@ -1,94 +1,98 @@ +-// Copyright 2012 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#include "content/renderer/renderer_main_platform_delegate.h" +- +-#include +- +-#include +-#include +- +-#include "base/command_line.h" +-#include "base/metrics/histogram_functions.h" +-#include "base/win/win_util.h" +-#include "base/win/windows_version.h" +-#include "content/child/dwrite_font_proxy/dwrite_font_proxy_init_impl_win.h" +-#include "content/child/font_warmup_win.h" +-#include "content/public/common/content_features.h" +-#include "content/public/common/content_switches.h" +-#include "content/public/renderer/render_thread.h" +-#include "content/renderer/render_thread_impl.h" +-#include "sandbox/policy/features.h" +-#include "sandbox/policy/switches.h" +-#include "sandbox/policy/win/sandbox_warmup.h" +-#include "sandbox/win/src/sandbox.h" +-#include "third_party/blink/public/platform/web_runtime_features.h" +-#include "third_party/blink/public/web/win/web_font_rendering.h" +-#include "third_party/icu/source/i18n/unicode/timezone.h" +-#include "third_party/skia/include/ports/SkTypeface_win.h" +-#include "ui/display/win/dpi.h" +-#include "ui/gfx/win/direct_write.h" +- +-namespace content { +- +-RendererMainPlatformDelegate::RendererMainPlatformDelegate( +- const MainFunctionParams& parameters) +- : parameters_(parameters) {} +- +-RendererMainPlatformDelegate::~RendererMainPlatformDelegate() { +-} +- +-void RendererMainPlatformDelegate::PlatformInitialize() { +- const base::CommandLine& command_line = *parameters_->command_line; +- +- // Be mindful of what resources you acquire here. They can be used by +- // malicious code if the renderer gets compromised. +- bool no_sandbox = +- command_line.HasSwitch(sandbox::policy::switches::kNoSandbox); +- +- if (!no_sandbox) { +- // ICU DateFormat class (used in base/time_format.cc) needs to get the +- // Olson timezone ID by accessing the registry keys under +- // HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones. +- // After TimeZone::createDefault is called once here, the timezone ID is +- // cached and there's no more need to access the registry. If the sandbox +- // is disabled, we don't have to make this dummy call. +- std::unique_ptr zone(icu::TimeZone::createDefault()); +- } +- +- // Do not initialize DWriteFactory if the feature flag is enabled +- // since this will conflict with the experimental font manager. +- // Fallback to only DWrite if running in single process mode, since there can +- // only be a single font manager and the browser process always has a DWrite +- // one. +- if (!base::FeatureList::IsEnabled(features::kFontDataServiceAllWebContents) || +- command_line.HasSwitch(switches::kSingleProcess)) { +- InitializeDWriteFontProxy(); +- } +-} +- +-void RendererMainPlatformDelegate::PlatformUninitialize() { +- UninitializeDWriteFontProxy(); +-} +- +-bool RendererMainPlatformDelegate::EnableSandbox() { +- sandbox::TargetServices* target_services = +- parameters_->sandbox_info->target_services; +- +- if (target_services) { +- sandbox::policy::WarmupRandomnessInfrastructure(); +- +- if (base::FeatureList::IsEnabled( +- sandbox::policy::features::kEnableCsrssLockdown)) { +- bool hooked = sandbox::policy::HookDwriteGetUserDefaultLCID(); +- base::UmaHistogramBoolean("Process.Sandbox.DwriteHookStatus", hooked); +- } +- +- target_services->LowerToken(); +- return true; +- } +- return false; +-} +- +-} // namespace content ++// Copyright 2012 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "content/renderer/renderer_main_platform_delegate.h" ++ ++#include ++ ++#include ++#include ++ ++#include "base/command_line.h" ++#include "base/metrics/histogram_functions.h" ++#include "base/win/win_util.h" ++#include "base/win/windows_version.h" ++#include "content/child/dwrite_font_proxy/dwrite_font_proxy_init_impl_win.h" ++#include "content/child/font_warmup_win.h" ++#include "content/public/common/content_features.h" ++#include "content/public/common/content_switches.h" ++#include "content/public/renderer/render_thread.h" ++#include "content/renderer/render_thread_impl.h" ++#include "sandbox/policy/features.h" ++#include "sandbox/policy/switches.h" ++#include "sandbox/policy/win/sandbox_warmup.h" ++#include "sandbox/win/src/sandbox.h" ++#include "third_party/blink/public/platform/web_runtime_features.h" ++#include "third_party/blink/public/web/win/web_font_rendering.h" ++#include "third_party/icu/source/i18n/unicode/timezone.h" ++#include "third_party/skia/include/ports/SkTypeface_win.h" ++#include "ui/display/win/dpi.h" ++#include "ui/gfx/win/direct_write.h" ++ ++namespace content { ++ ++RendererMainPlatformDelegate::RendererMainPlatformDelegate( ++ const MainFunctionParams& parameters) ++ : parameters_(parameters) {} ++ ++RendererMainPlatformDelegate::~RendererMainPlatformDelegate() { ++} ++ ++void RendererMainPlatformDelegate::PlatformInitialize() { ++ const base::CommandLine& command_line = *parameters_->command_line; ++ ++ // Be mindful of what resources you acquire here. They can be used by ++ // malicious code if the renderer gets compromised. ++ bool no_sandbox = ++ command_line.HasSwitch(sandbox::policy::switches::kNoSandbox); ++ ++ if (!no_sandbox) { ++ // ICU DateFormat class (used in base/time_format.cc) needs to get the ++ // Olson timezone ID by accessing the registry keys under ++ // HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones. ++ // After TimeZone::createDefault is called once here, the timezone ID is ++ // cached and there's no more need to access the registry. If the sandbox ++ // is disabled, we don't have to make this dummy call. ++ std::unique_ptr zone(icu::TimeZone::createDefault()); ++ } ++ ++#if defined(COMPILER_MSVC) ++ // Do not initialize DWriteFactory if the feature flag is enabled ++ // since this will conflict with the experimental font manager. ++ // Fallback to only DWrite if running in single process mode, since there can ++ // only be a single font manager and the browser process always has a DWrite ++ // one. ++ if (!base::FeatureList::IsEnabled(features::kFontDataServiceAllWebContents) || ++ command_line.HasSwitch(switches::kSingleProcess)) { ++ InitializeDWriteFontProxy(); ++ } ++#endif ++} ++ ++void RendererMainPlatformDelegate::PlatformUninitialize() { ++#if defined(COMPILER_MSVC) ++ UninitializeDWriteFontProxy(); ++#endif ++} ++ ++bool RendererMainPlatformDelegate::EnableSandbox() { ++ sandbox::TargetServices* target_services = ++ parameters_->sandbox_info->target_services; ++ ++ if (target_services) { ++ sandbox::policy::WarmupRandomnessInfrastructure(); ++ ++ if (base::FeatureList::IsEnabled( ++ sandbox::policy::features::kEnableCsrssLockdown)) { ++ bool hooked = sandbox::policy::HookDwriteGetUserDefaultLCID(); ++ base::UmaHistogramBoolean("Process.Sandbox.DwriteHookStatus", hooked); ++ } ++ ++ target_services->LowerToken(); ++ return true; ++ } ++ return false; ++} ++ ++} // namespace content +diff --git a/src/3rdparty/chromium/content/renderer/service_worker/service_worker_context_client.h b/src/3rdparty/chromium/content/renderer/service_worker/service_worker_context_client.h +--- a/src/3rdparty/chromium/content/renderer/service_worker/service_worker_context_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/service_worker/service_worker_context_client.h 2026-06-16 10:06:29.466749500 +0200 +@@ -45,7 +45,7 @@ + #include "third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h" + #include "third_party/blink/public/web/modules/service_worker/web_service_worker_context_proxy.h" + #include "third_party/blink/public/web/web_embedded_worker.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace base { + class SequencedTaskRunner; +diff --git a/src/3rdparty/chromium/content/renderer/skia_benchmarking_extension.cc b/src/3rdparty/chromium/content/renderer/skia_benchmarking_extension.cc +--- a/src/3rdparty/chromium/content/renderer/skia_benchmarking_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/skia_benchmarking_extension.cc 2026-06-16 10:06:29.466749500 +0200 +@@ -38,14 +38,14 @@ + #include "ui/gfx/codec/png_codec.h" + #include "ui/gfx/geometry/rect_conversions.h" + #include "ui/gfx/geometry/skia_conversions.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/stats_collection_controller.cc b/src/3rdparty/chromium/content/renderer/stats_collection_controller.cc +--- a/src/3rdparty/chromium/content/renderer/stats_collection_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/stats_collection_controller.cc 2026-06-16 10:06:29.468761400 +0200 +@@ -16,9 +16,9 @@ + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_view.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/v8_value_converter_impl.cc b/src/3rdparty/chromium/content/renderer/v8_value_converter_impl.cc +--- a/src/3rdparty/chromium/content/renderer/v8_value_converter_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/v8_value_converter_impl.cc 2026-06-16 10:06:29.470783700 +0200 +@@ -21,15 +21,15 @@ + #include "base/logging.h" + #include "base/memory/raw_ptr.h" + #include "base/values.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-date.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-array-buffer.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-date.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/v8_value_converter_impl_unittest.cc b/src/3rdparty/chromium/content/renderer/v8_value_converter_impl_unittest.cc +--- a/src/3rdparty/chromium/content/renderer/v8_value_converter_impl_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/v8_value_converter_impl_unittest.cc 2026-06-16 10:06:29.472795400 +0200 +@@ -18,20 +18,20 @@ + #include "base/values.h" + #include "gin/public/isolate_holder.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-date.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-regexp.h" +-#include "v8/include/v8-script.h" +-#include "v8/include/v8-template.h" +-#include "v8/include/v8-typed-array.h" ++#include "v8-array-buffer.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-date.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-microtask-queue.h" ++#include "v8-object.h" ++#include "v8-persistent-handle.h" ++#include "v8-primitive.h" ++#include "v8-regexp.h" ++#include "v8-script.h" ++#include "v8-template.h" ++#include "v8-typed-array.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/renderer/web_ui_extension.cc b/src/3rdparty/chromium/content/renderer/web_ui_extension.cc +--- a/src/3rdparty/chromium/content/renderer/web_ui_extension.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/renderer/web_ui_extension.cc 2026-06-16 10:06:29.474808000 +0200 +@@ -23,10 +23,10 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_view.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_agent.h b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_agent.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_agent.h 2026-06-16 10:06:29.476819600 +0200 +@@ -19,7 +19,7 @@ + #include "mojo/public/cpp/bindings/pending_receiver.h" + #include "mojo/public/cpp/bindings/unique_associated_receiver_set.h" + #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_session.h b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_session.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_session.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_devtools_session.h 2026-06-16 10:06:29.478579900 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" + #include "third_party/inspector_protocol/crdtp/dispatch.h" + #include "third_party/inspector_protocol/crdtp/frontend_channel.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.cc 2026-06-16 10:06:29.480591800 +0200 +@@ -46,18 +46,18 @@ + #include "gin/public/isolate_holder.h" + #include "gin/v8_initializer.h" + #include "third_party/blink/public/common/features.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-inspector.h" +-#include "v8/include/v8-json.h" +-#include "v8/include/v8-message.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" +-#include "v8/include/v8-template.h" +-#include "v8/include/v8-value-serializer.h" +-#include "v8/include/v8-wasm.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-inspector.h" ++#include "v8-json.h" ++#include "v8-message.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-script.h" ++#include "v8-template.h" ++#include "v8-value-serializer.h" ++#include "v8-wasm.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.h b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper.h 2026-06-16 10:06:29.482603800 +0200 +@@ -28,9 +28,9 @@ + #include "mojo/public/cpp/bindings/pending_associated_receiver.h" + #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-isolate.h" ++#include "v8-persistent-handle.h" + + namespace v8 { + class UnboundScript; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_helper_unittest.cc 2026-06-16 10:06:29.484618100 +0200 +@@ -29,9 +29,9 @@ + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/public/common/interest_group/ad_display_size.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-wasm.h" ++#include "v8-context.h" ++#include "v8-forward.h" ++#include "v8-wasm.h" + + using testing::ElementsAre; + using testing::HasSubstr; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util.h b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util.h 2026-06-16 10:06:29.486630500 +0200 +@@ -11,7 +11,7 @@ + #include + + #include "content/common/content_export.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc 2026-06-16 10:06:29.488642800 +0200 +@@ -11,7 +11,7 @@ + + #include "testing/gmock/include/gmock/gmock-matchers.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + using testing::ElementsAre; + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.cc 2026-06-16 10:06:29.492675100 +0200 +@@ -11,13 +11,13 @@ + #include "base/memory/raw_ptr.h" + #include "content/common/content_export.h" + #include "content/services/auction_worklet/auction_v8_helper.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-persistent-handle.h" ++#include "v8-value.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.h b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger.h 2026-06-16 10:06:29.492675100 +0200 +@@ -9,9 +9,9 @@ + + #include "base/memory/raw_ptr.h" + #include "content/common/content_export.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-persistent-handle.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_v8_logger_unittest.cc 2026-06-16 10:06:29.494425800 +0200 +@@ -21,14 +21,14 @@ + #include "gin/converter.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-maybe.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-maybe.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util.cc 2026-06-16 10:06:29.496433400 +0200 +@@ -10,7 +10,7 @@ + #include "gin/dictionary.h" + #include "third_party/blink/public/common/interest_group/ad_display_size.h" + #include "third_party/blink/public/common/interest_group/ad_display_size_utils.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/auction_worklet_util_unittest.cc 2026-06-16 10:06:29.498442500 +0200 +@@ -15,8 +15,8 @@ + #include "gin/dictionary.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/public/common/interest_group/ad_display_size.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-isolate.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.cc b/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.cc 2026-06-16 10:06:29.500450600 +0200 +@@ -19,10 +19,10 @@ + #include "third_party/blink/public/common/features.h" + #include "third_party/blink/public/common/interest_group/interest_group.h" + #include "third_party/blink/public/mojom/interest_group/interest_group_types.mojom.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-json.h" +-#include "v8/include/v8-template.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-json.h" ++#include "v8-template.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.h b/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/bidder_lazy_filler.h 2026-06-16 10:06:29.500450600 +0200 +@@ -18,7 +18,7 @@ + #include "content/services/auction_worklet/public/mojom/bidder_worklet.mojom-forward.h" + #include "third_party/blink/public/common/interest_group/interest_group.h" + #include "third_party/blink/public/mojom/interest_group/interest_group_types.mojom-forward.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class GURL; + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.cc b/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.cc 2026-06-16 10:06:29.504465900 +0200 +@@ -90,14 +90,14 @@ + #include "url/gurl.h" + #include "url/origin.h" + #include "v8-statistics.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" +-#include "v8/include/v8-wasm.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-forward.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" ++#include "v8-wasm.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.h b/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/bidder_worklet.h 2026-06-16 10:06:29.506476400 +0200 +@@ -55,7 +55,7 @@ + #include "third_party/blink/public/mojom/interest_group/interest_group_types.mojom-forward.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-persistent-handle.h" + + namespace v8 { + class UnboundScript; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.cc b/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.cc 2026-06-16 10:06:29.508488700 +0200 +@@ -24,7 +24,7 @@ + #include "content/services/auction_worklet/set_priority_signals_override_bindings.h" + #include "content/services/auction_worklet/shared_storage_bindings.h" + #include "content/services/auction_worklet/text_conversion_helpers.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.h b/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/context_recycler.h 2026-06-16 10:06:29.508488700 +0200 +@@ -14,8 +14,8 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/lazy_filler.h" + #include "content/services/auction_worklet/public/mojom/auction_shared_storage_host.mojom-forward.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" ++#include "v8-context.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/context_recycler_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/context_recycler_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/context_recycler_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/context_recycler_unittest.cc 2026-06-16 10:06:29.514270100 +0200 +@@ -49,8 +49,8 @@ + #include "third_party/blink/public/common/interest_group/interest_group.h" + #include "third_party/blink/public/mojom/aggregation_service/aggregatable_report.mojom.h" + #include "third_party/blink/public/mojom/private_aggregation/private_aggregation_host.mojom-forward.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-primitive.h" + + using testing::ElementsAre; + using testing::Pair; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.cc b/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.cc 2026-06-16 10:06:29.518299100 +0200 +@@ -12,7 +12,7 @@ + #include "content/services/auction_worklet/lazy_filler.h" + #include "gin/converter.h" + #include "url/gurl.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.h b/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/deprecated_url_lazy_filler.h 2026-06-16 10:06:29.520323000 +0200 +@@ -9,7 +9,7 @@ + + #include "base/memory/raw_ptr.h" + #include "content/services/auction_worklet/lazy_filler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class GURL; + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.cc b/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.cc 2026-06-16 10:06:29.522335100 +0200 +@@ -27,10 +27,10 @@ + #include "net/http/http_response_headers.h" + #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.h b/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester.h 2026-06-16 10:06:29.524350900 +0200 +@@ -22,7 +22,7 @@ + #include "content/common/content_export.h" + #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace net { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/direct_from_seller_signals_requester_unittest.cc 2026-06-16 10:06:29.526103400 +0200 +@@ -20,9 +20,9 @@ + #include "services/network/test/test_url_loader_factory.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.cc 2026-06-16 10:06:29.528116200 +0200 +@@ -20,11 +20,11 @@ + #include "third_party/blink/public/common/features.h" + #include "url/gurl.h" + #include "url/url_constants.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-template.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-template.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/for_debugging_only_bindings.h 2026-06-16 10:06:29.530128700 +0200 +@@ -13,7 +13,7 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.cc b/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.cc 2026-06-16 10:06:29.532141500 +0200 +@@ -9,11 +9,11 @@ + #include "base/memory/raw_ptr.h" + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "gin/converter.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.h b/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/lazy_filler.h 2026-06-16 10:06:29.534157000 +0200 +@@ -8,10 +8,10 @@ + #include + + #include "base/memory/raw_ptr.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-object.h" ++#include "v8-external.h" ++#include "v8-forward.h" ++#include "v8-function-callback.h" ++#include "v8-object.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.cc 2026-06-16 10:06:29.536170800 +0200 +@@ -32,15 +32,15 @@ + #include "third_party/blink/public/common/features_generated.h" + #include "third_party/blink/public/mojom/aggregation_service/aggregatable_report.mojom.h" + #include "third_party/blink/public/mojom/private_aggregation/private_aggregation_host.mojom.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/private_aggregation_bindings.h 2026-06-16 10:06:29.538196000 +0200 +@@ -12,7 +12,7 @@ + #include "content/services/auction_worklet/context_recycler.h" + #include "content/services/auction_worklet/public/mojom/private_aggregation_request.mojom-forward.h" + #include "third_party/blink/public/mojom/private_aggregation/private_aggregation_host.mojom.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.cc 2026-06-16 10:06:29.538196000 +0200 +@@ -7,9 +7,9 @@ + #include "base/functional/callback.h" + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/webidl_compat.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/private_model_training_bindings.h 2026-06-16 10:06:29.540207700 +0200 +@@ -11,7 +11,7 @@ + #include "base/memory/raw_ptr.h" + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.cc 2026-06-16 10:06:29.541962800 +0200 +@@ -19,11 +19,11 @@ + #include "content/services/auction_worklet/public/mojom/real_time_reporting.mojom.h" + #include "content/services/auction_worklet/webidl_compat.h" + #include "third_party/blink/public/common/features.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-template.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-template.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/real_time_reporting_bindings.h 2026-06-16 10:06:29.543970300 +0200 +@@ -13,7 +13,7 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "content/services/auction_worklet/public/mojom/real_time_reporting.mojom.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.cc 2026-06-16 10:06:29.543970300 +0200 +@@ -21,11 +21,11 @@ + #include "third_party/blink/public/common/fenced_frame/fenced_frame_utils.h" + #include "url/gurl.h" + #include "url/url_constants.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_beacon_bindings.h 2026-06-16 10:06:29.545977400 +0200 +@@ -12,7 +12,7 @@ + #include "content/services/auction_worklet/auction_v8_logger.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.cc 2026-06-16 10:06:29.547984300 +0200 +@@ -13,10 +13,10 @@ + #include "content/services/auction_worklet/public/mojom/bidder_worklet.mojom.h" + #include "content/services/auction_worklet/webidl_compat.h" + #include "url/url_util.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/register_ad_macro_bindings.h 2026-06-16 10:06:29.549994000 +0200 +@@ -10,7 +10,7 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "content/services/auction_worklet/public/mojom/bidder_worklet.mojom.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.cc 2026-06-16 10:06:29.549994000 +0200 +@@ -19,10 +19,10 @@ + #include "url/gurl.h" + #include "url/url_constants.h" + #include "v8-value.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/report_bindings.h 2026-06-16 10:06:29.552002900 +0200 +@@ -12,7 +12,7 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.cc b/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.cc 2026-06-16 10:06:29.554011000 +0200 +@@ -7,8 +7,8 @@ + #include + + #include "content/services/auction_worklet/auction_v8_helper.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-primitive.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.h b/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/report_win_browser_signals_lazy_filler.h 2026-06-16 10:06:29.556019500 +0200 +@@ -11,7 +11,7 @@ + #include "content/common/content_export.h" + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.cc b/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.cc 2026-06-16 10:06:29.559775200 +0200 +@@ -17,11 +17,11 @@ + #include "third_party/blink/public/common/features.h" + #include "third_party/blink/public/common/interest_group/ad_display_size_utils.h" + #include "third_party/blink/public/common/interest_group/auction_config.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-json.h" +-#include "v8/include/v8-template.h" ++#include "v8-container.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-json.h" ++#include "v8-template.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.h b/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/seller_lazy_filler.h 2026-06-16 10:06:29.561783100 +0200 +@@ -13,7 +13,7 @@ + #include "content/services/auction_worklet/context_recycler.h" + #include "content/services/auction_worklet/public/mojom/seller_worklet.mojom.h" + #include "third_party/blink/public/common/interest_group/auction_config.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.cc b/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.cc 2026-06-16 10:06:29.565799500 +0200 +@@ -70,10 +70,10 @@ + #include "third_party/blink/public/mojom/interest_group/interest_group_types.mojom.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-forward.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.h b/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/seller_worklet.h 2026-06-16 10:06:29.569835100 +0200 +@@ -45,7 +45,7 @@ + #include "third_party/blink/public/mojom/interest_group/interest_group_types.mojom-forward.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-persistent-handle.h" + + namespace v8 { + class UnboundScript; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.cc 2026-06-16 10:06:29.571850600 +0200 +@@ -30,10 +30,10 @@ + #include "third_party/blink/public/common/interest_group/ad_display_size_utils.h" + #include "url/gurl.h" + #include "url/url_constants.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/set_bid_bindings.h 2026-06-16 10:06:29.575614000 +0200 +@@ -20,7 +20,7 @@ + #include "content/services/auction_worklet/webidl_compat.h" + #include "third_party/blink/public/common/interest_group/ad_auction_currencies.h" + #include "third_party/blink/public/common/interest_group/interest_group.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.cc 2026-06-16 10:06:29.577626300 +0200 +@@ -14,10 +14,10 @@ + #include "content/services/auction_worklet/webidl_compat.h" + #include "url/gurl.h" + #include "url/url_constants.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_bindings.h 2026-06-16 10:06:29.577626300 +0200 +@@ -11,7 +11,7 @@ + #include "base/memory/raw_ptr.h" + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.cc 2026-06-16 10:06:29.579633900 +0200 +@@ -17,10 +17,10 @@ + #include "third_party/blink/public/common/interest_group/ad_auction_constants.h" + #include "url/gurl.h" + #include "url/url_constants.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/set_priority_signals_override_bindings.h 2026-06-16 10:06:29.581641500 +0200 +@@ -11,7 +11,7 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "content/services/auction_worklet/public/mojom/bidder_worklet.mojom.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.cc b/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.cc 2026-06-16 10:06:29.583649500 +0200 +@@ -21,14 +21,14 @@ + #include "services/network/public/cpp/shared_storage_utils.h" + #include "services/network/public/mojom/shared_storage.mojom.h" + #include "third_party/blink/public/common/features.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.h b/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/shared_storage_bindings.h 2026-06-16 10:06:29.585656600 +0200 +@@ -9,7 +9,7 @@ + #include "content/common/content_export.h" + #include "content/services/auction_worklet/context_recycler.h" + #include "content/services/auction_worklet/public/mojom/auction_shared_storage_host.mojom-forward.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.cc b/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.cc 2026-06-16 10:06:29.587668500 +0200 +@@ -9,12 +9,12 @@ + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "content/services/auction_worklet/public/cpp/auction_worklet_features.h" + #include "content/services/auction_worklet/webidl_compat.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-typed-array.h" ++#include "v8-array-buffer.h" ++#include "v8-exception.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-primitive.h" ++#include "v8-typed-array.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.h b/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/text_conversion_helpers.h 2026-06-16 10:06:29.591425400 +0200 +@@ -7,7 +7,7 @@ + + #include "content/common/content_export.h" + #include "content/services/auction_worklet/context_recycler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.cc 2026-06-16 10:06:29.593443100 +0200 +@@ -30,7 +30,7 @@ + #include "third_party/blink/public/common/features_generated.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.h b/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals.h 2026-06-16 10:06:29.597485100 +0200 +@@ -30,7 +30,7 @@ + #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc 2026-06-16 10:06:29.601508400 +0200 +@@ -37,8 +37,8 @@ + #include "third_party/blink/public/common/features_generated.h" + #include "third_party/zlib/google/compression_utils.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" ++#include "v8-context.h" ++#include "v8-forward.h" + + namespace auction_worklet { + namespace { +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.cc 2026-06-16 10:06:29.605272100 +0200 +@@ -35,10 +35,10 @@ + #include "net/base/parse_number.h" + #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-json.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-json.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.h b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals.h 2026-06-16 10:06:29.607282300 +0200 +@@ -28,7 +28,7 @@ + #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper.cc 2026-06-16 10:06:29.609294200 +0200 +@@ -37,7 +37,7 @@ + #include "content/services/auction_worklet/public/mojom/auction_worklet_service.mojom.h" + #include "third_party/zlib/google/compression_utils.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_helper_unittest.cc 2026-06-16 10:06:29.615341300 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/zlib/google/compression_utils.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + #if BUILDFLAG(IS_WIN) + #include +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager.cc 2026-06-16 10:06:29.617351800 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/zlib/google/compression_utils.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_kvv2_manager_unittest.cc 2026-06-16 10:06:29.621117200 +0200 +@@ -30,8 +30,8 @@ + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/zlib/google/compression_utils.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-value.h" + + namespace auction_worklet { + namespace { +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc 2026-06-16 10:06:29.627165700 +0200 +@@ -48,8 +48,8 @@ + #include "third_party/blink/public/common/features.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" ++#include "v8-context.h" ++#include "v8-forward.h" + + namespace auction_worklet { + namespace { +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/trusted_signals_unittest.cc 2026-06-16 10:06:29.631228200 +0200 +@@ -35,8 +35,8 @@ + #include "testing/gtest/include/gtest/gtest.h" + #include "url/gurl.h" + #include "url/origin.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" ++#include "v8-context.h" ++#include "v8-forward.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.cc b/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.cc 2026-06-16 10:06:29.635255200 +0200 +@@ -16,8 +16,8 @@ + #include "base/strings/utf_string_conversions.h" + #include "content/services/auction_worklet/auction_v8_helper.h" + #include "gin/converter.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-exception.h" ++#include "v8-primitive.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.h b/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat.h 2026-06-16 10:06:29.637007000 +0200 +@@ -17,8 +17,8 @@ + #include "base/strings/strcat.h" + #include "content/common/content_export.h" + #include "content/services/auction_worklet/auction_v8_helper.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace v8 { + class TryCatch; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/webidl_compat_unittest.cc 2026-06-16 10:06:29.641048300 +0200 +@@ -18,10 +18,10 @@ + #include "gin/converter.h" + #include "testing/gmock/include/gmock/gmock-matchers.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function.h" + + using testing::ElementsAre; + using testing::Pair; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.cc b/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.cc 2026-06-16 10:06:29.645091000 +0200 +@@ -24,9 +24,9 @@ + #include "url/gurl.h" + #include "url/origin.h" + #include "v8-script.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-wasm.h" ++#include "v8-context.h" ++#include "v8-forward.h" ++#include "v8-wasm.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.h b/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader.h 2026-06-16 10:06:29.647105900 +0200 +@@ -30,7 +30,7 @@ + #include "mojo/public/cpp/bindings/pending_remote.h" + #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" + #include "url/gurl.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-persistent-handle.h" + + namespace v8 { + class UnboundScript; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader_unittest.cc b/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader_unittest.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/worklet_loader_unittest.cc 2026-06-16 10:06:29.651148500 +0200 +@@ -28,8 +28,8 @@ + #include "testing/gmock/include/gmock/gmock-matchers.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-wasm.h" ++#include "v8-context.h" ++#include "v8-wasm.h" + + using testing::ElementsAre; + using testing::HasSubstr; +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.cc b/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.cc +--- a/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.cc 2026-06-16 10:06:29.652911500 +0200 +@@ -24,7 +24,7 @@ + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "url/gurl.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.h b/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.h +--- a/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/services/auction_worklet/worklet_v8_debug_test_util.h 2026-06-16 10:06:29.656936900 +0200 +@@ -19,7 +19,7 @@ + #include "base/thread_annotations.h" + #include "base/values.h" + #include "url/gurl.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace auction_worklet { + +diff --git a/src/3rdparty/chromium/content/shell/app/shell_main_delegate.cc b/src/3rdparty/chromium/content/shell/app/shell_main_delegate.cc +--- a/src/3rdparty/chromium/content/shell/app/shell_main_delegate.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/shell/app/shell_main_delegate.cc 2026-06-16 10:06:29.658951200 +0200 +@@ -78,7 +78,7 @@ + #endif + + #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) +-#include "v8/include/v8-wasm-trap-handler-posix.h" ++#include "v8-wasm-trap-handler-posix.h" + #endif + + #if BUILDFLAG(IS_IOS) +diff --git a/src/3rdparty/chromium/content/shell/renderer/shell_content_renderer_client.cc b/src/3rdparty/chromium/content/shell/renderer/shell_content_renderer_client.cc +--- a/src/3rdparty/chromium/content/shell/renderer/shell_content_renderer_client.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/shell/renderer/shell_content_renderer_client.cc 2026-06-16 10:06:29.662986800 +0200 +@@ -42,8 +42,8 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_testing_support.h" + #include "third_party/blink/public/web/web_view.h" +-#include "v8/include/v8-initialization.h" +-#include "v8/include/v8.h" ++#include "v8-initialization.h" ++#include "v8.h" + + #if BUILDFLAG(ENABLE_MOJO_CDM) + #include "base/feature_list.h" +@@ -54,7 +54,7 @@ + (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM64)) + #define ENABLE_WEB_ASSEMBLY_TRAP_HANDLER_LINUX + #include "base/debug/stack_trace.h" +-#include "v8/include/v8-wasm-trap-handler-posix.h" ++#include "v8-wasm-trap-handler-posix.h" + #endif + + namespace content { +diff --git a/src/3rdparty/chromium/content/utility/services.cc b/src/3rdparty/chromium/content/utility/services.cc +--- a/src/3rdparty/chromium/content/utility/services.cc 2026-06-16 10:01:56.871093200 +0200 ++++ b/src/3rdparty/chromium/content/utility/services.cc 2026-06-16 10:06:04.168045800 +0200 +@@ -73,7 +73,7 @@ + #include "device/vr/public/mojom/isolated_xr_service.mojom.h" // nogncheck + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "base/win/scoped_com_initializer.h" + #include "sandbox/win/src/sandbox.h" + extern sandbox::TargetServices* g_utility_target_services; +@@ -90,7 +90,7 @@ + #include "services/shape_detection/shape_detection_service.h" // nogncheck + #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) && BUILDFLAG(IS_CHROMEOS) + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "media/mojo/mojom/media_foundation_service.mojom.h" // nogncheck + #include "media/mojo/services/media_foundation_service_broker.h" // nogncheck + #endif // BUILDFLAG(IS_WIN) +@@ -134,7 +134,7 @@ + + namespace { + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void EnsureSandboxedWin() { + // |g_utility_target_services| can be null if --no-sandbox is specified. + if (g_utility_target_services) +@@ -154,7 +154,7 @@ + ~ContentCdmServiceClient() override = default; + + void EnsureSandboxed() override { +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + EnsureSandboxedWin(); + #endif + } +@@ -186,7 +186,7 @@ + /*create_system_monitor=*/true) {} + + private: +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + base::win::ScopedCOMInitializer com_initializer_{ + base::win::ScopedCOMInitializer::kMTA}; + #endif // BUILDFLAG(IS_WIN) +@@ -250,7 +250,7 @@ + } + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + auto* command_line = base::CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(switches::kAudioProcessHighPriority)) { + auto success = +@@ -297,7 +297,7 @@ + } + #endif // BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE) + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + auto RunMediaFoundationServiceBroker( + mojo::PendingReceiver + receiver) { +diff --git a/src/3rdparty/chromium/content/web_test/common/web_test_string_util.h b/src/3rdparty/chromium/content/web_test/common/web_test_string_util.h +--- a/src/3rdparty/chromium/content/web_test/common/web_test_string_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/common/web_test_string_util.h 2026-06-16 10:06:29.665002400 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/web/web_navigation_policy.h" + #include "ui/base/window_open_disposition.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + class GURL; + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.cc b/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.cc 2026-06-16 10:06:29.668786500 +0200 +@@ -17,8 +17,8 @@ + #include "third_party/blink/public/web/web_settings.h" + #include "third_party/blink/public/web/web_view.h" + #include "ui/accessibility/ax_mode.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.h b/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.h +--- a/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/accessibility_controller.h 2026-06-16 10:06:29.670800000 +0200 +@@ -15,7 +15,7 @@ + #include "content/web_test/renderer/web_ax_object_proxy.h" + #include "third_party/blink/public/web/web_ax_object.h" + #include "ui/accessibility/ax_event_intent.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/event_sender.cc b/src/3rdparty/chromium/content/web_test/renderer/event_sender.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/event_sender.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/event_sender.cc 2026-06-16 10:06:29.674837100 +0200 +@@ -63,10 +63,10 @@ + #include "ui/events/keycodes/dom/keycode_converter.h" + #include "ui/events/keycodes/keyboard_codes.h" + #include "ui/gfx/geometry/point_conversions.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "cppgc/prefinalizer.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + #if BUILDFLAG(IS_WIN) + #include +diff --git a/src/3rdparty/chromium/content/web_test/renderer/gamepad_controller.cc b/src/3rdparty/chromium/content/web_test/renderer/gamepad_controller.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/gamepad_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/gamepad_controller.cc 2026-06-16 10:06:29.678865900 +0200 +@@ -18,9 +18,9 @@ + #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + using device::Gamepad; + using device::Gamepads; +diff --git a/src/3rdparty/chromium/content/web_test/renderer/gc_controller.cc b/src/3rdparty/chromium/content/web_test/renderer/gc_controller.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/gc_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/gc_controller.cc 2026-06-16 10:06:29.680878800 +0200 +@@ -12,9 +12,9 @@ + #include "gin/object_template_builder.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/spell_check_client.h b/src/3rdparty/chromium/content/web_test/renderer/spell_check_client.h +--- a/src/3rdparty/chromium/content/web_test/renderer/spell_check_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/spell_check_client.h 2026-06-16 10:06:29.682891200 +0200 +@@ -14,7 +14,7 @@ + #include "content/web_test/renderer/web_test_spell_checker.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/web/web_text_check_client.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class WebLocalFrame; +diff --git a/src/3rdparty/chromium/content/web_test/renderer/test_runner.cc b/src/3rdparty/chromium/content/web_test/renderer/test_runner.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/test_runner.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/test_runner.cc 2026-06-16 10:06:29.686669500 +0200 +@@ -103,9 +103,9 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/geometry/skia_conversions.h" + #include "ui/gfx/test/icc_profiles.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "cppgc/prefinalizer.h" ++#include "v8-cppgc.h" + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) + #include "third_party/blink/public/platform/web_font_render_style.h" +diff --git a/src/3rdparty/chromium/content/web_test/renderer/test_runner.h b/src/3rdparty/chromium/content/web_test/renderer/test_runner.h +--- a/src/3rdparty/chromium/content/web_test/renderer/test_runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/test_runner.h 2026-06-16 10:06:29.688685200 +0200 +@@ -33,7 +33,7 @@ + #include "third_party/blink/public/platform/web_effective_connection_type.h" + #include "third_party/blink/public/platform/web_url.h" + #include "third_party/skia/include/core/SkBitmap.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + class SkBitmap; + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/text_input_controller.cc b/src/3rdparty/chromium/content/web_test/renderer/text_input_controller.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/text_input_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/text_input_controller.cc 2026-06-16 10:06:29.690713400 +0200 +@@ -21,9 +21,9 @@ + #include "third_party/skia/include/core/SkColor.h" + #include "ui/base/ime/ime_text_span.h" + #include "ui/events/base_event_utils.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.cc b/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.cc 2026-06-16 10:06:29.694737200 +0200 +@@ -27,9 +27,9 @@ + #include "ui/accessibility/ax_node_data.h" + #include "ui/gfx/geometry/rect_f.h" + #include "ui/gfx/geometry/transform.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8.h" + + namespace content { + +diff --git a/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.h b/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.h +--- a/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/web_ax_object_proxy.h 2026-06-16 10:06:29.696749000 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/public/web/web_ax_context.h" + #include "third_party/blink/public/web/web_ax_object.h" + #include "ui/accessibility/ax_event_intent.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class WebLocalFrame; +diff --git a/src/3rdparty/chromium/content/web_test/renderer/web_test_content_renderer_client.cc b/src/3rdparty/chromium/content/web_test/renderer/web_test_content_renderer_client.cc +--- a/src/3rdparty/chromium/content/web_test/renderer/web_test_content_renderer_client.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/content/web_test/renderer/web_test_content_renderer_client.cc 2026-06-16 10:06:29.698761200 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/public/web/web_plugin_params.h" + #include "third_party/blink/public/web/web_testing_support.h" + #include "ui/gfx/icc_profile.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_APPLE) + #include "skia/ext/test_fonts.h" +diff --git a/src/3rdparty/chromium/device/vr/BUILD.gn b/src/3rdparty/chromium/device/vr/BUILD.gn +--- a/src/3rdparty/chromium/device/vr/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/device/vr/BUILD.gn 2026-06-16 10:07:01.206424100 +0200 +@@ -240,7 +240,7 @@ + + if (is_win) { + libs = [ +- "d3d11.lib", ++ "d3d11", + "DXGI.lib", + ] + +@@ -355,7 +355,7 @@ + ] + + libs = [ +- "d3d11.lib", ++ "d3d11", + "DXGI.lib", + ] + +@@ -432,7 +432,7 @@ + if (is_win) { + sources += [ "openxr/test/openxr.def" ] + libs = [ +- "d3d11.lib", ++ "d3d11", + "DXGI.lib", + ] + } else if (is_android) { +diff --git a/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.cc b/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.cc +--- a/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.cc 2026-06-16 10:06:29.702536400 +0200 +@@ -7,13 +7,13 @@ + #include + + #include "base/values.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.h b/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.h +--- a/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy.h 2026-06-16 10:06:29.704557900 +0200 +@@ -7,7 +7,7 @@ + + #include "base/compiler_specific.h" + #include "content/public/renderer/v8_value_converter.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy_unittest.cc b/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/activity_log_converter_strategy_unittest.cc 2026-06-16 10:06:29.708585500 +0200 +@@ -9,7 +9,7 @@ + #include "base/memory/raw_ptr.h" + #include "base/values.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.cc b/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.cc 2026-06-16 10:06:29.710609300 +0200 +@@ -17,10 +17,10 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_view.h" + #include "ui/base/resource/resource_bundle.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.h b/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.h +--- a/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/app_window_custom_bindings.h 2026-06-16 10:06:29.712632900 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_API_APP_WINDOW_CUSTOM_BINDINGS_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/context_menus_custom_bindings.cc b/src/3rdparty/chromium/extensions/renderer/api/context_menus_custom_bindings.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/context_menus_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/context_menus_custom_bindings.cc 2026-06-16 10:06:29.716403900 +0200 +@@ -10,7 +10,7 @@ + + #include "base/functional/bind.h" + #include "base/functional/callback.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.cc b/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.cc 2026-06-16 10:06:29.718419000 +0200 +@@ -14,16 +14,16 @@ + #include "gin/converter.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/web/web_selector.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" ++#include "v8-value.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.h b/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/declarative_content_hooks_delegate.h 2026-06-16 10:06:29.720431200 +0200 +@@ -11,7 +11,7 @@ + + #include "base/functional/callback.h" + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class APITypeReferenceMap; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.cc b/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.cc 2026-06-16 10:06:29.724475500 +0200 +@@ -10,8 +10,8 @@ + #include "extensions/renderer/dispatcher.h" + #include "extensions/renderer/script_context.h" + #include "third_party/blink/public/web/web_element.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-exception.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.h b/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/dom_hooks_delegate.h 2026-06-16 10:06:29.726489300 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/feedback_private_hooks_delegate.h b/src/3rdparty/chromium/extensions/renderer/api/feedback_private_hooks_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/api/feedback_private_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/feedback_private_hooks_delegate.h 2026-06-16 10:06:29.730515300 +0200 +@@ -7,7 +7,7 @@ + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" + #include "extensions/renderer/bindings/api_signature.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.cc b/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.cc 2026-06-16 10:06:29.732269900 +0200 +@@ -16,8 +16,8 @@ + #include "third_party/blink/public/web/web_dom_file_system.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "url/origin.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.h b/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.h +--- a/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/file_system_natives.h 2026-06-16 10:06:29.736306000 +0200 +@@ -7,7 +7,7 @@ + + #include "base/compiler_specific.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.cc b/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.cc 2026-06-16 10:06:29.740335100 +0200 +@@ -29,12 +29,12 @@ + #if !BUILDFLAG(IS_QTWEBENGINE) + #include "third_party/cld_3/src/src/nnet_language_identifier.h" + #endif // !BUILDFLAG(IS_QTWEBENGINE) +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.h b/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/i18n_hooks_delegate.h 2026-06-16 10:06:29.742359100 +0200 +@@ -7,7 +7,7 @@ + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" + #include "extensions/renderer/bindings/api_signature.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.cc 2026-06-16 10:06:29.746418100 +0200 +@@ -20,11 +20,11 @@ + #include "gin/arguments.h" + #include "gin/converter.h" + #include "gin/object_template_builder.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/persistent.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.h b/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.h +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port.h 2026-06-16 10:06:29.750187400 +0200 +@@ -17,8 +17,8 @@ + #include "extensions/renderer/bindings/api_binding_util.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/v8-forward.h" ++#include "cppgc/prefinalizer.h" ++#include "v8-forward.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port_unittest.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/gin_port_unittest.cc 2026-06-16 10:06:29.752208000 +0200 +@@ -19,9 +19,9 @@ + #include "extensions/renderer/bindings/api_event_handler.h" + #include "gin/data_object_builder.h" + #include "testing/gmock/include/gmock/gmock.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.cc 2026-06-16 10:06:29.756228300 +0200 +@@ -11,9 +11,9 @@ + #include "base/functional/callback_helpers.h" + #include "extensions/renderer/gc_callback.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-object.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-object.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.h b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.h +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_bindings.h 2026-06-16 10:06:29.758236800 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_API_MESSAGING_MESSAGING_BINDINGS_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.cc 2026-06-16 10:06:29.760288800 +0200 +@@ -25,11 +25,11 @@ + #include "gin/converter.h" + #include "gin/dictionary.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-json.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-json.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + namespace messaging_util { +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.h b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.h +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util.h 2026-06-16 10:06:29.762300300 +0200 +@@ -9,7 +9,7 @@ + #include + + #include "extensions/common/extension_id.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + class WebLocalFrame; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util_unittest.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/messaging_util_unittest.cc 2026-06-16 10:06:29.766093200 +0200 +@@ -20,7 +20,7 @@ + #include "extensions/renderer/native_extension_bindings_system_test_base.h" + #include "extensions/renderer/script_context.h" + #include "gin/converter.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.cc 2026-06-16 10:06:29.768106000 +0200 +@@ -46,11 +46,11 @@ + #include "third_party/blink/public/web/web_document.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_scoped_window_focus_allowed_indicator.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-context.h" ++#include "v8-local-handle.h" ++#include "v8-persistent-handle.h" + + using blink::mojom::UserActivationNotificationType; + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.h b/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.h +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/native_renderer_messaging_service.h 2026-06-16 10:06:29.770118800 +0200 +@@ -16,7 +16,7 @@ + #include "extensions/renderer/bindings/api_binding_types.h" + #include "gin/handle.h" + #include "mojo/public/cpp/bindings/associated_receiver_set.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.cc 2026-06-16 10:06:29.772134500 +0200 +@@ -40,15 +40,15 @@ + #include "gin/handle.h" + #include "gin/per_context_data.h" + #include "ipc/ipc_message.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-persistent-handle.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.h b/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/one_time_message_handler.h 2026-06-16 10:06:29.774147700 +0200 +@@ -17,7 +17,7 @@ + #include "extensions/common/mojom/message_port.mojom.h" + #include "extensions/renderer/bindings/api_binding_types.h" + #include "extensions/renderer/bindings/get_per_context_data.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.cc b/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.cc 2026-06-16 10:06:29.778215800 +0200 +@@ -13,7 +13,7 @@ + #include "extensions/renderer/bindings/api_binding_test_util.h" + #include "extensions/renderer/native_extension_bindings_system_test_base.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.h b/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.h +--- a/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/messaging/send_message_tester.h 2026-06-16 10:06:29.779970100 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "base/memory/raw_ptr.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.cc b/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.cc 2026-06-16 10:06:29.781984000 +0200 +@@ -30,12 +30,12 @@ + #include "extensions/renderer/v8_helpers.h" + #include "gin/converter.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.h b/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/runtime_hooks_delegate.h 2026-06-16 10:06:29.783998100 +0200 +@@ -8,7 +8,7 @@ + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" + #include "extensions/renderer/bindings/api_signature.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class NativeRendererMessagingService; +diff --git a/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.cc b/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.cc +--- a/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.cc 2026-06-16 10:06:29.786015800 +0200 +@@ -16,10 +16,10 @@ + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/script_context_set.h" + #include "gin/converter.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-object.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-object.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.h b/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.h +--- a/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/web_request_hooks.h 2026-06-16 10:06:29.788029400 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api/web_request_natives.h b/src/3rdparty/chromium/extensions/renderer/api/web_request_natives.h +--- a/src/3rdparty/chromium/extensions/renderer/api/web_request_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api/web_request_natives.h 2026-06-16 10:06:29.790041800 +0200 +@@ -7,7 +7,7 @@ + + #include "base/compiler_specific.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/api_activity_logger.cc b/src/3rdparty/chromium/extensions/renderer/api_activity_logger.cc +--- a/src/3rdparty/chromium/extensions/renderer/api_activity_logger.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api_activity_logger.cc 2026-06-16 10:06:29.794064600 +0200 +@@ -18,10 +18,10 @@ + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/worker_script_context_set.h" + #include "extensions/renderer/worker_thread_util.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api_activity_logger.h b/src/3rdparty/chromium/extensions/renderer/api_activity_logger.h +--- a/src/3rdparty/chromium/extensions/renderer/api_activity_logger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api_activity_logger.h 2026-06-16 10:06:29.795817000 +0200 +@@ -12,7 +12,7 @@ + #include "base/values.h" + #include "extensions/renderer/ipc_message_sender.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.cc b/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.cc +--- a/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.cc 2026-06-16 10:06:29.797842000 +0200 +@@ -9,8 +9,8 @@ + #include "extensions/common/features/feature_provider.h" + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/v8_schema_registry.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function-callback.h" ++#include "v8-container.h" ++#include "v8-function-callback.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.h b/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.h +--- a/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/api_definitions_natives.h 2026-06-16 10:06:29.799851800 +0200 +@@ -7,7 +7,7 @@ + + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class V8SchemaRegistry; +diff --git a/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.cc b/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.cc 2026-06-16 10:06:29.899033200 +0200 +@@ -7,9 +7,9 @@ + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/v8_helpers.h" + #include "gin/data_object_builder.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-microtask-queue.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.h b/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/binding_generating_native_handler.h 2026-06-16 10:06:29.901043100 +0200 +@@ -10,7 +10,7 @@ + #include "base/compiler_specific.h" + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.cc 2026-06-16 10:06:29.803877200 +0200 +@@ -26,8 +26,8 @@ + #include "extensions/renderer/bindings/declarative_event.h" + #include "gin/arguments.h" + #include "gin/per_context_data.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding.h 2026-06-16 10:06:29.805890700 +0200 +@@ -15,7 +15,7 @@ + #include "base/memory/weak_ptr.h" + #include "base/values.h" + #include "extensions/renderer/bindings/argument_spec.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge.h 2026-06-16 10:06:29.807904000 +0200 +@@ -9,7 +9,7 @@ + + #include "extensions/common/extension_id.h" + #include "gin/wrappable.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APIBindingHooks; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_bridge_unittest.cc 2026-06-16 10:06:29.809918500 +0200 +@@ -8,8 +8,8 @@ + #include "extensions/renderer/bindings/api_binding_hooks.h" + #include "extensions/renderer/bindings/api_binding_test.h" + #include "extensions/renderer/bindings/api_binding_test_util.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.cc 2026-06-16 10:06:29.811682900 +0200 +@@ -20,8 +20,8 @@ + #include "gin/per_context_data.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks.h 2026-06-16 10:06:29.815707600 +0200 +@@ -11,7 +11,7 @@ + #include "base/memory/raw_ptr.h" + #include "base/memory/weak_ptr.h" + #include "extensions/renderer/bindings/api_binding_types.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_delegate.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_delegate.h 2026-06-16 10:06:29.817722900 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_BINDINGS_API_BINDING_HOOKS_DELEGATE_H_ + + #include "extensions/renderer/bindings/api_binding_hooks.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APITypeReferenceMap; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_test_delegate.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_test_delegate.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_test_delegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_hooks_test_delegate.h 2026-06-16 10:06:29.819738200 +0200 +@@ -11,7 +11,7 @@ + + #include "base/functional/callback.h" + #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.cc 2026-06-16 10:06:29.821750700 +0200 +@@ -20,8 +20,8 @@ + #include "gin/converter.h" + #include "gin/dictionary.h" + #include "gin/object_template_builder.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + APIBindingJSUtil::APIBindingJSUtil(APITypeReferenceMap* type_refs, +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util.h 2026-06-16 10:06:29.823765900 +0200 +@@ -9,7 +9,7 @@ + + #include "base/memory/raw_ptr.h" + #include "gin/wrappable.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_js_util_unittest.cc 2026-06-16 10:06:29.825780000 +0200 +@@ -13,8 +13,8 @@ + #include "extensions/renderer/bindings/api_invocation_errors.h" + #include "gin/arguments.h" + #include "gin/handle.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + #include "testing/gmock/include/gmock/gmock.h" + + namespace extensions { +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test.h 2026-06-16 10:06:29.827533100 +0200 +@@ -11,7 +11,7 @@ + #include "base/test/task_environment.h" + #include "extensions/renderer/bindings/test_js_runner.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gin { + class ContextHolder; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test_util.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test_util.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_test_util.h 2026-06-16 10:06:29.831606400 +0200 +@@ -11,7 +11,7 @@ + + #include "base/values.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_types.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_types.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_types.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_types.h 2026-06-16 10:06:29.833619400 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "base/functional/callback.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + namespace binding { +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_unittest.cc 2026-06-16 10:06:29.835631800 +0200 +@@ -35,7 +35,7 @@ + #include "gin/public/context_holder.h" + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_util.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_util.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_binding_util.h 2026-06-16 10:06:29.837651700 +0200 +@@ -12,7 +12,7 @@ + #include "base/functional/callback.h" + #include "base/memory/raw_ptr.h" + #include "base/observer_list_types.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + namespace binding { +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_bindings_system_unittest.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_bindings_system_unittest.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_bindings_system_unittest.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_bindings_system_unittest.h 2026-06-16 10:06:29.805890700 +0200 +@@ -13,7 +13,7 @@ + #include "extensions/renderer/bindings/api_binding_test.h" + #include "extensions/renderer/bindings/api_binding_types.h" + #include "extensions/renderer/bindings/api_request_handler.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APIBindingsSystem; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.cc 2026-06-16 10:06:29.839661700 +0200 +@@ -27,8 +27,8 @@ + #include "gin/converter.h" + #include "gin/data_object_builder.h" + #include "gin/per_context_data.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler.h 2026-06-16 10:06:29.841672100 +0200 +@@ -14,7 +14,7 @@ + #include "extensions/renderer/bindings/api_event_listeners.h" + #include "extensions/renderer/bindings/event_emitter.h" + #include "extensions/renderer/bindings/listener_tracker.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APIResponseValidator; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_handler_unittest.cc 2026-06-16 10:06:29.843424800 +0200 +@@ -21,8 +21,8 @@ + #include "gin/converter.h" + #include "gin/public/context_holder.h" + #include "testing/gmock/include/gmock/gmock.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_listeners.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_listeners.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_event_listeners.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_event_listeners.h 2026-06-16 10:06:29.845434900 +0200 +@@ -13,7 +13,7 @@ + #include "base/values.h" + #include "extensions/common/mojom/event_dispatcher.mojom-forward.h" + #include "extensions/renderer/bindings/api_binding_types.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class ListenerTracker; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.cc 2026-06-16 10:06:29.847455600 +0200 +@@ -12,8 +12,8 @@ + #include "gin/object_template_builder.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_last_error.h 2026-06-16 10:06:29.849465300 +0200 +@@ -10,7 +10,7 @@ + + #include "base/functional/callback.h" + #include "extensions/renderer/bindings/api_binding_types.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_request_handler.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_request_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_request_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_request_handler.h 2026-06-16 10:06:29.851475300 +0200 +@@ -17,7 +17,7 @@ + #include "extensions/renderer/bindings/api_binding_types.h" + #include "extensions/renderer/bindings/api_last_error.h" + #include "extensions/renderer/bindings/interaction_provider.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APIResponseValidator; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator.h 2026-06-16 10:06:29.853498200 +0200 +@@ -10,7 +10,7 @@ + + #include "base/functional/callback.h" + #include "base/memory/raw_ptr.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APITypeReferenceMap; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_response_validator_unittest.cc 2026-06-16 10:06:29.857528000 +0200 +@@ -19,7 +19,7 @@ + #include "extensions/renderer/bindings/argument_spec_builder.h" + #include "extensions/renderer/bindings/returns_async_builder.h" + #include "gin/converter.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + namespace { +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/api_signature.h b/src/3rdparty/chromium/extensions/renderer/bindings/api_signature.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/api_signature.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/api_signature.h 2026-06-16 10:06:29.859283700 +0200 +@@ -14,7 +14,7 @@ + #include "base/values.h" + #include "extensions/renderer/bindings/api_binding_types.h" + #include "extensions/renderer/bindings/binding_access_checker.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APITypeReferenceMap; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec.h b/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec.h 2026-06-16 10:06:29.863299800 +0200 +@@ -14,7 +14,7 @@ + #include + + #include "base/values.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class APITypeReferenceMap; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/argument_spec_unittest.cc 2026-06-16 10:06:29.867325700 +0200 +@@ -20,7 +20,7 @@ + #include "gin/public/isolate_holder.h" + #include "gin/test/v8_test.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/binding_access_checker.h b/src/3rdparty/chromium/extensions/renderer/bindings/binding_access_checker.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/binding_access_checker.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/binding_access_checker.h 2026-06-16 10:06:29.869338800 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "base/functional/callback.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event.h b/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event.h 2026-06-16 10:06:29.873378100 +0200 +@@ -10,7 +10,7 @@ + #include "base/memory/raw_ptr.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/declarative_event_unittest.cc 2026-06-16 10:06:29.877148400 +0200 +@@ -21,8 +21,8 @@ + #include "extensions/renderer/bindings/argument_spec.h" + #include "extensions/renderer/bindings/test_interaction_provider.h" + #include "gin/handle.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter.h b/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter.h 2026-06-16 10:06:29.879156400 +0200 +@@ -12,8 +12,8 @@ + #include "extensions/renderer/bindings/js_runner.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/v8.h" ++#include "cppgc/prefinalizer.h" ++#include "v8.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter_unittest.cc b/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/event_emitter_unittest.cc 2026-06-16 10:06:29.883184000 +0200 +@@ -18,8 +18,8 @@ + #include "extensions/renderer/bindings/listener_tracker.h" + #include "extensions/renderer/bindings/test_js_runner.h" + #include "testing/gmock/include/gmock/gmock.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.cc b/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.cc 2026-06-16 10:06:29.885205900 +0200 +@@ -14,8 +14,8 @@ + #include "gin/per_context_data.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.h b/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/exception_handler.h 2026-06-16 10:06:29.887217600 +0200 +@@ -9,7 +9,7 @@ + + #include "base/memory/weak_ptr.h" + #include "extensions/renderer/bindings/api_binding_types.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/get_per_context_data.h b/src/3rdparty/chromium/extensions/renderer/bindings/get_per_context_data.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/get_per_context_data.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/get_per_context_data.h 2026-06-16 10:06:29.890994800 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_BINDINGS_GET_PER_CONTEXT_DATA_H_ + + #include "gin/per_context_data.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/interaction_provider.h b/src/3rdparty/chromium/extensions/renderer/bindings/interaction_provider.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/interaction_provider.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/interaction_provider.h 2026-06-16 10:06:29.893004200 +0200 +@@ -7,7 +7,7 @@ + + #include + +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/js_runner.h b/src/3rdparty/chromium/extensions/renderer/bindings/js_runner.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/js_runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/js_runner.h 2026-06-16 10:06:29.895011900 +0200 +@@ -10,7 +10,7 @@ + + #include "base/containers/span.h" + #include "base/functional/callback.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace base { + class Value; +diff --git a/src/3rdparty/chromium/extensions/renderer/bindings/test_interaction_provider.h b/src/3rdparty/chromium/extensions/renderer/bindings/test_interaction_provider.h +--- a/src/3rdparty/chromium/extensions/renderer/bindings/test_interaction_provider.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/bindings/test_interaction_provider.h 2026-06-16 10:06:29.897024800 +0200 +@@ -7,7 +7,7 @@ + + #include "extensions/renderer/bindings/interaction_provider.h" + +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + class TestInteractionProvider : public InteractionProvider { +diff --git a/src/3rdparty/chromium/extensions/renderer/blob_native_handler.cc b/src/3rdparty/chromium/extensions/renderer/blob_native_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/blob_native_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/blob_native_handler.cc 2026-06-16 10:06:29.901043100 +0200 +@@ -8,8 +8,8 @@ + #include "extensions/renderer/script_context.h" + #include "third_party/blink/public/platform/web_url.h" + #include "third_party/blink/public/web/web_blob.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-primitive.h" + + namespace { + +diff --git a/src/3rdparty/chromium/extensions/renderer/blob_native_handler.h b/src/3rdparty/chromium/extensions/renderer/blob_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/blob_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/blob_native_handler.h 2026-06-16 10:06:29.903056600 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_BLOB_NATIVE_HANDLER_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/chrome_setting.cc b/src/3rdparty/chromium/extensions/renderer/chrome_setting.cc +--- a/src/3rdparty/chromium/extensions/renderer/chrome_setting.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/chrome_setting.cc 2026-06-16 10:06:29.905068900 +0200 +@@ -16,9 +16,9 @@ + #include "gin/arguments.h" + #include "gin/handle.h" + #include "gin/object_template_builder.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-object.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-object.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/chrome_setting.h b/src/3rdparty/chromium/extensions/renderer/chrome_setting.h +--- a/src/3rdparty/chromium/extensions/renderer/chrome_setting.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/chrome_setting.h 2026-06-16 10:06:29.906838200 +0200 +@@ -12,7 +12,7 @@ + #include "extensions/renderer/bindings/argument_spec.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/console.cc b/src/3rdparty/chromium/extensions/renderer/console.cc +--- a/src/3rdparty/chromium/extensions/renderer/console.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/console.cc 2026-06-16 10:06:29.908852100 +0200 +@@ -19,9 +19,9 @@ + #include "gin/per_isolate_data.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "third_party/blink/public/web/web_console_message.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-function-callback.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + namespace extensions { + namespace console { +diff --git a/src/3rdparty/chromium/extensions/renderer/console.h b/src/3rdparty/chromium/extensions/renderer/console.h +--- a/src/3rdparty/chromium/extensions/renderer/console.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/console.h 2026-06-16 10:06:29.912874000 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "third_party/blink/public/mojom/devtools/console_message.mojom.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/content_setting.cc b/src/3rdparty/chromium/extensions/renderer/content_setting.cc +--- a/src/3rdparty/chromium/extensions/renderer/content_setting.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/content_setting.cc 2026-06-16 10:06:29.914883900 +0200 +@@ -22,9 +22,9 @@ + #include "gin/arguments.h" + #include "gin/object_template_builder.h" + #include "third_party/blink/public/mojom/devtools/console_message.mojom.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-object.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-object.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/content_setting.h b/src/3rdparty/chromium/extensions/renderer/content_setting.h +--- a/src/3rdparty/chromium/extensions/renderer/content_setting.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/content_setting.h 2026-06-16 10:06:29.916895400 +0200 +@@ -12,7 +12,7 @@ + #include "extensions/renderer/bindings/argument_spec.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/dispatcher.cc b/src/3rdparty/chromium/extensions/renderer/dispatcher.cc +--- a/src/3rdparty/chromium/extensions/renderer/dispatcher.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/dispatcher.cc 2026-06-16 10:06:29.920917000 +0200 +@@ -111,10 +111,10 @@ + #include "third_party/blink/public/web/web_v8_features.h" + #include "third_party/blink/public/web/web_view.h" + #include "ui/base/resource/resource_bundle.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + using blink::WebDocument; + using blink::WebSecurityPolicy; +diff --git a/src/3rdparty/chromium/extensions/renderer/dispatcher.h b/src/3rdparty/chromium/extensions/renderer/dispatcher.h +--- a/src/3rdparty/chromium/extensions/renderer/dispatcher.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/dispatcher.h 2026-06-16 10:06:29.924676400 +0200 +@@ -39,7 +39,7 @@ + #include "mojo/public/cpp/bindings/associated_receiver.h" + #include "third_party/blink/public/common/tokens/tokens.h" + #include "third_party/blink/public/platform/web_string.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class ChromeRenderViewTest; + class GURL; +diff --git a/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.cc b/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.cc +--- a/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.cc 2026-06-16 10:06:29.928700400 +0200 +@@ -17,7 +17,7 @@ + #include "extensions/renderer/script_context_set.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/platform/web_url.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + using blink::WebString; + using blink::WebURL; +diff --git a/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.h b/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.h +--- a/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/dom_activity_logger.h 2026-06-16 10:06:29.930713600 +0200 +@@ -10,7 +10,7 @@ + #include "extensions/common/extension_id.h" + #include "extensions/common/mojom/renderer_host.mojom.h" + #include "third_party/blink/public/web/web_dom_activity_logger.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + class WebString; +diff --git a/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.cc b/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.cc +--- a/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.cc 2026-06-16 10:06:29.936745500 +0200 +@@ -38,11 +38,11 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_settings.h" + #include "third_party/blink/public/web/web_view.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.h b/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.h +--- a/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/extension_frame_helper.h 2026-06-16 10:06:29.940514400 +0200 +@@ -24,7 +24,7 @@ + #include "mojo/public/cpp/bindings/associated_remote.h" + #include "mojo/public/cpp/bindings/pending_associated_receiver.h" + #include "third_party/blink/public/mojom/devtools/console_message.mojom.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/extension_interaction_provider.h b/src/3rdparty/chromium/extensions/renderer/extension_interaction_provider.h +--- a/src/3rdparty/chromium/extensions/renderer/extension_interaction_provider.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/extension_interaction_provider.h 2026-06-16 10:06:29.942533300 +0200 +@@ -7,7 +7,7 @@ + + #include "extensions/renderer/bindings/interaction_provider.h" + +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/extension_js_runner.cc b/src/3rdparty/chromium/extensions/renderer/extension_js_runner.cc +--- a/src/3rdparty/chromium/extensions/renderer/extension_js_runner.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/extension_js_runner.cc 2026-06-16 10:06:29.946558800 +0200 +@@ -10,9 +10,9 @@ + #include "extensions/renderer/script_context.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_script_execution_callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-microtask-queue.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/extension_js_runner.h b/src/3rdparty/chromium/extensions/renderer/extension_js_runner.h +--- a/src/3rdparty/chromium/extensions/renderer/extension_js_runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/extension_js_runner.h 2026-06-16 10:06:29.948566900 +0200 +@@ -9,7 +9,7 @@ + #include "base/memory/weak_ptr.h" + #include "base/time/time.h" + #include "extensions/renderer/bindings/js_runner.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/extensions_renderer_client.h b/src/3rdparty/chromium/extensions/renderer/extensions_renderer_client.h +--- a/src/3rdparty/chromium/extensions/renderer/extensions_renderer_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/extensions_renderer_client.h 2026-06-16 10:06:29.934729700 +0200 +@@ -13,7 +13,7 @@ + #include "extensions/renderer/resource_request_policy.h" + #include "services/service_manager/public/cpp/binder_registry.h" + #include "ui/base/page_transition_types.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/extensions/renderer/feature_cache_unittest.cc b/src/3rdparty/chromium/extensions/renderer/feature_cache_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/feature_cache_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/feature_cache_unittest.cc 2026-06-16 10:06:29.950579600 +0200 +@@ -16,7 +16,7 @@ + #include "extensions/renderer/scoped_web_frame.h" + #include "extensions/renderer/script_context.h" + #include "extensions/test/test_context_data.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #include "third_party/blink/public/platform/web_data.h" + #include "third_party/blink/public/platform/web_url.h" +diff --git a/src/3rdparty/chromium/extensions/renderer/gc_callback.h b/src/3rdparty/chromium/extensions/renderer/gc_callback.h +--- a/src/3rdparty/chromium/extensions/renderer/gc_callback.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/gc_callback.h 2026-06-16 10:06:29.954351600 +0200 +@@ -10,8 +10,8 @@ + #include "base/memory/scoped_refptr.h" + #include "base/memory/weak_ptr.h" + #include "base/task/single_thread_task_runner.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/gc_callback_unittest.cc b/src/3rdparty/chromium/extensions/renderer/gc_callback_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/gc_callback_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/gc_callback_unittest.cc 2026-06-16 10:06:29.958412500 +0200 +@@ -19,7 +19,7 @@ + #include "gin/function_template.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/public/web/web_frame.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + namespace { +diff --git a/src/3rdparty/chromium/extensions/renderer/get_script_context.h b/src/3rdparty/chromium/extensions/renderer/get_script_context.h +--- a/src/3rdparty/chromium/extensions/renderer/get_script_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/get_script_context.h 2026-06-16 10:06:29.960420900 +0200 +@@ -5,7 +5,7 @@ + #ifndef EXTENSIONS_RENDERER_GET_SCRIPT_CONTEXT_H_ + #define EXTENSIONS_RENDERER_GET_SCRIPT_CONTEXT_H_ + +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc b/src/3rdparty/chromium/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc +--- a/src/3rdparty/chromium/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc 2026-06-16 10:06:29.964439800 +0200 +@@ -26,7 +26,7 @@ + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_remote_frame.h" + #include "third_party/blink/public/web/web_view.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using content::V8ValueConverter; + +diff --git a/src/3rdparty/chromium/extensions/renderer/guest_view/mime_handler_view/post_message_support.h b/src/3rdparty/chromium/extensions/renderer/guest_view/mime_handler_view/post_message_support.h +--- a/src/3rdparty/chromium/extensions/renderer/guest_view/mime_handler_view/post_message_support.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/guest_view/mime_handler_view/post_message_support.h 2026-06-16 10:06:29.966450500 +0200 +@@ -11,7 +11,7 @@ + #include "base/memory/raw_ptr.h" + #include "base/memory/weak_ptr.h" + #include "base/values.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class WebFrame; +diff --git a/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.cc b/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.cc +--- a/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.cc 2026-06-16 10:06:29.968460600 +0200 +@@ -9,7 +9,7 @@ + #include "base/functional/bind.h" + #include "base/functional/callback.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8-function-callback.h" ++#include "v8-function-callback.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.h b/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.h +--- a/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/id_generator_custom_bindings.h 2026-06-16 10:06:29.970214700 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_ID_GENERATOR_CUSTOM_BINDINGS_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/lazy_background_page_native_handler.h b/src/3rdparty/chromium/extensions/renderer/lazy_background_page_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/lazy_background_page_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/lazy_background_page_native_handler.h 2026-06-16 10:06:29.974235800 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_LAZY_BACKGROUND_PAGE_NATIVE_HANDLER_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/logging_native_handler.cc b/src/3rdparty/chromium/extensions/renderer/logging_native_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/logging_native_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/logging_native_handler.cc 2026-06-16 10:06:29.976244100 +0200 +@@ -10,8 +10,8 @@ + #include "base/logging.h" + #include "extensions/common/extension.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/logging_native_handler.h b/src/3rdparty/chromium/extensions/renderer/logging_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/logging_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/logging_native_handler.h 2026-06-16 10:06:29.978251800 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/module_system.cc b/src/3rdparty/chromium/extensions/renderer/module_system.cc +--- a/src/3rdparty/chromium/extensions/renderer/module_system.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/module_system.cc 2026-06-16 10:06:29.980260900 +0200 +@@ -22,15 +22,15 @@ + #include "gin/converter.h" + #include "third_party/blink/public/web/web_frame.h" + #include "third_party/blink/public/web/web_v8_features.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-message.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" ++#include "v8-exception.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-message.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-script.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/module_system.h b/src/3rdparty/chromium/extensions/renderer/module_system.h +--- a/src/3rdparty/chromium/extensions/renderer/module_system.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/module_system.h 2026-06-16 10:06:29.982274700 +0200 +@@ -17,9 +17,9 @@ + #include "extensions/renderer/native_handler.h" + #include "extensions/renderer/object_backed_native_handler.h" + #include "third_party/blink/public/web/web_script_execution_callback.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-object.h" ++#include "v8-persistent-handle.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/module_system_test.cc b/src/3rdparty/chromium/extensions/renderer/module_system_test.cc +--- a/src/3rdparty/chromium/extensions/renderer/module_system_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/module_system_test.cc 2026-06-16 10:06:29.984282700 +0200 +@@ -36,13 +36,13 @@ + #include "extensions/renderer/utils_native_handler.h" + #include "gin/converter.h" + #include "ui/base/resource/resource_bundle.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-statistics.h" ++#include "v8-context.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-microtask-queue.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-statistics.h" + + namespace extensions { + namespace { +diff --git a/src/3rdparty/chromium/extensions/renderer/module_system_test.h b/src/3rdparty/chromium/extensions/renderer/module_system_test.h +--- a/src/3rdparty/chromium/extensions/renderer/module_system_test.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/module_system_test.h 2026-06-16 10:06:29.984282700 +0200 +@@ -17,7 +17,7 @@ + #include "gin/public/context_holder.h" + #include "gin/public/isolate_holder.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class Extension; +diff --git a/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.cc b/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.cc +--- a/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.cc 2026-06-16 10:06:29.988412200 +0200 +@@ -69,13 +69,13 @@ + #include "third_party/blink/public/web/web_document.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "third_party/blink/public/web/web_origin_trials.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + using perfetto::protos::pbzero::ChromeTrackEvent; + +diff --git a/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.h b/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.h +--- a/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system.h 2026-06-16 10:06:29.990421600 +0200 +@@ -18,8 +18,8 @@ + #include "extensions/renderer/bindings/api_bindings_system.h" + #include "extensions/renderer/bindings/event_emitter.h" + #include "extensions/renderer/feature_cache.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace extensions { + class IPCMessageSender; +diff --git a/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system_test_base.h b/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system_test_base.h +--- a/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system_test_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/native_extension_bindings_system_test_base.h 2026-06-16 10:06:29.992429300 +0200 +@@ -29,7 +29,7 @@ + #include "mojo/public/cpp/bindings/pending_associated_remote.h" + #include "mojo/public/cpp/bindings/struct_ptr.h" + #include "testing/gmock/include/gmock/gmock.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace content { + class MockRenderThread; +diff --git a/src/3rdparty/chromium/extensions/renderer/native_handler.h b/src/3rdparty/chromium/extensions/renderer/native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/native_handler.h 2026-06-16 10:06:29.994438000 +0200 +@@ -5,7 +5,7 @@ + #ifndef EXTENSIONS_RENDERER_NATIVE_HANDLER_H_ + #define EXTENSIONS_RENDERER_NATIVE_HANDLER_H_ + +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.cc b/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.cc 2026-06-16 10:06:29.994438000 +0200 +@@ -16,14 +16,14 @@ + #include "extensions/renderer/script_context_set.h" + #include "extensions/renderer/v8_helpers.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" ++#include "v8-value.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.h b/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/object_backed_native_handler.h 2026-06-16 10:06:29.996447700 +0200 +@@ -11,9 +11,9 @@ + #include "base/functional/bind.h" + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/native_handler.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-util.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" ++#include "v8-util.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.cc b/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.cc +--- a/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.cc 2026-06-16 10:06:29.998456300 +0200 +@@ -13,9 +13,9 @@ + #include "content/public/renderer/render_frame_observer.h" + #include "extensions/renderer/extension_frame_helper.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.h b/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.h +--- a/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/render_frame_observer_natives.h 2026-06-16 10:06:30.000464600 +0200 +@@ -7,8 +7,8 @@ + + #include "base/memory/weak_ptr.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.cc b/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.cc +--- a/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.cc 2026-06-16 10:06:30.002212800 +0200 +@@ -12,7 +12,7 @@ + #include "extensions/renderer/static_v8_external_one_byte_string_resource.h" + #include "third_party/zlib/google/compression_utils.h" + #include "ui/base/resource/resource_bundle.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.h b/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.h +--- a/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/resource_bundle_source_map.h 2026-06-16 10:06:30.004221000 +0200 +@@ -14,7 +14,7 @@ + #include "base/synchronization/lock.h" + #include "base/thread_annotations.h" + #include "extensions/renderer/source_map.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace ui { + class ResourceBundle; +diff --git a/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.cc b/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.cc +--- a/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.cc 2026-06-16 10:06:30.008238100 +0200 +@@ -16,9 +16,9 @@ + #include "extensions/common/view_type_util.h" + #include "extensions/renderer/extension_frame_helper.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-function-callback.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.h b/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.h +--- a/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/runtime_custom_bindings.h 2026-06-16 10:06:30.010245800 +0200 +@@ -7,7 +7,7 @@ + + #include "base/compiler_specific.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/safe_builtins.cc b/src/3rdparty/chromium/extensions/renderer/safe_builtins.cc +--- a/src/3rdparty/chromium/extensions/renderer/safe_builtins.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/safe_builtins.cc 2026-06-16 10:06:30.012254800 +0200 +@@ -9,16 +9,16 @@ + #include "base/strings/stringprintf.h" + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/v8_helpers.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-extension.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-extension.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-microtask-queue.h" ++#include "v8-object.h" ++#include "v8-primitive-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/safe_builtins.h b/src/3rdparty/chromium/extensions/renderer/safe_builtins.h +--- a/src/3rdparty/chromium/extensions/renderer/safe_builtins.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/safe_builtins.h 2026-06-16 10:06:30.014263400 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "base/memory/raw_ptr.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/script_context.cc b/src/3rdparty/chromium/extensions/renderer/script_context.cc +--- a/src/3rdparty/chromium/extensions/renderer/script_context.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/script_context.cc 2026-06-16 10:06:30.018234900 +0200 +@@ -38,12 +38,12 @@ + #include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h" + #include "third_party/blink/public/web/web_document_loader.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-debug.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-debug.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-microtask-queue.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/script_context.h b/src/3rdparty/chromium/extensions/renderer/script_context.h +--- a/src/3rdparty/chromium/extensions/renderer/script_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/script_context.h 2026-06-16 10:06:30.020247400 +0200 +@@ -26,10 +26,10 @@ + #include "extensions/renderer/safe_builtins.h" + #include "third_party/blink/public/web/web_script_execution_callback.h" + #include "url/gurl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-script.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-forward.h" ++#include "v8-script.h" + + namespace blink { + class WebDocumentLoader; +diff --git a/src/3rdparty/chromium/extensions/renderer/script_context_set.cc b/src/3rdparty/chromium/extensions/renderer/script_context_set.cc +--- a/src/3rdparty/chromium/extensions/renderer/script_context_set.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/script_context_set.cc 2026-06-16 10:06:30.024266700 +0200 +@@ -28,8 +28,8 @@ + #include "third_party/blink/public/web/web_document.h" + #include "third_party/blink/public/web/web_local_frame.h" + #include "url/origin.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" ++#include "v8-isolate.h" ++#include "v8-object.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/script_context_set.h b/src/3rdparty/chromium/extensions/renderer/script_context_set.h +--- a/src/3rdparty/chromium/extensions/renderer/script_context_set.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/script_context_set.h 2026-06-16 10:06:30.026274900 +0200 +@@ -19,7 +19,7 @@ + #include "extensions/renderer/renderer_extension_registry.h" + #include "extensions/renderer/script_context_set_iterable.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + class GURL; + + namespace blink { +diff --git a/src/3rdparty/chromium/extensions/renderer/script_context_set_unittest.cc b/src/3rdparty/chromium/extensions/renderer/script_context_set_unittest.cc +--- a/src/3rdparty/chromium/extensions/renderer/script_context_set_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/script_context_set_unittest.cc 2026-06-16 10:06:30.028282800 +0200 +@@ -19,7 +19,7 @@ + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" + #include "third_party/blink/public/web/web_frame.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/script_injection.h b/src/3rdparty/chromium/extensions/renderer/script_injection.h +--- a/src/3rdparty/chromium/extensions/renderer/script_injection.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/script_injection.h 2026-06-16 10:06:30.030293700 +0200 +@@ -19,7 +19,7 @@ + #include "extensions/common/user_script.h" + #include "extensions/renderer/injection_host.h" + #include "extensions/renderer/script_injector.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace content { + class RenderFrame; +diff --git a/src/3rdparty/chromium/extensions/renderer/service_worker_natives.cc b/src/3rdparty/chromium/extensions/renderer/service_worker_natives.cc +--- a/src/3rdparty/chromium/extensions/renderer/service_worker_natives.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/service_worker_natives.cc 2026-06-16 10:06:30.032301300 +0200 +@@ -7,7 +7,7 @@ + #include "base/functional/bind.h" + #include "base/functional/callback.h" + #include "extensions/renderer/script_context.h" +-#include "v8/include/v8-function-callback.h" ++#include "v8-function-callback.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/service_worker_natives.h b/src/3rdparty/chromium/extensions/renderer/service_worker_natives.h +--- a/src/3rdparty/chromium/extensions/renderer/service_worker_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/service_worker_natives.h 2026-06-16 10:06:30.036060600 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_SERVICE_WORKER_NATIVES_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/set_icon_natives.cc b/src/3rdparty/chromium/extensions/renderer/set_icon_natives.cc +--- a/src/3rdparty/chromium/extensions/renderer/set_icon_natives.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/set_icon_natives.cc 2026-06-16 10:06:30.038070700 +0200 +@@ -24,12 +24,12 @@ + #include "skia/public/mojom/bitmap.mojom.h" + #include "third_party/blink/public/web/web_array_buffer_converter.h" + #include "third_party/skia/include/core/SkBitmap.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + // TODO(devlin): Looks like there are lots of opportunities to use gin helpers + // like gin::Dictionary and gin::DataObjectBuilder here. +diff --git a/src/3rdparty/chromium/extensions/renderer/set_icon_natives.h b/src/3rdparty/chromium/extensions/renderer/set_icon_natives.h +--- a/src/3rdparty/chromium/extensions/renderer/set_icon_natives.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/set_icon_natives.h 2026-06-16 10:06:30.040077400 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_SET_ICON_NATIVES_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/source_map.h b/src/3rdparty/chromium/extensions/renderer/source_map.h +--- a/src/3rdparty/chromium/extensions/renderer/source_map.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/source_map.h 2026-06-16 10:06:30.042088700 +0200 +@@ -7,7 +7,7 @@ + + #include + +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/static_v8_external_one_byte_string_resource.h b/src/3rdparty/chromium/extensions/renderer/static_v8_external_one_byte_string_resource.h +--- a/src/3rdparty/chromium/extensions/renderer/static_v8_external_one_byte_string_resource.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/static_v8_external_one_byte_string_resource.h 2026-06-16 10:06:30.044096300 +0200 +@@ -10,7 +10,7 @@ + #include + + #include "base/compiler_specific.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/storage_area.cc b/src/3rdparty/chromium/extensions/renderer/storage_area.cc +--- a/src/3rdparty/chromium/extensions/renderer/storage_area.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/storage_area.cc 2026-06-16 10:06:30.046104400 +0200 +@@ -18,10 +18,10 @@ + #include "gin/object_template_builder.h" + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/storage_area.h b/src/3rdparty/chromium/extensions/renderer/storage_area.h +--- a/src/3rdparty/chromium/extensions/renderer/storage_area.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/storage_area.h 2026-06-16 10:06:30.048113400 +0200 +@@ -9,7 +9,7 @@ + + #include "base/memory/raw_ptr.h" + #include "base/values.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/extensions/renderer/string_source_map.h b/src/3rdparty/chromium/extensions/renderer/string_source_map.h +--- a/src/3rdparty/chromium/extensions/renderer/string_source_map.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/string_source_map.h 2026-06-16 10:06:30.051874700 +0200 +@@ -9,7 +9,7 @@ + #include + + #include "extensions/renderer/source_map.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/test_v8_extension_configuration.cc b/src/3rdparty/chromium/extensions/renderer/test_v8_extension_configuration.cc +--- a/src/3rdparty/chromium/extensions/renderer/test_v8_extension_configuration.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/test_v8_extension_configuration.cc 2026-06-16 10:06:30.053887900 +0200 +@@ -9,8 +9,8 @@ + + #include "base/lazy_instance.h" + #include "extensions/renderer/safe_builtins.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-extension.h" ++#include "v8-context.h" ++#include "v8-extension.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.cc b/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.cc 2026-06-16 10:06:30.055899900 +0200 +@@ -9,9 +9,9 @@ + #include "extensions/renderer/script_context.h" + #include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.h b/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/user_gestures_native_handler.h 2026-06-16 10:06:30.057908400 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_USER_GESTURES_NATIVE_HANDLER_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/utils_native_handler.h b/src/3rdparty/chromium/extensions/renderer/utils_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/utils_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/utils_native_handler.h 2026-06-16 10:06:30.059915300 +0200 +@@ -6,7 +6,7 @@ + #define EXTENSIONS_RENDERER_UTILS_NATIVE_HANDLER_H_ + + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + class ScriptContext; +diff --git a/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.cc b/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.cc +--- a/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.cc 2026-06-16 10:06:30.063937500 +0200 +@@ -9,9 +9,9 @@ + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/script_context_set.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function-callback.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.h b/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.h +--- a/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/v8_context_native_handler.h 2026-06-16 10:06:30.065719100 +0200 +@@ -7,7 +7,7 @@ + + #include "base/memory/raw_ptr.h" + #include "extensions/renderer/object_backed_native_handler.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/v8_helpers.h b/src/3rdparty/chromium/extensions/renderer/v8_helpers.h +--- a/src/3rdparty/chromium/extensions/renderer/v8_helpers.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/v8_helpers.h 2026-06-16 10:06:30.067760400 +0200 +@@ -15,9 +15,9 @@ + + #include "base/check.h" + #include "base/strings/string_number_conversions.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace extensions { + namespace v8_helpers { +diff --git a/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.cc b/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.cc +--- a/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.cc 2026-06-16 10:06:30.069779100 +0200 +@@ -22,14 +22,14 @@ + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/static_v8_external_one_byte_string_resource.h" + #include "extensions/renderer/v8_helpers.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-json.h" +-#include "v8/include/v8-microtask-queue.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-json.h" ++#include "v8-microtask-queue.h" ++#include "v8-object.h" ++#include "v8-value.h" + + using content::V8ValueConverter; + +diff --git a/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.h b/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.h +--- a/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/v8_schema_registry.h 2026-06-16 10:06:30.071786500 +0200 +@@ -11,8 +11,8 @@ + #include + + #include "gin/public/context_holder.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-util.h" ++#include "v8-forward.h" ++#include "v8-util.h" + + namespace extensions { + class NativeHandler; +diff --git a/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.cc b/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.cc +--- a/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.cc 2026-06-16 10:06:30.073792800 +0200 +@@ -12,7 +12,7 @@ + #include "extensions/renderer/dispatcher.h" + #include "extensions/renderer/script_context.h" + #include "extensions/renderer/worker_thread_util.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.h b/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.h +--- a/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/extensions/renderer/worker_script_context_set.h 2026-06-16 10:06:30.075799800 +0200 +@@ -11,7 +11,7 @@ + #include "content/public/renderer/worker_thread.h" + #include "extensions/renderer/script_context_set_iterable.h" + #include "url/gurl.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace extensions { + +diff --git a/src/3rdparty/chromium/gin/arguments.cc b/src/3rdparty/chromium/gin/arguments.cc +--- a/src/3rdparty/chromium/gin/arguments.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/arguments.cc 2026-06-16 10:06:30.079827000 +0200 +@@ -6,10 +6,10 @@ + + #include "base/strings/stringprintf.h" + #include "gin/converter.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/arguments_unittest.cc b/src/3rdparty/chromium/gin/arguments_unittest.cc +--- a/src/3rdparty/chromium/gin/arguments_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/arguments_unittest.cc 2026-06-16 10:06:30.081577700 +0200 +@@ -11,13 +11,13 @@ + #include "gin/object_template_builder.h" + #include "gin/public/isolate_holder.h" + #include "gin/test/v8_test.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-forward.h" ++#include "v8-function.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-script.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/array_buffer.cc b/src/3rdparty/chromium/gin/array_buffer.cc +--- a/src/3rdparty/chromium/gin/array_buffer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/array_buffer.cc 2026-06-16 10:06:30.083584900 +0200 +@@ -20,7 +20,7 @@ + #include "partition_alloc/page_allocator.h" + #include "partition_alloc/partition_alloc.h" + #include "partition_alloc/partition_root.h" +-#include "v8/include/v8-initialization.h" ++#include "v8-initialization.h" + + #if BUILDFLAG(IS_POSIX) + #include +diff --git a/src/3rdparty/chromium/gin/array_buffer.h b/src/3rdparty/chromium/gin/array_buffer.h +--- a/src/3rdparty/chromium/gin/array_buffer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/array_buffer.h 2026-06-16 10:06:30.085596900 +0200 +@@ -18,8 +18,8 @@ + #include "gin/converter.h" + #include "gin/gin_export.h" + #include "partition_alloc/partition_alloc.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-forward.h" ++#include "v8-array-buffer.h" ++#include "v8-forward.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/converter.cc b/src/3rdparty/chromium/gin/converter.cc +--- a/src/3rdparty/chromium/gin/converter.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/converter.cc 2026-06-16 10:06:30.087603900 +0200 +@@ -10,14 +10,14 @@ + + #include "base/strings/string_util.h" + #include "base/time/time.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-maybe.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-promise.h" +-#include "v8/include/v8-value.h" ++#include "v8-array-buffer.h" ++#include "v8-external.h" ++#include "v8-function.h" ++#include "v8-maybe.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-promise.h" ++#include "v8-value.h" + + using v8::ArrayBuffer; + using v8::External; +diff --git a/src/3rdparty/chromium/gin/converter.h b/src/3rdparty/chromium/gin/converter.h +--- a/src/3rdparty/chromium/gin/converter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/converter.h 2026-06-16 10:06:30.089616600 +0200 +@@ -19,10 +19,10 @@ + #include "base/location.h" + #include "base/notreached.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-source-location.h" ++#include "v8-container.h" ++#include "v8-forward.h" ++#include "v8-isolate.h" ++#include "v8-source-location.h" + + namespace base { + class TimeTicks; +diff --git a/src/3rdparty/chromium/gin/converter_unittest.cc b/src/3rdparty/chromium/gin/converter_unittest.cc +--- a/src/3rdparty/chromium/gin/converter_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/converter_unittest.cc 2026-06-16 10:06:30.091625700 +0200 +@@ -21,14 +21,14 @@ + #include "gin/wrappable.h" + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "cppgc/allocation.h" ++#include "v8-container.h" ++#include "v8-cppgc.h" ++#include "v8-forward.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/cppgc.cc b/src/3rdparty/chromium/gin/cppgc.cc +--- a/src/3rdparty/chromium/gin/cppgc.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/cppgc.cc 2026-06-16 10:06:30.095644700 +0200 +@@ -9,7 +9,7 @@ + #include "build/build_config.h" + #include "gin/gin_features.h" + #include "gin/public/v8_platform.h" +-#include "v8/include/cppgc/platform.h" ++#include "cppgc/platform.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/data_object_builder.h b/src/3rdparty/chromium/gin/data_object_builder.h +--- a/src/3rdparty/chromium/gin/data_object_builder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/data_object_builder.h 2026-06-16 10:06:30.097429700 +0200 +@@ -12,8 +12,8 @@ + #include "base/memory/raw_ptr.h" + #include "gin/converter.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-object.h" ++#include "v8-forward.h" ++#include "v8-object.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/data_object_builder_unittest.cc b/src/3rdparty/chromium/gin/data_object_builder_unittest.cc +--- a/src/3rdparty/chromium/gin/data_object_builder_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/data_object_builder_unittest.cc 2026-06-16 10:06:30.099438000 +0200 +@@ -13,8 +13,8 @@ + #include "gin/dictionary.h" + #include "gin/public/isolate_holder.h" + #include "gin/test/v8_test.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" ++#include "v8-context.h" ++#include "v8-function.h" + + namespace gin { + namespace { +diff --git a/src/3rdparty/chromium/gin/debug_impl.cc b/src/3rdparty/chromium/gin/debug_impl.cc +--- a/src/3rdparty/chromium/gin/debug_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/debug_impl.cc 2026-06-16 10:06:30.101455600 +0200 +@@ -7,7 +7,7 @@ + #include "build/build_config.h" + + #if BUILDFLAG(IS_WIN) +-#include "v8/include/v8-initialization.h" ++#include "v8-initialization.h" + #endif + + namespace gin { +diff --git a/src/3rdparty/chromium/gin/debug_impl.h b/src/3rdparty/chromium/gin/debug_impl.h +--- a/src/3rdparty/chromium/gin/debug_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/debug_impl.h 2026-06-16 10:06:30.101455600 +0200 +@@ -6,7 +6,7 @@ + #define GIN_DEBUG_IMPL_H_ + + #include "gin/public/debug.h" +-#include "v8/include/v8-callbacks.h" ++#include "v8-callbacks.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/function_template.h b/src/3rdparty/chromium/gin/function_template.h +--- a/src/3rdparty/chromium/gin/function_template.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/function_template.h 2026-06-16 10:06:30.103464200 +0200 +@@ -18,10 +18,10 @@ + #include "gin/converter.h" + #include "gin/gin_export.h" + #include "gin/per_isolate_data.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-template.h" ++#include "v8-external.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/interceptor.h b/src/3rdparty/chromium/gin/interceptor.h +--- a/src/3rdparty/chromium/gin/interceptor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/interceptor.h 2026-06-16 10:06:30.105479200 +0200 +@@ -13,7 +13,7 @@ + #include "base/memory/raw_ptr.h" + #include "gin/gin_export.h" + #include "gin/wrappable.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/interceptor_unittest.cc b/src/3rdparty/chromium/gin/interceptor_unittest.cc +--- a/src/3rdparty/chromium/gin/interceptor_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/interceptor_unittest.cc 2026-06-16 10:06:30.107489000 +0200 +@@ -16,9 +16,9 @@ + #include "gin/try_catch.h" + #include "gin/wrappable.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-script.h" +-#include "v8/include/v8-util.h" ++#include "v8-function.h" ++#include "v8-script.h" ++#include "v8-util.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/isolate_holder.cc b/src/3rdparty/chromium/gin/isolate_holder.cc +--- a/src/3rdparty/chromium/gin/isolate_holder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/isolate_holder.cc 2026-06-16 10:06:30.109497400 +0200 +@@ -23,10 +23,10 @@ + #include "gin/v8_initializer.h" + #include "gin/v8_isolate_memory_dump_provider.h" + #include "gin/v8_shared_memory_dump_provider.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-locker.h" +-#include "v8/include/v8-snapshot.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" ++#include "v8-locker.h" ++#include "v8-snapshot.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/isolate_holder_unittest.cc b/src/3rdparty/chromium/gin/isolate_holder_unittest.cc +--- a/src/3rdparty/chromium/gin/isolate_holder_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/isolate_holder_unittest.cc 2026-06-16 10:06:30.109497400 +0200 +@@ -8,10 +8,10 @@ + #include "gin/converter.h" + #include "gin/function_template.h" + #include "gin/test/v8_test.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/modules/console.cc b/src/3rdparty/chromium/gin/modules/console.cc +--- a/src/3rdparty/chromium/gin/modules/console.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/modules/console.cc 2026-06-16 10:06:30.113257900 +0200 +@@ -9,7 +9,7 @@ + #include "base/strings/string_util.h" + #include "gin/arguments.h" + #include "gin/converter.h" +-#include "v8/include/v8-template.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/modules/console.h b/src/3rdparty/chromium/gin/modules/console.h +--- a/src/3rdparty/chromium/gin/modules/console.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/modules/console.h 2026-06-16 10:06:30.113257900 +0200 +@@ -6,7 +6,7 @@ + #define GIN_MODULES_CONSOLE_H_ + + #include "gin/gin_export.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/object_template_builder.cc b/src/3rdparty/chromium/gin/object_template_builder.cc +--- a/src/3rdparty/chromium/gin/object_template_builder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/object_template_builder.cc 2026-06-16 10:06:30.115267000 +0200 +@@ -11,8 +11,8 @@ + #include "gin/interceptor.h" + #include "gin/per_isolate_data.h" + #include "gin/public/wrapper_info.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-template.h" ++#include "v8-exception.h" ++#include "v8-template.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/object_template_builder.h b/src/3rdparty/chromium/gin/object_template_builder.h +--- a/src/3rdparty/chromium/gin/object_template_builder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/object_template_builder.h 2026-06-16 10:06:30.117276300 +0200 +@@ -15,7 +15,7 @@ + #include "gin/converter.h" + #include "gin/function_template.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/per_context_data.h b/src/3rdparty/chromium/gin/per_context_data.h +--- a/src/3rdparty/chromium/gin/per_context_data.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/per_context_data.h 2026-06-16 10:06:30.119284200 +0200 +@@ -8,7 +8,7 @@ + #include "base/memory/raw_ptr.h" + #include "base/supports_user_data.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/per_context_data_unittest.cc b/src/3rdparty/chromium/gin/per_context_data_unittest.cc +--- a/src/3rdparty/chromium/gin/per_context_data_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/per_context_data_unittest.cc 2026-06-16 10:06:30.123299900 +0200 +@@ -7,8 +7,8 @@ + #include "gin/public/context_holder.h" + #include "gin/public/isolate_holder.h" + #include "gin/test/v8_test.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-isolate.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/per_isolate_data.cc b/src/3rdparty/chromium/gin/per_isolate_data.cc +--- a/src/3rdparty/chromium/gin/per_isolate_data.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/per_isolate_data.cc 2026-06-16 10:06:30.125309200 +0200 +@@ -12,7 +12,7 @@ + #include "gin/public/gin_embedders.h" + #include "gin/v8_foreground_task_runner.h" + #include "gin/v8_foreground_task_runner_with_locker.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + using v8::ArrayBuffer; + using v8::Eternal; +diff --git a/src/3rdparty/chromium/gin/per_isolate_data.h b/src/3rdparty/chromium/gin/per_isolate_data.h +--- a/src/3rdparty/chromium/gin/per_isolate_data.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/per_isolate_data.h 2026-06-16 10:06:30.127317800 +0200 +@@ -17,8 +17,8 @@ + #include "gin/public/isolate_holder.h" + #include "gin/public/wrapper_info.h" + #include "gin/v8_foreground_task_runner_base.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-forward.h" ++#include "v8-array-buffer.h" ++#include "v8-forward.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/public/context_holder.h b/src/3rdparty/chromium/gin/public/context_holder.h +--- a/src/3rdparty/chromium/gin/public/context_holder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/public/context_holder.h 2026-06-16 10:06:30.129089200 +0200 +@@ -9,9 +9,9 @@ + + #include "base/memory/raw_ptr.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-context.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/public/debug.h b/src/3rdparty/chromium/gin/public/debug.h +--- a/src/3rdparty/chromium/gin/public/debug.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/public/debug.h 2026-06-16 10:06:30.131104400 +0200 +@@ -9,7 +9,7 @@ + + #include "build/build_config.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-callbacks.h" ++#include "v8-callbacks.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/public/isolate_holder.h b/src/3rdparty/chromium/gin/public/isolate_holder.h +--- a/src/3rdparty/chromium/gin/public/isolate_holder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/public/isolate_holder.h 2026-06-16 10:06:30.133112200 +0200 +@@ -11,10 +11,10 @@ + #include "base/memory/ref_counted.h" + #include "gin/gin_export.h" + #include "gin/public/v8_idle_task_runner.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-callbacks.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-array-buffer.h" ++#include "v8-callbacks.h" ++#include "v8-forward.h" ++#include "v8-isolate.h" + + namespace base { + class SingleThreadTaskRunner; +diff --git a/src/3rdparty/chromium/gin/public/v8_idle_task_runner.h b/src/3rdparty/chromium/gin/public/v8_idle_task_runner.h +--- a/src/3rdparty/chromium/gin/public/v8_idle_task_runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/public/v8_idle_task_runner.h 2026-06-16 10:06:30.133112200 +0200 +@@ -7,7 +7,7 @@ + + #include + #include "gin/gin_export.h" +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/public/v8_platform.h b/src/3rdparty/chromium/gin/public/v8_platform.h +--- a/src/3rdparty/chromium/gin/public/v8_platform.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/public/v8_platform.h 2026-06-16 10:06:30.135120400 +0200 +@@ -12,7 +12,7 @@ + #include "gin/v8_platform_page_allocator.h" + #include "gin/v8_platform_thread_isolated_allocator.h" + #include "partition_alloc/buildflags.h" +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/public/wrapper_info.h b/src/3rdparty/chromium/gin/public/wrapper_info.h +--- a/src/3rdparty/chromium/gin/public/wrapper_info.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/public/wrapper_info.h 2026-06-16 10:06:30.137128900 +0200 +@@ -8,8 +8,8 @@ + #include "gin/gin_export.h" + #include "gin/public/gin_embedders.h" + #include "gin/public/wrappable_pointer_tags.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-object.h" ++#include "v8-forward.h" ++#include "v8-object.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/runner.h b/src/3rdparty/chromium/gin/runner.h +--- a/src/3rdparty/chromium/gin/runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/runner.h 2026-06-16 10:06:30.139142900 +0200 +@@ -10,8 +10,8 @@ + #include "base/memory/weak_ptr.h" + #include "gin/gin_export.h" + #include "gin/public/context_holder.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-forward.h" ++#include "v8-isolate.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/shell_runner.cc b/src/3rdparty/chromium/gin/shell_runner.cc +--- a/src/3rdparty/chromium/gin/shell_runner.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/shell_runner.cc 2026-06-16 10:06:30.141154800 +0200 +@@ -11,7 +11,7 @@ + #include "gin/per_context_data.h" + #include "gin/public/context_holder.h" + #include "gin/try_catch.h" +-#include "v8/include/v8-script.h" ++#include "v8-script.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/try_catch.cc b/src/3rdparty/chromium/gin/try_catch.cc +--- a/src/3rdparty/chromium/gin/try_catch.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/try_catch.cc 2026-06-16 10:06:30.143166700 +0200 +@@ -7,7 +7,7 @@ + #include + + #include "gin/converter.h" +-#include "v8/include/v8-message.h" ++#include "v8-message.h" + + namespace { + +diff --git a/src/3rdparty/chromium/gin/try_catch.h b/src/3rdparty/chromium/gin/try_catch.h +--- a/src/3rdparty/chromium/gin/try_catch.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/try_catch.h 2026-06-16 10:06:30.144917800 +0200 +@@ -9,7 +9,7 @@ + + #include "base/memory/raw_ptr.h" + #include "gin/gin_export.h" +-#include "v8/include/v8-exception.h" ++#include "v8-exception.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/v8_foreground_task_runner_base.h b/src/3rdparty/chromium/gin/v8_foreground_task_runner_base.h +--- a/src/3rdparty/chromium/gin/v8_foreground_task_runner_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_foreground_task_runner_base.h 2026-06-16 10:06:30.144917800 +0200 +@@ -5,7 +5,7 @@ + #ifndef GIN_V8_FOREGROUND_TASK_RUNNER_BASE_H_ + #define GIN_V8_FOREGROUND_TASK_RUNNER_BASE_H_ + +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + #include "gin/gin_export.h" + #include "gin/public/v8_idle_task_runner.h" +diff --git a/src/3rdparty/chromium/gin/v8_foreground_task_runner_with_locker.cc b/src/3rdparty/chromium/gin/v8_foreground_task_runner_with_locker.cc +--- a/src/3rdparty/chromium/gin/v8_foreground_task_runner_with_locker.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_foreground_task_runner_with_locker.cc 2026-06-16 10:06:30.146929000 +0200 +@@ -10,8 +10,8 @@ + #include "base/task/single_thread_task_runner.h" + #include "base/time/time.h" + #include "gin/converter.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-locker.h" ++#include "v8-isolate.h" ++#include "v8-locker.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/v8_initializer.cc b/src/3rdparty/chromium/gin/v8_initializer.cc +--- a/src/3rdparty/chromium/gin/v8_initializer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_initializer.cc 2026-06-16 10:06:30.148941900 +0200 +@@ -44,8 +44,8 @@ + #include "partition_alloc/page_allocator.h" + #include "partition_alloc/partition_address_space.h" + #include "tools/v8_context_snapshot/buildflags.h" +-#include "v8/include/v8-initialization.h" +-#include "v8/include/v8-snapshot.h" ++#include "v8-initialization.h" ++#include "v8-snapshot.h" + + #if defined(V8_USE_EXTERNAL_STARTUP_DATA) && BUILDFLAG(IS_ANDROID) + #include "base/android/apk_assets.h" +diff --git a/src/3rdparty/chromium/gin/v8_initializer.h b/src/3rdparty/chromium/gin/v8_initializer.h +--- a/src/3rdparty/chromium/gin/v8_initializer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_initializer.h 2026-06-16 10:06:30.150949800 +0200 +@@ -14,7 +14,7 @@ + #include "gin/gin_export.h" + #include "gin/public/isolate_holder.h" + #include "gin/public/v8_platform.h" +-#include "v8/include/v8-callbacks.h" ++#include "v8-callbacks.h" + + #if defined(V8_USE_EXTERNAL_STARTUP_DATA) + #include "gin/public/v8_snapshot_file_type.h" +diff --git a/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider.cc b/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider.cc +--- a/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider.cc 2026-06-16 10:06:30.150949800 +0200 +@@ -14,9 +14,9 @@ + #include "base/trace_event/memory_dump_manager.h" + #include "base/trace_event/process_memory_dump.h" + #include "gin/public/isolate_holder.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-locker.h" +-#include "v8/include/v8-statistics.h" ++#include "v8-isolate.h" ++#include "v8-locker.h" ++#include "v8-statistics.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider_unittest.cc b/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider_unittest.cc +--- a/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_isolate_memory_dump_provider_unittest.cc 2026-06-16 10:06:30.152960000 +0200 +@@ -15,7 +15,7 @@ + #include "build/build_config.h" + #include "gin/public/isolate_holder.h" + #include "gin/test/v8_test.h" +-#include "v8/include/v8-initialization.h" ++#include "v8-initialization.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/v8_platform_page_allocator.h b/src/3rdparty/chromium/gin/v8_platform_page_allocator.h +--- a/src/3rdparty/chromium/gin/v8_platform_page_allocator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_platform_page_allocator.h 2026-06-16 10:06:30.154970800 +0200 +@@ -13,7 +13,7 @@ + + #include "gin/gin_export.h" + #include "partition_alloc/page_allocator.h" +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/v8_platform_page_allocator_unittest.cc b/src/3rdparty/chromium/gin/v8_platform_page_allocator_unittest.cc +--- a/src/3rdparty/chromium/gin/v8_platform_page_allocator_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_platform_page_allocator_unittest.cc 2026-06-16 10:06:30.156982800 +0200 +@@ -12,7 +12,7 @@ + #include "base/cpu.h" + #include "build/build_config.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + // includes for Branch Target Instruction tests + #if defined(ARCH_CPU_ARM64) && (OS_LINUX || OS_ANDROID) +diff --git a/src/3rdparty/chromium/gin/v8_platform_thread_isolated_allocator.h b/src/3rdparty/chromium/gin/v8_platform_thread_isolated_allocator.h +--- a/src/3rdparty/chromium/gin/v8_platform_thread_isolated_allocator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_platform_thread_isolated_allocator.h 2026-06-16 10:06:30.188625100 +0200 +@@ -15,7 +15,7 @@ + + #include "gin/gin_export.h" + #include "partition_alloc/partition_alloc.h" +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/v8_shared_memory_dump_provider.cc b/src/3rdparty/chromium/gin/v8_shared_memory_dump_provider.cc +--- a/src/3rdparty/chromium/gin/v8_shared_memory_dump_provider.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/v8_shared_memory_dump_provider.cc 2026-06-16 10:06:30.188625100 +0200 +@@ -10,8 +10,8 @@ + #include "base/task/single_thread_task_runner.h" + #include "base/trace_event/memory_dump_manager.h" + #include "base/trace_event/process_memory_dump.h" +-#include "v8/include/v8-initialization.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-initialization.h" ++#include "v8-isolate.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/wrappable.cc b/src/3rdparty/chromium/gin/wrappable.cc +--- a/src/3rdparty/chromium/gin/wrappable.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/wrappable.cc 2026-06-16 10:06:30.190634200 +0200 +@@ -7,9 +7,9 @@ + #include "base/check_op.h" + #include "gin/object_template_builder.h" + #include "gin/per_isolate_data.h" +-#include "v8/include/cppgc/visitor.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-sandbox.h" ++#include "cppgc/visitor.h" ++#include "v8-cppgc.h" ++#include "v8-sandbox.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/wrappable.h b/src/3rdparty/chromium/gin/wrappable.h +--- a/src/3rdparty/chromium/gin/wrappable.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/wrappable.h 2026-06-16 10:06:30.192381800 +0200 +@@ -10,8 +10,8 @@ + #include "gin/converter.h" + #include "gin/gin_export.h" + #include "gin/public/wrapper_info.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/v8-sandbox.h" ++#include "cppgc/garbage-collected.h" ++#include "v8-sandbox.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/wrappable_unittest.cc b/src/3rdparty/chromium/gin/wrappable_unittest.cc +--- a/src/3rdparty/chromium/gin/wrappable_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/wrappable_unittest.cc 2026-06-16 10:06:30.194391900 +0200 +@@ -13,11 +13,11 @@ + #include "gin/test/v8_test.h" + #include "gin/try_catch.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-message.h" +-#include "v8/include/v8-script.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-function.h" ++#include "v8-message.h" ++#include "v8-script.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gin/wrapper_info.cc b/src/3rdparty/chromium/gin/wrapper_info.cc +--- a/src/3rdparty/chromium/gin/wrapper_info.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gin/wrapper_info.cc 2026-06-16 10:06:30.196400900 +0200 +@@ -3,7 +3,7 @@ + // found in the LICENSE file. + + #include "gin/public/wrapper_info.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + + namespace gin { + +diff --git a/src/3rdparty/chromium/gpu/BUILD.gn b/src/3rdparty/chromium/gpu/BUILD.gn +--- a/src/3rdparty/chromium/gpu/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gpu/BUILD.gn 2026-06-16 10:07:01.378600500 +0200 +@@ -340,7 +340,7 @@ + sources += [ "command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc" ] + } else if (is_win) { + libs += [ "d3d12.lib" ] +- libs += [ "d3d11.lib" ] ++ libs += [ "d3d11" ] + deps += [ + "//third_party/microsoft_dxheaders:dxguids", + "//ui/platform_window", +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc 2026-06-16 10:01:56.985931900 +0200 ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_factory.cc 2026-06-16 10:06:04.231654600 +0200 +@@ -71,13 +71,13 @@ + #include "gpu/command_buffer/service/shared_image/iosurface_image_backing_factory.h" + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "gpu/command_buffer/service/dxgi_shared_handle_manager.h" + #include "gpu/command_buffer/service/shared_image/d3d_image_backing_factory.h" + #include "gpu/command_buffer/service/shared_image/dcomp_image_backing_factory.h" + #include "ui/gl/direct_composition_support.h" + #include "ui/gl/gl_angle_util_win.h" +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_FUCHSIA) + #include +@@ -108,7 +108,7 @@ + case gfx::NATIVE_PIXMAP: + return "platform"; + #endif +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + case gfx::DXGI_SHARED_HANDLE: + return "platform"; + #endif +@@ -250,13 +250,13 @@ + factories_.push_back(std::move(factory)); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + if (gr_context_type_ == GrContextType::kVulkan) { + auto external_vk_image_factory = + std::make_unique(context_state_); + factories_.push_back(std::move(external_vk_image_factory)); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + #endif // BUILDFLAG(ENABLE_VULKAN) + + // Create EGLImageBackingFactory if egl images are supported. Note that the +@@ -620,7 +620,7 @@ + shared_images_.clear(); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + bool SharedImageFactory::IsD3DSharedImageSupported() const { + if (!context_state_) { + return false; +@@ -693,7 +693,7 @@ + return shared_image->CopyToGpuMemoryBuffer(); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + bool SharedImageFactory::CopyToGpuMemoryBufferAsync( + const Mailbox& mailbox, + base::OnceCallback callback) { +@@ -752,7 +752,7 @@ + shared_image_caps.supports_scanout_shared_images = + shared_image_manager_->SupportsScanoutImages(); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + // Scanout for software video frames is supported on Windows except on D3D9. + shared_image_caps.supports_scanout_shared_images_for_software_video_frames = + gl::QueryD3D11DeviceObjectFromANGLE(); +@@ -811,13 +811,13 @@ + texture_target_for_io_surfaces_; + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + shared_image_caps.shared_image_d3d = IsD3DSharedImageSupported(); + shared_image_caps.shared_image_swap_chain = + shared_image_caps.shared_image_d3d && + D3DImageBackingFactory::IsSwapChainSupported( + gpu_preferences_, context_state_->dawn_context_provider()); +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + return shared_image_caps; + } +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc 2026-06-16 10:01:56.989947700 +0200 ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_image/shared_image_manager.cc 2026-06-16 10:06:04.259356600 +0200 +@@ -762,7 +762,7 @@ + return base::AndroidHardwareBufferCompat::IsSupportAvailable(); + #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) + return supports_overlays_on_ozone_; +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + return gl::DirectCompositionTextureSupported(); + #else + return false; +diff --git a/src/3rdparty/chromium/gpu/config/BUILD.gn b/src/3rdparty/chromium/gpu/config/BUILD.gn +--- a/src/3rdparty/chromium/gpu/config/BUILD.gn 2026-06-16 10:01:56.991956000 +0200 ++++ b/src/3rdparty/chromium/gpu/config/BUILD.gn 2026-06-16 10:07:01.388395900 +0200 +@@ -211,7 +211,7 @@ + deps += [ "//third_party/microsoft_dxheaders:dxguids" ] + } + if (is_msvc) { +- libs = [ "dxgi.lib" ] ++ libs = [ "dxgi" ] + } else { + libs = [ "dxgi" ] + } +diff --git a/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn b/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn +--- a/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/gpu/ipc/common/BUILD.gn 2026-06-16 10:07:01.394453900 +0200 +@@ -112,7 +112,7 @@ + "gpu_memory_buffer_impl_dxgi.h", + ] + libs = [ +- "d3d11.lib", ++ "d3d11", + "dxguid.lib", + ] + } +diff --git a/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn b/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn +--- a/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn 2026-06-16 10:01:57.011508000 +0200 ++++ b/src/3rdparty/chromium/gpu/ipc/service/BUILD.gn 2026-06-16 10:07:01.398483500 +0200 +@@ -102,8 +102,8 @@ + ] + if (is_msvc) { + libs += [ +- "d3d11.lib", +- "dcomp.lib", ++ "d3d11", ++ "dcomp", + "dxguid.lib", + ] + } else { +diff --git a/src/3rdparty/chromium/media/audio/BUILD.gn b/src/3rdparty/chromium/media/audio/BUILD.gn +--- a/src/3rdparty/chromium/media/audio/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/media/audio/BUILD.gn 2026-06-16 10:07:04.041668400 +0200 +@@ -242,12 +242,32 @@ + + deps += [ "//media/base/win:media_foundation_util" ] + +- libs += [ +- "dxguid.lib", +- "setupapi.lib", +- "winmm.lib", +- "mmdevapi.lib", +- ] ++ if (is_mingw) { ++ sources -= [ ++ "win/audio_low_latency_input_win.cc", ++ "win/audio_low_latency_input_win.h", ++ "win/audio_low_latency_output_win.cc", ++ "win/audio_low_latency_output_win.h", ++ "win/audio_manager_win.cc", ++ "win/audio_manager_win.h", ++ "win/audio_session_event_listener_win.cc", ++ "win/audio_session_event_listener_win.h", ++ ] ++ libs += [ ++ "dxguid", ++ "ksuser", ++ "setupapi", ++ "winmm", ++ "mmdevapi", ++ ] ++ } else { ++ libs += [ ++ "dxguid.lib", ++ "setupapi.lib", ++ "winmm.lib", ++ "mmdevapi.lib", ++ ] ++ } + } + + if (is_android) { +diff --git a/src/3rdparty/chromium/media/base/BUILD.gn b/src/3rdparty/chromium/media/base/BUILD.gn +--- a/src/3rdparty/chromium/media/base/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/media/base/BUILD.gn 2026-06-16 10:07:04.045688200 +0200 +@@ -708,7 +708,7 @@ + "//ui/events:test_support", + ] + libs = [ +- "d3d11.lib", ++ "d3d11", + "mfplat.lib", + ] + } +diff --git a/src/3rdparty/chromium/media/base/win/BUILD.gn b/src/3rdparty/chromium/media/base/win/BUILD.gn +--- a/src/3rdparty/chromium/media/base/win/BUILD.gn 2026-06-16 10:01:57.296250900 +0200 ++++ b/src/3rdparty/chromium/media/base/win/BUILD.gn 2026-06-16 10:07:04.051460000 +0200 +@@ -37,12 +37,12 @@ + ] + if (is_msvc) { + libs = [ +- "d3d11.lib", ++ "d3d11", + "mf.lib", + "mfplat.lib", + "mfreadwrite.lib", + "dxguid.lib", +- "dxgi.lib", ++ "dxgi", + ] + } else { + libs = [ +diff --git a/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc b/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc +--- a/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc 2026-06-16 10:01:57.308308900 +0200 ++++ b/src/3rdparty/chromium/media/capture/video/video_capture_buffer_tracker_factory_impl.cc 2026-06-16 10:06:04.390117700 +0200 +@@ -15,7 +15,7 @@ + #include "media/capture/video/apple/gpu_memory_buffer_tracker_apple.h" + #elif BUILDFLAG(IS_LINUX) + #include "media/capture/video/linux/v4l2_gpu_memory_buffer_tracker.h" +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + #include "media/capture/video/win/gpu_memory_buffer_tracker_win.h" + #endif + +@@ -70,7 +70,7 @@ + gfx::GpuMemoryBufferHandle handle) { + #if BUILDFLAG(IS_APPLE) + return std::make_unique(handle.io_surface()); +-#elif BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_MSVC) + if (handle.type != gfx::DXGI_SHARED_HANDLE) { + return nullptr; + } +diff --git a/src/3rdparty/chromium/media/gpu/BUILD.gn b/src/3rdparty/chromium/media/gpu/BUILD.gn +--- a/src/3rdparty/chromium/media/gpu/BUILD.gn 2026-06-16 10:01:57.337940400 +0200 ++++ b/src/3rdparty/chromium/media/gpu/BUILD.gn 2026-06-16 10:07:04.127032500 +0200 +@@ -351,10 +351,10 @@ + if (is_msvc) { + libs += [ + "d3d9.lib", +- "d3d11.lib", ++ "d3d11", + "d3d12.lib", + "dxva2.lib", +- "dxgi.lib", ++ "dxgi", + "strmiids.lib", + "mf.lib", + "mfplat.lib", +diff --git a/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc b/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc +--- a/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc 2026-06-16 10:06:04.415800600 +0200 +@@ -4,7 +4,7 @@ + + #include "media/gpu/gpu_video_encode_accelerator_factory.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "third_party/microsoft_dxheaders/src/include/directx/d3d12video.h" + // Windows SDK headers should be included after DirectX headers. + #endif +@@ -38,7 +38,7 @@ + #if BUILDFLAG(IS_MAC) + #include "media/gpu/mac/vt_video_encode_accelerator_mac.h" + #endif +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include "media/gpu/windows/d3d12_helpers.h" + #include "media/gpu/windows/d3d12_video_encode_accelerator.h" + #include "media/gpu/windows/media_foundation_video_encode_accelerator_win.h" +@@ -93,7 +93,7 @@ + } + #endif + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + std::unique_ptr CreateMediaFoundationVEA( + const gpu::GpuPreferences& gpu_preferences, + const gpu::GpuDriverBugWorkarounds& gpu_workarounds, +@@ -187,7 +187,7 @@ + #if BUILDFLAG(IS_MAC) + vea_factory_functions->push_back(base::BindRepeating(&CreateVTVEA)); + #endif +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #if BUILDFLAG(USE_DAWN) + if (base::FeatureList::IsEnabled(kD3D12VideoEncodeAccelerator)) { + vea_factory_functions->push_back( +diff --git a/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc b/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc +--- a/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/media/gpu/windows/d3d11_decoder_configurator.cc 2026-06-16 10:06:04.461455800 +0200 +@@ -1,238 +1,240 @@ +-// Copyright 2019 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#include "media/gpu/windows/d3d11_decoder_configurator.h" +- +-#include +-#include +-#include +- +-#include "base/feature_list.h" +-#include "media/base/media_log.h" +-#include "media/base/media_switches.h" +-#include "media/base/video_codecs.h" +-#include "media/base/win/mf_helpers.h" +-#include "media/gpu/windows/av1_guids.h" +-#include "media/gpu/windows/d3d11_status.h" +-#include "media/gpu/windows/supported_profile_helpers.h" +-#include "ui/gfx/geometry/size.h" +-#include "ui/gl/direct_composition_support.h" +- +-namespace media { +- +-namespace { +- +-GUID GetD3D11DecoderGUID(const VideoCodecProfile& profile, +- uint8_t bit_depth, +- VideoChromaSampling chroma_sampling, +- ComD3D11Device device) { +- switch (profile) { +- case H264PROFILE_BASELINE: +- case H264PROFILE_MAIN: +- case H264PROFILE_EXTENDED: +- case H264PROFILE_HIGH: +- case H264PROFILE_HIGH10PROFILE: +- case H264PROFILE_HIGH422PROFILE: +- case H264PROFILE_HIGH444PREDICTIVEPROFILE: +- case H264PROFILE_SCALABLEBASELINE: +- case H264PROFILE_SCALABLEHIGH: +- case H264PROFILE_STEREOHIGH: +- case H264PROFILE_MULTIVIEWHIGH: +- return D3D11_DECODER_PROFILE_H264_VLD_NOFGT; +- case VP9PROFILE_PROFILE0: +- return D3D11_DECODER_PROFILE_VP9_VLD_PROFILE0; +- case VP9PROFILE_PROFILE2: +- return D3D11_DECODER_PROFILE_VP9_VLD_10BIT_PROFILE2; +- case AV1PROFILE_PROFILE_MAIN: +- return DXVA_ModeAV1_VLD_Profile0; +- case AV1PROFILE_PROFILE_HIGH: +- return DXVA_ModeAV1_VLD_Profile1; +- case AV1PROFILE_PROFILE_PRO: +- return DXVA_ModeAV1_VLD_Profile2; +-#if BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) +- // Per DirectX Video Acceleration Specification for High Efficiency Video +- // Coding - 7.4, DXVA_ModeHEVC_VLD_Main GUID can be used for both main and +- // main still picture profile. +- case HEVCPROFILE_MAIN: +- case HEVCPROFILE_MAIN_STILL_PICTURE: +- return D3D11_DECODER_PROFILE_HEVC_VLD_MAIN; +- case HEVCPROFILE_MAIN10: +- return D3D11_DECODER_PROFILE_HEVC_VLD_MAIN10; +- case HEVCPROFILE_REXT: +- return GetHEVCRangeExtensionGUID( +- bit_depth, chroma_sampling, +- SupportsHEVCRangeExtensionDXVAProfile(device)); +-#endif // BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) +- default: +- return {}; +- } +-} +- +-} // namespace +- +-D3D11DecoderConfigurator::D3D11DecoderConfigurator( +- DXGI_FORMAT decoder_output_dxgifmt, +- GUID decoder_guid, +- gfx::Size coded_size, +- bool is_encrypted, +- bool supports_swap_chain) +- : dxgi_format_(decoder_output_dxgifmt), +- decoder_guid_(decoder_guid), +- supports_swap_chain_(supports_swap_chain), +- is_encrypted_(is_encrypted) { +- SetUpDecoderDescriptor(coded_size); +- SetUpTextureDescriptor(); +-} +- +-// static +-std::unique_ptr D3D11DecoderConfigurator::Create( +- const gpu::GpuPreferences& gpu_preferences, +- const gpu::GpuDriverBugWorkarounds& workarounds, +- const VideoDecoderConfig& config, +- uint8_t bit_depth, +- VideoChromaSampling chroma_sampling, +- MediaLog* media_log, +- bool use_shared_handle, +- ComD3D11Device device) { +- // Decoder swap chains do not support shared resources. More info in +- // https://crbug.com/911847. To enable Kaby Lake+ systems for using shared +- // handle, we disable decode swap chain support if shared handle is enabled. +- const bool supports_nv12_decode_swap_chain = +- gl::DirectCompositionDecodeSwapChainSupported() && !use_shared_handle; +- +- DXGI_FORMAT decoder_dxgi_format = +- GetOutputDXGIFormat(bit_depth, chroma_sampling); +- if (decoder_dxgi_format == DXGI_FORMAT_UNKNOWN) { +- MEDIA_LOG(WARNING, media_log) +- << "D3D11VideoDecoder does not support bit depth " +- << base::strict_cast(bit_depth) +- << " with chroma subsampling format " +- << VideoChromaSamplingToString(chroma_sampling); +- return nullptr; +- } +- +- GUID decoder_guid = +- GetD3D11DecoderGUID(config.profile(), bit_depth, chroma_sampling, device); +-#if BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) +- if (decoder_guid == DXVA_ModeHEVC_VLD_Main12) { +- constexpr UINT kNVIDIADeviceId = 0x10DE; +- ComDXGIDevice dxgi_device; +- if (SUCCEEDED(device.As(&dxgi_device)) && +- GetGPUVendorID(dxgi_device) == kNVIDIADeviceId) { +- // NVIDIA driver requires output format to be P010 for HEVC 12b420 range +- // extension profile. +- decoder_dxgi_format = DXGI_FORMAT_P010; +- } +- } +-#endif // BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) +- if (decoder_guid == DXVA_ModeAV1_VLD_Profile1) { +- // AV1 profile 1 is YUV 4:4:4 only. +- if (bit_depth == 8) { +- decoder_dxgi_format = DXGI_FORMAT_AYUV; +- } else if (bit_depth == 10) { +- decoder_dxgi_format = DXGI_FORMAT_Y410; +- } +- } +- if (decoder_guid == GUID()) { +- if (config.profile() == HEVCPROFILE_REXT) { +- MEDIA_LOG(INFO, media_log) +- << "D3D11VideoDecoder does not support HEVC range extension " +- << config.codec() << " with chroma subsampling format " +- << VideoChromaSamplingToString(chroma_sampling) << " and bit depth " +- << base::strict_cast(bit_depth); +- } else { +- MEDIA_LOG(INFO, media_log) +- << "D3D11VideoDecoder does not support codec " << config.codec(); +- } +- return nullptr; +- } +- +- MEDIA_LOG(INFO, media_log) +- << "D3D11VideoDecoder is using " << GetProfileName(config.profile()) +- << " / " << VideoChromaSamplingToString(chroma_sampling); +- +- return std::make_unique( +- decoder_dxgi_format, decoder_guid, config.coded_size(), +- config.is_encrypted(), supports_nv12_decode_swap_chain); +-} +- +-bool D3D11DecoderConfigurator::SupportsDevice( +- ComD3D11VideoDevice video_device) { +- for (UINT i = video_device->GetVideoDecoderProfileCount(); i--;) { +- GUID profile = {}; +- if (SUCCEEDED(video_device->GetVideoDecoderProfile(i, &profile))) { +- if (profile == decoder_guid_) +- return true; +- } +- } +- return false; +-} +- +-D3D11Status::Or +-D3D11DecoderConfigurator::CreateOutputTexture(ComD3D11Device device, +- gfx::Size size, +- uint32_t array_size, +- bool use_shared_handle) { +- output_texture_desc_.Width = size.width(); +- output_texture_desc_.Height = size.height(); +- output_texture_desc_.ArraySize = array_size; +- +- if (use_shared_handle) { +- // Update the decoder output texture usage to support shared handle +- // if required. SwapChain should be disabled and the frame shouldn't +- // be encrypted. +- DCHECK(!supports_swap_chain_); +- DCHECK(!is_encrypted_); +- output_texture_desc_.MiscFlags = +- D3D11_RESOURCE_MISC_SHARED_NTHANDLE | D3D11_RESOURCE_MISC_SHARED; +- } else if (supports_swap_chain_) { +- // Decode swap chains do not support shared resources. +- // TODO(sunnyps): Find a workaround for when the decoder moves to its own +- // thread and D3D device. See https://crbug.com/911847 +- // TODO(liberato): This depends on the configuration of the TextureSelector, +- // to some degree. We should unset the flag only if it's binding and the +- // decode swap chain is supported, as Intel driver is buggy on Gen9 and +- // older devices without the flag. See https://crbug.com/1107403 +- output_texture_desc_.MiscFlags = 0; +- } else { +- // Create non-shareable texture for d3d11 video decoder. +- output_texture_desc_.MiscFlags = D3D11_RESOURCE_MISC_SHARED; +- } +- +- if (is_encrypted_) +- output_texture_desc_.MiscFlags |= D3D11_RESOURCE_MISC_HW_PROTECTED; +- +- ComD3D11Texture2D texture; +- HRESULT hr = +- device->CreateTexture2D(&output_texture_desc_, nullptr, &texture); +- if (FAILED(hr)) +- return D3D11Status(D3D11Status::Codes::kCreateDecoderOutputTextureFailed, hr); +- hr = SetDebugName(texture.Get(), "D3D11Decoder_ConfiguratorOutput"); +- if (FAILED(hr)) +- return D3D11Status(D3D11Status::Codes::kCreateDecoderOutputTextureFailed, hr); +- return texture; +-} +- +-// private +-void D3D11DecoderConfigurator::SetUpDecoderDescriptor( +- const gfx::Size& coded_size) { +- decoder_desc_ = {}; +- decoder_desc_.Guid = decoder_guid_; +- decoder_desc_.SampleWidth = coded_size.width(); +- decoder_desc_.SampleHeight = coded_size.height(); +- decoder_desc_.OutputFormat = dxgi_format_; +-} +- +-// private +-void D3D11DecoderConfigurator::SetUpTextureDescriptor() { +- output_texture_desc_ = {}; +- output_texture_desc_.MipLevels = 1; +- output_texture_desc_.Format = dxgi_format_; +- output_texture_desc_.SampleDesc.Count = 1; +- output_texture_desc_.Usage = D3D11_USAGE_DEFAULT; +- output_texture_desc_.BindFlags = +- D3D11_BIND_DECODER | D3D11_BIND_SHADER_RESOURCE; +-} +- +-} // namespace media ++// Copyright 2019 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "media/gpu/windows/d3d11_decoder_configurator.h" ++ ++#include ++#include ++#include ++ ++#include "base/feature_list.h" ++#include "media/base/media_log.h" ++#include "media/base/media_switches.h" ++#include "media/base/video_codecs.h" ++#include "media/base/win/mf_helpers.h" ++#include "media/gpu/windows/av1_guids.h" ++#include "media/gpu/windows/d3d11_status.h" ++#include "media/gpu/windows/supported_profile_helpers.h" ++#include "ui/gfx/geometry/size.h" ++#include "ui/gl/direct_composition_support.h" ++ ++namespace media { ++ ++namespace { ++ ++GUID GetD3D11DecoderGUID(const VideoCodecProfile& profile, ++ uint8_t bit_depth, ++ VideoChromaSampling chroma_sampling, ++ ComD3D11Device device) { ++ switch (profile) { ++ case H264PROFILE_BASELINE: ++ case H264PROFILE_MAIN: ++ case H264PROFILE_EXTENDED: ++ case H264PROFILE_HIGH: ++ case H264PROFILE_HIGH10PROFILE: ++ case H264PROFILE_HIGH422PROFILE: ++ case H264PROFILE_HIGH444PREDICTIVEPROFILE: ++ case H264PROFILE_SCALABLEBASELINE: ++ case H264PROFILE_SCALABLEHIGH: ++ case H264PROFILE_STEREOHIGH: ++ case H264PROFILE_MULTIVIEWHIGH: ++ return D3D11_DECODER_PROFILE_H264_VLD_NOFGT; ++ case VP9PROFILE_PROFILE0: ++ return D3D11_DECODER_PROFILE_VP9_VLD_PROFILE0; ++ case VP9PROFILE_PROFILE2: ++ return D3D11_DECODER_PROFILE_VP9_VLD_10BIT_PROFILE2; ++ case AV1PROFILE_PROFILE_MAIN: ++ return DXVA_ModeAV1_VLD_Profile0; ++ case AV1PROFILE_PROFILE_HIGH: ++ return DXVA_ModeAV1_VLD_Profile1; ++ case AV1PROFILE_PROFILE_PRO: ++ return DXVA_ModeAV1_VLD_Profile2; ++#if BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) ++ // Per DirectX Video Acceleration Specification for High Efficiency Video ++ // Coding - 7.4, DXVA_ModeHEVC_VLD_Main GUID can be used for both main and ++ // main still picture profile. ++ case HEVCPROFILE_MAIN: ++ case HEVCPROFILE_MAIN_STILL_PICTURE: ++ return D3D11_DECODER_PROFILE_HEVC_VLD_MAIN; ++ case HEVCPROFILE_MAIN10: ++ return D3D11_DECODER_PROFILE_HEVC_VLD_MAIN10; ++ case HEVCPROFILE_REXT: ++ return GetHEVCRangeExtensionGUID( ++ bit_depth, chroma_sampling, ++ SupportsHEVCRangeExtensionDXVAProfile(device)); ++#endif // BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) ++ default: ++ return {}; ++ } ++} ++ ++} // namespace ++ ++D3D11DecoderConfigurator::D3D11DecoderConfigurator( ++ DXGI_FORMAT decoder_output_dxgifmt, ++ GUID decoder_guid, ++ gfx::Size coded_size, ++ bool is_encrypted, ++ bool supports_swap_chain) ++ : dxgi_format_(decoder_output_dxgifmt), ++ decoder_guid_(decoder_guid), ++ supports_swap_chain_(supports_swap_chain), ++ is_encrypted_(is_encrypted) { ++ SetUpDecoderDescriptor(coded_size); ++ SetUpTextureDescriptor(); ++} ++ ++// static ++std::unique_ptr D3D11DecoderConfigurator::Create( ++ const gpu::GpuPreferences& gpu_preferences, ++ const gpu::GpuDriverBugWorkarounds& workarounds, ++ const VideoDecoderConfig& config, ++ uint8_t bit_depth, ++ VideoChromaSampling chroma_sampling, ++ MediaLog* media_log, ++ bool use_shared_handle, ++ ComD3D11Device device) { ++ // Decoder swap chains do not support shared resources. More info in ++ // https://crbug.com/911847. To enable Kaby Lake+ systems for using shared ++ // handle, we disable decode swap chain support if shared handle is enabled. ++ const bool supports_nv12_decode_swap_chain = ++ gl::DirectCompositionDecodeSwapChainSupported() && !use_shared_handle; ++ ++ DXGI_FORMAT decoder_dxgi_format = ++ GetOutputDXGIFormat(bit_depth, chroma_sampling); ++ if (decoder_dxgi_format == DXGI_FORMAT_UNKNOWN) { ++ MEDIA_LOG(WARNING, media_log) ++ << "D3D11VideoDecoder does not support bit depth " ++ << base::strict_cast(bit_depth) ++ << " with chroma subsampling format " ++ << VideoChromaSamplingToString(chroma_sampling); ++ return nullptr; ++ } ++ ++ GUID decoder_guid = ++ GetD3D11DecoderGUID(config.profile(), bit_depth, chroma_sampling, device); ++#if BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) ++ if (decoder_guid == DXVA_ModeHEVC_VLD_Main12) { ++ constexpr UINT kNVIDIADeviceId = 0x10DE; ++ ComDXGIDevice dxgi_device; ++ if (SUCCEEDED(device.As(&dxgi_device)) && ++ GetGPUVendorID(dxgi_device) == kNVIDIADeviceId) { ++ // NVIDIA driver requires output format to be P010 for HEVC 12b420 range ++ // extension profile. ++ decoder_dxgi_format = DXGI_FORMAT_P010; ++ } ++ } ++#endif // BUILDFLAG(ENABLE_HEVC_PARSER_AND_HW_DECODER) ++ if (decoder_guid == DXVA_ModeAV1_VLD_Profile1) { ++ // AV1 profile 1 is YUV 4:4:4 only. ++ if (bit_depth == 8) { ++ decoder_dxgi_format = DXGI_FORMAT_AYUV; ++ } else if (bit_depth == 10) { ++ decoder_dxgi_format = DXGI_FORMAT_Y410; ++ } ++ } ++ if (decoder_guid == GUID()) { ++ if (config.profile() == HEVCPROFILE_REXT) { ++ MEDIA_LOG(INFO, media_log) ++ << "D3D11VideoDecoder does not support HEVC range extension " ++ << config.codec() << " with chroma subsampling format " ++ << VideoChromaSamplingToString(chroma_sampling) << " and bit depth " ++ << base::strict_cast(bit_depth); ++ } else { ++ MEDIA_LOG(INFO, media_log) ++ << "D3D11VideoDecoder does not support codec " << config.codec(); ++ } ++ return nullptr; ++ } ++ ++ MEDIA_LOG(INFO, media_log) ++ << "D3D11VideoDecoder is using " << GetProfileName(config.profile()) ++ << " / " << VideoChromaSamplingToString(chroma_sampling); ++ ++ return std::make_unique( ++ decoder_dxgi_format, decoder_guid, config.coded_size(), ++ config.is_encrypted(), supports_nv12_decode_swap_chain); ++} ++ ++bool D3D11DecoderConfigurator::SupportsDevice( ++ ComD3D11VideoDevice video_device) { ++ for (UINT i = video_device->GetVideoDecoderProfileCount(); i--;) { ++ GUID profile = {}; ++ if (SUCCEEDED(video_device->GetVideoDecoderProfile(i, &profile))) { ++ if (profile == decoder_guid_) ++ return true; ++ } ++ } ++ return false; ++} ++ ++D3D11Status::Or ++D3D11DecoderConfigurator::CreateOutputTexture(ComD3D11Device device, ++ gfx::Size size, ++ uint32_t array_size, ++ bool use_shared_handle) { ++ output_texture_desc_.Width = size.width(); ++ output_texture_desc_.Height = size.height(); ++ output_texture_desc_.ArraySize = array_size; ++ ++ if (use_shared_handle) { ++ // Update the decoder output texture usage to support shared handle ++ // if required. SwapChain should be disabled and the frame shouldn't ++ // be encrypted. ++ DCHECK(!supports_swap_chain_); ++ DCHECK(!is_encrypted_); ++ output_texture_desc_.MiscFlags = ++ D3D11_RESOURCE_MISC_SHARED_NTHANDLE | D3D11_RESOURCE_MISC_SHARED; ++ } else if (supports_swap_chain_) { ++ // Decode swap chains do not support shared resources. ++ // TODO(sunnyps): Find a workaround for when the decoder moves to its own ++ // thread and D3D device. See https://crbug.com/911847 ++ // TODO(liberato): This depends on the configuration of the TextureSelector, ++ // to some degree. We should unset the flag only if it's binding and the ++ // decode swap chain is supported, as Intel driver is buggy on Gen9 and ++ // older devices without the flag. See https://crbug.com/1107403 ++ output_texture_desc_.MiscFlags = 0; ++ } else { ++ // Create non-shareable texture for d3d11 video decoder. ++ output_texture_desc_.MiscFlags = D3D11_RESOURCE_MISC_SHARED; ++ } ++ ++ if (is_encrypted_) ++ output_texture_desc_.MiscFlags |= D3D11_RESOURCE_MISC_HW_PROTECTED; ++ ++ ComD3D11Texture2D texture; ++ HRESULT hr = ++ device->CreateTexture2D(&output_texture_desc_, nullptr, &texture); ++ if (FAILED(hr)) ++ return D3D11Status(D3D11Status::Codes::kCreateDecoderOutputTextureFailed, hr); ++#if defined(COMPILER_MSVC) ++ hr = SetDebugName(texture.Get(), "D3D11Decoder_ConfiguratorOutput"); ++ if (FAILED(hr)) ++ return D3D11Status(D3D11Status::Codes::kCreateDecoderOutputTextureFailed, hr); ++#endif ++ return texture; ++} ++ ++// private ++void D3D11DecoderConfigurator::SetUpDecoderDescriptor( ++ const gfx::Size& coded_size) { ++ decoder_desc_ = {}; ++ decoder_desc_.Guid = decoder_guid_; ++ decoder_desc_.SampleWidth = coded_size.width(); ++ decoder_desc_.SampleHeight = coded_size.height(); ++ decoder_desc_.OutputFormat = dxgi_format_; ++} ++ ++// private ++void D3D11DecoderConfigurator::SetUpTextureDescriptor() { ++ output_texture_desc_ = {}; ++ output_texture_desc_.MipLevels = 1; ++ output_texture_desc_.Format = dxgi_format_; ++ output_texture_desc_.SampleDesc.Count = 1; ++ output_texture_desc_.Usage = D3D11_USAGE_DEFAULT; ++ output_texture_desc_.BindFlags = ++ D3D11_BIND_DECODER | D3D11_BIND_SHADER_RESOURCE; ++} ++ ++} // namespace media +diff --git a/src/3rdparty/chromium/media/renderers/BUILD.gn b/src/3rdparty/chromium/media/renderers/BUILD.gn +--- a/src/3rdparty/chromium/media/renderers/BUILD.gn 2026-06-16 10:01:57.371634000 +0200 ++++ b/src/3rdparty/chromium/media/renderers/BUILD.gn 2026-06-16 10:07:04.184352900 +0200 +@@ -92,9 +92,9 @@ + + # media_foundation_renderer uses Windows D3D and Media Foundation APIs. + libs = [ +- "d3d11.lib", ++ "d3d11", + "mfplat.lib", +- "dxgi.lib", ++ "dxgi", + ] + } + +diff --git a/src/3rdparty/chromium/net/BUILD.gn b/src/3rdparty/chromium/net/BUILD.gn +--- a/src/3rdparty/chromium/net/BUILD.gn 2026-06-16 10:01:57.476839000 +0200 ++++ b/src/3rdparty/chromium/net/BUILD.gn 2026-06-16 10:07:04.297197300 +0200 +@@ -1690,7 +1690,7 @@ + + if (is_msvc) { + libs = [ +- "crypt32.lib", ++ "crypt32", + "dhcpcsvc.lib", + "iphlpapi.lib", + "ncrypt.lib", +@@ -3479,7 +3479,7 @@ + if (is_msvc) { + sources += [ "cert/internal/trust_store_win_unittest.cc" ] + sources += [ "cert/internal/path_builder_trust_store_win_unittest.cc" ] +- libs += [ "crypt32.lib" ] ++ libs += [ "crypt32" ] + } + } + +diff --git a/src/3rdparty/chromium/pdf/pdf_view_web_plugin.cc b/src/3rdparty/chromium/pdf/pdf_view_web_plugin.cc +--- a/src/3rdparty/chromium/pdf/pdf_view_web_plugin.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdf_view_web_plugin.cc 2026-06-16 10:06:30.212214800 +0200 +@@ -121,7 +121,7 @@ + #include "ui/gfx/geometry/vector2d_f.h" + #include "ui/gfx/range/range.h" + #include "url/gurl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(ENABLE_PDF_INK2) + #include "base/memory/raw_ref.h" +diff --git a/src/3rdparty/chromium/pdf/pdf_view_web_plugin.h b/src/3rdparty/chromium/pdf/pdf_view_web_plugin.h +--- a/src/3rdparty/chromium/pdf/pdf_view_web_plugin.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdf_view_web_plugin.h 2026-06-16 10:06:30.216229900 +0200 +@@ -52,7 +52,7 @@ + #include "ui/gfx/geometry/rect.h" + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/geometry/vector2d_f.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) + #include "services/screen_ai/public/mojom/screen_ai_service.mojom-forward.h" +diff --git a/src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc b/src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc +--- a/src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc 2026-06-16 10:06:30.200422500 +0200 +@@ -95,7 +95,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/geometry/vector2d.h" + #include "ui/gfx/geometry/vector2d_conversions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if defined(PDF_ENABLE_XFA) + #include "gin/public/cppgc.h" +diff --git a/src/3rdparty/chromium/pdf/pdfium/pdfium_engine_client.h b/src/3rdparty/chromium/pdf/pdfium/pdfium_engine_client.h +--- a/src/3rdparty/chromium/pdf/pdfium/pdfium_engine_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdfium/pdfium_engine_client.h 2026-06-16 10:06:30.202430700 +0200 +@@ -19,7 +19,7 @@ + #include "ui/base/cursor/mojom/cursor_type.mojom-forward.h" + #include "ui/base/window_open_disposition.h" + #include "ui/gfx/geometry/rect.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gfx { + class Vector2d; +diff --git a/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.cc b/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.cc +--- a/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.cc 2026-06-16 10:06:30.204440700 +0200 +@@ -23,7 +23,7 @@ + #include "third_party/pdfium/public/fpdf_annot.h" + #include "ui/base/window_open_disposition_utils.h" + #include "ui/gfx/geometry/rect.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace chrome_pdf { + +diff --git a/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.h b/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.h +--- a/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler.h 2026-06-16 10:06:30.206451200 +0200 +@@ -13,7 +13,7 @@ + #include "base/timer/timer.h" + #include "third_party/pdfium/public/fpdf_formfill.h" + #include "third_party/pdfium/public/fpdfview.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace chrome_pdf { + +diff --git a/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler_unittest.cc b/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler_unittest.cc +--- a/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/pdfium/pdfium_form_filler_unittest.cc 2026-06-16 10:06:30.208198800 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/pdfium/public/fpdf_formfill.h" + #include "ui/gfx/geometry/point.h" + #include "ui/gfx/geometry/size.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace chrome_pdf { + +diff --git a/src/3rdparty/chromium/pdf/post_message_receiver.cc b/src/3rdparty/chromium/pdf/post_message_receiver.cc +--- a/src/3rdparty/chromium/pdf/post_message_receiver.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/post_message_receiver.cc 2026-06-16 10:06:30.218241900 +0200 +@@ -23,7 +23,7 @@ + #include "gin/public/wrapper_info.h" + #include "gin/wrappable.h" + #include "pdf/v8_value_converter.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace chrome_pdf { + +diff --git a/src/3rdparty/chromium/pdf/post_message_receiver.h b/src/3rdparty/chromium/pdf/post_message_receiver.h +--- a/src/3rdparty/chromium/pdf/post_message_receiver.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/post_message_receiver.h 2026-06-16 10:06:30.220250700 +0200 +@@ -14,7 +14,7 @@ + #include "gin/interceptor.h" + #include "gin/public/wrapper_info.h" + #include "gin/wrappable.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace base { + class SequencedTaskRunner; +diff --git a/src/3rdparty/chromium/pdf/v8_value_converter.h b/src/3rdparty/chromium/pdf/v8_value_converter.h +--- a/src/3rdparty/chromium/pdf/v8_value_converter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/pdf/v8_value_converter.h 2026-06-16 10:06:30.224009000 +0200 +@@ -7,7 +7,7 @@ + + #include + +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace base { + class Value; +diff --git a/src/3rdparty/chromium/remoting/base/BUILD.gn b/src/3rdparty/chromium/remoting/base/BUILD.gn +--- a/src/3rdparty/chromium/remoting/base/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/remoting/base/BUILD.gn 2026-06-16 10:07:04.438046700 +0200 +@@ -186,7 +186,7 @@ + + if (is_win) { + sources += [ "scoped_sc_handle_win.h" ] +- libs = [ "crypt32.lib" ] # For CryptoAPI functions in certificate_helpers ++ libs = [ "crypt32" ] # For CryptoAPI functions in certificate_helpers + } else if (is_linux || is_chromeos) { + sources += [ + "file_path_util_linux.cc", +diff --git a/src/3rdparty/chromium/remoting/host/BUILD.gn b/src/3rdparty/chromium/remoting/host/BUILD.gn +--- a/src/3rdparty/chromium/remoting/host/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/remoting/host/BUILD.gn 2026-06-16 10:07:04.461965700 +0200 +@@ -707,7 +707,7 @@ + "touch_injector_win.h", + "usage_stats_consent_win.cc", + ] +- libs += [ "crypt32.lib" ] ++ libs += [ "crypt32" ] + deps += [ + # On Windows, we use //media/gpu/MediaFoundationVideoEncodeAcceleratorWin + # to detect whether HW encoder is supported by the system. +diff --git a/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings.cc b/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings.cc +--- a/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings.cc 2026-06-16 10:06:30.226020200 +0200 +@@ -22,8 +22,8 @@ + #include "ui/accessibility/platform/automation/automation_v8_router.h" + #include "v8-function.h" + #include "v8-value.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-template.h" ++#include "v8-local-handle.h" ++#include "v8-template.h" + + namespace ax { + namespace { +diff --git a/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings_unittest.cc b/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings_unittest.cc +--- a/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/automation_internal_bindings_unittest.cc 2026-06-16 10:06:30.228029000 +0200 +@@ -17,8 +17,8 @@ + #include "services/accessibility/features/bindings_isolate_holder.h" + #include "services/accessibility/features/v8_manager.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-template.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.cc b/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.cc +--- a/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.cc 2026-06-16 10:06:30.230038500 +0200 +@@ -8,10 +8,10 @@ + #include "base/strings/string_util.h" + #include "base/strings/stringprintf.h" + #include "gin/v8_initializer.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" ++#include "v8-primitive.h" ++#include "v8-script.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.h b/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.h +--- a/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/bindings_isolate_holder.h 2026-06-16 10:06:30.232045500 +0200 +@@ -7,9 +7,9 @@ + + #include "base/observer_list.h" + #include "base/observer_list_types.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_agent.h b/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_agent.h +--- a/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_agent.h 2026-06-16 10:06:30.234059200 +0200 +@@ -11,7 +11,7 @@ + #include "mojo/public/cpp/bindings/pending_associated_remote.h" + #include "mojo/public/cpp/bindings/unique_associated_receiver_set.h" + #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.cc b/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.cc +--- a/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.cc 2026-06-16 10:06:30.236070500 +0200 +@@ -22,7 +22,7 @@ + #include "services/accessibility/features/v8_manager.h" + #include "third_party/inspector_protocol/crdtp/cbor.h" + #include "third_party/inspector_protocol/crdtp/json.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "v8-microtask-queue.h" + + namespace { + std::vector GetStringBytes(const v8_inspector::StringView& s) { +diff --git a/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.h b/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.h +--- a/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/devtools/os_devtools_session.h 2026-06-16 10:06:30.239857900 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" + #include "third_party/inspector_protocol/crdtp/dispatch.h" + #include "third_party/inspector_protocol/crdtp/frontend_channel.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace ax { + class V8Environment; +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.cc b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.cc +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.cc 2026-06-16 10:06:30.241867800 +0200 +@@ -16,13 +16,13 @@ + #include "mojo/public/cpp/system/message_pipe.h" + #include "services/accessibility/features/mojo/mojo_handle.h" + #include "services/accessibility/features/v8_manager.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-context.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.h b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.h +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo.h 2026-06-16 10:06:30.243877400 +0200 +@@ -7,8 +7,8 @@ + + #include "gin/object_template_builder.h" + #include "gin/wrappable.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.cc b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.cc +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.cc 2026-06-16 10:06:30.247891100 +0200 +@@ -25,13 +25,13 @@ + #include "mojo/public/cpp/system/message_pipe.h" + #include "services/accessibility/features/mojo/mojo_watch_callback.h" + #include "services/accessibility/features/mojo/mojo_watcher.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/allocation.h" ++#include "v8-array-buffer.h" ++#include "v8-container.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-cppgc.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.h b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.h +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_handle.h 2026-06-16 10:06:30.247891100 +0200 +@@ -10,10 +10,10 @@ + #include "gin/public/wrappable_pointer_tags.h" + #include "gin/wrappable.h" + #include "mojo/public/cpp/system/handle.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" ++#include "cppgc/prefinalizer.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.cc b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.cc +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.cc 2026-06-16 10:06:30.253913000 +0200 +@@ -8,10 +8,10 @@ + + #include "gin/public/context_holder.h" + #include "mojo/public/c/system/types.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.h b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.h +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watch_callback.h 2026-06-16 10:06:30.255664300 +0200 +@@ -10,8 +10,8 @@ + #include "base/sequence_checker.h" + #include "gin/public/context_holder.h" + #include "mojo/public/c/system/types.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-function.h" ++#include "v8-persistent-handle.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.cc b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.cc +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.cc 2026-06-16 10:06:30.249896900 +0200 +@@ -19,10 +19,10 @@ + #include "services/accessibility/features/mojo/mojo_watch_callback.h" + #include "services/accessibility/features/registered_wrappable.h" + #include "services/accessibility/features/v8_manager.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.h b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.h +--- a/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/mojo/mojo_watcher.h 2026-06-16 10:06:30.251903800 +0200 +@@ -16,9 +16,9 @@ + #include "mojo/public/cpp/system/trap.h" + #include "services/accessibility/features/bindings_isolate_holder.h" + #include "services/accessibility/features/registered_wrappable.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-persistent-handle.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/services/accessibility/features/registered_wrappable.h b/src/3rdparty/chromium/services/accessibility/features/registered_wrappable.h +--- a/src/3rdparty/chromium/services/accessibility/features/registered_wrappable.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/registered_wrappable.h 2026-06-16 10:06:30.257677700 +0200 +@@ -8,7 +8,7 @@ + #include "base/scoped_observation.h" + #include "services/accessibility/features/bindings_isolate_holder.h" + #include "services/accessibility/features/v8_manager.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.cc b/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.cc +--- a/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.cc 2026-06-16 10:06:30.257677700 +0200 +@@ -9,8 +9,8 @@ + #include "gin/arguments.h" + #include "gin/converter.h" + #include "ui/base/l10n/l10n_util.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-value.h" ++#include "v8-function-callback.h" ++#include "v8-value.h" + + namespace { + constexpr char kUndeterminedLocale[] = "und"; +diff --git a/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.h b/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.h +--- a/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/sync_os_state_api_bindings.h 2026-06-16 10:06:30.259684800 +0200 +@@ -5,8 +5,8 @@ + #ifndef SERVICES_ACCESSIBILITY_FEATURES_SYNC_OS_STATE_API_BINDINGS_H_ + #define SERVICES_ACCESSIBILITY_FEATURES_SYNC_OS_STATE_API_BINDINGS_H_ + +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-value.h" ++#include "v8-function-callback.h" ++#include "v8-value.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/text_decoder.cc b/src/3rdparty/chromium/services/accessibility/features/text_decoder.cc +--- a/src/3rdparty/chromium/services/accessibility/features/text_decoder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/text_decoder.cc 2026-06-16 10:06:30.261691900 +0200 +@@ -13,11 +13,11 @@ + #include "gin/converter.h" + #include "gin/data_object_builder.h" + #include "gin/public/wrapper_info.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/text_encoder.cc b/src/3rdparty/chromium/services/accessibility/features/text_encoder.cc +--- a/src/3rdparty/chromium/services/accessibility/features/text_encoder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/text_encoder.cc 2026-06-16 10:06:30.263698800 +0200 +@@ -18,13 +18,13 @@ + #include "gin/converter.h" + #include "gin/data_object_builder.h" + #include "gin/public/wrapper_info.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-typed-array.h" +-#include "v8/include/cppgc/allocation.h" ++#include "v8-array-buffer.h" ++#include "v8-cppgc.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-typed-array.h" ++#include "cppgc/allocation.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.cc b/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.cc +--- a/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.cc 2026-06-16 10:06:30.265708200 +0200 +@@ -9,8 +9,8 @@ + #include "gin/arguments.h" + #include "services/accessibility/features/text_decoder.h" + #include "services/accessibility/features/text_encoder.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.h b/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.h +--- a/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/v8_bindings_utils.h 2026-06-16 10:06:30.265708200 +0200 +@@ -6,8 +6,8 @@ + #define SERVICES_ACCESSIBILITY_FEATURES_V8_BINDINGS_UTILS_H_ + + #include "gin/arguments.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace ax { + +diff --git a/src/3rdparty/chromium/services/accessibility/features/v8_manager.cc b/src/3rdparty/chromium/services/accessibility/features/v8_manager.cc +--- a/src/3rdparty/chromium/services/accessibility/features/v8_manager.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/v8_manager.cc 2026-06-16 10:06:30.267715700 +0200 +@@ -58,11 +58,11 @@ + #include "v8-promise.h" + #include "v8-script.h" + #include "v8-value.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace ax { + namespace { +diff --git a/src/3rdparty/chromium/services/accessibility/features/v8_manager.h b/src/3rdparty/chromium/services/accessibility/features/v8_manager.h +--- a/src/3rdparty/chromium/services/accessibility/features/v8_manager.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/accessibility/features/v8_manager.h 2026-06-16 10:06:30.269723300 +0200 +@@ -28,8 +28,8 @@ + #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" + #include "v8-persistent-handle.h" + #include "v8-script.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/services/device/generic_sensor/BUILD.gn b/src/3rdparty/chromium/services/device/generic_sensor/BUILD.gn +--- a/src/3rdparty/chromium/services/device/generic_sensor/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/device/generic_sensor/BUILD.gn 2026-06-16 10:07:04.588713700 +0200 +@@ -131,15 +131,35 @@ + "platform_sensor_win.h", + ] + +- jumbo_excluded_sources = [ +- "platform_sensor_provider_winrt.cc", +- "platform_sensor_reader_winrt.cc", +- ] ++ if (!is_mingw) { ++ jumbo_excluded_sources = [ ++ "platform_sensor_provider_winrt.cc", ++ "platform_sensor_reader_winrt.cc", ++ ] ++ } + +- libs = [ +- "portabledeviceguids.lib", +- "sensorsapi.lib", +- ] ++ if (is_mingw) { ++ mingw_sources = sources ++ sources = [] ++ sources += filter_exclude(mingw_sources, [ ++ "platform_sensor_provider_winrt.cc", ++ "platform_sensor_provider_winrt.h", ++ "platform_sensor_reader_winrt.cc", ++ "platform_sensor_reader_winrt.h", ++ ]) ++ } ++ ++ if (is_mingw) { ++ libs = [ ++ "portabledeviceguids", ++ "sensorsapi", ++ ] ++ } else { ++ libs = [ ++ "portabledeviceguids.lib", ++ "sensorsapi.lib", ++ ] ++ } + } + } + +diff --git a/src/3rdparty/chromium/services/proxy_resolver/proxy_resolver_v8.cc b/src/3rdparty/chromium/services/proxy_resolver/proxy_resolver_v8.cc +--- a/src/3rdparty/chromium/services/proxy_resolver/proxy_resolver_v8.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/proxy_resolver/proxy_resolver_v8.cc 2026-06-16 10:06:30.271472800 +0200 +@@ -39,7 +39,7 @@ + #include "tools/v8_context_snapshot/buildflags.h" + #include "url/gurl.h" + #include "url/url_canon.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + // Notes on the javascript environment: + // +diff --git a/src/3rdparty/chromium/services/webnn/BUILD.gn b/src/3rdparty/chromium/services/webnn/BUILD.gn +--- a/src/3rdparty/chromium/services/webnn/BUILD.gn 2026-06-16 10:01:57.589915300 +0200 ++++ b/src/3rdparty/chromium/services/webnn/BUILD.gn 2026-06-16 10:07:04.788306800 +0200 +@@ -103,7 +103,7 @@ + "//ui/gl/init", + ] + +- libs = [ "dxgi.lib" ] ++ libs = [ "dxgi" ] + } + + if (is_apple) { +@@ -204,7 +204,11 @@ + ] + deps += [ "//third_party/onnxruntime_headers" ] + +- libs += [ "runtimeobject.lib" ] ++ if (is_mingw) { ++ libs = [ "runtimeobject" ] ++ } else { ++ libs = [ "runtimeobject.lib" ] ++ } + } + + if (is_mac || webnn_use_tflite) { +diff --git a/src/3rdparty/chromium/services/webnn/webnn_context_provider_impl.cc b/src/3rdparty/chromium/services/webnn/webnn_context_provider_impl.cc +--- a/src/3rdparty/chromium/services/webnn/webnn_context_provider_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/services/webnn/webnn_context_provider_impl.cc 2026-06-16 10:06:04.515098200 +0200 +@@ -18,7 +18,7 @@ + #include "services/webnn/public/mojom/webnn_error.mojom.h" + #include "services/webnn/webnn_context_impl.h" + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + #include + + #include "base/types/expected_macros.h" +@@ -183,7 +183,7 @@ + impls_.erase(it); + } + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + void WebNNContextProviderImpl::DestroyContextsAndKillGpuProcess( + const std::string& reason) { + // Send the contexts lost reason to the renderer process. +@@ -193,7 +193,7 @@ + + std::move(lose_all_contexts_callback_).Run(); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + // static + void WebNNContextProviderImpl::SetBackendForTesting( +@@ -216,7 +216,7 @@ + + RecordDeviceType(options->device); + +-#if BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_MSVC) + if (ort::ShouldCreateOrtContext(*options)) { + base::expected, std::string> + env_creation_results = ort::Environment::Create(gpu_info_); +@@ -240,7 +240,7 @@ + } + context_impl = std::move(context_creation_results.value()); + } +-#endif // BUILDFLAG(IS_WIN) ++#endif // BUILDFLAG(IS_MSVC) + + #if BUILDFLAG(IS_APPLE) + if (__builtin_available(macOS 14.4, *)) { +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h b/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h 2026-06-16 10:07:10.809651100 +0200 +@@ -1,3769 +1,3769 @@ +-// Copyright 2018 The Abseil Authors. +-// +-// Licensed under the Apache License, Version 2.0 (the "License"); +-// you may not use this file except in compliance with the License. +-// You may obtain a copy of the License at +-// +-// https://www.apache.org/licenses/LICENSE-2.0 +-// +-// Unless required by applicable law or agreed to in writing, software +-// distributed under the License is distributed on an "AS IS" BASIS, +-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-// See the License for the specific language governing permissions and +-// limitations under the License. +-// +-// An open-addressing +-// hashtable with quadratic probing. +-// +-// This is a low level hashtable on top of which different interfaces can be +-// implemented, like flat_hash_set, node_hash_set, string_hash_set, etc. +-// +-// The table interface is similar to that of std::unordered_set. Notable +-// differences are that most member functions support heterogeneous keys when +-// BOTH the hash and eq functions are marked as transparent. They do so by +-// providing a typedef called `is_transparent`. +-// +-// When heterogeneous lookup is enabled, functions that take key_type act as if +-// they have an overload set like: +-// +-// iterator find(const key_type& key); +-// template +-// iterator find(const K& key); +-// +-// size_type erase(const key_type& key); +-// template +-// size_type erase(const K& key); +-// +-// std::pair equal_range(const key_type& key); +-// template +-// std::pair equal_range(const K& key); +-// +-// When heterogeneous lookup is disabled, only the explicit `key_type` overloads +-// exist. +-// +-// In addition the pointer to element and iterator stability guarantees are +-// weaker: all iterators and pointers are invalidated after a new element is +-// inserted. +-// +-// IMPLEMENTATION DETAILS +-// +-// # Table Layout +-// +-// A raw_hash_set's backing array consists of control bytes followed by slots +-// that may or may not contain objects. +-// +-// The layout of the backing array, for `capacity` slots, is thus, as a +-// pseudo-struct: +-// +-// struct BackingArray { +-// // Sampling handler. This field isn't present when the sampling is +-// // disabled or this allocation hasn't been selected for sampling. +-// HashtablezInfoHandle infoz_; +-// // The number of elements we can insert before growing the capacity. +-// size_t growth_left; +-// // Control bytes for the "real" slots. +-// ctrl_t ctrl[capacity]; +-// // Always `ctrl_t::kSentinel`. This is used by iterators to find when to +-// // stop and serves no other purpose. +-// ctrl_t sentinel; +-// // A copy of the first `kWidth - 1` elements of `ctrl`. This is used so +-// // that if a probe sequence picks a value near the end of `ctrl`, +-// // `Group` will have valid control bytes to look at. +-// ctrl_t clones[kWidth - 1]; +-// // The actual slot data. +-// slot_type slots[capacity]; +-// }; +-// +-// The length of this array is computed by `RawHashSetLayout::alloc_size` below. +-// +-// Control bytes (`ctrl_t`) are bytes (collected into groups of a +-// platform-specific size) that define the state of the corresponding slot in +-// the slot array. Group manipulation is tightly optimized to be as efficient +-// as possible: SSE and friends on x86, clever bit operations on other arches. +-// +-// Group 1 Group 2 Group 3 +-// +---------------+---------------+---------------+ +-// | | | | | | | | | | | | | | | | | | | | | | | | | +-// +---------------+---------------+---------------+ +-// +-// Each control byte is either a special value for empty slots, deleted slots +-// (sometimes called *tombstones*), and a special end-of-table marker used by +-// iterators, or, if occupied, seven bits (H2) from the hash of the value in the +-// corresponding slot. +-// +-// Storing control bytes in a separate array also has beneficial cache effects, +-// since more logical slots will fit into a cache line. +-// +-// # Small Object Optimization (SOO) +-// +-// When the size/alignment of the value_type and the capacity of the table are +-// small, we enable small object optimization and store the values inline in +-// the raw_hash_set object. This optimization allows us to avoid +-// allocation/deallocation as well as cache/dTLB misses. +-// +-// # Hashing +-// +-// We compute two separate hashes, `H1` and `H2`, from the hash of an object. +-// `H1(hash(x))` is an index into `slots`, and essentially the starting point +-// for the probe sequence. `H2(hash(x))` is a 7-bit value used to filter out +-// objects that cannot possibly be the one we are looking for. +-// +-// # Table operations. +-// +-// The key operations are `insert`, `find`, and `erase`. +-// +-// Since `insert` and `erase` are implemented in terms of `find`, we describe +-// `find` first. To `find` a value `x`, we compute `hash(x)`. From +-// `H1(hash(x))` and the capacity, we construct a `probe_seq` that visits every +-// group of slots in some interesting order. +-// +-// We now walk through these indices. At each index, we select the entire group +-// starting with that index and extract potential candidates: occupied slots +-// with a control byte equal to `H2(hash(x))`. If we find an empty slot in the +-// group, we stop and return an error. Each candidate slot `y` is compared with +-// `x`; if `x == y`, we are done and return `&y`; otherwise we continue to the +-// next probe index. Tombstones effectively behave like full slots that never +-// match the value we're looking for. +-// +-// The `H2` bits ensure when we compare a slot to an object with `==`, we are +-// likely to have actually found the object. That is, the chance is low that +-// `==` is called and returns `false`. Thus, when we search for an object, we +-// are unlikely to call `==` many times. This likelyhood can be analyzed as +-// follows (assuming that H2 is a random enough hash function). +-// +-// Let's assume that there are `k` "wrong" objects that must be examined in a +-// probe sequence. For example, when doing a `find` on an object that is in the +-// table, `k` is the number of objects between the start of the probe sequence +-// and the final found object (not including the final found object). The +-// expected number of objects with an H2 match is then `k/128`. Measurements +-// and analysis indicate that even at high load factors, `k` is less than 32, +-// meaning that the number of "false positive" comparisons we must perform is +-// less than 1/8 per `find`. +- +-// `insert` is implemented in terms of `unchecked_insert`, which inserts a +-// value presumed to not be in the table (violating this requirement will cause +-// the table to behave erratically). Given `x` and its hash `hash(x)`, to insert +-// it, we construct a `probe_seq` once again, and use it to find the first +-// group with an unoccupied (empty *or* deleted) slot. We place `x` into the +-// first such slot in the group and mark it as full with `x`'s H2. +-// +-// To `insert`, we compose `unchecked_insert` with `find`. We compute `h(x)` and +-// perform a `find` to see if it's already present; if it is, we're done. If +-// it's not, we may decide the table is getting overcrowded (i.e. the load +-// factor is greater than 7/8 for big tables; tables smaller than one probing +-// group use a max load factor of 1); in this case, we allocate a bigger array, +-// `unchecked_insert` each element of the table into the new array (we know that +-// no insertion here will insert an already-present value), and discard the old +-// backing array. At this point, we may `unchecked_insert` the value `x`. +-// +-// Below, `unchecked_insert` is partly implemented by `prepare_insert`, which +-// presents a viable, initialized slot pointee to the caller. +-// +-// `erase` is implemented in terms of `erase_at`, which takes an index to a +-// slot. Given an offset, we simply create a tombstone and destroy its contents. +-// If we can prove that the slot would not appear in a probe sequence, we can +-// make the slot as empty, instead. We can prove this by observing that if a +-// group has any empty slots, it has never been full (assuming we never create +-// an empty slot in a group with no empties, which this heuristic guarantees we +-// never do) and find would stop at this group anyways (since it does not probe +-// beyond groups with empties). +-// +-// `erase` is `erase_at` composed with `find`: if we +-// have a value `x`, we can perform a `find`, and then `erase_at` the resulting +-// slot. +-// +-// To iterate, we simply traverse the array, skipping empty and deleted slots +-// and stopping when we hit a `kSentinel`. +- +-#ifndef ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ +-#define ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#include "absl/base/attributes.h" +-#include "absl/base/casts.h" +-#include "absl/base/config.h" +-#include "absl/base/internal/endian.h" +-#include "absl/base/internal/iterator_traits.h" +-#include "absl/base/internal/raw_logging.h" +-#include "absl/base/macros.h" +-#include "absl/base/optimization.h" +-#include "absl/base/options.h" +-#include "absl/base/port.h" +-#include "absl/base/prefetch.h" +-#include "absl/container/internal/common.h" // IWYU pragma: export // for node_handle +-#include "absl/container/internal/common_policy_traits.h" +-#include "absl/container/internal/compressed_tuple.h" +-#include "absl/container/internal/container_memory.h" +-#include "absl/container/internal/hash_function_defaults.h" +-#include "absl/container/internal/hash_policy_traits.h" +-#include "absl/container/internal/hashtable_control_bytes.h" +-#include "absl/container/internal/hashtable_debug_hooks.h" +-#include "absl/container/internal/hashtablez_sampler.h" +-#include "absl/functional/function_ref.h" +-#include "absl/hash/hash.h" +-#include "absl/hash/internal/weakly_mixed_integer.h" +-#include "absl/memory/memory.h" +-#include "absl/meta/type_traits.h" +-#include "absl/numeric/bits.h" +-#include "absl/utility/utility.h" +- +-namespace absl { +-ABSL_NAMESPACE_BEGIN +-namespace container_internal { +- +-#ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS +-#error ABSL_SWISSTABLE_ENABLE_GENERATIONS cannot be directly set +-#elif (defined(ABSL_HAVE_ADDRESS_SANITIZER) || \ +- defined(ABSL_HAVE_HWADDRESS_SANITIZER) || \ +- defined(ABSL_HAVE_MEMORY_SANITIZER)) && \ +- !defined(NDEBUG_SANITIZER) // If defined, performance is important. +-// When compiled in sanitizer mode, we add generation integers to the backing +-// array and iterators. In the backing array, we store the generation between +-// the control bytes and the slots. When iterators are dereferenced, we assert +-// that the container has not been mutated in a way that could cause iterator +-// invalidation since the iterator was initialized. +-#define ABSL_SWISSTABLE_ENABLE_GENERATIONS +-#endif +- +-#ifdef ABSL_SWISSTABLE_ASSERT +-#error ABSL_SWISSTABLE_ASSERT cannot be directly set +-#else +-// We use this macro for assertions that users may see when the table is in an +-// invalid state that sanitizers may help diagnose. +-#define ABSL_SWISSTABLE_ASSERT(CONDITION) \ +- assert((CONDITION) && "Try enabling sanitizers.") +-#endif +- +-// We use uint8_t so we don't need to worry about padding. +-using GenerationType = uint8_t; +- +-// A sentinel value for empty generations. Using 0 makes it easy to constexpr +-// initialize an array of this value. +-constexpr GenerationType SentinelEmptyGeneration() { return 0; } +- +-constexpr GenerationType NextGeneration(GenerationType generation) { +- return ++generation == SentinelEmptyGeneration() ? ++generation : generation; +-} +- +-#ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS +-constexpr bool SwisstableGenerationsEnabled() { return true; } +-constexpr size_t NumGenerationBytes() { return sizeof(GenerationType); } +-#else +-constexpr bool SwisstableGenerationsEnabled() { return false; } +-constexpr size_t NumGenerationBytes() { return 0; } +-#endif +- +-// Returns true if we should assert that the table is not accessed after it has +-// been destroyed or during the destruction of the table. +-constexpr bool SwisstableAssertAccessToDestroyedTable() { +-#ifndef NDEBUG +- return true; +-#endif +- return SwisstableGenerationsEnabled(); +-} +- +-template +-void SwapAlloc(AllocType& lhs, AllocType& rhs, +- std::true_type /* propagate_on_container_swap */) { +- using std::swap; +- swap(lhs, rhs); +-} +-template +-void SwapAlloc([[maybe_unused]] AllocType& lhs, [[maybe_unused]] AllocType& rhs, +- std::false_type /* propagate_on_container_swap */) { +- assert(lhs == rhs && +- "It's UB to call swap with unequal non-propagating allocators."); +-} +- +-template +-void CopyAlloc(AllocType& lhs, AllocType& rhs, +- std::true_type /* propagate_alloc */) { +- lhs = rhs; +-} +-template +-void CopyAlloc(AllocType&, AllocType&, std::false_type /* propagate_alloc */) {} +- +-// The state for a probe sequence. +-// +-// Currently, the sequence is a triangular progression of the form +-// +-// p(i) := Width * (i^2 + i)/2 + hash (mod mask + 1) +-// +-// The use of `Width` ensures that each probe step does not overlap groups; +-// the sequence effectively outputs the addresses of *groups* (although not +-// necessarily aligned to any boundary). The `Group` machinery allows us +-// to check an entire group with minimal branching. +-// +-// Wrapping around at `mask + 1` is important, but not for the obvious reason. +-// As described above, the first few entries of the control byte array +-// are mirrored at the end of the array, which `Group` will find and use +-// for selecting candidates. However, when those candidates' slots are +-// actually inspected, there are no corresponding slots for the cloned bytes, +-// so we need to make sure we've treated those offsets as "wrapping around". +-// +-// It turns out that this probe sequence visits every group exactly once if the +-// number of groups is a power of two, since (i^2+i)/2 is a bijection in +-// Z/(2^m). See https://en.wikipedia.org/wiki/Quadratic_probing +-template +-class probe_seq { +- public: +- // Creates a new probe sequence using `hash` as the initial value of the +- // sequence and `mask` (usually the capacity of the table) as the mask to +- // apply to each value in the progression. +- probe_seq(size_t hash, size_t mask) { +- ABSL_SWISSTABLE_ASSERT(((mask + 1) & mask) == 0 && "not a mask"); +- mask_ = mask; +- offset_ = hash & mask_; +- } +- +- // The offset within the table, i.e., the value `p(i)` above. +- size_t offset() const { return offset_; } +- size_t offset(size_t i) const { return (offset_ + i) & mask_; } +- +- void next() { +- index_ += Width; +- offset_ += index_; +- offset_ &= mask_; +- } +- // 0-based probe index, a multiple of `Width`. +- size_t index() const { return index_; } +- +- private: +- size_t mask_; +- size_t offset_; +- size_t index_ = 0; +-}; +- +-template +-struct RequireUsableKey { +- template +- std::pair< +- decltype(std::declval()(std::declval())), +- decltype(std::declval()(std::declval(), +- std::declval()))>* +- operator()(const PassedKey&, const Args&...) const; +-}; +- +-template +-struct IsDecomposable : std::false_type {}; +- +-template +-struct IsDecomposable< +- absl::void_t(), +- std::declval()...))>, +- Policy, Hash, Eq, Ts...> : std::true_type {}; +- +-ABSL_DLL extern ctrl_t kDefaultIterControl; +- +-// We use these sentinel capacity values in debug mode to indicate different +-// classes of bugs. +-enum InvalidCapacity : size_t { +- kAboveMaxValidCapacity = ~size_t{} - 100, +- kReentrance, +- kDestroyed, +- +- // These two must be last because we use `>= kMovedFrom` to mean moved-from. +- kMovedFrom, +- kSelfMovedFrom, +-}; +- +-// Returns a pointer to a control byte that can be used by default-constructed +-// iterators. We don't expect this pointer to be dereferenced. +-inline ctrl_t* DefaultIterControl() { return &kDefaultIterControl; } +- +-// For use in SOO iterators. +-// TODO(b/289225379): we could potentially get rid of this by adding an is_soo +-// bit in iterators. This would add branches but reduce cache misses. +-ABSL_DLL extern const ctrl_t kSooControl[2]; +- +-// Returns a pointer to a full byte followed by a sentinel byte. +-inline ctrl_t* SooControl() { +- // Const must be cast away here; no uses of this function will actually write +- // to it because it is only used for SOO iterators. +- return const_cast(kSooControl); +-} +-// Whether ctrl is from the SooControl array. +-inline bool IsSooControl(const ctrl_t* ctrl) { return ctrl == SooControl(); } +- +-// Returns a pointer to a generation to use for an empty hashtable. +-GenerationType* EmptyGeneration(); +- +-// Returns whether `generation` is a generation for an empty hashtable that +-// could be returned by EmptyGeneration(). +-inline bool IsEmptyGeneration(const GenerationType* generation) { +- return *generation == SentinelEmptyGeneration(); +-} +- +-// We only allow a maximum of 1 SOO element, which makes the implementation +-// much simpler. Complications with multiple SOO elements include: +-// - Satisfying the guarantee that erasing one element doesn't invalidate +-// iterators to other elements means we would probably need actual SOO +-// control bytes. +-// - In order to prevent user code from depending on iteration order for small +-// tables, we would need to randomize the iteration order somehow. +-constexpr size_t SooCapacity() { return 1; } +-// Sentinel type to indicate SOO CommonFields construction. +-struct soo_tag_t {}; +-// Sentinel type to indicate SOO CommonFields construction with full size. +-struct full_soo_tag_t {}; +-// Sentinel type to indicate non-SOO CommonFields construction. +-struct non_soo_tag_t {}; +-// Sentinel value to indicate an uninitialized value explicitly. +-struct uninitialized_tag_t {}; +-// Sentinel value to indicate creation of an empty table without a seed. +-struct no_seed_empty_tag_t {}; +- +-// Per table hash salt. This gets mixed into H1 to randomize iteration order +-// per-table. +-// The seed is needed to ensure non-determinism of iteration order. +-class PerTableSeed { +- public: +- // The number of bits in the seed. +- // It is big enough to ensure non-determinism of iteration order. +- // We store the seed inside a uint64_t together with size and other metadata. +- // Using 16 bits allows us to save one `and` instruction in H1 (we use +- // sign-extended move instead of mov+and). +- static constexpr size_t kBitCount = 16; +- static constexpr size_t kSignBit = uint64_t{1} << (kBitCount - 1); +- +- // Returns the seed for the table. +- size_t seed() const { +- // We use a sign-extended load to ensure high bits are non-zero. +- int16_t seed_signed = absl::bit_cast(seed_); +- auto seed_sign_extended = +- static_cast>(seed_signed); +- return absl::bit_cast(seed_sign_extended); +- } +- +- private: +- friend class HashtableSize; +- explicit PerTableSeed(uint16_t seed) : seed_(seed) { +- ABSL_SWISSTABLE_ASSERT((seed & kSignBit) != 0 || seed == 0); +- } +- +- // The most significant bit of the seed is always 1 when there is a non-zero +- // seed. This way, when sign-extended the seed has non-zero high bits. +- const uint16_t seed_; +-}; +- +-// Returns next per-table seed. +-inline uint16_t NextSeed() { +- static_assert(PerTableSeed::kBitCount == 16); +- thread_local uint16_t seed = +- static_cast(reinterpret_cast(&seed)); +- seed += uint16_t{0xad53}; +- return seed; +-} +- +-// The size and also has additionally +-// 1) one bit that stores whether we have infoz. +-// 2) PerTableSeed::kBitCount bits for the seed. +-class HashtableSize { +- public: +- static constexpr size_t kSizeBitCount = 64 - PerTableSeed::kBitCount - 1; +- +- explicit HashtableSize(uninitialized_tag_t) {} +- explicit HashtableSize(no_seed_empty_tag_t) : data_(0) {} +- explicit HashtableSize(full_soo_tag_t) : data_(kSizeOneNoMetadata) {} +- +- // Returns actual size of the table. +- size_t size() const { return static_cast(data_ >> kSizeShift); } +- void increment_size() { data_ += kSizeOneNoMetadata; } +- void increment_size(size_t size) { +- data_ += static_cast(size) * kSizeOneNoMetadata; +- } +- void decrement_size() { data_ -= kSizeOneNoMetadata; } +- // Returns true if the table is empty. +- bool empty() const { return data_ < kSizeOneNoMetadata; } +- // Sets the size to zero, but keeps all the metadata bits. +- void set_size_to_zero_keep_metadata() { data_ = data_ & kMetadataMask; } +- +- PerTableSeed seed() const { +- return PerTableSeed(static_cast(data_) & kSeedMask); +- } +- +- void generate_new_seed() { set_seed(NextSeed()); } +- +- // We need to use a constant seed when the table is sampled so that sampled +- // hashes use the same seed and can e.g. identify stuck bits accurately. +- void set_sampled_seed() { set_seed(PerTableSeed::kSignBit); } +- +- bool is_sampled_seed() const { +- return (data_ & kSeedMask) == PerTableSeed::kSignBit; +- } +- +- // Returns true if the table has infoz. +- bool has_infoz() const { +- return ABSL_PREDICT_FALSE((data_ & kHasInfozMask) != 0); +- } +- +- // Sets the has_infoz bit. +- void set_has_infoz() { data_ |= kHasInfozMask; } +- +- void set_no_seed_for_testing() { data_ &= ~kSeedMask; } +- +- private: +- void set_seed(uint16_t seed) { +- data_ = (data_ & ~kSeedMask) | (seed | PerTableSeed::kSignBit); +- } +- static constexpr size_t kSizeShift = 64 - kSizeBitCount; +- static constexpr uint64_t kSizeOneNoMetadata = uint64_t{1} << kSizeShift; +- static constexpr uint64_t kMetadataMask = kSizeOneNoMetadata - 1; +- static constexpr uint64_t kSeedMask = +- (uint64_t{1} << PerTableSeed::kBitCount) - 1; +- // The next bit after the seed. +- static constexpr uint64_t kHasInfozMask = kSeedMask + 1; +- uint64_t data_; +-}; +- +-// H1 is just the low bits of the hash. +-inline size_t H1(size_t hash) { return hash; } +- +-// Extracts the H2 portion of a hash: the 7 most significant bits. +-// +-// These are used as an occupied control byte. +-inline h2_t H2(size_t hash) { return hash >> (sizeof(size_t) * 8 - 7); } +- +-// When there is an insertion with no reserved growth, we rehash with +-// probability `min(1, RehashProbabilityConstant() / capacity())`. Using a +-// constant divided by capacity ensures that inserting N elements is still O(N) +-// in the average case. Using the constant 16 means that we expect to rehash ~8 +-// times more often than when generations are disabled. We are adding expected +-// rehash_probability * #insertions/capacity_growth = 16/capacity * ((7/8 - +-// 7/16) * capacity)/capacity_growth = ~7 extra rehashes per capacity growth. +-inline size_t RehashProbabilityConstant() { return 16; } +- +-class CommonFieldsGenerationInfoEnabled { +- // A sentinel value for reserved_growth_ indicating that we just ran out of +- // reserved growth on the last insertion. When reserve is called and then +- // insertions take place, reserved_growth_'s state machine is N, ..., 1, +- // kReservedGrowthJustRanOut, 0. +- static constexpr size_t kReservedGrowthJustRanOut = +- (std::numeric_limits::max)(); +- +- public: +- CommonFieldsGenerationInfoEnabled() = default; +- CommonFieldsGenerationInfoEnabled(CommonFieldsGenerationInfoEnabled&& that) +- : reserved_growth_(that.reserved_growth_), +- reservation_size_(that.reservation_size_), +- generation_(that.generation_) { +- that.reserved_growth_ = 0; +- that.reservation_size_ = 0; +- that.generation_ = EmptyGeneration(); +- } +- CommonFieldsGenerationInfoEnabled& operator=( +- CommonFieldsGenerationInfoEnabled&&) = default; +- +- // Whether we should rehash on insert in order to detect bugs of using invalid +- // references. We rehash on the first insertion after reserved_growth_ reaches +- // 0 after a call to reserve. We also do a rehash with low probability +- // whenever reserved_growth_ is zero. +- bool should_rehash_for_bug_detection_on_insert(size_t capacity) const; +- // Similar to above, except that we don't depend on reserved_growth_. +- bool should_rehash_for_bug_detection_on_move(size_t capacity) const; +- void maybe_increment_generation_on_insert() { +- if (reserved_growth_ == kReservedGrowthJustRanOut) reserved_growth_ = 0; +- +- if (reserved_growth_ > 0) { +- if (--reserved_growth_ == 0) reserved_growth_ = kReservedGrowthJustRanOut; +- } else { +- increment_generation(); +- } +- } +- void increment_generation() { *generation_ = NextGeneration(*generation_); } +- void reset_reserved_growth(size_t reservation, size_t size) { +- reserved_growth_ = reservation - size; +- } +- size_t reserved_growth() const { return reserved_growth_; } +- void set_reserved_growth(size_t r) { reserved_growth_ = r; } +- size_t reservation_size() const { return reservation_size_; } +- void set_reservation_size(size_t r) { reservation_size_ = r; } +- GenerationType generation() const { return *generation_; } +- void set_generation(GenerationType g) { *generation_ = g; } +- GenerationType* generation_ptr() const { return generation_; } +- void set_generation_ptr(GenerationType* g) { generation_ = g; } +- +- private: +- // The number of insertions remaining that are guaranteed to not rehash due to +- // a prior call to reserve. Note: we store reserved growth in addition to +- // reservation size because calls to erase() decrease size_ but don't decrease +- // reserved growth. +- size_t reserved_growth_ = 0; +- // The maximum argument to reserve() since the container was cleared. We need +- // to keep track of this, in addition to reserved growth, because we reset +- // reserved growth to this when erase(begin(), end()) is called. +- size_t reservation_size_ = 0; +- // Pointer to the generation counter, which is used to validate iterators and +- // is stored in the backing array between the control bytes and the slots. +- // Note that we can't store the generation inside the container itself and +- // keep a pointer to the container in the iterators because iterators must +- // remain valid when the container is moved. +- // Note: we could derive this pointer from the control pointer, but it makes +- // the code more complicated, and there's a benefit in having the sizes of +- // raw_hash_set in sanitizer mode and non-sanitizer mode a bit more different, +- // which is that tests are less likely to rely on the size remaining the same. +- GenerationType* generation_ = EmptyGeneration(); +-}; +- +-class CommonFieldsGenerationInfoDisabled { +- public: +- CommonFieldsGenerationInfoDisabled() = default; +- CommonFieldsGenerationInfoDisabled(CommonFieldsGenerationInfoDisabled&&) = +- default; +- CommonFieldsGenerationInfoDisabled& operator=( +- CommonFieldsGenerationInfoDisabled&&) = default; +- +- bool should_rehash_for_bug_detection_on_insert(size_t) const { return false; } +- bool should_rehash_for_bug_detection_on_move(size_t) const { return false; } +- void maybe_increment_generation_on_insert() {} +- void increment_generation() {} +- void reset_reserved_growth(size_t, size_t) {} +- size_t reserved_growth() const { return 0; } +- void set_reserved_growth(size_t) {} +- size_t reservation_size() const { return 0; } +- void set_reservation_size(size_t) {} +- GenerationType generation() const { return 0; } +- void set_generation(GenerationType) {} +- GenerationType* generation_ptr() const { return nullptr; } +- void set_generation_ptr(GenerationType*) {} +-}; +- +-class HashSetIteratorGenerationInfoEnabled { +- public: +- HashSetIteratorGenerationInfoEnabled() = default; +- explicit HashSetIteratorGenerationInfoEnabled( +- const GenerationType* generation_ptr) +- : generation_ptr_(generation_ptr), generation_(*generation_ptr) {} +- +- GenerationType generation() const { return generation_; } +- void reset_generation() { generation_ = *generation_ptr_; } +- const GenerationType* generation_ptr() const { return generation_ptr_; } +- void set_generation_ptr(const GenerationType* ptr) { generation_ptr_ = ptr; } +- +- private: +- const GenerationType* generation_ptr_ = EmptyGeneration(); +- GenerationType generation_ = *generation_ptr_; +-}; +- +-class HashSetIteratorGenerationInfoDisabled { +- public: +- HashSetIteratorGenerationInfoDisabled() = default; +- explicit HashSetIteratorGenerationInfoDisabled(const GenerationType*) {} +- +- GenerationType generation() const { return 0; } +- void reset_generation() {} +- const GenerationType* generation_ptr() const { return nullptr; } +- void set_generation_ptr(const GenerationType*) {} +-}; +- +-#ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS +-using CommonFieldsGenerationInfo = CommonFieldsGenerationInfoEnabled; +-using HashSetIteratorGenerationInfo = HashSetIteratorGenerationInfoEnabled; +-#else +-using CommonFieldsGenerationInfo = CommonFieldsGenerationInfoDisabled; +-using HashSetIteratorGenerationInfo = HashSetIteratorGenerationInfoDisabled; +-#endif +- +-// Stored the information regarding number of slots we can still fill +-// without needing to rehash. +-// +-// We want to ensure sufficient number of empty slots in the table in order +-// to keep probe sequences relatively short. Empty slot in the probe group +-// is required to stop probing. +-// +-// Tombstones (kDeleted slots) are not included in the growth capacity, +-// because we'd like to rehash when the table is filled with tombstones and/or +-// full slots. +-// +-// GrowthInfo also stores a bit that encodes whether table may have any +-// deleted slots. +-// Most of the tables (>95%) have no deleted slots, so some functions can +-// be more efficient with this information. +-// +-// Callers can also force a rehash via the standard `rehash(0)`, +-// which will recompute this value as a side-effect. +-// +-// See also `CapacityToGrowth()`. +-class GrowthInfo { +- public: +- // Leaves data member uninitialized. +- GrowthInfo() = default; +- +- // Initializes the GrowthInfo assuming we can grow `growth_left` elements +- // and there are no kDeleted slots in the table. +- void InitGrowthLeftNoDeleted(size_t growth_left) { +- growth_left_info_ = growth_left; +- } +- +- // Overwrites single full slot with an empty slot. +- void OverwriteFullAsEmpty() { ++growth_left_info_; } +- +- // Overwrites single empty slot with a full slot. +- void OverwriteEmptyAsFull() { +- ABSL_SWISSTABLE_ASSERT(GetGrowthLeft() > 0); +- --growth_left_info_; +- } +- +- // Overwrites several empty slots with full slots. +- void OverwriteManyEmptyAsFull(size_t count) { +- ABSL_SWISSTABLE_ASSERT(GetGrowthLeft() >= count); +- growth_left_info_ -= count; +- } +- +- // Overwrites specified control element with full slot. +- void OverwriteControlAsFull(ctrl_t ctrl) { +- ABSL_SWISSTABLE_ASSERT(GetGrowthLeft() >= +- static_cast(IsEmpty(ctrl))); +- growth_left_info_ -= static_cast(IsEmpty(ctrl)); +- } +- +- // Overwrites single full slot with a deleted slot. +- void OverwriteFullAsDeleted() { growth_left_info_ |= kDeletedBit; } +- +- // Returns true if table satisfies two properties: +- // 1. Guaranteed to have no kDeleted slots. +- // 2. There is a place for at least one element to grow. +- bool HasNoDeletedAndGrowthLeft() const { +- return static_cast>(growth_left_info_) > 0; +- } +- +- // Returns true if the table satisfies two properties: +- // 1. Guaranteed to have no kDeleted slots. +- // 2. There is no growth left. +- bool HasNoGrowthLeftAndNoDeleted() const { return growth_left_info_ == 0; } +- +- // Returns true if GetGrowthLeft() == 0, but must be called only if +- // HasNoDeleted() is false. It is slightly more efficient. +- bool HasNoGrowthLeftAssumingMayHaveDeleted() const { +- ABSL_SWISSTABLE_ASSERT(!HasNoDeleted()); +- return growth_left_info_ == kDeletedBit; +- } +- +- // Returns true if table guaranteed to have no kDeleted slots. +- bool HasNoDeleted() const { +- return static_cast>(growth_left_info_) >= 0; +- } +- +- // Returns the number of elements left to grow. +- size_t GetGrowthLeft() const { return growth_left_info_ & kGrowthLeftMask; } +- +- private: +- static constexpr size_t kGrowthLeftMask = ((~size_t{}) >> 1); +- static constexpr size_t kDeletedBit = ~kGrowthLeftMask; +- // Topmost bit signal whenever there are deleted slots. +- size_t growth_left_info_; +-}; +- +-static_assert(sizeof(GrowthInfo) == sizeof(size_t), ""); +-static_assert(alignof(GrowthInfo) == alignof(size_t), ""); +- +-// Returns whether `n` is a valid capacity (i.e., number of slots). +-// +-// A valid capacity is a non-zero integer `2^m - 1`. +-constexpr bool IsValidCapacity(size_t n) { return ((n + 1) & n) == 0 && n > 0; } +- +-// Whether a table is small enough that we don't need to hash any keys. +-constexpr bool IsSmallCapacity(size_t capacity) { return capacity <= 1; } +- +-// Returns the number of "cloned control bytes". +-// +-// This is the number of control bytes that are present both at the beginning +-// of the control byte array and at the end, such that we can create a +-// `Group::kWidth`-width probe window starting from any control byte. +-constexpr size_t NumClonedBytes() { return Group::kWidth - 1; } +- +-// Returns the number of control bytes including cloned. +-constexpr size_t NumControlBytes(size_t capacity) { +- return IsSmallCapacity(capacity) ? 0 : capacity + 1 + NumClonedBytes(); +-} +- +-// Computes the offset from the start of the backing allocation of control. +-// infoz and growth_info are stored at the beginning of the backing array. +-constexpr size_t ControlOffset(bool has_infoz) { +- return (has_infoz ? sizeof(HashtablezInfoHandle) : 0) + sizeof(GrowthInfo); +-} +- +-// Returns the offset of the next item after `offset` that is aligned to `align` +-// bytes. `align` must be a power of two. +-constexpr size_t AlignUpTo(size_t offset, size_t align) { +- return (offset + align - 1) & (~align + 1); +-} +- +-// Helper class for computing offsets and allocation size of hash set fields. +-class RawHashSetLayout { +- public: +- // TODO(b/413062340): maybe don't allocate growth info for capacity 1 tables. +- // Doing so may require additional branches/complexity so it might not be +- // worth it. +- explicit RawHashSetLayout(size_t capacity, size_t slot_size, +- size_t slot_align, bool has_infoz) +- : control_offset_(ControlOffset(has_infoz)), +- generation_offset_(control_offset_ + NumControlBytes(capacity)), +- slot_offset_( +- AlignUpTo(generation_offset_ + NumGenerationBytes(), slot_align)), +- alloc_size_(slot_offset_ + capacity * slot_size) { +- ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity)); +- ABSL_SWISSTABLE_ASSERT( +- slot_size <= +- ((std::numeric_limits::max)() - slot_offset_) / capacity); +- } +- +- // Returns precomputed offset from the start of the backing allocation of +- // control. +- size_t control_offset() const { return control_offset_; } +- +- // Given the capacity of a table, computes the offset (from the start of the +- // backing allocation) of the generation counter (if it exists). +- size_t generation_offset() const { return generation_offset_; } +- +- // Given the capacity of a table, computes the offset (from the start of the +- // backing allocation) at which the slots begin. +- size_t slot_offset() const { return slot_offset_; } +- +- // Given the capacity of a table, computes the total size of the backing +- // array. +- size_t alloc_size() const { return alloc_size_; } +- +- private: +- size_t control_offset_; +- size_t generation_offset_; +- size_t slot_offset_; +- size_t alloc_size_; +-}; +- +-struct HashtableFreeFunctionsAccess; +- +-// This allows us to work around an uninitialized memory warning when +-// constructing begin() iterators in empty hashtables. +-template +-union MaybeInitializedPtr { +- T* get() const { ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(p); } +- void set(T* ptr) { p = ptr; } +- +- T* p; +-}; +- +-struct HeapPtrs { +- // The control bytes (and, also, a pointer near to the base of the backing +- // array). +- // +- // This contains `capacity + 1 + NumClonedBytes()` entries. +- // +- // Note that growth_info is stored immediately before this pointer. +- // May be uninitialized for small tables. +- MaybeInitializedPtr control; +- +- // The beginning of the slots, located at `SlotOffset()` bytes after +- // `control`. May be uninitialized for empty tables. +- // Note: we can't use `slots` because Qt defines "slots" as a macro. +- MaybeInitializedPtr slot_array; +-}; +- +-// Returns the maximum size of the SOO slot. +-constexpr size_t MaxSooSlotSize() { return sizeof(HeapPtrs); } +- +-// Manages the backing array pointers or the SOO slot. When raw_hash_set::is_soo +-// is true, the SOO slot is stored in `soo_data`. Otherwise, we use `heap`. +-union HeapOrSoo { +- MaybeInitializedPtr& control() { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.control); +- } +- MaybeInitializedPtr control() const { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.control); +- } +- MaybeInitializedPtr& slot_array() { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.slot_array); +- } +- MaybeInitializedPtr slot_array() const { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.slot_array); +- } +- void* get_soo_data() { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(soo_data); +- } +- const void* get_soo_data() const { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(soo_data); +- } +- +- HeapPtrs heap; +- unsigned char soo_data[MaxSooSlotSize()]; +-}; +- +-// Returns a reference to the GrowthInfo object stored immediately before +-// `control`. +-inline GrowthInfo& GetGrowthInfoFromControl(ctrl_t* control) { +- auto* gl_ptr = reinterpret_cast(control) - 1; +- ABSL_SWISSTABLE_ASSERT( +- reinterpret_cast(gl_ptr) % alignof(GrowthInfo) == 0); +- return *gl_ptr; +-} +- +-// CommonFields hold the fields in raw_hash_set that do not depend +-// on template parameters. This allows us to conveniently pass all +-// of this state to helper functions as a single argument. +-class CommonFields : public CommonFieldsGenerationInfo { +- public: +- explicit CommonFields(soo_tag_t) +- : capacity_(SooCapacity()), size_(no_seed_empty_tag_t{}) {} +- explicit CommonFields(full_soo_tag_t) +- : capacity_(SooCapacity()), size_(full_soo_tag_t{}) {} +- explicit CommonFields(non_soo_tag_t) +- : capacity_(0), size_(no_seed_empty_tag_t{}) {} +- // For use in swapping. +- explicit CommonFields(uninitialized_tag_t) : size_(uninitialized_tag_t{}) {} +- +- // Not copyable +- CommonFields(const CommonFields&) = delete; +- CommonFields& operator=(const CommonFields&) = delete; +- +- // Copy with guarantee that it is not SOO. +- CommonFields(non_soo_tag_t, const CommonFields& that) +- : capacity_(that.capacity_), +- size_(that.size_), +- heap_or_soo_(that.heap_or_soo_) { +- } +- +- // Movable +- CommonFields(CommonFields&& that) = default; +- CommonFields& operator=(CommonFields&&) = default; +- +- template +- static CommonFields CreateDefault() { +- return kSooEnabled ? CommonFields{soo_tag_t{}} +- : CommonFields{non_soo_tag_t{}}; +- } +- +- // The inline data for SOO is written on top of control_/slots_. +- const void* soo_data() const { return heap_or_soo_.get_soo_data(); } +- void* soo_data() { return heap_or_soo_.get_soo_data(); } +- +- ctrl_t* control() const { +- ABSL_SWISSTABLE_ASSERT(capacity() > 0); +- // Assume that the control bytes don't alias `this`. +- ctrl_t* ctrl = heap_or_soo_.control().get(); +- [[maybe_unused]] size_t num_control_bytes = NumControlBytes(capacity()); +- ABSL_ASSUME(reinterpret_cast(ctrl + num_control_bytes) <= +- reinterpret_cast(this) || +- reinterpret_cast(this + 1) <= +- reinterpret_cast(ctrl)); +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(ctrl); +- } +- +- void set_control(ctrl_t* c) { heap_or_soo_.control().set(c); } +- +- // Note: we can't use slots() because Qt defines "slots" as a macro. +- void* slot_array() const { return heap_or_soo_.slot_array().get(); } +- MaybeInitializedPtr slots_union() const { +- return heap_or_soo_.slot_array(); +- } +- void set_slots(void* s) { heap_or_soo_.slot_array().set(s); } +- +- // The number of filled slots. +- size_t size() const { return size_.size(); } +- // Sets the size to zero, but keeps hashinfoz bit and seed. +- void set_size_to_zero() { size_.set_size_to_zero_keep_metadata(); } +- void set_empty_soo() { +- AssertInSooMode(); +- size_ = HashtableSize(no_seed_empty_tag_t{}); +- } +- void set_full_soo() { +- AssertInSooMode(); +- size_ = HashtableSize(full_soo_tag_t{}); +- } +- void increment_size() { +- ABSL_SWISSTABLE_ASSERT(size() < capacity()); +- size_.increment_size(); +- } +- void increment_size(size_t n) { +- ABSL_SWISSTABLE_ASSERT(size() + n <= capacity()); +- size_.increment_size(n); +- } +- void decrement_size() { +- ABSL_SWISSTABLE_ASSERT(!empty()); +- size_.decrement_size(); +- } +- bool empty() const { return size_.empty(); } +- +- // The seed used for the hash function. +- PerTableSeed seed() const { return size_.seed(); } +- // Generates a new seed the hash function. +- // The table will be invalidated if `!empty()` because hash is being changed. +- // In such cases, we will need to rehash the table. +- void generate_new_seed(bool has_infoz) { +- // Note: we can't use has_infoz() here because we set has_infoz later than +- // we generate the seed. +- if (ABSL_PREDICT_FALSE(has_infoz)) { +- size_.set_sampled_seed(); +- return; +- } +- size_.generate_new_seed(); +- } +- void set_no_seed_for_testing() { size_.set_no_seed_for_testing(); } +- +- // The total number of available slots. +- size_t capacity() const { return capacity_; } +- void set_capacity(size_t c) { +- // We allow setting above the max valid capacity for debugging purposes. +- ABSL_SWISSTABLE_ASSERT(c == 0 || IsValidCapacity(c) || +- c > kAboveMaxValidCapacity); +- capacity_ = c; +- } +- bool is_small() const { return IsSmallCapacity(capacity_); } +- +- // The number of slots we can still fill without needing to rehash. +- // This is stored in the heap allocation before the control bytes. +- // TODO(b/289225379): experiment with moving growth_info back inline to +- // increase room for SOO. +- size_t growth_left() const { return growth_info().GetGrowthLeft(); } +- +- GrowthInfo& growth_info() { +- ABSL_SWISSTABLE_ASSERT(!is_small()); +- return GetGrowthInfoFromControl(control()); +- } +- GrowthInfo growth_info() const { +- return const_cast(this)->growth_info(); +- } +- +- bool has_infoz() const { return size_.has_infoz(); } +- void set_has_infoz() { +- ABSL_SWISSTABLE_ASSERT(size_.is_sampled_seed()); +- size_.set_has_infoz(); +- } +- +- HashtablezInfoHandle* infoz_ptr() const { +- // growth_info is stored before control bytes. +- ABSL_SWISSTABLE_ASSERT( +- reinterpret_cast(control()) % alignof(size_t) == 0); +- ABSL_SWISSTABLE_ASSERT(has_infoz()); +- return reinterpret_cast( +- control() - ControlOffset(/*has_infoz=*/true)); +- } +- +- HashtablezInfoHandle infoz() { +- return has_infoz() ? *infoz_ptr() : HashtablezInfoHandle(); +- } +- void set_infoz(HashtablezInfoHandle infoz) { +- ABSL_SWISSTABLE_ASSERT(has_infoz()); +- *infoz_ptr() = infoz; +- } +- +- bool should_rehash_for_bug_detection_on_insert() const { +- if constexpr (!SwisstableGenerationsEnabled()) { +- return false; +- } +- // As an optimization, we avoid calling ShouldRehashForBugDetection if we +- // will end up rehashing anyways. +- if (growth_left() == 0) return false; +- return CommonFieldsGenerationInfo:: +- should_rehash_for_bug_detection_on_insert(capacity()); +- } +- bool should_rehash_for_bug_detection_on_move() const { +- return CommonFieldsGenerationInfo::should_rehash_for_bug_detection_on_move( +- capacity()); +- } +- void reset_reserved_growth(size_t reservation) { +- CommonFieldsGenerationInfo::reset_reserved_growth(reservation, size()); +- } +- +- // The size of the backing array allocation. +- size_t alloc_size(size_t slot_size, size_t slot_align) const { +- return RawHashSetLayout(capacity(), slot_size, slot_align, has_infoz()) +- .alloc_size(); +- } +- +- // Move fields other than heap_or_soo_. +- void move_non_heap_or_soo_fields(CommonFields& that) { +- static_cast(*this) = +- std::move(static_cast(that)); +- capacity_ = that.capacity_; +- size_ = that.size_; +- } +- +- // Returns the number of control bytes set to kDeleted. For testing only. +- size_t TombstonesCount() const { +- return static_cast( +- std::count(control(), control() + capacity(), ctrl_t::kDeleted)); +- } +- +- // Helper to enable sanitizer mode validation to protect against reentrant +- // calls during element constructor/destructor. +- template +- void RunWithReentrancyGuard(F f) { +-#ifdef NDEBUG +- f(); +- return; +-#endif +- const size_t cap = capacity(); +- set_capacity(InvalidCapacity::kReentrance); +- f(); +- set_capacity(cap); +- } +- +- private: +- // We store the has_infoz bit in the lowest bit of size_. +- static constexpr size_t HasInfozShift() { return 1; } +- static constexpr size_t HasInfozMask() { +- return (size_t{1} << HasInfozShift()) - 1; +- } +- +- // We can't assert that SOO is enabled because we don't have SooEnabled(), but +- // we assert what we can. +- void AssertInSooMode() const { +- ABSL_SWISSTABLE_ASSERT(capacity() == SooCapacity()); +- ABSL_SWISSTABLE_ASSERT(!has_infoz()); +- } +- +- // The number of slots in the backing array. This is always 2^N-1 for an +- // integer N. NOTE: we tried experimenting with compressing the capacity and +- // storing it together with size_: (a) using 6 bits to store the corresponding +- // power (N in 2^N-1), and (b) storing 2^N as the most significant bit of +- // size_ and storing size in the low bits. Both of these experiments were +- // regressions, presumably because we need capacity to do find operations. +- size_t capacity_; +- +- // TODO(b/289225379): we could put size_ into HeapOrSoo and make capacity_ +- // encode the size in SOO case. We would be making size()/capacity() more +- // expensive in order to have more SOO space. +- HashtableSize size_; +- +- // Either the control/slots pointers or the SOO slot. +- HeapOrSoo heap_or_soo_; +-}; +- +-template +-class raw_hash_set; +- +-// Returns the next valid capacity after `n`. +-constexpr size_t NextCapacity(size_t n) { +- ABSL_SWISSTABLE_ASSERT(IsValidCapacity(n) || n == 0); +- return n * 2 + 1; +-} +- +-// Returns the previous valid capacity before `n`. +-constexpr size_t PreviousCapacity(size_t n) { +- ABSL_SWISSTABLE_ASSERT(IsValidCapacity(n)); +- return n / 2; +-} +- +-// Applies the following mapping to every byte in the control array: +-// * kDeleted -> kEmpty +-// * kEmpty -> kEmpty +-// * _ -> kDeleted +-// PRECONDITION: +-// IsValidCapacity(capacity) +-// ctrl[capacity] == ctrl_t::kSentinel +-// ctrl[i] != ctrl_t::kSentinel for all i < capacity +-void ConvertDeletedToEmptyAndFullToDeleted(ctrl_t* ctrl, size_t capacity); +- +-// Converts `n` into the next valid capacity, per `IsValidCapacity`. +-constexpr size_t NormalizeCapacity(size_t n) { +- return n ? ~size_t{} >> countl_zero(n) : 1; +-} +- +-// General notes on capacity/growth methods below: +-// - We use 7/8th as maximum load factor. For 16-wide groups, that gives an +-// average of two empty slots per group. +-// - For (capacity+1) >= Group::kWidth, growth is 7/8*capacity. +-// - For (capacity+1) < Group::kWidth, growth == capacity. In this case, we +-// never need to probe (the whole table fits in one group) so we don't need a +-// load factor less than 1. +- +-// Given `capacity`, applies the load factor; i.e., it returns the maximum +-// number of values we should put into the table before a resizing rehash. +-constexpr size_t CapacityToGrowth(size_t capacity) { +- ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity)); +- // `capacity*7/8` +- if (Group::kWidth == 8 && capacity == 7) { +- // x-x/8 does not work when x==7. +- return 6; +- } +- return capacity - capacity / 8; +-} +- +-// Given `size`, "unapplies" the load factor to find how large the capacity +-// should be to stay within the load factor. +-// +-// For size == 0, returns 0. +-// For other values, returns the same as `NormalizeCapacity(size*8/7)`. +-constexpr size_t SizeToCapacity(size_t size) { +- if (size == 0) { +- return 0; +- } +- // The minimum possible capacity is NormalizeCapacity(size). +- // Shifting right `~size_t{}` by `leading_zeros` yields +- // NormalizeCapacity(size). +- int leading_zeros = absl::countl_zero(size); +- constexpr size_t kLast3Bits = size_t{7} << (sizeof(size_t) * 8 - 3); +- // max_size_for_next_capacity = max_load_factor * next_capacity +- // = (7/8) * (~size_t{} >> leading_zeros) +- // = (7/8*~size_t{}) >> leading_zeros +- // = kLast3Bits >> leading_zeros +- size_t max_size_for_next_capacity = kLast3Bits >> leading_zeros; +- // Decrease shift if size is too big for the minimum capacity. +- leading_zeros -= static_cast(size > max_size_for_next_capacity); +- if constexpr (Group::kWidth == 8) { +- // Formula doesn't work when size==7 for 8-wide groups. +- leading_zeros -= (size == 7); +- } +- return (~size_t{}) >> leading_zeros; +-} +- +-template +-size_t SelectBucketCountForIterRange(InputIter first, InputIter last, +- size_t bucket_count) { +- if (bucket_count != 0) { +- return bucket_count; +- } +- if (base_internal::IsAtLeastIterator()) { +- return SizeToCapacity(static_cast(std::distance(first, last))); +- } +- return 0; +-} +- +-constexpr bool SwisstableDebugEnabled() { +-#if defined(ABSL_SWISSTABLE_ENABLE_GENERATIONS) || \ +- ABSL_OPTION_HARDENED == 1 || !defined(NDEBUG) +- return true; +-#else +- return false; +-#endif +-} +- +-inline void AssertIsFull(const ctrl_t* ctrl, GenerationType generation, +- const GenerationType* generation_ptr, +- const char* operation) { +- if (!SwisstableDebugEnabled()) return; +- // `SwisstableDebugEnabled()` is also true for release builds with hardening +- // enabled. To minimize their impact in those builds: +- // - use `ABSL_PREDICT_FALSE()` to provide a compiler hint for code layout +- // - use `ABSL_RAW_LOG()` with a format string to reduce code size and improve +- // the chances that the hot paths will be inlined. +- if (ABSL_PREDICT_FALSE(ctrl == nullptr)) { +- ABSL_RAW_LOG(FATAL, "%s called on end() iterator.", operation); +- } +- if (ABSL_PREDICT_FALSE(ctrl == DefaultIterControl())) { +- ABSL_RAW_LOG(FATAL, "%s called on default-constructed iterator.", +- operation); +- } +- if (SwisstableGenerationsEnabled()) { +- if (ABSL_PREDICT_FALSE(generation != *generation_ptr)) { +- ABSL_RAW_LOG(FATAL, +- "%s called on invalid iterator. The table could have " +- "rehashed or moved since this iterator was initialized.", +- operation); +- } +- if (ABSL_PREDICT_FALSE(!IsFull(*ctrl))) { +- ABSL_RAW_LOG( +- FATAL, +- "%s called on invalid iterator. The element was likely erased.", +- operation); +- } +- } else { +- if (ABSL_PREDICT_FALSE(!IsFull(*ctrl))) { +- ABSL_RAW_LOG( +- FATAL, +- "%s called on invalid iterator. The element might have been erased " +- "or the table might have rehashed. Consider running with " +- "--config=asan to diagnose rehashing issues.", +- operation); +- } +- } +-} +- +-// Note that for comparisons, null/end iterators are valid. +-inline void AssertIsValidForComparison(const ctrl_t* ctrl, +- GenerationType generation, +- const GenerationType* generation_ptr) { +- if (!SwisstableDebugEnabled()) return; +- const bool ctrl_is_valid_for_comparison = +- ctrl == nullptr || ctrl == DefaultIterControl() || IsFull(*ctrl); +- if (SwisstableGenerationsEnabled()) { +- if (ABSL_PREDICT_FALSE(generation != *generation_ptr)) { +- ABSL_RAW_LOG(FATAL, +- "Invalid iterator comparison. The table could have rehashed " +- "or moved since this iterator was initialized."); +- } +- if (ABSL_PREDICT_FALSE(!ctrl_is_valid_for_comparison)) { +- ABSL_RAW_LOG( +- FATAL, "Invalid iterator comparison. The element was likely erased."); +- } +- } else { +- ABSL_HARDENING_ASSERT_SLOW( +- ctrl_is_valid_for_comparison && +- "Invalid iterator comparison. The element might have been erased or " +- "the table might have rehashed. Consider running with --config=asan to " +- "diagnose rehashing issues."); +- } +-} +- +-// If the two iterators come from the same container, then their pointers will +-// interleave such that ctrl_a <= ctrl_b < slot_a <= slot_b or vice/versa. +-// Note: we take slots by reference so that it's not UB if they're uninitialized +-// as long as we don't read them (when ctrl is null). +-inline bool AreItersFromSameContainer(const ctrl_t* ctrl_a, +- const ctrl_t* ctrl_b, +- const void* const& slot_a, +- const void* const& slot_b) { +- // If either control byte is null, then we can't tell. +- if (ctrl_a == nullptr || ctrl_b == nullptr) return true; +- const bool a_is_soo = IsSooControl(ctrl_a); +- if (a_is_soo != IsSooControl(ctrl_b)) return false; +- if (a_is_soo) return slot_a == slot_b; +- +- const void* low_slot = slot_a; +- const void* hi_slot = slot_b; +- if (ctrl_a > ctrl_b) { +- std::swap(ctrl_a, ctrl_b); +- std::swap(low_slot, hi_slot); +- } +- return ctrl_b < low_slot && low_slot <= hi_slot; +-} +- +-// Asserts that two iterators come from the same container. +-// Note: we take slots by reference so that it's not UB if they're uninitialized +-// as long as we don't read them (when ctrl is null). +-inline void AssertSameContainer(const ctrl_t* ctrl_a, const ctrl_t* ctrl_b, +- const void* const& slot_a, +- const void* const& slot_b, +- const GenerationType* generation_ptr_a, +- const GenerationType* generation_ptr_b) { +- if (!SwisstableDebugEnabled()) return; +- // `SwisstableDebugEnabled()` is also true for release builds with hardening +- // enabled. To minimize their impact in those builds: +- // - use `ABSL_PREDICT_FALSE()` to provide a compiler hint for code layout +- // - use `ABSL_RAW_LOG()` with a format string to reduce code size and improve +- // the chances that the hot paths will be inlined. +- +- // fail_if(is_invalid, message) crashes when is_invalid is true and provides +- // an error message based on `message`. +- const auto fail_if = [](bool is_invalid, const char* message) { +- if (ABSL_PREDICT_FALSE(is_invalid)) { +- ABSL_RAW_LOG(FATAL, "Invalid iterator comparison. %s", message); +- } +- }; +- +- const bool a_is_default = ctrl_a == DefaultIterControl(); +- const bool b_is_default = ctrl_b == DefaultIterControl(); +- if (a_is_default && b_is_default) return; +- fail_if(a_is_default != b_is_default, +- "Comparing default-constructed hashtable iterator with a " +- "non-default-constructed hashtable iterator."); +- +- if (SwisstableGenerationsEnabled()) { +- if (ABSL_PREDICT_TRUE(generation_ptr_a == generation_ptr_b)) return; +- const bool a_is_empty = IsEmptyGeneration(generation_ptr_a); +- const bool b_is_empty = IsEmptyGeneration(generation_ptr_b); +- fail_if(a_is_empty != b_is_empty, +- "Comparing an iterator from an empty hashtable with an iterator " +- "from a non-empty hashtable."); +- fail_if(a_is_empty && b_is_empty, +- "Comparing iterators from different empty hashtables."); +- +- const bool a_is_end = ctrl_a == nullptr; +- const bool b_is_end = ctrl_b == nullptr; +- fail_if(a_is_end || b_is_end, +- "Comparing iterator with an end() iterator from a different " +- "hashtable."); +- fail_if(true, "Comparing non-end() iterators from different hashtables."); +- } else { +- ABSL_HARDENING_ASSERT_SLOW( +- AreItersFromSameContainer(ctrl_a, ctrl_b, slot_a, slot_b) && +- "Invalid iterator comparison. The iterators may be from different " +- "containers or the container might have rehashed or moved. Consider " +- "running with --config=asan to diagnose issues."); +- } +-} +- +-struct FindInfo { +- size_t offset; +- size_t probe_length; +-}; +- +-// Whether a table fits entirely into a probing group. +-// Arbitrary order of elements in such tables is correct. +-constexpr bool is_single_group(size_t capacity) { +- return capacity <= Group::kWidth; +-} +- +-// Begins a probing operation on `common.control`, using `hash`. +-inline probe_seq probe_h1(size_t capacity, size_t h1) { +- return probe_seq(h1, capacity); +-} +-inline probe_seq probe(size_t capacity, size_t hash) { +- return probe_h1(capacity, H1(hash)); +-} +-inline probe_seq probe(const CommonFields& common, size_t hash) { +- return probe(common.capacity(), hash); +-} +- +-constexpr size_t kProbedElementIndexSentinel = ~size_t{}; +- +-// Implementation detail of transfer_unprobed_elements_to_next_capacity_fn. +-// Tries to find the new index for an element whose hash corresponds to +-// `h1` for growth to the next capacity. +-// Returns kProbedElementIndexSentinel if full probing is required. +-// +-// If element is located in the first probing group in the table before growth, +-// returns one of two positions: `old_index` or `old_index + old_capacity + 1`. +-// +-// Otherwise, we will try to insert it into the first probe group of the new +-// table. We only attempt to do so if the first probe group is already +-// initialized. +-template +-inline size_t TryFindNewIndexWithoutProbing(size_t h1, size_t old_index, +- size_t old_capacity, +- ctrl_t* new_ctrl, +- size_t new_capacity) { +- size_t index_diff = old_index - h1; +- // The first probe group starts with h1 & capacity. +- // All following groups start at (h1 + Group::kWidth * K) & capacity. +- // We can find an index within the floating group as index_diff modulo +- // Group::kWidth. +- // Both old and new capacity are larger than Group::kWidth so we can avoid +- // computing `& capacity`. +- size_t in_floating_group_index = index_diff & (Group::kWidth - 1); +- // By subtracting we will get the difference between the first probe group +- // and the probe group corresponding to old_index. +- index_diff -= in_floating_group_index; +- if (ABSL_PREDICT_TRUE((index_diff & old_capacity) == 0)) { +- size_t new_index = (h1 + in_floating_group_index) & new_capacity; +- ABSL_ASSUME(new_index != kProbedElementIndexSentinel); +- return new_index; +- } +- ABSL_SWISSTABLE_ASSERT(((old_index - h1) & old_capacity) >= Group::kWidth); +- // Try to insert element into the first probe group. +- // new_ctrl is not yet fully initialized so we can't use regular search via +- // find_first_non_full. +- +- // We can search in the first probe group only if it is located in already +- // initialized part of the table. +- if (ABSL_PREDICT_FALSE((h1 & old_capacity) >= old_index)) { +- return kProbedElementIndexSentinel; +- } +- size_t offset = h1 & new_capacity; +- Group new_g(new_ctrl + offset); +- if (auto mask = new_g.MaskNonFull(); ABSL_PREDICT_TRUE(mask)) { +- size_t result = offset + mask.LowestBitSet(); +- ABSL_ASSUME(result != kProbedElementIndexSentinel); +- return result; +- } +- return kProbedElementIndexSentinel; +-} +- +-// Extern template for inline function keeps possibility of inlining. +-// When compiler decided to not inline, no symbols will be added to the +-// corresponding translation unit. +-extern template size_t TryFindNewIndexWithoutProbing(size_t h1, +- size_t old_index, +- size_t old_capacity, +- ctrl_t* new_ctrl, +- size_t new_capacity); +- +-// Sets sanitizer poisoning for slot corresponding to control byte being set. +-inline void DoSanitizeOnSetCtrl(const CommonFields& c, size_t i, ctrl_t h, +- size_t slot_size) { +- ABSL_SWISSTABLE_ASSERT(i < c.capacity()); +- auto* slot_i = static_cast(c.slot_array()) + i * slot_size; +- if (IsFull(h)) { +- SanitizerUnpoisonMemoryRegion(slot_i, slot_size); +- } else { +- SanitizerPoisonMemoryRegion(slot_i, slot_size); +- } +-} +- +-// Sets `ctrl[i]` to `h`. +-// +-// Unlike setting it directly, this function will perform bounds checks and +-// mirror the value to the cloned tail if necessary. +-inline void SetCtrl(const CommonFields& c, size_t i, ctrl_t h, +- size_t slot_size) { +- ABSL_SWISSTABLE_ASSERT(!c.is_small()); +- DoSanitizeOnSetCtrl(c, i, h, slot_size); +- ctrl_t* ctrl = c.control(); +- ctrl[i] = h; +- ctrl[((i - NumClonedBytes()) & c.capacity()) + +- (NumClonedBytes() & c.capacity())] = h; +-} +-// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. +-inline void SetCtrl(const CommonFields& c, size_t i, h2_t h, size_t slot_size) { +- SetCtrl(c, i, static_cast(h), slot_size); +-} +- +-// Like SetCtrl, but in a single group table, we can save some operations when +-// setting the cloned control byte. +-inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, ctrl_t h, +- size_t slot_size) { +- ABSL_SWISSTABLE_ASSERT(!c.is_small()); +- ABSL_SWISSTABLE_ASSERT(is_single_group(c.capacity())); +- DoSanitizeOnSetCtrl(c, i, h, slot_size); +- ctrl_t* ctrl = c.control(); +- ctrl[i] = h; +- ctrl[i + c.capacity() + 1] = h; +-} +-// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. +-inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, h2_t h, +- size_t slot_size) { +- SetCtrlInSingleGroupTable(c, i, static_cast(h), slot_size); +-} +- +-// Like SetCtrl, but in a table with capacity >= Group::kWidth - 1, +-// we can save some operations when setting the cloned control byte. +-inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, ctrl_t h, +- size_t slot_size) { +- ABSL_SWISSTABLE_ASSERT(c.capacity() >= Group::kWidth - 1); +- DoSanitizeOnSetCtrl(c, i, h, slot_size); +- ctrl_t* ctrl = c.control(); +- ctrl[i] = h; +- ctrl[((i - NumClonedBytes()) & c.capacity()) + NumClonedBytes()] = h; +-} +-// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. +-inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, h2_t h, +- size_t slot_size) { +- SetCtrlInLargeTable(c, i, static_cast(h), slot_size); +-} +- +-// growth_info (which is a size_t) is stored with the backing array. +-constexpr size_t BackingArrayAlignment(size_t align_of_slot) { +- return (std::max)(align_of_slot, alignof(GrowthInfo)); +-} +- +-// Returns the address of the ith slot in slots where each slot occupies +-// slot_size. +-inline void* SlotAddress(void* slot_array, size_t slot, size_t slot_size) { +- return static_cast(static_cast(slot_array) + +- (slot * slot_size)); +-} +- +-// Iterates over all full slots and calls `cb(const ctrl_t*, void*)`. +-// No insertion to the table is allowed during `cb` call. +-// Erasure is allowed only for the element passed to the callback. +-// The table must not be in SOO mode. +-void IterateOverFullSlots(const CommonFields& c, size_t slot_size, +- absl::FunctionRef cb); +- +-template +-constexpr bool ShouldSampleHashtablezInfoForAlloc() { +- // Folks with custom allocators often make unwarranted assumptions about the +- // behavior of their classes vis-a-vis trivial destructability and what +- // calls they will or won't make. Avoid sampling for people with custom +- // allocators to get us out of this mess. This is not a hard guarantee but +- // a workaround while we plan the exact guarantee we want to provide. +- return std::is_same_v>; +-} +- +-// Allocates `n` bytes for a backing array. +-template +-ABSL_ATTRIBUTE_NOINLINE void* AllocateBackingArray(void* alloc, size_t n) { +- return Allocate(static_cast(alloc), n); +-} +- +-template +-ABSL_ATTRIBUTE_NOINLINE void DeallocateBackingArray( +- void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, +- size_t slot_align, bool had_infoz) { +- RawHashSetLayout layout(capacity, slot_size, slot_align, had_infoz); +- void* backing_array = ctrl - layout.control_offset(); +- // Unpoison before returning the memory to the allocator. +- SanitizerUnpoisonMemoryRegion(backing_array, layout.alloc_size()); +- Deallocate(static_cast(alloc), backing_array, +- layout.alloc_size()); +-} +- +-// PolicyFunctions bundles together some information for a particular +-// raw_hash_set instantiation. This information is passed to +-// type-erased functions that want to do small amounts of type-specific +-// work. +-struct PolicyFunctions { +- uint32_t key_size; +- uint32_t value_size; +- uint32_t slot_size; +- uint16_t slot_align; +- bool soo_enabled; +- bool is_hashtablez_eligible; +- +- // Returns the pointer to the hash function stored in the set. +- void* (*hash_fn)(CommonFields& common); +- +- // Returns the hash of the pointed-to slot. +- HashSlotFn hash_slot; +- +- // Transfers the contents of `count` slots from src_slot to dst_slot. +- // We use ability to transfer several slots in single group table growth. +- void (*transfer_n)(void* set, void* dst_slot, void* src_slot, size_t count); +- +- // Returns the pointer to the CharAlloc stored in the set. +- void* (*get_char_alloc)(CommonFields& common); +- +- // Allocates n bytes for the backing store for common. +- void* (*alloc)(void* alloc, size_t n); +- +- // Deallocates the backing store from common. +- void (*dealloc)(void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, +- size_t slot_align, bool had_infoz); +- +- // Implementation detail of GrowToNextCapacity. +- // Iterates over all full slots and transfers unprobed elements. +- // Initializes the new control bytes except mirrored bytes and kSentinel. +- // Caller must finish the initialization. +- // All slots corresponding to the full control bytes are transferred. +- // Probed elements are reported by `encode_probed_element` callback. +- // encode_probed_element may overwrite old_ctrl buffer till source_offset. +- // Different encoding is used depending on the capacity of the table. +- // See ProbedItem*Bytes classes for details. +- void (*transfer_unprobed_elements_to_next_capacity)( +- CommonFields& common, const ctrl_t* old_ctrl, void* old_slots, +- // TODO(b/382423690): Try to use absl::FunctionRef here. +- void* probed_storage, +- void (*encode_probed_element)(void* probed_storage, h2_t h2, +- size_t source_offset, size_t h1)); +- +- uint8_t soo_capacity() const { +- return static_cast(soo_enabled ? SooCapacity() : 0); +- } +-}; +- +-// Returns the maximum valid size for a table with 1-byte slots. +-// This function is an utility shared by MaxValidSize and IsAboveValidSize. +-// Template parameter is only used to enable testing. +-template +-constexpr size_t MaxValidSizeFor1ByteSlot() { +- if constexpr (kSizeOfSizeT == 8) { +- return CapacityToGrowth( +- static_cast(uint64_t{1} << HashtableSize::kSizeBitCount) - 1); +- } else { +- static_assert(kSizeOfSizeT == 4); +- return CapacityToGrowth((size_t{1} << (kSizeOfSizeT * 8 - 2)) - 1); +- } +-} +- +-// Returns the maximum valid size for a table with provided slot size. +-// Template parameter is only used to enable testing. +-template +-constexpr size_t MaxValidSize(size_t slot_size) { +- if constexpr (kSizeOfSizeT == 8) { +- // For small slot sizes we are limited by HashtableSize::kSizeBitCount. +- if (slot_size < size_t{1} << (64 - HashtableSize::kSizeBitCount)) { +- return MaxValidSizeFor1ByteSlot(); +- } +- return (size_t{1} << (kSizeOfSizeT * 8 - 2)) / slot_size; +- } else { +- return MaxValidSizeFor1ByteSlot() / slot_size; +- } +-} +- +-// Returns true if size is larger than the maximum valid size. +-// It is an optimization to avoid the division operation in the common case. +-// Template parameter is only used to enable testing. +-template +-constexpr bool IsAboveValidSize(size_t size, size_t slot_size) { +- if constexpr (kSizeOfSizeT == 8) { +- // For small slot sizes we are limited by HashtableSize::kSizeBitCount. +- if (ABSL_PREDICT_TRUE(slot_size < +- (size_t{1} << (64 - HashtableSize::kSizeBitCount)))) { +- return size > MaxValidSizeFor1ByteSlot(); +- } +- return size > MaxValidSize(slot_size); +- } else { +- return uint64_t{size} * slot_size > +- MaxValidSizeFor1ByteSlot(); +- } +-} +- +-// Returns the index of the SOO slot when growing from SOO to non-SOO in a +-// single group. See also InitializeSmallControlBytesAfterSoo(). It's important +-// to use index 1 so that when resizing from capacity 1 to 3, we can still have +-// random iteration order between the first two inserted elements. +-// I.e. it allows inserting the second element at either index 0 or 2. +-constexpr size_t SooSlotIndex() { return 1; } +- +-// Maximum capacity for the algorithm for small table after SOO. +-// Note that typical size after SOO is 3, but we allow up to 7. +-// Allowing till 16 would require additional store that can be avoided. +-constexpr size_t MaxSmallAfterSooCapacity() { return 7; } +- +-// Type erased version of raw_hash_set::reserve. +-// Requires: `new_size > policy.soo_capacity`. +-void ReserveTableToFitNewSize(CommonFields& common, +- const PolicyFunctions& policy, size_t new_size); +- +-// Resizes empty non-allocated table to the next valid capacity after +-// `bucket_count`. Requires: +-// 1. `c.capacity() == policy.soo_capacity`. +-// 2. `c.empty()`. +-// 3. `new_size > policy.soo_capacity`. +-// The table will be attempted to be sampled. +-void ReserveEmptyNonAllocatedTableToFitBucketCount( +- CommonFields& common, const PolicyFunctions& policy, size_t bucket_count); +- +-// Type erased version of raw_hash_set::rehash. +-void Rehash(CommonFields& common, const PolicyFunctions& policy, size_t n); +- +-// Type erased version of copy constructor. +-void Copy(CommonFields& common, const PolicyFunctions& policy, +- const CommonFields& other, +- absl::FunctionRef copy_fn); +- +-// Returns the optimal size for memcpy when transferring SOO slot. +-// Otherwise, returns the optimal size for memcpy SOO slot transfer +-// to SooSlotIndex(). +-// At the destination we are allowed to copy upto twice more bytes, +-// because there is at least one more slot after SooSlotIndex(). +-// The result must not exceed MaxSooSlotSize(). +-// Some of the cases are merged to minimize the number of function +-// instantiations. +-constexpr size_t OptimalMemcpySizeForSooSlotTransfer( +- size_t slot_size, size_t max_soo_slot_size = MaxSooSlotSize()) { +- static_assert(MaxSooSlotSize() >= 8, "unexpectedly small SOO slot size"); +- if (slot_size == 1) { +- return 1; +- } +- if (slot_size <= 3) { +- return 4; +- } +- // We are merging 4 and 8 into one case because we expect them to be the +- // hottest cases. Copying 8 bytes is as fast on common architectures. +- if (slot_size <= 8) { +- return 8; +- } +- if (max_soo_slot_size <= 16) { +- return max_soo_slot_size; +- } +- if (slot_size <= 16) { +- return 16; +- } +- if (max_soo_slot_size <= 24) { +- return max_soo_slot_size; +- } +- static_assert(MaxSooSlotSize() <= 24, "unexpectedly large SOO slot size"); +- return 24; +-} +- +-// Resizes SOO table to the NextCapacity(SooCapacity()) and prepares insert for +-// the given new_hash. Returns the offset of the new element. +-// All possible template combinations are defined in cc file to improve +-// compilation time. +-template +-size_t GrowSooTableToNextCapacityAndPrepareInsert( +- CommonFields& common, const PolicyFunctions& policy, +- absl::FunctionRef get_hash, bool force_sampling); +- +-// PrepareInsert for small tables (is_small()==true). +-// Returns the new control and the new slot. +-// Hash is only computed if the table is sampled or grew to large size +-// (is_small()==false). +-std::pair PrepareInsertSmallNonSoo( +- CommonFields& common, const PolicyFunctions& policy, +- absl::FunctionRef get_hash); +- +-// Resizes table with allocated slots and change the table seed. +-// Tables with SOO enabled must have capacity > policy.soo_capacity. +-// No sampling will be performed since table is already allocated. +-void ResizeAllocatedTableWithSeedChange(CommonFields& common, +- const PolicyFunctions& policy, +- size_t new_capacity); +- +-// ClearBackingArray clears the backing array, either modifying it in place, +-// or creating a new one based on the value of "reuse". +-// REQUIRES: c.capacity > 0 +-void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy, +- void* alloc, bool reuse, bool soo_enabled); +- +-// Type-erased versions of raw_hash_set::erase_meta_only_{small,large}. +-void EraseMetaOnlySmall(CommonFields& c, bool soo_enabled, size_t slot_size); +-void EraseMetaOnlyLarge(CommonFields& c, const ctrl_t* ctrl, size_t slot_size); +- +-// For trivially relocatable types we use memcpy directly. This allows us to +-// share the same function body for raw_hash_set instantiations that have the +-// same slot size as long as they are relocatable. +-// Separate function for relocating single slot cause significant binary bloat. +-template +-ABSL_ATTRIBUTE_NOINLINE void TransferNRelocatable(void*, void* dst, void* src, +- size_t count) { +- // TODO(b/382423690): Experiment with making specialization for power of 2 and +- // non power of 2. This would require passing the size of the slot. +- memcpy(dst, src, SizeOfSlot * count); +-} +- +-// Returns a pointer to `common`. This is used to implement type erased +-// raw_hash_set::get_hash_ref_fn and raw_hash_set::get_alloc_ref_fn for the +-// empty class cases. +-void* GetRefForEmptyClass(CommonFields& common); +- +-// Given the hash of a value not currently in the table and the first empty +-// slot in the probe sequence, finds a viable slot index to insert it at. +-// +-// In case there's no space left, the table can be resized or rehashed +-// (for tables with deleted slots, see FindInsertPositionWithGrowthOrRehash). +-// +-// In the case of absence of deleted slots and positive growth_left, the element +-// can be inserted in the provided `target` position. +-// +-// When the table has deleted slots (according to GrowthInfo), the target +-// position will be searched one more time using `find_first_non_full`. +-// +-// REQUIRES: `!common.is_small()`. +-// REQUIRES: At least one non-full slot available. +-// REQUIRES: `target` is a valid empty position to insert. +-size_t PrepareInsertLarge(CommonFields& common, const PolicyFunctions& policy, +- size_t hash, FindInfo target); +- +-// Same as above, but with generations enabled, we may end up changing the seed, +-// which means we need to be able to recompute the hash. +-size_t PrepareInsertLargeGenerationsEnabled( +- CommonFields& common, const PolicyFunctions& policy, size_t hash, +- FindInfo target, absl::FunctionRef recompute_hash); +- +-// A SwissTable. +-// +-// Policy: a policy defines how to perform different operations on +-// the slots of the hashtable (see hash_policy_traits.h for the full interface +-// of policy). +-// +-// Hash: a (possibly polymorphic) functor that hashes keys of the hashtable. The +-// functor should accept a key and return size_t as hash. For best performance +-// it is important that the hash function provides high entropy across all bits +-// of the hash. +-// +-// Eq: a (possibly polymorphic) functor that compares two keys for equality. It +-// should accept two (of possibly different type) keys and return a bool: true +-// if they are equal, false if they are not. If two keys compare equal, then +-// their hash values as defined by Hash MUST be equal. +-// +-// Allocator: an Allocator +-// [https://en.cppreference.com/w/cpp/named_req/Allocator] with which +-// the storage of the hashtable will be allocated and the elements will be +-// constructed and destroyed. +-template +-class raw_hash_set { +- using PolicyTraits = hash_policy_traits; +- using KeyArgImpl = +- KeyArg::value && IsTransparent::value>; +- +- public: +- using init_type = typename PolicyTraits::init_type; +- using key_type = typename PolicyTraits::key_type; +- using allocator_type = Alloc; +- using size_type = size_t; +- using difference_type = ptrdiff_t; +- using hasher = Hash; +- using key_equal = Eq; +- using policy_type = Policy; +- using value_type = typename PolicyTraits::value_type; +- using reference = value_type&; +- using const_reference = const value_type&; +- using pointer = typename absl::allocator_traits< +- allocator_type>::template rebind_traits::pointer; +- using const_pointer = typename absl::allocator_traits< +- allocator_type>::template rebind_traits::const_pointer; +- +- private: +- // Alias used for heterogeneous lookup functions. +- // `key_arg` evaluates to `K` when the functors are transparent and to +- // `key_type` otherwise. It permits template argument deduction on `K` for the +- // transparent case. +- template +- using key_arg = typename KeyArgImpl::template type; +- +- using slot_type = typename PolicyTraits::slot_type; +- +- constexpr static bool kIsDefaultHash = +- std::is_same_v> || +- std::is_same_v; +- +- // TODO(b/289225379): we could add extra SOO space inside raw_hash_set +- // after CommonFields to allow inlining larger slot_types (e.g. std::string), +- // but it's a bit complicated if we want to support incomplete mapped_type in +- // flat_hash_map. We could potentially do this for flat_hash_set and for an +- // allowlist of `mapped_type`s of flat_hash_map that includes e.g. arithmetic +- // types, strings, cords, and pairs/tuples of allowlisted types. +- constexpr static bool SooEnabled() { +- return PolicyTraits::soo_enabled() && +- sizeof(slot_type) <= sizeof(HeapOrSoo) && +- alignof(slot_type) <= alignof(HeapOrSoo); +- } +- +- constexpr static size_t DefaultCapacity() { +- return SooEnabled() ? SooCapacity() : 0; +- } +- +- // Whether `size` fits in the SOO capacity of this table. +- bool fits_in_soo(size_t size) const { +- return SooEnabled() && size <= SooCapacity(); +- } +- // Whether this table is in SOO mode or non-SOO mode. +- bool is_soo() const { return fits_in_soo(capacity()); } +- bool is_full_soo() const { return is_soo() && !empty(); } +- +- bool is_small() const { return common().is_small(); } +- +- // Give an early error when key_type is not hashable/eq. +- auto KeyTypeCanBeHashed(const Hash& h, const key_type& k) -> decltype(h(k)); +- auto KeyTypeCanBeEq(const Eq& eq, const key_type& k) -> decltype(eq(k, k)); +- +- // Try to be helpful when the hasher returns an unreasonable type. +- using key_hash_result = +- absl::remove_cvref_t()( +- std::declval()))>; +- static_assert(sizeof(key_hash_result) >= sizeof(size_t), +- "`Hash::operator()` should return a `size_t`"); +- +- using AllocTraits = absl::allocator_traits; +- using SlotAlloc = typename absl::allocator_traits< +- allocator_type>::template rebind_alloc; +- // People are often sloppy with the exact type of their allocator (sometimes +- // it has an extra const or is missing the pair, but rebinds made it work +- // anyway). +- using CharAlloc = +- typename absl::allocator_traits::template rebind_alloc; +- using SlotAllocTraits = typename absl::allocator_traits< +- allocator_type>::template rebind_traits; +- +- static_assert(std::is_lvalue_reference::value, +- "Policy::element() must return a reference"); +- +- // An enabler for insert(T&&): T must be convertible to init_type or be the +- // same as [cv] value_type [ref]. +- template +- using Insertable = absl::disjunction< +- std::is_same, absl::remove_cvref_t>, +- std::is_convertible>; +- template +- using IsNotBitField = std::is_pointer; +- +- // RequiresNotInit is a workaround for gcc prior to 7.1. +- // See https://godbolt.org/g/Y4xsUh. +- template +- using RequiresNotInit = +- typename std::enable_if::value, int>::type; +- +- template +- using IsDecomposable = IsDecomposable; +- +- template +- using IsDecomposableAndInsertable = +- IsDecomposable::value, T>>; +- +- // Evaluates to true if an assignment from the given type would require the +- // source object to remain alive for the life of the element. +- template +- using IsLifetimeBoundAssignmentFrom = std::conditional_t< +- policy_trait_element_is_owner::value, std::false_type, +- type_traits_internal::IsLifetimeBoundAssignment>; +- +- public: +- static_assert(std::is_same::value, +- "Allocators with custom pointer types are not supported"); +- static_assert(std::is_same::value, +- "Allocators with custom pointer types are not supported"); +- +- class iterator : private HashSetIteratorGenerationInfo { +- friend class raw_hash_set; +- friend struct HashtableFreeFunctionsAccess; +- +- public: +- using iterator_category = std::forward_iterator_tag; +- using value_type = typename raw_hash_set::value_type; +- using reference = +- absl::conditional_t; +- using pointer = absl::remove_reference_t*; +- using difference_type = typename raw_hash_set::difference_type; +- +- iterator() {} +- +- // PRECONDITION: not an end() iterator. +- reference operator*() const { +- assert_is_full("operator*()"); +- return unchecked_deref(); +- } +- +- // PRECONDITION: not an end() iterator. +- pointer operator->() const { +- assert_is_full("operator->"); +- return &operator*(); +- } +- +- // PRECONDITION: not an end() iterator. +- iterator& operator++() { +- assert_is_full("operator++"); +- ++ctrl_; +- ++slot_; +- skip_empty_or_deleted(); +- if (ABSL_PREDICT_FALSE(*ctrl_ == ctrl_t::kSentinel)) ctrl_ = nullptr; +- return *this; +- } +- // PRECONDITION: not an end() iterator. +- iterator operator++(int) { +- auto tmp = *this; +- ++*this; +- return tmp; +- } +- +- friend bool operator==(const iterator& a, const iterator& b) { +- AssertIsValidForComparison(a.ctrl_, a.generation(), a.generation_ptr()); +- AssertIsValidForComparison(b.ctrl_, b.generation(), b.generation_ptr()); +- AssertSameContainer(a.ctrl_, b.ctrl_, a.slot_, b.slot_, +- a.generation_ptr(), b.generation_ptr()); +- return a.ctrl_ == b.ctrl_; +- } +- friend bool operator!=(const iterator& a, const iterator& b) { +- return !(a == b); +- } +- +- private: +- iterator(ctrl_t* ctrl, slot_type* slot, +- const GenerationType* generation_ptr) +- : HashSetIteratorGenerationInfo(generation_ptr), +- ctrl_(ctrl), +- slot_(slot) { +- // This assumption helps the compiler know that any non-end iterator is +- // not equal to any end iterator. +- ABSL_ASSUME(ctrl != nullptr); +- } +- // This constructor is used in begin() to avoid an MSan +- // use-of-uninitialized-value error. Delegating from this constructor to +- // the previous one doesn't avoid the error. +- iterator(ctrl_t* ctrl, MaybeInitializedPtr slot, +- const GenerationType* generation_ptr) +- : HashSetIteratorGenerationInfo(generation_ptr), +- ctrl_(ctrl), +- slot_(to_slot(slot.get())) { +- // This assumption helps the compiler know that any non-end iterator is +- // not equal to any end iterator. +- ABSL_ASSUME(ctrl != nullptr); +- } +- // For end() iterators. +- explicit iterator(const GenerationType* generation_ptr) +- : HashSetIteratorGenerationInfo(generation_ptr), ctrl_(nullptr) {} +- +- void assert_is_full(const char* operation) const { +- AssertIsFull(ctrl_, generation(), generation_ptr(), operation); +- } +- +- // Fixes up `ctrl_` to point to a full or sentinel by advancing `ctrl_` and +- // `slot_` until they reach one. +- void skip_empty_or_deleted() { +- while (IsEmptyOrDeleted(*ctrl_)) { +- ++ctrl_; +- ++slot_; +- } +- } +- +- // An equality check which skips ABSL Hardening iterator invalidation +- // checks. +- // Should be used when the lifetimes of the iterators are well-enough +- // understood to prove that they cannot be invalid. +- bool unchecked_equals(const iterator& b) const { +- return ctrl_ == b.control(); +- } +- +- // Dereferences the iterator without ABSL Hardening iterator invalidation +- // checks. +- reference unchecked_deref() const { return PolicyTraits::element(slot_); } +- +- ctrl_t* control() const { return ctrl_; } +- slot_type* slot() const { return slot_; } +- +- // We use DefaultIterControl() for default-constructed iterators so that +- // they can be distinguished from end iterators, which have nullptr ctrl_. +- ctrl_t* ctrl_ = DefaultIterControl(); +- // To avoid uninitialized member warnings, put slot_ in an anonymous union. +- // The member is not initialized on singleton and end iterators. +- union { +- slot_type* slot_; +- }; +- }; +- +- class const_iterator { +- friend class raw_hash_set; +- template +- friend struct absl::container_internal::hashtable_debug_internal:: +- HashtableDebugAccess; +- +- public: +- using iterator_category = typename iterator::iterator_category; +- using value_type = typename raw_hash_set::value_type; +- using reference = typename raw_hash_set::const_reference; +- using pointer = typename raw_hash_set::const_pointer; +- using difference_type = typename raw_hash_set::difference_type; +- +- const_iterator() = default; +- // Implicit construction from iterator. +- const_iterator(iterator i) : inner_(std::move(i)) {} // NOLINT +- +- reference operator*() const { return *inner_; } +- pointer operator->() const { return inner_.operator->(); } +- +- const_iterator& operator++() { +- ++inner_; +- return *this; +- } +- const_iterator operator++(int) { return inner_++; } +- +- friend bool operator==(const const_iterator& a, const const_iterator& b) { +- return a.inner_ == b.inner_; +- } +- friend bool operator!=(const const_iterator& a, const const_iterator& b) { +- return !(a == b); +- } +- +- private: +- const_iterator(const ctrl_t* ctrl, const slot_type* slot, +- const GenerationType* gen) +- : inner_(const_cast(ctrl), const_cast(slot), gen) { +- } +- bool unchecked_equals(const const_iterator& b) const { +- return inner_.unchecked_equals(b.inner_); +- } +- ctrl_t* control() const { return inner_.control(); } +- slot_type* slot() const { return inner_.slot(); } +- +- iterator inner_; +- }; +- +- using node_type = node_handle, Alloc>; +- using insert_return_type = InsertReturnType; +- +- // Note: can't use `= default` due to non-default noexcept (causes +- // problems for some compilers). NOLINTNEXTLINE +- raw_hash_set() noexcept( +- std::is_nothrow_default_constructible::value && +- std::is_nothrow_default_constructible::value && +- std::is_nothrow_default_constructible::value) {} +- +- explicit raw_hash_set( +- size_t bucket_count, const hasher& hash = hasher(), +- const key_equal& eq = key_equal(), +- const allocator_type& alloc = allocator_type()) +- : settings_(CommonFields::CreateDefault(), hash, eq, +- alloc) { +- if (bucket_count > DefaultCapacity()) { +- ReserveEmptyNonAllocatedTableToFitBucketCount( +- common(), GetPolicyFunctions(), bucket_count); +- } +- } +- +- raw_hash_set(size_t bucket_count, const hasher& hash, +- const allocator_type& alloc) +- : raw_hash_set(bucket_count, hash, key_equal(), alloc) {} +- +- raw_hash_set(size_t bucket_count, const allocator_type& alloc) +- : raw_hash_set(bucket_count, hasher(), key_equal(), alloc) {} +- +- explicit raw_hash_set(const allocator_type& alloc) +- : raw_hash_set(0, hasher(), key_equal(), alloc) {} +- +- template +- raw_hash_set(InputIter first, InputIter last, size_t bucket_count = 0, +- const hasher& hash = hasher(), const key_equal& eq = key_equal(), +- const allocator_type& alloc = allocator_type()) +- : raw_hash_set(SelectBucketCountForIterRange(first, last, bucket_count), +- hash, eq, alloc) { +- insert(first, last); +- } +- +- template +- raw_hash_set(InputIter first, InputIter last, size_t bucket_count, +- const hasher& hash, const allocator_type& alloc) +- : raw_hash_set(first, last, bucket_count, hash, key_equal(), alloc) {} +- +- template +- raw_hash_set(InputIter first, InputIter last, size_t bucket_count, +- const allocator_type& alloc) +- : raw_hash_set(first, last, bucket_count, hasher(), key_equal(), alloc) {} +- +- template +- raw_hash_set(InputIter first, InputIter last, const allocator_type& alloc) +- : raw_hash_set(first, last, 0, hasher(), key_equal(), alloc) {} +- +- // Instead of accepting std::initializer_list as the first +- // argument like std::unordered_set does, we have two overloads +- // that accept std::initializer_list and std::initializer_list. +- // This is advantageous for performance. +- // +- // // Turns {"abc", "def"} into std::initializer_list, then +- // // copies the strings into the set. +- // std::unordered_set s = {"abc", "def"}; +- // +- // // Turns {"abc", "def"} into std::initializer_list, then +- // // copies the strings into the set. +- // absl::flat_hash_set s = {"abc", "def"}; +- // +- // The same trick is used in insert(). +- // +- // The enabler is necessary to prevent this constructor from triggering where +- // the copy constructor is meant to be called. +- // +- // absl::flat_hash_set a, b{a}; +- // +- // RequiresNotInit is a workaround for gcc prior to 7.1. +- template = 0, +- std::enable_if_t::value, int> = 0> +- raw_hash_set(std::initializer_list init, size_t bucket_count = 0, +- const hasher& hash = hasher(), const key_equal& eq = key_equal(), +- const allocator_type& alloc = allocator_type()) +- : raw_hash_set(init.begin(), init.end(), bucket_count, hash, eq, alloc) {} +- +- raw_hash_set(std::initializer_list init, size_t bucket_count = 0, +- const hasher& hash = hasher(), const key_equal& eq = key_equal(), +- const allocator_type& alloc = allocator_type()) +- : raw_hash_set(init.begin(), init.end(), bucket_count, hash, eq, alloc) {} +- +- template = 0, +- std::enable_if_t::value, int> = 0> +- raw_hash_set(std::initializer_list init, size_t bucket_count, +- const hasher& hash, const allocator_type& alloc) +- : raw_hash_set(init, bucket_count, hash, key_equal(), alloc) {} +- +- raw_hash_set(std::initializer_list init, size_t bucket_count, +- const hasher& hash, const allocator_type& alloc) +- : raw_hash_set(init, bucket_count, hash, key_equal(), alloc) {} +- +- template = 0, +- std::enable_if_t::value, int> = 0> +- raw_hash_set(std::initializer_list init, size_t bucket_count, +- const allocator_type& alloc) +- : raw_hash_set(init, bucket_count, hasher(), key_equal(), alloc) {} +- +- raw_hash_set(std::initializer_list init, size_t bucket_count, +- const allocator_type& alloc) +- : raw_hash_set(init, bucket_count, hasher(), key_equal(), alloc) {} +- +- template = 0, +- std::enable_if_t::value, int> = 0> +- raw_hash_set(std::initializer_list init, const allocator_type& alloc) +- : raw_hash_set(init, 0, hasher(), key_equal(), alloc) {} +- +- raw_hash_set(std::initializer_list init, +- const allocator_type& alloc) +- : raw_hash_set(init, 0, hasher(), key_equal(), alloc) {} +- +- raw_hash_set(const raw_hash_set& that) +- : raw_hash_set(that, AllocTraits::select_on_container_copy_construction( +- allocator_type(that.char_alloc_ref()))) {} +- +- raw_hash_set(const raw_hash_set& that, const allocator_type& a) +- : raw_hash_set(0, that.hash_ref(), that.eq_ref(), a) { +- that.AssertNotDebugCapacity(); +- if (that.empty()) return; +- Copy(common(), GetPolicyFunctions(), that.common(), +- [this](void* dst, const void* src) { +- // TODO(b/413598253): type erase for trivially copyable types via +- // PolicyTraits. +- construct(to_slot(dst), +- PolicyTraits::element( +- static_cast(const_cast(src)))); +- }); +- } +- +- ABSL_ATTRIBUTE_NOINLINE raw_hash_set(raw_hash_set&& that) noexcept( +- std::is_nothrow_copy_constructible::value && +- std::is_nothrow_copy_constructible::value && +- std::is_nothrow_copy_constructible::value) +- : // Hash, equality and allocator are copied instead of moved because +- // `that` must be left valid. If Hash is std::function, moving it +- // would create a nullptr functor that cannot be called. +- // Note: we avoid using exchange for better generated code. +- settings_(PolicyTraits::transfer_uses_memcpy() || !that.is_full_soo() +- ? std::move(that.common()) +- : CommonFields{full_soo_tag_t{}}, +- that.hash_ref(), that.eq_ref(), that.char_alloc_ref()) { +- if (!PolicyTraits::transfer_uses_memcpy() && that.is_full_soo()) { +- transfer(soo_slot(), that.soo_slot()); +- } +- that.common() = CommonFields::CreateDefault(); +- annotate_for_bug_detection_on_move(that); +- } +- +- raw_hash_set(raw_hash_set&& that, const allocator_type& a) +- : settings_(CommonFields::CreateDefault(), that.hash_ref(), +- that.eq_ref(), a) { +- if (CharAlloc(a) == that.char_alloc_ref()) { +- swap_common(that); +- annotate_for_bug_detection_on_move(that); +- } else { +- move_elements_allocs_unequal(std::move(that)); +- } +- } +- +- raw_hash_set& operator=(const raw_hash_set& that) { +- that.AssertNotDebugCapacity(); +- if (ABSL_PREDICT_FALSE(this == &that)) return *this; +- constexpr bool propagate_alloc = +- AllocTraits::propagate_on_container_copy_assignment::value; +- // TODO(ezb): maybe avoid allocating a new backing array if this->capacity() +- // is an exact match for that.size(). If this->capacity() is too big, then +- // it would make iteration very slow to reuse the allocation. Maybe we can +- // do the same heuristic as clear() and reuse if it's small enough. +- allocator_type alloc(propagate_alloc ? that.char_alloc_ref() +- : char_alloc_ref()); +- raw_hash_set tmp(that, alloc); +- // NOLINTNEXTLINE: not returning *this for performance. +- return assign_impl(std::move(tmp)); +- } +- +- raw_hash_set& operator=(raw_hash_set&& that) noexcept( +- AllocTraits::is_always_equal::value && +- std::is_nothrow_move_assignable::value && +- std::is_nothrow_move_assignable::value) { +- // TODO(sbenza): We should only use the operations from the noexcept clause +- // to make sure we actually adhere to that contract. +- // NOLINTNEXTLINE: not returning *this for performance. +- return move_assign( +- std::move(that), +- typename AllocTraits::propagate_on_container_move_assignment()); +- } +- +- ~raw_hash_set() { +- destructor_impl(); +- if constexpr (SwisstableAssertAccessToDestroyedTable()) { +- common().set_capacity(InvalidCapacity::kDestroyed); +- } +- } +- +- iterator begin() ABSL_ATTRIBUTE_LIFETIME_BOUND { +- if (ABSL_PREDICT_FALSE(empty())) return end(); +- if (is_small()) return single_iterator(); +- iterator it = {control(), common().slots_union(), +- common().generation_ptr()}; +- it.skip_empty_or_deleted(); +- ABSL_SWISSTABLE_ASSERT(IsFull(*it.control())); +- return it; +- } +- iterator end() ABSL_ATTRIBUTE_LIFETIME_BOUND { +- AssertNotDebugCapacity(); +- return iterator(common().generation_ptr()); +- } +- +- const_iterator begin() const ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return const_cast(this)->begin(); +- } +- const_iterator end() const ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return const_cast(this)->end(); +- } +- const_iterator cbegin() const ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return begin(); +- } +- const_iterator cend() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return end(); } +- +- bool empty() const { return !size(); } +- size_t size() const { +- AssertNotDebugCapacity(); +- return common().size(); +- } +- size_t capacity() const { +- const size_t cap = common().capacity(); +- // Compiler complains when using functions in ASSUME so use local variable. +- [[maybe_unused]] static constexpr size_t kDefaultCapacity = +- DefaultCapacity(); +- ABSL_ASSUME(cap >= kDefaultCapacity); +- return cap; +- } +- size_t max_size() const { return MaxValidSize(sizeof(slot_type)); } +- +- ABSL_ATTRIBUTE_REINITIALIZES void clear() { +- if (SwisstableGenerationsEnabled() && +- capacity() >= InvalidCapacity::kMovedFrom) { +- common().set_capacity(DefaultCapacity()); +- } +- AssertNotDebugCapacity(); +- // Iterating over this container is O(bucket_count()). When bucket_count() +- // is much greater than size(), iteration becomes prohibitively expensive. +- // For clear() it is more important to reuse the allocated array when the +- // container is small because allocation takes comparatively long time +- // compared to destruction of the elements of the container. So we pick the +- // largest bucket_count() threshold for which iteration is still fast and +- // past that we simply deallocate the array. +- const size_t cap = capacity(); +- if (cap == 0) { +- // Already guaranteed to be empty; so nothing to do. +- } else if (is_small()) { +- if (!empty()) { +- destroy(single_slot()); +- decrement_small_size(); +- } +- } else { +- destroy_slots(); +- clear_backing_array(/*reuse=*/cap < 128); +- } +- common().set_reserved_growth(0); +- common().set_reservation_size(0); +- } +- +- // This overload kicks in when the argument is an rvalue of insertable and +- // decomposable type other than init_type. +- // +- // flat_hash_map m; +- // m.insert(std::make_pair("abc", 42)); +- template ::value && +- IsNotBitField::value && +- !IsLifetimeBoundAssignmentFrom::value, +- int>()> +- std::pair insert(T&& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return emplace(std::forward(value)); +- } +- +- template ::value && +- IsNotBitField::value && +- IsLifetimeBoundAssignmentFrom::value, +- int> = 0> +- std::pair insert( +- T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return this->template insert(std::forward(value)); +- } +- +- // This overload kicks in when the argument is a bitfield or an lvalue of +- // insertable and decomposable type. +- // +- // union { int n : 1; }; +- // flat_hash_set s; +- // s.insert(n); +- // +- // flat_hash_set s; +- // const char* p = "hello"; +- // s.insert(p); +- // +- template ::value && +- !IsLifetimeBoundAssignmentFrom::value, +- int>()> +- std::pair insert(const T& value) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return emplace(value); +- } +- template ::value && +- IsLifetimeBoundAssignmentFrom::value, +- int> = 0> +- std::pair insert( +- const T& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return this->template insert(value); +- } +- +- // This overload kicks in when the argument is an rvalue of init_type. Its +- // purpose is to handle brace-init-list arguments. +- // +- // flat_hash_map s; +- // s.insert({"abc", 42}); +- std::pair insert(init_type&& value) +- ABSL_ATTRIBUTE_LIFETIME_BOUND +-#if __cplusplus >= 202002L +- requires(!IsLifetimeBoundAssignmentFrom::value) +-#endif +- { +- return emplace(std::move(value)); +- } +-#if __cplusplus >= 202002L +- std::pair insert( +- init_type&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) +- ABSL_ATTRIBUTE_LIFETIME_BOUND +- requires(IsLifetimeBoundAssignmentFrom::value) +- { +- return emplace(std::move(value)); +- } +-#endif +- +- template ::value && +- IsNotBitField::value && +- !IsLifetimeBoundAssignmentFrom::value, +- int>()> +- iterator insert(const_iterator, T&& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return insert(std::forward(value)).first; +- } +- template ::value && +- IsNotBitField::value && +- IsLifetimeBoundAssignmentFrom::value, +- int> = 0> +- iterator insert(const_iterator hint, +- T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return this->template insert(hint, std::forward(value)); +- } +- +- template ::value, int> = 0> +- iterator insert(const_iterator, +- const T& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return insert(value).first; +- } +- +- iterator insert(const_iterator, +- init_type&& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return insert(std::move(value)).first; +- } +- +- template +- void insert(InputIt first, InputIt last) { +- for (; first != last; ++first) emplace(*first); +- } +- +- template = 0, +- std::enable_if_t::value, int> = 0> +- void insert(std::initializer_list ilist) { +- insert(ilist.begin(), ilist.end()); +- } +- +- void insert(std::initializer_list ilist) { +- insert(ilist.begin(), ilist.end()); +- } +- +- insert_return_type insert(node_type&& node) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- if (!node) return {end(), false, node_type()}; +- const auto& elem = PolicyTraits::element(CommonAccess::GetSlot(node)); +- auto res = PolicyTraits::apply( +- InsertSlot{*this, std::move(*CommonAccess::GetSlot(node))}, +- elem); +- if (res.second) { +- CommonAccess::Reset(&node); +- return {res.first, true, node_type()}; +- } else { +- return {res.first, false, std::move(node)}; +- } +- } +- +- iterator insert(const_iterator, +- node_type&& node) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- auto res = insert(std::move(node)); +- node = std::move(res.node); +- return res.position; +- } +- +- // This overload kicks in if we can deduce the key from args. This enables us +- // to avoid constructing value_type if an entry with the same key already +- // exists. +- // +- // For example: +- // +- // flat_hash_map m = {{"abc", "def"}}; +- // // Creates no std::string copies and makes no heap allocations. +- // m.emplace("abc", "xyz"); +- template ::value, int> = 0> +- std::pair emplace(Args&&... args) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return PolicyTraits::apply(EmplaceDecomposable{*this}, +- std::forward(args)...); +- } +- +- // This overload kicks in if we cannot deduce the key from args. It constructs +- // value_type unconditionally and then either moves it into the table or +- // destroys. +- template ::value, int> = 0> +- std::pair emplace(Args&&... args) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- alignas(slot_type) unsigned char raw[sizeof(slot_type)]; +- slot_type* slot = to_slot(&raw); +- +- construct(slot, std::forward(args)...); +- const auto& elem = PolicyTraits::element(slot); +- return PolicyTraits::apply(InsertSlot{*this, std::move(*slot)}, elem); +- } +- +- template +- iterator emplace_hint(const_iterator, +- Args&&... args) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return emplace(std::forward(args)...).first; +- } +- +- // Extension API: support for lazy emplace. +- // +- // Looks up key in the table. If found, returns the iterator to the element. +- // Otherwise calls `f` with one argument of type `raw_hash_set::constructor`, +- // and returns an iterator to the new element. +- // +- // `f` must abide by several restrictions: +- // - it MUST call `raw_hash_set::constructor` with arguments as if a +- // `raw_hash_set::value_type` is constructed, +- // - it MUST NOT access the container before the call to +- // `raw_hash_set::constructor`, and +- // - it MUST NOT erase the lazily emplaced element. +- // Doing any of these is undefined behavior. +- // +- // For example: +- // +- // std::unordered_set s; +- // // Makes ArenaStr even if "abc" is in the map. +- // s.insert(ArenaString(&arena, "abc")); +- // +- // flat_hash_set s; +- // // Makes ArenaStr only if "abc" is not in the map. +- // s.lazy_emplace("abc", [&](const constructor& ctor) { +- // ctor(&arena, "abc"); +- // }); +- // +- // WARNING: This API is currently experimental. If there is a way to implement +- // the same thing with the rest of the API, prefer that. +- class constructor { +- friend class raw_hash_set; +- +- public: +- template +- void operator()(Args&&... args) const { +- ABSL_SWISSTABLE_ASSERT(*slot_); +- PolicyTraits::construct(alloc_, *slot_, std::forward(args)...); +- *slot_ = nullptr; +- } +- +- private: +- constructor(allocator_type* a, slot_type** slot) : alloc_(a), slot_(slot) {} +- +- allocator_type* alloc_; +- slot_type** slot_; +- }; +- +- template +- iterator lazy_emplace(const key_arg& key, +- F&& f) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- auto res = find_or_prepare_insert(key); +- if (res.second) { +- slot_type* slot = res.first.slot(); +- allocator_type alloc(char_alloc_ref()); +- std::forward(f)(constructor(&alloc, &slot)); +- ABSL_SWISSTABLE_ASSERT(!slot); +- } +- return res.first; +- } +- +- // Extension API: support for heterogeneous keys. +- // +- // std::unordered_set s; +- // // Turns "abc" into std::string. +- // s.erase("abc"); +- // +- // flat_hash_set s; +- // // Uses "abc" directly without copying it into std::string. +- // s.erase("abc"); +- template +- size_type erase(const key_arg& key) { +- auto it = find(key); +- if (it == end()) return 0; +- erase(it); +- return 1; +- } +- +- // Erases the element pointed to by `it`. Unlike `std::unordered_set::erase`, +- // this method returns void to reduce algorithmic complexity to O(1). The +- // iterator is invalidated so any increment should be done before calling +- // erase (e.g. `erase(it++)`). +- void erase(const_iterator cit) { erase(cit.inner_); } +- +- // This overload is necessary because otherwise erase(const K&) would be +- // a better match if non-const iterator is passed as an argument. +- void erase(iterator it) { +- ABSL_SWISSTABLE_ASSERT(capacity() > 0); +- AssertNotDebugCapacity(); +- it.assert_is_full("erase()"); +- destroy(it.slot()); +- erase_meta_only(it); +- } +- +- iterator erase(const_iterator first, +- const_iterator last) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- AssertNotDebugCapacity(); +- // We check for empty first because clear_backing_array requires that +- // capacity() > 0 as a precondition. +- if (empty()) return end(); +- if (first == last) return last.inner_; +- if (is_small()) { +- destroy(single_slot()); +- erase_meta_only_small(); +- return end(); +- } +- if (first == begin() && last == end()) { +- // TODO(ezb): we access control bytes in destroy_slots so it could make +- // sense to combine destroy_slots and clear_backing_array to avoid cache +- // misses when the table is large. Note that we also do this in clear(). +- destroy_slots(); +- clear_backing_array(/*reuse=*/true); +- common().set_reserved_growth(common().reservation_size()); +- return end(); +- } +- while (first != last) { +- erase(first++); +- } +- return last.inner_; +- } +- +- // Moves elements from `src` into `this`. +- // If the element already exists in `this`, it is left unmodified in `src`. +- template +- void merge(raw_hash_set& src) { // NOLINT +- AssertNotDebugCapacity(); +- src.AssertNotDebugCapacity(); +- assert(this != &src); +- // Returns whether insertion took place. +- const auto insert_slot = [this](slot_type* src_slot) { +- return PolicyTraits::apply(InsertSlot{*this, std::move(*src_slot)}, +- PolicyTraits::element(src_slot)) +- .second; +- }; +- +- if (src.is_small()) { +- if (src.empty()) return; +- if (insert_slot(src.single_slot())) +- src.erase_meta_only_small(); +- return; +- } +- for (auto it = src.begin(), e = src.end(); it != e;) { +- auto next = std::next(it); +- if (insert_slot(it.slot())) src.erase_meta_only_large(it); +- it = next; +- } +- } +- +- template +- void merge(raw_hash_set&& src) { +- merge(src); +- } +- +- node_type extract(const_iterator position) { +- AssertNotDebugCapacity(); +- position.inner_.assert_is_full("extract()"); +- allocator_type alloc(char_alloc_ref()); +- auto node = CommonAccess::Transfer(alloc, position.slot()); +- erase_meta_only(position); +- return node; +- } +- +- template ::value, int> = 0> +- node_type extract(const key_arg& key) { +- auto it = find(key); +- return it == end() ? node_type() : extract(const_iterator{it}); +- } +- +- void swap(raw_hash_set& that) noexcept( +- AllocTraits::is_always_equal::value && +- std::is_nothrow_swappable::value && +- std::is_nothrow_swappable::value) { +- AssertNotDebugCapacity(); +- that.AssertNotDebugCapacity(); +- using std::swap; +- swap_common(that); +- swap(hash_ref(), that.hash_ref()); +- swap(eq_ref(), that.eq_ref()); +- SwapAlloc(char_alloc_ref(), that.char_alloc_ref(), +- typename AllocTraits::propagate_on_container_swap{}); +- } +- +- void rehash(size_t n) { Rehash(common(), GetPolicyFunctions(), n); } +- +- void reserve(size_t n) { +- if (ABSL_PREDICT_TRUE(n > DefaultCapacity())) { +- ReserveTableToFitNewSize(common(), GetPolicyFunctions(), n); +- } +- } +- +- // Extension API: support for heterogeneous keys. +- // +- // std::unordered_set s; +- // // Turns "abc" into std::string. +- // s.count("abc"); +- // +- // ch_set s; +- // // Uses "abc" directly without copying it into std::string. +- // s.count("abc"); +- template +- size_t count(const key_arg& key) const { +- return find(key) == end() ? 0 : 1; +- } +- +- // Issues CPU prefetch instructions for the memory needed to find or insert +- // a key. Like all lookup functions, this support heterogeneous keys. +- // +- // NOTE: This is a very low level operation and should not be used without +- // specific benchmarks indicating its importance. +- template +- void prefetch([[maybe_unused]] const key_arg& key) const { +- if (capacity() == DefaultCapacity()) return; +- // Avoid probing if we won't be able to prefetch the addresses received. +-#ifdef ABSL_HAVE_PREFETCH +- prefetch_heap_block(); +- if (is_small()) return; +- auto seq = probe(common(), hash_of(key)); +- PrefetchToLocalCache(control() + seq.offset()); +- PrefetchToLocalCache(slot_array() + seq.offset()); +-#endif // ABSL_HAVE_PREFETCH +- } +- +- template +- ABSL_DEPRECATE_AND_INLINE() +- iterator find(const key_arg& key, +- size_t) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return find(key); +- } +- // The API of find() has one extension: the type of the key argument doesn't +- // have to be key_type. This is so called heterogeneous key support. +- template +- iterator find(const key_arg& key) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- AssertOnFind(key); +- if (is_small()) return find_small(key); +- prefetch_heap_block(); +- return find_large(key, hash_of(key)); +- } +- +- template +- ABSL_DEPRECATE_AND_INLINE() +- const_iterator find(const key_arg& key, +- size_t) const ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return find(key); +- } +- template +- const_iterator find(const key_arg& key) const +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return const_cast(this)->find(key); +- } +- +- template +- bool contains(const key_arg& key) const { +- // Here neither the iterator returned by `find()` nor `end()` can be invalid +- // outside of potential thread-safety issues. +- // `find()`'s return value is constructed, used, and then destructed +- // all in this context. +- return !find(key).unchecked_equals(end()); +- } +- +- template +- std::pair equal_range(const key_arg& key) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- auto it = find(key); +- if (it != end()) return {it, std::next(it)}; +- return {it, it}; +- } +- template +- std::pair equal_range( +- const key_arg& key) const ABSL_ATTRIBUTE_LIFETIME_BOUND { +- auto it = find(key); +- if (it != end()) return {it, std::next(it)}; +- return {it, it}; +- } +- +- size_t bucket_count() const { return capacity(); } +- float load_factor() const { +- return capacity() ? static_cast(size()) / capacity() : 0.0; +- } +- float max_load_factor() const { return 1.0f; } +- void max_load_factor(float) { +- // Does nothing. +- } +- +- hasher hash_function() const { return hash_ref(); } +- key_equal key_eq() const { return eq_ref(); } +- allocator_type get_allocator() const { +- return allocator_type(char_alloc_ref()); +- } +- +- friend bool operator==(const raw_hash_set& a, const raw_hash_set& b) { +- if (a.size() != b.size()) return false; +- const raw_hash_set* outer = &a; +- const raw_hash_set* inner = &b; +- if (outer->capacity() > inner->capacity()) std::swap(outer, inner); +- for (const value_type& elem : *outer) { +- auto it = PolicyTraits::apply(FindElement{*inner}, elem); +- if (it == inner->end()) return false; +- // Note: we used key_equal to check for key equality in FindElement, but +- // we may need to do an additional comparison using +- // value_type::operator==. E.g. the keys could be equal and the +- // mapped_types could be unequal in a map or even in a set, key_equal +- // could ignore some fields that aren't ignored by operator==. +- static constexpr bool kKeyEqIsValueEq = +- std::is_same::value && +- std::is_same>::value; +- if (!kKeyEqIsValueEq && !(*it == elem)) return false; +- } +- return true; +- } +- +- friend bool operator!=(const raw_hash_set& a, const raw_hash_set& b) { +- return !(a == b); +- } +- +- template +- friend typename std::enable_if::value, +- H>::type +- AbslHashValue(H h, const raw_hash_set& s) { +- return H::combine(H::combine_unordered(std::move(h), s.begin(), s.end()), +- hash_internal::WeaklyMixedInteger{s.size()}); +- } +- +- friend void swap(raw_hash_set& a, +- raw_hash_set& b) noexcept(noexcept(a.swap(b))) { +- a.swap(b); +- } +- +- private: +- template +- friend struct absl::container_internal::hashtable_debug_internal:: +- HashtableDebugAccess; +- +- friend struct absl::container_internal::HashtableFreeFunctionsAccess; +- +- struct FindElement { +- template +- const_iterator operator()(const K& key, Args&&...) const { +- return s.find(key); +- } +- const raw_hash_set& s; +- }; +- +- struct EmplaceDecomposable { +- template +- std::pair operator()(const K& key, Args&&... args) const { +- auto res = s.find_or_prepare_insert(key); +- if (res.second) { +- s.emplace_at(res.first, std::forward(args)...); +- } +- return res; +- } +- raw_hash_set& s; +- }; +- +- template +- struct InsertSlot { +- template +- std::pair operator()(const K& key, Args&&...) && { +- auto res = s.find_or_prepare_insert(key); +- if (res.second) { +- s.transfer(res.first.slot(), &slot); +- } else if (do_destroy) { +- s.destroy(&slot); +- } +- return res; +- } +- raw_hash_set& s; +- // Constructed slot. Either moved into place or destroyed. +- slot_type&& slot; +- }; +- +- template +- inline void construct(slot_type* slot, Args&&... args) { +- common().RunWithReentrancyGuard([&] { +- allocator_type alloc(char_alloc_ref()); +- PolicyTraits::construct(&alloc, slot, std::forward(args)...); +- }); +- } +- inline void destroy(slot_type* slot) { +- common().RunWithReentrancyGuard([&] { +- allocator_type alloc(char_alloc_ref()); +- PolicyTraits::destroy(&alloc, slot); +- }); +- } +- inline void transfer(slot_type* to, slot_type* from) { +- common().RunWithReentrancyGuard([&] { +- allocator_type alloc(char_alloc_ref()); +- PolicyTraits::transfer(&alloc, to, from); +- }); +- } +- +- // TODO(b/289225379): consider having a helper class that has the impls for +- // SOO functionality. +- template +- iterator find_small(const key_arg& key) { +- ABSL_SWISSTABLE_ASSERT(is_small()); +- return empty() || !equal_to(key, single_slot()) ? end() : single_iterator(); +- } +- +- template +- iterator find_large(const key_arg& key, size_t hash) { +- ABSL_SWISSTABLE_ASSERT(!is_small()); +- auto seq = probe(common(), hash); +- const h2_t h2 = H2(hash); +- const ctrl_t* ctrl = control(); +- while (true) { +-#ifndef ABSL_HAVE_MEMORY_SANITIZER +- absl::PrefetchToLocalCache(slot_array() + seq.offset()); +-#endif +- Group g{ctrl + seq.offset()}; +- for (uint32_t i : g.Match(h2)) { +- if (ABSL_PREDICT_TRUE(equal_to(key, slot_array() + seq.offset(i)))) +- return iterator_at(seq.offset(i)); +- } +- if (ABSL_PREDICT_TRUE(g.MaskEmpty())) return end(); +- seq.next(); +- ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity() && "full table!"); +- } +- } +- +- // Returns true if the table needs to be sampled. +- // This should be called on insertion into an empty SOO table and in copy +- // construction when the size can fit in SOO capacity. +- bool should_sample_soo() const { +- ABSL_SWISSTABLE_ASSERT(is_soo()); +- if (!ShouldSampleHashtablezInfoForAlloc()) return false; +- return ABSL_PREDICT_FALSE(ShouldSampleNextTable()); +- } +- +- void clear_backing_array(bool reuse) { +- ABSL_SWISSTABLE_ASSERT(capacity() > DefaultCapacity()); +- ClearBackingArray(common(), GetPolicyFunctions(), &char_alloc_ref(), reuse, +- SooEnabled()); +- } +- +- void destroy_slots() { +- ABSL_SWISSTABLE_ASSERT(!is_small()); +- if (PolicyTraits::template destroy_is_trivial()) return; +- auto destroy_slot = [&](const ctrl_t*, void* slot) { +- this->destroy(static_cast(slot)); +- }; +- if constexpr (SwisstableAssertAccessToDestroyedTable()) { +- CommonFields common_copy(non_soo_tag_t{}, this->common()); +- common().set_capacity(InvalidCapacity::kDestroyed); +- IterateOverFullSlots(common_copy, sizeof(slot_type), destroy_slot); +- common().set_capacity(common_copy.capacity()); +- } else { +- IterateOverFullSlots(common(), sizeof(slot_type), destroy_slot); +- } +- } +- +- void dealloc() { +- ABSL_SWISSTABLE_ASSERT(capacity() > DefaultCapacity()); +- // Unpoison before returning the memory to the allocator. +- SanitizerUnpoisonMemoryRegion(slot_array(), sizeof(slot_type) * capacity()); +- infoz().Unregister(); +- DeallocateBackingArray(&char_alloc_ref(), capacity(), control(), +- sizeof(slot_type), alignof(slot_type), +- common().has_infoz()); +- } +- +- void destructor_impl() { +- if (SwisstableGenerationsEnabled() && +- capacity() >= InvalidCapacity::kMovedFrom) { +- return; +- } +- if (capacity() == 0) return; +- if (is_small()) { +- if (!empty()) { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED(destroy(single_slot())); +- } +- if constexpr (SooEnabled()) return; +- } else { +- destroy_slots(); +- } +- dealloc(); +- } +- +- // Erases, but does not destroy, the value pointed to by `it`. +- // +- // This merely updates the pertinent control byte. This can be used in +- // conjunction with Policy::transfer to move the object to another place. +- void erase_meta_only(const_iterator it) { +- if (is_small()) { +- erase_meta_only_small(); +- return; +- } +- erase_meta_only_large(it); +- } +- void erase_meta_only_small() { +- EraseMetaOnlySmall(common(), SooEnabled(), sizeof(slot_type)); +- } +- void erase_meta_only_large(const_iterator it) { +- EraseMetaOnlyLarge(common(), it.control(), sizeof(slot_type)); +- } +- +- template +- ABSL_ATTRIBUTE_ALWAYS_INLINE bool equal_to(const K& key, +- slot_type* slot) const { +- return PolicyTraits::apply(EqualElement{key, eq_ref()}, +- PolicyTraits::element(slot)); +- } +- template +- ABSL_ATTRIBUTE_ALWAYS_INLINE size_t hash_of(const K& key) const { +- return HashElement{hash_ref(), +- common().seed().seed()}(key); +- } +- ABSL_ATTRIBUTE_ALWAYS_INLINE size_t hash_of(slot_type* slot) const { +- return PolicyTraits::apply( +- HashElement{hash_ref(), common().seed().seed()}, +- PolicyTraits::element(slot)); +- } +- +- // Casting directly from e.g. char* to slot_type* can cause compilation errors +- // on objective-C. This function converts to void* first, avoiding the issue. +- static ABSL_ATTRIBUTE_ALWAYS_INLINE slot_type* to_slot(void* buf) { +- return static_cast(buf); +- } +- +- // Requires that lhs does not have a full SOO slot. +- static void move_common(bool rhs_is_full_soo, CharAlloc& rhs_alloc, +- CommonFields& lhs, CommonFields&& rhs) { +- if (PolicyTraits::transfer_uses_memcpy() || !rhs_is_full_soo) { +- lhs = std::move(rhs); +- } else { +- lhs.move_non_heap_or_soo_fields(rhs); +- rhs.RunWithReentrancyGuard([&] { +- lhs.RunWithReentrancyGuard([&] { +- PolicyTraits::transfer(&rhs_alloc, to_slot(lhs.soo_data()), +- to_slot(rhs.soo_data())); +- }); +- }); +- } +- } +- +- // Swaps common fields making sure to avoid memcpy'ing a full SOO slot if we +- // aren't allowed to do so. +- void swap_common(raw_hash_set& that) { +- using std::swap; +- if (PolicyTraits::transfer_uses_memcpy()) { +- swap(common(), that.common()); +- return; +- } +- CommonFields tmp = CommonFields(uninitialized_tag_t{}); +- const bool that_is_full_soo = that.is_full_soo(); +- move_common(that_is_full_soo, that.char_alloc_ref(), tmp, +- std::move(that.common())); +- move_common(is_full_soo(), char_alloc_ref(), that.common(), +- std::move(common())); +- move_common(that_is_full_soo, that.char_alloc_ref(), common(), +- std::move(tmp)); +- } +- +- void annotate_for_bug_detection_on_move([[maybe_unused]] raw_hash_set& that) { +- // We only enable moved-from validation when generations are enabled (rather +- // than using NDEBUG) to avoid issues in which NDEBUG is enabled in some +- // translation units but not in others. +- if (SwisstableGenerationsEnabled()) { +- that.common().set_capacity(this == &that ? InvalidCapacity::kSelfMovedFrom +- : InvalidCapacity::kMovedFrom); +- } +- if (!SwisstableGenerationsEnabled() || capacity() == DefaultCapacity() || +- capacity() > kAboveMaxValidCapacity) { +- return; +- } +- common().increment_generation(); +- if (!empty() && common().should_rehash_for_bug_detection_on_move()) { +- ResizeAllocatedTableWithSeedChange(common(), GetPolicyFunctions(), +- capacity()); +- } +- } +- +- template +- raw_hash_set& assign_impl(raw_hash_set&& that) { +- // We don't bother checking for this/that aliasing. We just need to avoid +- // breaking the invariants in that case. +- destructor_impl(); +- move_common(that.is_full_soo(), that.char_alloc_ref(), common(), +- std::move(that.common())); +- hash_ref() = that.hash_ref(); +- eq_ref() = that.eq_ref(); +- CopyAlloc(char_alloc_ref(), that.char_alloc_ref(), +- std::integral_constant()); +- that.common() = CommonFields::CreateDefault(); +- annotate_for_bug_detection_on_move(that); +- return *this; +- } +- +- raw_hash_set& move_elements_allocs_unequal(raw_hash_set&& that) { +- const size_t size = that.size(); +- if (size == 0) return *this; +- reserve(size); +- for (iterator it = that.begin(); it != that.end(); ++it) { +- insert(std::move(PolicyTraits::element(it.slot()))); +- that.destroy(it.slot()); +- } +- if (!that.is_soo()) that.dealloc(); +- that.common() = CommonFields::CreateDefault(); +- annotate_for_bug_detection_on_move(that); +- return *this; +- } +- +- raw_hash_set& move_assign(raw_hash_set&& that, +- std::true_type /*propagate_alloc*/) { +- return assign_impl(std::move(that)); +- } +- raw_hash_set& move_assign(raw_hash_set&& that, +- std::false_type /*propagate_alloc*/) { +- if (char_alloc_ref() == that.char_alloc_ref()) { +- return assign_impl(std::move(that)); +- } +- // Aliasing can't happen here because allocs would compare equal above. +- assert(this != &that); +- destructor_impl(); +- // We can't take over that's memory so we need to move each element. +- // While moving elements, this should have that's hash/eq so copy hash/eq +- // before moving elements. +- hash_ref() = that.hash_ref(); +- eq_ref() = that.eq_ref(); +- return move_elements_allocs_unequal(std::move(that)); +- } +- +- template +- std::pair find_or_prepare_insert_soo(const K& key) { +- ABSL_SWISSTABLE_ASSERT(is_soo()); +- bool force_sampling; +- if (empty()) { +- if (!should_sample_soo()) { +- common().set_full_soo(); +- return {single_iterator(), true}; +- } +- force_sampling = true; +- } else if (equal_to(key, single_slot())) { +- return {single_iterator(), false}; +- } else { +- force_sampling = false; +- } +- ABSL_SWISSTABLE_ASSERT(capacity() == 1); +- constexpr bool kUseMemcpy = +- PolicyTraits::transfer_uses_memcpy() && SooEnabled(); +- size_t index = GrowSooTableToNextCapacityAndPrepareInsert< +- kUseMemcpy ? OptimalMemcpySizeForSooSlotTransfer(sizeof(slot_type)) : 0, +- kUseMemcpy>(common(), GetPolicyFunctions(), +- HashKey{hash_ref(), key}, +- force_sampling); +- return {iterator_at(index), true}; +- } +- +- template +- std::pair find_or_prepare_insert_small(const K& key) { +- ABSL_SWISSTABLE_ASSERT(is_small()); +- if constexpr (SooEnabled()) { +- return find_or_prepare_insert_soo(key); +- } +- if (!empty()) { +- if (equal_to(key, single_slot())) { +- return {single_iterator(), false}; +- } +- } +- return {iterator_at_ptr(PrepareInsertSmallNonSoo( +- common(), GetPolicyFunctions(), +- HashKey{hash_ref(), key})), +- true}; +- } +- +- template +- std::pair find_or_prepare_insert_large(const K& key) { +- ABSL_SWISSTABLE_ASSERT(!is_soo()); +- prefetch_heap_block(); +- const size_t hash = hash_of(key); +- auto seq = probe(common(), hash); +- const h2_t h2 = H2(hash); +- const ctrl_t* ctrl = control(); +- while (true) { +-#ifndef ABSL_HAVE_MEMORY_SANITIZER +- absl::PrefetchToLocalCache(slot_array() + seq.offset()); +-#endif +- Group g{ctrl + seq.offset()}; +- for (uint32_t i : g.Match(h2)) { +- if (ABSL_PREDICT_TRUE(equal_to(key, slot_array() + seq.offset(i)))) +- return {iterator_at(seq.offset(i)), false}; +- } +- auto mask_empty = g.MaskEmpty(); +- if (ABSL_PREDICT_TRUE(mask_empty)) { +- size_t target = seq.offset(mask_empty.LowestBitSet()); +- size_t index = +- SwisstableGenerationsEnabled() +- ? PrepareInsertLargeGenerationsEnabled( +- common(), GetPolicyFunctions(), hash, +- FindInfo{target, seq.index()}, +- HashKey{hash_ref(), key}) +- : PrepareInsertLarge(common(), GetPolicyFunctions(), hash, +- FindInfo{target, seq.index()}); +- return {iterator_at(index), true}; +- } +- seq.next(); +- ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity() && "full table!"); +- } +- } +- +- protected: +- // Asserts for correctness that we run on find/find_or_prepare_insert. +- template +- void AssertOnFind([[maybe_unused]] const K& key) { +- AssertHashEqConsistent(key); +- AssertNotDebugCapacity(); +- } +- +- // Asserts that the capacity is not a sentinel invalid value. +- void AssertNotDebugCapacity() const { +-#ifdef NDEBUG +- if (!SwisstableGenerationsEnabled()) { +- return; +- } +-#endif +- if (ABSL_PREDICT_TRUE(capacity() < +- InvalidCapacity::kAboveMaxValidCapacity)) { +- return; +- } +- assert(capacity() != InvalidCapacity::kReentrance && +- "Reentrant container access during element construction/destruction " +- "is not allowed."); +- if constexpr (SwisstableAssertAccessToDestroyedTable()) { +- if (capacity() == InvalidCapacity::kDestroyed) { +- ABSL_RAW_LOG(FATAL, "Use of destroyed hash table."); +- } +- } +- if (SwisstableGenerationsEnabled() && +- ABSL_PREDICT_FALSE(capacity() >= InvalidCapacity::kMovedFrom)) { +- if (capacity() == InvalidCapacity::kSelfMovedFrom) { +- // If this log triggers, then a hash table was move-assigned to itself +- // and then used again later without being reinitialized. +- ABSL_RAW_LOG(FATAL, "Use of self-move-assigned hash table."); +- } +- ABSL_RAW_LOG(FATAL, "Use of moved-from hash table."); +- } +- } +- +- // Asserts that hash and equal functors provided by the user are consistent, +- // meaning that `eq(k1, k2)` implies `hash(k1)==hash(k2)`. +- template +- void AssertHashEqConsistent(const K& key) { +-#ifdef NDEBUG +- return; +-#endif +- // If the hash/eq functors are known to be consistent, then skip validation. +- if (std::is_same::value && +- std::is_same::value) { +- return; +- } +- if (std::is_scalar::value && +- std::is_same>::value && +- std::is_same>::value) { +- return; +- } +- if (empty()) return; +- +- const size_t hash_of_arg = hash_of(key); +- const auto assert_consistent = [&](const ctrl_t*, void* slot) { +- const bool is_key_equal = equal_to(key, to_slot(slot)); +- if (!is_key_equal) return; +- +- [[maybe_unused]] const bool is_hash_equal = +- hash_of_arg == hash_of(to_slot(slot)); +- assert((!is_key_equal || is_hash_equal) && +- "eq(k1, k2) must imply that hash(k1) == hash(k2). " +- "hash/eq functors are inconsistent."); +- }; +- +- if (is_small()) { +- assert_consistent(/*unused*/ nullptr, single_slot()); +- return; +- } +- // We only do validation for small tables so that it's constant time. +- if (capacity() > 16) return; +- IterateOverFullSlots(common(), sizeof(slot_type), assert_consistent); +- } +- +- // Attempts to find `key` in the table; if it isn't found, returns an iterator +- // where the value can be inserted into, with the control byte already set to +- // `key`'s H2. Returns a bool indicating whether an insertion can take place. +- template +- std::pair find_or_prepare_insert(const K& key) { +- AssertOnFind(key); +- if (is_small()) return find_or_prepare_insert_small(key); +- return find_or_prepare_insert_large(key); +- } +- +- // Constructs the value in the space pointed by the iterator. This only works +- // after an unsuccessful find_or_prepare_insert() and before any other +- // modifications happen in the raw_hash_set. +- // +- // PRECONDITION: iter was returned from find_or_prepare_insert(k), where k is +- // the key decomposed from `forward(args)...`, and the bool returned by +- // find_or_prepare_insert(k) was true. +- // POSTCONDITION: *m.iterator_at(i) == value_type(forward(args)...). +- template +- void emplace_at(iterator iter, Args&&... args) { +- construct(iter.slot(), std::forward(args)...); +- +- // When is_small, find calls find_small and if size is 0, then it will +- // return an end iterator. This can happen in the raw_hash_set copy ctor. +- assert((is_small() || +- PolicyTraits::apply(FindElement{*this}, *iter) == iter) && +- "constructed value does not match the lookup key"); +- } +- +- iterator iterator_at(size_t i) ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return {control() + i, slot_array() + i, common().generation_ptr()}; +- } +- const_iterator iterator_at(size_t i) const ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return const_cast(this)->iterator_at(i); +- } +- iterator iterator_at_ptr(std::pair ptrs) +- ABSL_ATTRIBUTE_LIFETIME_BOUND { +- return {ptrs.first, to_slot(ptrs.second), common().generation_ptr()}; +- } +- +- reference unchecked_deref(iterator it) { return it.unchecked_deref(); } +- +- private: +- friend struct RawHashSetTestOnlyAccess; +- +- // The number of slots we can still fill without needing to rehash. +- // +- // This is stored separately due to tombstones: we do not include tombstones +- // in the growth capacity, because we'd like to rehash when the table is +- // otherwise filled with tombstones: otherwise, probe sequences might get +- // unacceptably long without triggering a rehash. Callers can also force a +- // rehash via the standard `rehash(0)`, which will recompute this value as a +- // side-effect. +- // +- // See `CapacityToGrowth()`. +- size_t growth_left() const { +- return common().growth_left(); +- } +- +- GrowthInfo& growth_info() { +- return common().growth_info(); +- } +- GrowthInfo growth_info() const { +- return common().growth_info(); +- } +- +- // Prefetch the heap-allocated memory region to resolve potential TLB and +- // cache misses. This is intended to overlap with execution of calculating the +- // hash for a key. +- void prefetch_heap_block() const { +- ABSL_SWISSTABLE_ASSERT(!is_soo()); +-#if ABSL_HAVE_BUILTIN(__builtin_prefetch) || defined(__GNUC__) +- __builtin_prefetch(control(), 0, 1); +-#endif +- } +- +- CommonFields& common() { return settings_.template get<0>(); } +- const CommonFields& common() const { return settings_.template get<0>(); } +- +- ctrl_t* control() const { +- ABSL_SWISSTABLE_ASSERT(!is_soo()); +- return common().control(); +- } +- slot_type* slot_array() const { +- ABSL_SWISSTABLE_ASSERT(!is_soo()); +- return static_cast(common().slot_array()); +- } +- slot_type* soo_slot() { +- ABSL_SWISSTABLE_ASSERT(is_soo()); +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN( +- static_cast(common().soo_data())); +- } +- const slot_type* soo_slot() const { +- ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN( +- const_cast(this)->soo_slot()); +- } +- slot_type* single_slot() { +- ABSL_SWISSTABLE_ASSERT(is_small()); +- return SooEnabled() ? soo_slot() : slot_array(); +- } +- const slot_type* single_slot() const { +- return const_cast(this)->single_slot(); +- } +- void decrement_small_size() { +- ABSL_SWISSTABLE_ASSERT(is_small()); +- SooEnabled() ? common().set_empty_soo() : common().decrement_size(); +- if (!SooEnabled()) { +- SanitizerPoisonObject(single_slot()); +- } +- } +- iterator single_iterator() { +- return {SooControl(), single_slot(), common().generation_ptr()}; +- } +- const_iterator single_iterator() const { +- return const_cast(this)->single_iterator(); +- } +- HashtablezInfoHandle infoz() { +- ABSL_SWISSTABLE_ASSERT(!is_soo()); +- return common().infoz(); +- } +- +- hasher& hash_ref() { return settings_.template get<1>(); } +- const hasher& hash_ref() const { return settings_.template get<1>(); } +- key_equal& eq_ref() { return settings_.template get<2>(); } +- const key_equal& eq_ref() const { return settings_.template get<2>(); } +- CharAlloc& char_alloc_ref() { return settings_.template get<3>(); } +- const CharAlloc& char_alloc_ref() const { +- return settings_.template get<3>(); +- } +- +- static void* get_char_alloc_ref_fn(CommonFields& common) { +- auto* h = reinterpret_cast(&common); +- return &h->char_alloc_ref(); +- } +- static void* get_hash_ref_fn(CommonFields& common) { +- auto* h = reinterpret_cast(&common); +- // TODO(b/397453582): Remove support for const hasher. +- return const_cast*>(&h->hash_ref()); +- } +- static void transfer_n_slots_fn(void* set, void* dst, void* src, +- size_t count) { +- auto* src_slot = to_slot(src); +- auto* dst_slot = to_slot(dst); +- +- auto* h = static_cast(set); +- for (; count > 0; --count, ++src_slot, ++dst_slot) { +- h->transfer(dst_slot, src_slot); +- } +- } +- +- // TODO(b/382423690): Try to type erase entire function or at least type erase +- // by GetKey + Hash for memcpyable types. +- // TODO(b/382423690): Try to type erase for big slots: sizeof(slot_type) > 16. +- static void transfer_unprobed_elements_to_next_capacity_fn( +- CommonFields& common, const ctrl_t* old_ctrl, void* old_slots, +- void* probed_storage, +- void (*encode_probed_element)(void* probed_storage, h2_t h2, +- size_t source_offset, size_t h1)) { +- const size_t new_capacity = common.capacity(); +- const size_t old_capacity = PreviousCapacity(new_capacity); +- ABSL_ASSUME(old_capacity + 1 >= Group::kWidth); +- ABSL_ASSUME((old_capacity + 1) % Group::kWidth == 0); +- +- auto* set = reinterpret_cast(&common); +- slot_type* old_slots_ptr = to_slot(old_slots); +- ctrl_t* new_ctrl = common.control(); +- slot_type* new_slots = set->slot_array(); +- +- for (size_t group_index = 0; group_index < old_capacity; +- group_index += Group::kWidth) { +- GroupFullEmptyOrDeleted old_g(old_ctrl + group_index); +- std::memset(new_ctrl + group_index, static_cast(ctrl_t::kEmpty), +- Group::kWidth); +- std::memset(new_ctrl + group_index + old_capacity + 1, +- static_cast(ctrl_t::kEmpty), Group::kWidth); +- // TODO(b/382423690): try to type erase everything outside of the loop. +- // We will share a lot of code in expense of one function call per group. +- for (auto in_fixed_group_index : old_g.MaskFull()) { +- size_t old_index = group_index + in_fixed_group_index; +- slot_type* old_slot = old_slots_ptr + old_index; +- // TODO(b/382423690): try to avoid entire hash calculation since we need +- // only one new bit of h1. +- size_t hash = set->hash_of(old_slot); +- size_t h1 = H1(hash); +- h2_t h2 = H2(hash); +- size_t new_index = TryFindNewIndexWithoutProbing( +- h1, old_index, old_capacity, new_ctrl, new_capacity); +- // Note that encode_probed_element is allowed to use old_ctrl buffer +- // till and included the old_index. +- if (ABSL_PREDICT_FALSE(new_index == kProbedElementIndexSentinel)) { +- encode_probed_element(probed_storage, h2, old_index, h1); +- continue; +- } +- ABSL_SWISSTABLE_ASSERT((new_index & old_capacity) <= old_index); +- ABSL_SWISSTABLE_ASSERT(IsEmpty(new_ctrl[new_index])); +- new_ctrl[new_index] = static_cast(h2); +- auto* new_slot = new_slots + new_index; +- SanitizerUnpoisonMemoryRegion(new_slot, sizeof(slot_type)); +- set->transfer(new_slot, old_slot); +- SanitizerPoisonMemoryRegion(old_slot, sizeof(slot_type)); +- } +- } +- } +- +- static const PolicyFunctions& GetPolicyFunctions() { +- static_assert(sizeof(slot_type) <= (std::numeric_limits::max)(), +- "Slot size is too large. Use std::unique_ptr for value type " +- "or use absl::node_hash_{map,set}."); +- static_assert(alignof(slot_type) <= +- size_t{(std::numeric_limits::max)()}); +- static_assert(sizeof(key_type) <= +- size_t{(std::numeric_limits::max)()}); +- static_assert(sizeof(value_type) <= +- size_t{(std::numeric_limits::max)()}); +- static constexpr size_t kBackingArrayAlignment = +- BackingArrayAlignment(alignof(slot_type)); +- static const PolicyFunctions value = { +- static_cast(sizeof(key_type)), +- static_cast(sizeof(value_type)), +- static_cast(sizeof(slot_type)), +- static_cast(alignof(slot_type)), SooEnabled(), +- ShouldSampleHashtablezInfoForAlloc(), +- // TODO(b/328722020): try to type erase +- // for standard layout and alignof(Hash) <= alignof(CommonFields). +- std::is_empty_v ? &GetRefForEmptyClass +- : &raw_hash_set::get_hash_ref_fn, +- PolicyTraits::template get_hash_slot_fn(), +- PolicyTraits::transfer_uses_memcpy() +- ? TransferNRelocatable +- : &raw_hash_set::transfer_n_slots_fn, +- std::is_empty_v ? &GetRefForEmptyClass +- : &raw_hash_set::get_char_alloc_ref_fn, +- &AllocateBackingArray, +- &DeallocateBackingArray, +- &raw_hash_set::transfer_unprobed_elements_to_next_capacity_fn}; +- return value; +- } +- +- // Bundle together CommonFields plus other objects which might be empty. +- // CompressedTuple will ensure that sizeof is not affected by any of the empty +- // fields that occur after CommonFields. +- absl::container_internal::CompressedTuple +- settings_{CommonFields::CreateDefault(), hasher{}, +- key_equal{}, CharAlloc{}}; +-}; +- +-// Friend access for free functions in raw_hash_set.h. +-struct HashtableFreeFunctionsAccess { +- template +- static typename Set::size_type EraseIf(Predicate& pred, Set* c) { +- if (c->empty()) { +- return 0; +- } +- if (c->is_small()) { +- auto it = c->single_iterator(); +- if (!pred(*it)) { +- ABSL_SWISSTABLE_ASSERT(c->size() == 1 && +- "hash table was modified unexpectedly"); +- return 0; +- } +- c->destroy(it.slot()); +- c->erase_meta_only_small(); +- return 1; +- } +- [[maybe_unused]] const size_t original_size_for_assert = c->size(); +- size_t num_deleted = 0; +- using SlotType = typename Set::slot_type; +- IterateOverFullSlots( +- c->common(), sizeof(SlotType), +- [&](const ctrl_t* ctrl, void* slot_void) { +- auto* slot = static_cast(slot_void); +- if (pred(Set::PolicyTraits::element(slot))) { +- c->destroy(slot); +- EraseMetaOnlyLarge(c->common(), ctrl, sizeof(*slot)); +- ++num_deleted; +- } +- }); +- // NOTE: IterateOverFullSlots allow removal of the current element, so we +- // verify the size additionally here. +- ABSL_SWISSTABLE_ASSERT(original_size_for_assert - num_deleted == +- c->size() && +- "hash table was modified unexpectedly"); +- return num_deleted; +- } +- +- template +- static void ForEach(Callback& cb, Set* c) { +- if (c->empty()) { +- return; +- } +- if (c->is_small()) { +- cb(*c->single_iterator()); +- return; +- } +- using SlotType = typename Set::slot_type; +- using ElementTypeWithConstness = decltype(*c->begin()); +- IterateOverFullSlots( +- c->common(), sizeof(SlotType), [&cb](const ctrl_t*, void* slot) { +- ElementTypeWithConstness& element = +- Set::PolicyTraits::element(static_cast(slot)); +- cb(element); +- }); +- } +-}; +- +-// Erases all elements that satisfy the predicate `pred` from the container `c`. +-template +-typename raw_hash_set::size_type EraseIf( +- Predicate& pred, raw_hash_set* c) { +- return HashtableFreeFunctionsAccess::EraseIf(pred, c); +-} +- +-// Calls `cb` for all elements in the container `c`. +-template +-void ForEach(Callback& cb, raw_hash_set* c) { +- return HashtableFreeFunctionsAccess::ForEach(cb, c); +-} +-template +-void ForEach(Callback& cb, const raw_hash_set* c) { +- return HashtableFreeFunctionsAccess::ForEach(cb, c); +-} +- +-namespace hashtable_debug_internal { +-template +-struct HashtableDebugAccess> { +- using Traits = typename Set::PolicyTraits; +- using Slot = typename Traits::slot_type; +- +- constexpr static bool kIsDefaultHash = Set::kIsDefaultHash; +- +- static size_t GetNumProbes(const Set& set, +- const typename Set::key_type& key) { +- if (set.is_small()) return 0; +- size_t num_probes = 0; +- const size_t hash = set.hash_of(key); +- auto seq = probe(set.common(), hash); +- const h2_t h2 = H2(hash); +- const ctrl_t* ctrl = set.control(); +- while (true) { +- container_internal::Group g{ctrl + seq.offset()}; +- for (uint32_t i : g.Match(h2)) { +- if (set.equal_to(key, set.slot_array() + seq.offset(i))) +- return num_probes; +- ++num_probes; +- } +- if (g.MaskEmpty()) return num_probes; +- seq.next(); +- ++num_probes; +- } +- } +- +- static size_t AllocatedByteSize(const Set& c) { +- size_t capacity = c.capacity(); +- if (capacity == 0) return 0; +- size_t m = +- c.is_soo() ? 0 : c.common().alloc_size(sizeof(Slot), alignof(Slot)); +- +- size_t per_slot = Traits::space_used(static_cast(nullptr)); +- if (per_slot != ~size_t{}) { +- m += per_slot * c.size(); +- } else { +- for (auto it = c.begin(); it != c.end(); ++it) { +- m += Traits::space_used(it.slot()); +- } +- } +- return m; +- } +-}; +- +-} // namespace hashtable_debug_internal +- +-// Extern template instantiations reduce binary size and linker input size. +-// Function definition is in raw_hash_set.cc. +-extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<0, false>( +- CommonFields&, const PolicyFunctions&, absl::FunctionRef, +- bool); +-extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<1, true>( +- CommonFields&, const PolicyFunctions&, absl::FunctionRef, +- bool); +-extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<4, true>( +- CommonFields&, const PolicyFunctions&, absl::FunctionRef, +- bool); +-extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<8, true>( +- CommonFields&, const PolicyFunctions&, absl::FunctionRef, +- bool); +-#if UINTPTR_MAX == UINT64_MAX +-extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<16, true>( +- CommonFields&, const PolicyFunctions&, absl::FunctionRef, +- bool); +-#endif +- +-} // namespace container_internal +-ABSL_NAMESPACE_END +-} // namespace absl +- +-#undef ABSL_SWISSTABLE_ENABLE_GENERATIONS +-#undef ABSL_SWISSTABLE_IGNORE_UNINITIALIZED +-#undef ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN +-#undef ABSL_SWISSTABLE_ASSERT +- +-#endif // ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ ++// Copyright 2018 The Abseil Authors. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// https://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++// ++// An open-addressing ++// hashtable with quadratic probing. ++// ++// This is a low level hashtable on top of which different interfaces can be ++// implemented, like flat_hash_set, node_hash_set, string_hash_set, etc. ++// ++// The table interface is similar to that of std::unordered_set. Notable ++// differences are that most member functions support heterogeneous keys when ++// BOTH the hash and eq functions are marked as transparent. They do so by ++// providing a typedef called `is_transparent`. ++// ++// When heterogeneous lookup is enabled, functions that take key_type act as if ++// they have an overload set like: ++// ++// iterator find(const key_type& key); ++// template ++// iterator find(const K& key); ++// ++// size_type erase(const key_type& key); ++// template ++// size_type erase(const K& key); ++// ++// std::pair equal_range(const key_type& key); ++// template ++// std::pair equal_range(const K& key); ++// ++// When heterogeneous lookup is disabled, only the explicit `key_type` overloads ++// exist. ++// ++// In addition the pointer to element and iterator stability guarantees are ++// weaker: all iterators and pointers are invalidated after a new element is ++// inserted. ++// ++// IMPLEMENTATION DETAILS ++// ++// # Table Layout ++// ++// A raw_hash_set's backing array consists of control bytes followed by slots ++// that may or may not contain objects. ++// ++// The layout of the backing array, for `capacity` slots, is thus, as a ++// pseudo-struct: ++// ++// struct BackingArray { ++// // Sampling handler. This field isn't present when the sampling is ++// // disabled or this allocation hasn't been selected for sampling. ++// HashtablezInfoHandle infoz_; ++// // The number of elements we can insert before growing the capacity. ++// size_t growth_left; ++// // Control bytes for the "real" slots. ++// ctrl_t ctrl[capacity]; ++// // Always `ctrl_t::kSentinel`. This is used by iterators to find when to ++// // stop and serves no other purpose. ++// ctrl_t sentinel; ++// // A copy of the first `kWidth - 1` elements of `ctrl`. This is used so ++// // that if a probe sequence picks a value near the end of `ctrl`, ++// // `Group` will have valid control bytes to look at. ++// ctrl_t clones[kWidth - 1]; ++// // The actual slot data. ++// slot_type slots[capacity]; ++// }; ++// ++// The length of this array is computed by `RawHashSetLayout::alloc_size` below. ++// ++// Control bytes (`ctrl_t`) are bytes (collected into groups of a ++// platform-specific size) that define the state of the corresponding slot in ++// the slot array. Group manipulation is tightly optimized to be as efficient ++// as possible: SSE and friends on x86, clever bit operations on other arches. ++// ++// Group 1 Group 2 Group 3 ++// +---------------+---------------+---------------+ ++// | | | | | | | | | | | | | | | | | | | | | | | | | ++// +---------------+---------------+---------------+ ++// ++// Each control byte is either a special value for empty slots, deleted slots ++// (sometimes called *tombstones*), and a special end-of-table marker used by ++// iterators, or, if occupied, seven bits (H2) from the hash of the value in the ++// corresponding slot. ++// ++// Storing control bytes in a separate array also has beneficial cache effects, ++// since more logical slots will fit into a cache line. ++// ++// # Small Object Optimization (SOO) ++// ++// When the size/alignment of the value_type and the capacity of the table are ++// small, we enable small object optimization and store the values inline in ++// the raw_hash_set object. This optimization allows us to avoid ++// allocation/deallocation as well as cache/dTLB misses. ++// ++// # Hashing ++// ++// We compute two separate hashes, `H1` and `H2`, from the hash of an object. ++// `H1(hash(x))` is an index into `slots`, and essentially the starting point ++// for the probe sequence. `H2(hash(x))` is a 7-bit value used to filter out ++// objects that cannot possibly be the one we are looking for. ++// ++// # Table operations. ++// ++// The key operations are `insert`, `find`, and `erase`. ++// ++// Since `insert` and `erase` are implemented in terms of `find`, we describe ++// `find` first. To `find` a value `x`, we compute `hash(x)`. From ++// `H1(hash(x))` and the capacity, we construct a `probe_seq` that visits every ++// group of slots in some interesting order. ++// ++// We now walk through these indices. At each index, we select the entire group ++// starting with that index and extract potential candidates: occupied slots ++// with a control byte equal to `H2(hash(x))`. If we find an empty slot in the ++// group, we stop and return an error. Each candidate slot `y` is compared with ++// `x`; if `x == y`, we are done and return `&y`; otherwise we continue to the ++// next probe index. Tombstones effectively behave like full slots that never ++// match the value we're looking for. ++// ++// The `H2` bits ensure when we compare a slot to an object with `==`, we are ++// likely to have actually found the object. That is, the chance is low that ++// `==` is called and returns `false`. Thus, when we search for an object, we ++// are unlikely to call `==` many times. This likelyhood can be analyzed as ++// follows (assuming that H2 is a random enough hash function). ++// ++// Let's assume that there are `k` "wrong" objects that must be examined in a ++// probe sequence. For example, when doing a `find` on an object that is in the ++// table, `k` is the number of objects between the start of the probe sequence ++// and the final found object (not including the final found object). The ++// expected number of objects with an H2 match is then `k/128`. Measurements ++// and analysis indicate that even at high load factors, `k` is less than 32, ++// meaning that the number of "false positive" comparisons we must perform is ++// less than 1/8 per `find`. ++ ++// `insert` is implemented in terms of `unchecked_insert`, which inserts a ++// value presumed to not be in the table (violating this requirement will cause ++// the table to behave erratically). Given `x` and its hash `hash(x)`, to insert ++// it, we construct a `probe_seq` once again, and use it to find the first ++// group with an unoccupied (empty *or* deleted) slot. We place `x` into the ++// first such slot in the group and mark it as full with `x`'s H2. ++// ++// To `insert`, we compose `unchecked_insert` with `find`. We compute `h(x)` and ++// perform a `find` to see if it's already present; if it is, we're done. If ++// it's not, we may decide the table is getting overcrowded (i.e. the load ++// factor is greater than 7/8 for big tables; tables smaller than one probing ++// group use a max load factor of 1); in this case, we allocate a bigger array, ++// `unchecked_insert` each element of the table into the new array (we know that ++// no insertion here will insert an already-present value), and discard the old ++// backing array. At this point, we may `unchecked_insert` the value `x`. ++// ++// Below, `unchecked_insert` is partly implemented by `prepare_insert`, which ++// presents a viable, initialized slot pointee to the caller. ++// ++// `erase` is implemented in terms of `erase_at`, which takes an index to a ++// slot. Given an offset, we simply create a tombstone and destroy its contents. ++// If we can prove that the slot would not appear in a probe sequence, we can ++// make the slot as empty, instead. We can prove this by observing that if a ++// group has any empty slots, it has never been full (assuming we never create ++// an empty slot in a group with no empties, which this heuristic guarantees we ++// never do) and find would stop at this group anyways (since it does not probe ++// beyond groups with empties). ++// ++// `erase` is `erase_at` composed with `find`: if we ++// have a value `x`, we can perform a `find`, and then `erase_at` the resulting ++// slot. ++// ++// To iterate, we simply traverse the array, skipping empty and deleted slots ++// and stopping when we hit a `kSentinel`. ++ ++#ifndef ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ ++#define ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "absl/base/attributes.h" ++#include "absl/base/casts.h" ++#include "absl/base/config.h" ++#include "absl/base/internal/endian.h" ++#include "absl/base/internal/iterator_traits.h" ++#include "absl/base/internal/raw_logging.h" ++#include "absl/base/macros.h" ++#include "absl/base/optimization.h" ++#include "absl/base/options.h" ++#include "absl/base/port.h" ++#include "absl/base/prefetch.h" ++#include "absl/container/internal/common.h" // IWYU pragma: export // for node_handle ++#include "absl/container/internal/common_policy_traits.h" ++#include "absl/container/internal/compressed_tuple.h" ++#include "absl/container/internal/container_memory.h" ++#include "absl/container/internal/hash_function_defaults.h" ++#include "absl/container/internal/hash_policy_traits.h" ++#include "absl/container/internal/hashtable_control_bytes.h" ++#include "absl/container/internal/hashtable_debug_hooks.h" ++#include "absl/container/internal/hashtablez_sampler.h" ++#include "absl/functional/function_ref.h" ++#include "absl/hash/hash.h" ++#include "absl/hash/internal/weakly_mixed_integer.h" ++#include "absl/memory/memory.h" ++#include "absl/meta/type_traits.h" ++#include "absl/numeric/bits.h" ++#include "absl/utility/utility.h" ++ ++namespace absl { ++ABSL_NAMESPACE_BEGIN ++namespace container_internal { ++ ++#ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS ++#error ABSL_SWISSTABLE_ENABLE_GENERATIONS cannot be directly set ++#elif (defined(ABSL_HAVE_ADDRESS_SANITIZER) || \ ++ defined(ABSL_HAVE_HWADDRESS_SANITIZER) || \ ++ defined(ABSL_HAVE_MEMORY_SANITIZER)) && \ ++ !defined(NDEBUG_SANITIZER) // If defined, performance is important. ++// When compiled in sanitizer mode, we add generation integers to the backing ++// array and iterators. In the backing array, we store the generation between ++// the control bytes and the slots. When iterators are dereferenced, we assert ++// that the container has not been mutated in a way that could cause iterator ++// invalidation since the iterator was initialized. ++#define ABSL_SWISSTABLE_ENABLE_GENERATIONS ++#endif ++ ++#ifdef ABSL_SWISSTABLE_ASSERT ++#error ABSL_SWISSTABLE_ASSERT cannot be directly set ++#else ++// We use this macro for assertions that users may see when the table is in an ++// invalid state that sanitizers may help diagnose. ++#define ABSL_SWISSTABLE_ASSERT(CONDITION) \ ++ assert((CONDITION) && "Try enabling sanitizers.") ++#endif ++ ++// We use uint8_t so we don't need to worry about padding. ++using GenerationType = uint8_t; ++ ++// A sentinel value for empty generations. Using 0 makes it easy to constexpr ++// initialize an array of this value. ++constexpr GenerationType SentinelEmptyGeneration() { return 0; } ++ ++constexpr GenerationType NextGeneration(GenerationType generation) { ++ return ++generation == SentinelEmptyGeneration() ? ++generation : generation; ++} ++ ++#ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS ++constexpr bool SwisstableGenerationsEnabled() { return true; } ++constexpr size_t NumGenerationBytes() { return sizeof(GenerationType); } ++#else ++constexpr bool SwisstableGenerationsEnabled() { return false; } ++constexpr size_t NumGenerationBytes() { return 0; } ++#endif ++ ++// Returns true if we should assert that the table is not accessed after it has ++// been destroyed or during the destruction of the table. ++constexpr bool SwisstableAssertAccessToDestroyedTable() { ++#ifndef NDEBUG ++ return true; ++#endif ++ return SwisstableGenerationsEnabled(); ++} ++ ++template ++void SwapAlloc(AllocType& lhs, AllocType& rhs, ++ std::true_type /* propagate_on_container_swap */) { ++ using std::swap; ++ swap(lhs, rhs); ++} ++template ++void SwapAlloc([[maybe_unused]] AllocType& lhs, [[maybe_unused]] AllocType& rhs, ++ std::false_type /* propagate_on_container_swap */) { ++ assert(lhs == rhs && ++ "It's UB to call swap with unequal non-propagating allocators."); ++} ++ ++template ++void CopyAlloc(AllocType& lhs, AllocType& rhs, ++ std::true_type /* propagate_alloc */) { ++ lhs = rhs; ++} ++template ++void CopyAlloc(AllocType&, AllocType&, std::false_type /* propagate_alloc */) {} ++ ++// The state for a probe sequence. ++// ++// Currently, the sequence is a triangular progression of the form ++// ++// p(i) := Width * (i^2 + i)/2 + hash (mod mask + 1) ++// ++// The use of `Width` ensures that each probe step does not overlap groups; ++// the sequence effectively outputs the addresses of *groups* (although not ++// necessarily aligned to any boundary). The `Group` machinery allows us ++// to check an entire group with minimal branching. ++// ++// Wrapping around at `mask + 1` is important, but not for the obvious reason. ++// As described above, the first few entries of the control byte array ++// are mirrored at the end of the array, which `Group` will find and use ++// for selecting candidates. However, when those candidates' slots are ++// actually inspected, there are no corresponding slots for the cloned bytes, ++// so we need to make sure we've treated those offsets as "wrapping around". ++// ++// It turns out that this probe sequence visits every group exactly once if the ++// number of groups is a power of two, since (i^2+i)/2 is a bijection in ++// Z/(2^m). See https://en.wikipedia.org/wiki/Quadratic_probing ++template ++class probe_seq { ++ public: ++ // Creates a new probe sequence using `hash` as the initial value of the ++ // sequence and `mask` (usually the capacity of the table) as the mask to ++ // apply to each value in the progression. ++ probe_seq(size_t hash, size_t mask) { ++ ABSL_SWISSTABLE_ASSERT(((mask + 1) & mask) == 0 && "not a mask"); ++ mask_ = mask; ++ offset_ = hash & mask_; ++ } ++ ++ // The offset within the table, i.e., the value `p(i)` above. ++ size_t offset() const { return offset_; } ++ size_t offset(size_t i) const { return (offset_ + i) & mask_; } ++ ++ void next() { ++ index_ += Width; ++ offset_ += index_; ++ offset_ &= mask_; ++ } ++ // 0-based probe index, a multiple of `Width`. ++ size_t index() const { return index_; } ++ ++ private: ++ size_t mask_; ++ size_t offset_; ++ size_t index_ = 0; ++}; ++ ++template ++struct RequireUsableKey { ++ template ++ std::pair< ++ decltype(std::declval()(std::declval())), ++ decltype(std::declval()(std::declval(), ++ std::declval()))>* ++ operator()(const PassedKey&, const Args&...) const; ++}; ++ ++template ++struct IsDecomposable : std::false_type {}; ++ ++template ++struct IsDecomposable< ++ absl::void_t(), ++ std::declval()...))>, ++ Policy, Hash, Eq, Ts...> : std::true_type {}; ++ ++ABSL_DLL extern ctrl_t kDefaultIterControl; ++ ++// We use these sentinel capacity values in debug mode to indicate different ++// classes of bugs. ++enum InvalidCapacity : size_t { ++ kAboveMaxValidCapacity = ~size_t{} - 100, ++ kReentrance, ++ kDestroyed, ++ ++ // These two must be last because we use `>= kMovedFrom` to mean moved-from. ++ kMovedFrom, ++ kSelfMovedFrom, ++}; ++ ++// Returns a pointer to a control byte that can be used by default-constructed ++// iterators. We don't expect this pointer to be dereferenced. ++inline ctrl_t* DefaultIterControl() { return &kDefaultIterControl; } ++ ++// For use in SOO iterators. ++// TODO(b/289225379): we could potentially get rid of this by adding an is_soo ++// bit in iterators. This would add branches but reduce cache misses. ++ABSL_DLL extern const ctrl_t kSooControl[2]; ++ ++// Returns a pointer to a full byte followed by a sentinel byte. ++inline ctrl_t* SooControl() { ++ // Const must be cast away here; no uses of this function will actually write ++ // to it because it is only used for SOO iterators. ++ return const_cast(kSooControl); ++} ++// Whether ctrl is from the SooControl array. ++inline bool IsSooControl(const ctrl_t* ctrl) { return ctrl == SooControl(); } ++ ++// Returns a pointer to a generation to use for an empty hashtable. ++GenerationType* EmptyGeneration(); ++ ++// Returns whether `generation` is a generation for an empty hashtable that ++// could be returned by EmptyGeneration(). ++inline bool IsEmptyGeneration(const GenerationType* generation) { ++ return *generation == SentinelEmptyGeneration(); ++} ++ ++// We only allow a maximum of 1 SOO element, which makes the implementation ++// much simpler. Complications with multiple SOO elements include: ++// - Satisfying the guarantee that erasing one element doesn't invalidate ++// iterators to other elements means we would probably need actual SOO ++// control bytes. ++// - In order to prevent user code from depending on iteration order for small ++// tables, we would need to randomize the iteration order somehow. ++constexpr size_t SooCapacity() { return 1; } ++// Sentinel type to indicate SOO CommonFields construction. ++struct soo_tag_t {}; ++// Sentinel type to indicate SOO CommonFields construction with full size. ++struct full_soo_tag_t {}; ++// Sentinel type to indicate non-SOO CommonFields construction. ++struct non_soo_tag_t {}; ++// Sentinel value to indicate an uninitialized value explicitly. ++struct uninitialized_tag_t {}; ++// Sentinel value to indicate creation of an empty table without a seed. ++struct no_seed_empty_tag_t {}; ++ ++// Per table hash salt. This gets mixed into H1 to randomize iteration order ++// per-table. ++// The seed is needed to ensure non-determinism of iteration order. ++class PerTableSeed { ++ public: ++ // The number of bits in the seed. ++ // It is big enough to ensure non-determinism of iteration order. ++ // We store the seed inside a uint64_t together with size and other metadata. ++ // Using 16 bits allows us to save one `and` instruction in H1 (we use ++ // sign-extended move instead of mov+and). ++ static constexpr size_t kBitCount = 16; ++ static constexpr size_t kSignBit = uint64_t{1} << (kBitCount - 1); ++ ++ // Returns the seed for the table. ++ size_t seed() const { ++ // We use a sign-extended load to ensure high bits are non-zero. ++ int16_t seed_signed = absl::bit_cast(seed_); ++ auto seed_sign_extended = ++ static_cast>(seed_signed); ++ return absl::bit_cast(seed_sign_extended); ++ } ++ ++ private: ++ friend class HashtableSize; ++ explicit PerTableSeed(uint16_t seed) : seed_(seed) { ++ ABSL_SWISSTABLE_ASSERT((seed & kSignBit) != 0 || seed == 0); ++ } ++ ++ // The most significant bit of the seed is always 1 when there is a non-zero ++ // seed. This way, when sign-extended the seed has non-zero high bits. ++ const uint16_t seed_; ++}; ++ ++// Returns next per-table seed. ++inline uint16_t NextSeed() { ++ static_assert(PerTableSeed::kBitCount == 16); ++ thread_local uint16_t seed = ++ static_cast(reinterpret_cast(&seed)); ++ seed += uint16_t{0xad53}; ++ return seed; ++} ++ ++// The size and also has additionally ++// 1) one bit that stores whether we have infoz. ++// 2) PerTableSeed::kBitCount bits for the seed. ++class HashtableSize { ++ public: ++ static constexpr size_t kSizeBitCount = 64 - PerTableSeed::kBitCount - 1; ++ ++ explicit HashtableSize(uninitialized_tag_t) {} ++ explicit HashtableSize(no_seed_empty_tag_t) : data_(0) {} ++ explicit HashtableSize(full_soo_tag_t) : data_(kSizeOneNoMetadata) {} ++ ++ // Returns actual size of the table. ++ size_t size() const { return static_cast(data_ >> kSizeShift); } ++ void increment_size() { data_ += kSizeOneNoMetadata; } ++ void increment_size(size_t size) { ++ data_ += static_cast(size) * kSizeOneNoMetadata; ++ } ++ void decrement_size() { data_ -= kSizeOneNoMetadata; } ++ // Returns true if the table is empty. ++ bool empty() const { return data_ < kSizeOneNoMetadata; } ++ // Sets the size to zero, but keeps all the metadata bits. ++ void set_size_to_zero_keep_metadata() { data_ = data_ & kMetadataMask; } ++ ++ PerTableSeed seed() const { ++ return PerTableSeed(static_cast(data_) & kSeedMask); ++ } ++ ++ void generate_new_seed() { set_seed(NextSeed()); } ++ ++ // We need to use a constant seed when the table is sampled so that sampled ++ // hashes use the same seed and can e.g. identify stuck bits accurately. ++ void set_sampled_seed() { set_seed(PerTableSeed::kSignBit); } ++ ++ bool is_sampled_seed() const { ++ return (data_ & kSeedMask) == PerTableSeed::kSignBit; ++ } ++ ++ // Returns true if the table has infoz. ++ bool has_infoz() const { ++ return ABSL_PREDICT_FALSE((data_ & kHasInfozMask) != 0); ++ } ++ ++ // Sets the has_infoz bit. ++ void set_has_infoz() { data_ |= kHasInfozMask; } ++ ++ void set_no_seed_for_testing() { data_ &= ~kSeedMask; } ++ ++ private: ++ void set_seed(uint16_t seed) { ++ data_ = (data_ & ~kSeedMask) | (seed | PerTableSeed::kSignBit); ++ } ++ static constexpr size_t kSizeShift = 64 - kSizeBitCount; ++ static constexpr uint64_t kSizeOneNoMetadata = uint64_t{1} << kSizeShift; ++ static constexpr uint64_t kMetadataMask = kSizeOneNoMetadata - 1; ++ static constexpr uint64_t kSeedMask = ++ (uint64_t{1} << PerTableSeed::kBitCount) - 1; ++ // The next bit after the seed. ++ static constexpr uint64_t kHasInfozMask = kSeedMask + 1; ++ uint64_t data_; ++}; ++ ++// H1 is just the low bits of the hash. ++inline size_t H1(size_t hash) { return hash; } ++ ++// Extracts the H2 portion of a hash: the 7 most significant bits. ++// ++// These are used as an occupied control byte. ++inline h2_t H2(size_t hash) { return hash >> (sizeof(size_t) * 8 - 7); } ++ ++// When there is an insertion with no reserved growth, we rehash with ++// probability `min(1, RehashProbabilityConstant() / capacity())`. Using a ++// constant divided by capacity ensures that inserting N elements is still O(N) ++// in the average case. Using the constant 16 means that we expect to rehash ~8 ++// times more often than when generations are disabled. We are adding expected ++// rehash_probability * #insertions/capacity_growth = 16/capacity * ((7/8 - ++// 7/16) * capacity)/capacity_growth = ~7 extra rehashes per capacity growth. ++inline size_t RehashProbabilityConstant() { return 16; } ++ ++class CommonFieldsGenerationInfoEnabled { ++ // A sentinel value for reserved_growth_ indicating that we just ran out of ++ // reserved growth on the last insertion. When reserve is called and then ++ // insertions take place, reserved_growth_'s state machine is N, ..., 1, ++ // kReservedGrowthJustRanOut, 0. ++ static constexpr size_t kReservedGrowthJustRanOut = ++ (std::numeric_limits::max)(); ++ ++ public: ++ CommonFieldsGenerationInfoEnabled() = default; ++ CommonFieldsGenerationInfoEnabled(CommonFieldsGenerationInfoEnabled&& that) ++ : reserved_growth_(that.reserved_growth_), ++ reservation_size_(that.reservation_size_), ++ generation_(that.generation_) { ++ that.reserved_growth_ = 0; ++ that.reservation_size_ = 0; ++ that.generation_ = EmptyGeneration(); ++ } ++ CommonFieldsGenerationInfoEnabled& operator=( ++ CommonFieldsGenerationInfoEnabled&&) = default; ++ ++ // Whether we should rehash on insert in order to detect bugs of using invalid ++ // references. We rehash on the first insertion after reserved_growth_ reaches ++ // 0 after a call to reserve. We also do a rehash with low probability ++ // whenever reserved_growth_ is zero. ++ bool should_rehash_for_bug_detection_on_insert(size_t capacity) const; ++ // Similar to above, except that we don't depend on reserved_growth_. ++ bool should_rehash_for_bug_detection_on_move(size_t capacity) const; ++ void maybe_increment_generation_on_insert() { ++ if (reserved_growth_ == kReservedGrowthJustRanOut) reserved_growth_ = 0; ++ ++ if (reserved_growth_ > 0) { ++ if (--reserved_growth_ == 0) reserved_growth_ = kReservedGrowthJustRanOut; ++ } else { ++ increment_generation(); ++ } ++ } ++ void increment_generation() { *generation_ = NextGeneration(*generation_); } ++ void reset_reserved_growth(size_t reservation, size_t size) { ++ reserved_growth_ = reservation - size; ++ } ++ size_t reserved_growth() const { return reserved_growth_; } ++ void set_reserved_growth(size_t r) { reserved_growth_ = r; } ++ size_t reservation_size() const { return reservation_size_; } ++ void set_reservation_size(size_t r) { reservation_size_ = r; } ++ GenerationType generation() const { return *generation_; } ++ void set_generation(GenerationType g) { *generation_ = g; } ++ GenerationType* generation_ptr() const { return generation_; } ++ void set_generation_ptr(GenerationType* g) { generation_ = g; } ++ ++ private: ++ // The number of insertions remaining that are guaranteed to not rehash due to ++ // a prior call to reserve. Note: we store reserved growth in addition to ++ // reservation size because calls to erase() decrease size_ but don't decrease ++ // reserved growth. ++ size_t reserved_growth_ = 0; ++ // The maximum argument to reserve() since the container was cleared. We need ++ // to keep track of this, in addition to reserved growth, because we reset ++ // reserved growth to this when erase(begin(), end()) is called. ++ size_t reservation_size_ = 0; ++ // Pointer to the generation counter, which is used to validate iterators and ++ // is stored in the backing array between the control bytes and the slots. ++ // Note that we can't store the generation inside the container itself and ++ // keep a pointer to the container in the iterators because iterators must ++ // remain valid when the container is moved. ++ // Note: we could derive this pointer from the control pointer, but it makes ++ // the code more complicated, and there's a benefit in having the sizes of ++ // raw_hash_set in sanitizer mode and non-sanitizer mode a bit more different, ++ // which is that tests are less likely to rely on the size remaining the same. ++ GenerationType* generation_ = EmptyGeneration(); ++}; ++ ++class CommonFieldsGenerationInfoDisabled { ++ public: ++ CommonFieldsGenerationInfoDisabled() = default; ++ CommonFieldsGenerationInfoDisabled(CommonFieldsGenerationInfoDisabled&&) = ++ default; ++ CommonFieldsGenerationInfoDisabled& operator=( ++ CommonFieldsGenerationInfoDisabled&&) = default; ++ ++ bool should_rehash_for_bug_detection_on_insert(size_t) const { return false; } ++ bool should_rehash_for_bug_detection_on_move(size_t) const { return false; } ++ void maybe_increment_generation_on_insert() {} ++ void increment_generation() {} ++ void reset_reserved_growth(size_t, size_t) {} ++ size_t reserved_growth() const { return 0; } ++ void set_reserved_growth(size_t) {} ++ size_t reservation_size() const { return 0; } ++ void set_reservation_size(size_t) {} ++ GenerationType generation() const { return 0; } ++ void set_generation(GenerationType) {} ++ GenerationType* generation_ptr() const { return nullptr; } ++ void set_generation_ptr(GenerationType*) {} ++}; ++ ++class HashSetIteratorGenerationInfoEnabled { ++ public: ++ HashSetIteratorGenerationInfoEnabled() = default; ++ explicit HashSetIteratorGenerationInfoEnabled( ++ const GenerationType* generation_ptr) ++ : generation_ptr_(generation_ptr), generation_(*generation_ptr) {} ++ ++ GenerationType generation() const { return generation_; } ++ void reset_generation() { generation_ = *generation_ptr_; } ++ const GenerationType* generation_ptr() const { return generation_ptr_; } ++ void set_generation_ptr(const GenerationType* ptr) { generation_ptr_ = ptr; } ++ ++ private: ++ const GenerationType* generation_ptr_ = EmptyGeneration(); ++ GenerationType generation_ = *generation_ptr_; ++}; ++ ++class HashSetIteratorGenerationInfoDisabled { ++ public: ++ HashSetIteratorGenerationInfoDisabled() = default; ++ explicit HashSetIteratorGenerationInfoDisabled(const GenerationType*) {} ++ ++ GenerationType generation() const { return 0; } ++ void reset_generation() {} ++ const GenerationType* generation_ptr() const { return nullptr; } ++ void set_generation_ptr(const GenerationType*) {} ++}; ++ ++#ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS ++using CommonFieldsGenerationInfo = CommonFieldsGenerationInfoEnabled; ++using HashSetIteratorGenerationInfo = HashSetIteratorGenerationInfoEnabled; ++#else ++using CommonFieldsGenerationInfo = CommonFieldsGenerationInfoDisabled; ++using HashSetIteratorGenerationInfo = HashSetIteratorGenerationInfoDisabled; ++#endif ++ ++// Stored the information regarding number of slots we can still fill ++// without needing to rehash. ++// ++// We want to ensure sufficient number of empty slots in the table in order ++// to keep probe sequences relatively short. Empty slot in the probe group ++// is required to stop probing. ++// ++// Tombstones (kDeleted slots) are not included in the growth capacity, ++// because we'd like to rehash when the table is filled with tombstones and/or ++// full slots. ++// ++// GrowthInfo also stores a bit that encodes whether table may have any ++// deleted slots. ++// Most of the tables (>95%) have no deleted slots, so some functions can ++// be more efficient with this information. ++// ++// Callers can also force a rehash via the standard `rehash(0)`, ++// which will recompute this value as a side-effect. ++// ++// See also `CapacityToGrowth()`. ++class GrowthInfo { ++ public: ++ // Leaves data member uninitialized. ++ GrowthInfo() = default; ++ ++ // Initializes the GrowthInfo assuming we can grow `growth_left` elements ++ // and there are no kDeleted slots in the table. ++ void InitGrowthLeftNoDeleted(size_t growth_left) { ++ growth_left_info_ = growth_left; ++ } ++ ++ // Overwrites single full slot with an empty slot. ++ void OverwriteFullAsEmpty() { ++growth_left_info_; } ++ ++ // Overwrites single empty slot with a full slot. ++ void OverwriteEmptyAsFull() { ++ ABSL_SWISSTABLE_ASSERT(GetGrowthLeft() > 0); ++ --growth_left_info_; ++ } ++ ++ // Overwrites several empty slots with full slots. ++ void OverwriteManyEmptyAsFull(size_t count) { ++ ABSL_SWISSTABLE_ASSERT(GetGrowthLeft() >= count); ++ growth_left_info_ -= count; ++ } ++ ++ // Overwrites specified control element with full slot. ++ void OverwriteControlAsFull(ctrl_t ctrl) { ++ ABSL_SWISSTABLE_ASSERT(GetGrowthLeft() >= ++ static_cast(IsEmpty(ctrl))); ++ growth_left_info_ -= static_cast(IsEmpty(ctrl)); ++ } ++ ++ // Overwrites single full slot with a deleted slot. ++ void OverwriteFullAsDeleted() { growth_left_info_ |= kDeletedBit; } ++ ++ // Returns true if table satisfies two properties: ++ // 1. Guaranteed to have no kDeleted slots. ++ // 2. There is a place for at least one element to grow. ++ bool HasNoDeletedAndGrowthLeft() const { ++ return static_cast>(growth_left_info_) > 0; ++ } ++ ++ // Returns true if the table satisfies two properties: ++ // 1. Guaranteed to have no kDeleted slots. ++ // 2. There is no growth left. ++ bool HasNoGrowthLeftAndNoDeleted() const { return growth_left_info_ == 0; } ++ ++ // Returns true if GetGrowthLeft() == 0, but must be called only if ++ // HasNoDeleted() is false. It is slightly more efficient. ++ bool HasNoGrowthLeftAssumingMayHaveDeleted() const { ++ ABSL_SWISSTABLE_ASSERT(!HasNoDeleted()); ++ return growth_left_info_ == kDeletedBit; ++ } ++ ++ // Returns true if table guaranteed to have no kDeleted slots. ++ bool HasNoDeleted() const { ++ return static_cast>(growth_left_info_) >= 0; ++ } ++ ++ // Returns the number of elements left to grow. ++ size_t GetGrowthLeft() const { return growth_left_info_ & kGrowthLeftMask; } ++ ++ private: ++ static constexpr size_t kGrowthLeftMask = ((~size_t{}) >> 1); ++ static constexpr size_t kDeletedBit = ~kGrowthLeftMask; ++ // Topmost bit signal whenever there are deleted slots. ++ size_t growth_left_info_; ++}; ++ ++static_assert(sizeof(GrowthInfo) == sizeof(size_t), ""); ++static_assert(alignof(GrowthInfo) == alignof(size_t), ""); ++ ++// Returns whether `n` is a valid capacity (i.e., number of slots). ++// ++// A valid capacity is a non-zero integer `2^m - 1`. ++constexpr bool IsValidCapacity(size_t n) { return ((n + 1) & n) == 0 && n > 0; } ++ ++// Whether a table is small enough that we don't need to hash any keys. ++constexpr bool IsSmallCapacity(size_t capacity) { return capacity <= 1; } ++ ++// Returns the number of "cloned control bytes". ++// ++// This is the number of control bytes that are present both at the beginning ++// of the control byte array and at the end, such that we can create a ++// `Group::kWidth`-width probe window starting from any control byte. ++constexpr size_t NumClonedBytes() { return Group::kWidth - 1; } ++ ++// Returns the number of control bytes including cloned. ++constexpr size_t NumControlBytes(size_t capacity) { ++ return IsSmallCapacity(capacity) ? 0 : capacity + 1 + NumClonedBytes(); ++} ++ ++// Computes the offset from the start of the backing allocation of control. ++// infoz and growth_info are stored at the beginning of the backing array. ++constexpr size_t ControlOffset(bool has_infoz) { ++ return (has_infoz ? sizeof(HashtablezInfoHandle) : 0) + sizeof(GrowthInfo); ++} ++ ++// Returns the offset of the next item after `offset` that is aligned to `align` ++// bytes. `align` must be a power of two. ++constexpr size_t AlignUpTo(size_t offset, size_t align) { ++ return (offset + align - 1) & (~align + 1); ++} ++ ++// Helper class for computing offsets and allocation size of hash set fields. ++class RawHashSetLayout { ++ public: ++ // TODO(b/413062340): maybe don't allocate growth info for capacity 1 tables. ++ // Doing so may require additional branches/complexity so it might not be ++ // worth it. ++ explicit RawHashSetLayout(size_t capacity, size_t slot_size, ++ size_t slot_align, bool has_infoz) ++ : control_offset_(ControlOffset(has_infoz)), ++ generation_offset_(control_offset_ + NumControlBytes(capacity)), ++ slot_offset_( ++ AlignUpTo(generation_offset_ + NumGenerationBytes(), slot_align)), ++ alloc_size_(slot_offset_ + capacity * slot_size) { ++ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity)); ++ ABSL_SWISSTABLE_ASSERT( ++ slot_size <= ++ ((std::numeric_limits::max)() - slot_offset_) / capacity); ++ } ++ ++ // Returns precomputed offset from the start of the backing allocation of ++ // control. ++ size_t control_offset() const { return control_offset_; } ++ ++ // Given the capacity of a table, computes the offset (from the start of the ++ // backing allocation) of the generation counter (if it exists). ++ size_t generation_offset() const { return generation_offset_; } ++ ++ // Given the capacity of a table, computes the offset (from the start of the ++ // backing allocation) at which the slots begin. ++ size_t slot_offset() const { return slot_offset_; } ++ ++ // Given the capacity of a table, computes the total size of the backing ++ // array. ++ size_t alloc_size() const { return alloc_size_; } ++ ++ private: ++ size_t control_offset_; ++ size_t generation_offset_; ++ size_t slot_offset_; ++ size_t alloc_size_; ++}; ++ ++struct HashtableFreeFunctionsAccess; ++ ++// This allows us to work around an uninitialized memory warning when ++// constructing begin() iterators in empty hashtables. ++template ++union MaybeInitializedPtr { ++ T* get() const { ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(p); } ++ void set(T* ptr) { p = ptr; } ++ ++ T* p; ++}; ++ ++struct HeapPtrs { ++ // The control bytes (and, also, a pointer near to the base of the backing ++ // array). ++ // ++ // This contains `capacity + 1 + NumClonedBytes()` entries. ++ // ++ // Note that growth_info is stored immediately before this pointer. ++ // May be uninitialized for small tables. ++ MaybeInitializedPtr control; ++ ++ // The beginning of the slots, located at `SlotOffset()` bytes after ++ // `control`. May be uninitialized for empty tables. ++ // Note: we can't use `slots` because Qt defines "slots" as a macro. ++ MaybeInitializedPtr slot_array; ++}; ++ ++// Returns the maximum size of the SOO slot. ++constexpr size_t MaxSooSlotSize() { return sizeof(HeapPtrs); } ++ ++// Manages the backing array pointers or the SOO slot. When raw_hash_set::is_soo ++// is true, the SOO slot is stored in `soo_data`. Otherwise, we use `heap`. ++union HeapOrSoo { ++ MaybeInitializedPtr& control() { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.control); ++ } ++ MaybeInitializedPtr control() const { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.control); ++ } ++ MaybeInitializedPtr& slot_array() { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.slot_array); ++ } ++ MaybeInitializedPtr slot_array() const { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(heap.slot_array); ++ } ++ void* get_soo_data() { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(soo_data); ++ } ++ const void* get_soo_data() const { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(soo_data); ++ } ++ ++ HeapPtrs heap; ++ unsigned char soo_data[MaxSooSlotSize()]; ++}; ++ ++// Returns a reference to the GrowthInfo object stored immediately before ++// `control`. ++inline GrowthInfo& GetGrowthInfoFromControl(ctrl_t* control) { ++ auto* gl_ptr = reinterpret_cast(control) - 1; ++ ABSL_SWISSTABLE_ASSERT( ++ reinterpret_cast(gl_ptr) % alignof(GrowthInfo) == 0); ++ return *gl_ptr; ++} ++ ++// CommonFields hold the fields in raw_hash_set that do not depend ++// on template parameters. This allows us to conveniently pass all ++// of this state to helper functions as a single argument. ++class CommonFields : public CommonFieldsGenerationInfo { ++ public: ++ explicit CommonFields(soo_tag_t) ++ : capacity_(SooCapacity()), size_(no_seed_empty_tag_t{}) {} ++ explicit CommonFields(full_soo_tag_t) ++ : capacity_(SooCapacity()), size_(full_soo_tag_t{}) {} ++ explicit CommonFields(non_soo_tag_t) ++ : capacity_(0), size_(no_seed_empty_tag_t{}) {} ++ // For use in swapping. ++ explicit CommonFields(uninitialized_tag_t) : size_(uninitialized_tag_t{}) {} ++ ++ // Not copyable ++ CommonFields(const CommonFields&) = delete; ++ CommonFields& operator=(const CommonFields&) = delete; ++ ++ // Copy with guarantee that it is not SOO. ++ CommonFields(non_soo_tag_t, const CommonFields& that) ++ : capacity_(that.capacity_), ++ size_(that.size_), ++ heap_or_soo_(that.heap_or_soo_) { ++ } ++ ++ // Movable ++ CommonFields(CommonFields&& that) = default; ++ CommonFields& operator=(CommonFields&&) = default; ++ ++ template ++ static CommonFields CreateDefault() { ++ return kSooEnabled ? CommonFields{soo_tag_t{}} ++ : CommonFields{non_soo_tag_t{}}; ++ } ++ ++ // The inline data for SOO is written on top of control_/slots_. ++ const void* soo_data() const { return heap_or_soo_.get_soo_data(); } ++ void* soo_data() { return heap_or_soo_.get_soo_data(); } ++ ++ ctrl_t* control() const { ++ ABSL_SWISSTABLE_ASSERT(capacity() > 0); ++ // Assume that the control bytes don't alias `this`. ++ ctrl_t* ctrl = heap_or_soo_.control().get(); ++ [[maybe_unused]] size_t num_control_bytes = NumControlBytes(capacity()); ++ ABSL_ASSUME(reinterpret_cast(ctrl + num_control_bytes) <= ++ reinterpret_cast(this) || ++ reinterpret_cast(this + 1) <= ++ reinterpret_cast(ctrl)); ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN(ctrl); ++ } ++ ++ void set_control(ctrl_t* c) { heap_or_soo_.control().set(c); } ++ ++ // Note: we can't use slots() because Qt defines "slots" as a macro. ++ void* slot_array() const { return heap_or_soo_.slot_array().get(); } ++ MaybeInitializedPtr slots_union() const { ++ return heap_or_soo_.slot_array(); ++ } ++ void set_slots(void* s) { heap_or_soo_.slot_array().set(s); } ++ ++ // The number of filled slots. ++ size_t size() const { return size_.size(); } ++ // Sets the size to zero, but keeps hashinfoz bit and seed. ++ void set_size_to_zero() { size_.set_size_to_zero_keep_metadata(); } ++ void set_empty_soo() { ++ AssertInSooMode(); ++ size_ = HashtableSize(no_seed_empty_tag_t{}); ++ } ++ void set_full_soo() { ++ AssertInSooMode(); ++ size_ = HashtableSize(full_soo_tag_t{}); ++ } ++ void increment_size() { ++ ABSL_SWISSTABLE_ASSERT(size() < capacity()); ++ size_.increment_size(); ++ } ++ void increment_size(size_t n) { ++ ABSL_SWISSTABLE_ASSERT(size() + n <= capacity()); ++ size_.increment_size(n); ++ } ++ void decrement_size() { ++ ABSL_SWISSTABLE_ASSERT(!empty()); ++ size_.decrement_size(); ++ } ++ bool empty() const { return size_.empty(); } ++ ++ // The seed used for the hash function. ++ PerTableSeed seed() const { return size_.seed(); } ++ // Generates a new seed the hash function. ++ // The table will be invalidated if `!empty()` because hash is being changed. ++ // In such cases, we will need to rehash the table. ++ void generate_new_seed(bool has_infoz) { ++ // Note: we can't use has_infoz() here because we set has_infoz later than ++ // we generate the seed. ++ if (ABSL_PREDICT_FALSE(has_infoz)) { ++ size_.set_sampled_seed(); ++ return; ++ } ++ size_.generate_new_seed(); ++ } ++ void set_no_seed_for_testing() { size_.set_no_seed_for_testing(); } ++ ++ // The total number of available slots. ++ size_t capacity() const { return capacity_; } ++ void set_capacity(size_t c) { ++ // We allow setting above the max valid capacity for debugging purposes. ++ ABSL_SWISSTABLE_ASSERT(c == 0 || IsValidCapacity(c) || ++ c > kAboveMaxValidCapacity); ++ capacity_ = c; ++ } ++ bool is_small() const { return IsSmallCapacity(capacity_); } ++ ++ // The number of slots we can still fill without needing to rehash. ++ // This is stored in the heap allocation before the control bytes. ++ // TODO(b/289225379): experiment with moving growth_info back inline to ++ // increase room for SOO. ++ size_t growth_left() const { return growth_info().GetGrowthLeft(); } ++ ++ GrowthInfo& growth_info() { ++ ABSL_SWISSTABLE_ASSERT(!is_small()); ++ return GetGrowthInfoFromControl(control()); ++ } ++ GrowthInfo growth_info() const { ++ return const_cast(this)->growth_info(); ++ } ++ ++ bool has_infoz() const { return size_.has_infoz(); } ++ void set_has_infoz() { ++ ABSL_SWISSTABLE_ASSERT(size_.is_sampled_seed()); ++ size_.set_has_infoz(); ++ } ++ ++ HashtablezInfoHandle* infoz_ptr() const { ++ // growth_info is stored before control bytes. ++ ABSL_SWISSTABLE_ASSERT( ++ reinterpret_cast(control()) % alignof(size_t) == 0); ++ ABSL_SWISSTABLE_ASSERT(has_infoz()); ++ return reinterpret_cast( ++ control() - ControlOffset(/*has_infoz=*/true)); ++ } ++ ++ HashtablezInfoHandle infoz() { ++ return has_infoz() ? *infoz_ptr() : HashtablezInfoHandle(); ++ } ++ void set_infoz(HashtablezInfoHandle infoz) { ++ ABSL_SWISSTABLE_ASSERT(has_infoz()); ++ *infoz_ptr() = infoz; ++ } ++ ++ bool should_rehash_for_bug_detection_on_insert() const { ++ if constexpr (!SwisstableGenerationsEnabled()) { ++ return false; ++ } ++ // As an optimization, we avoid calling ShouldRehashForBugDetection if we ++ // will end up rehashing anyways. ++ if (growth_left() == 0) return false; ++ return CommonFieldsGenerationInfo:: ++ should_rehash_for_bug_detection_on_insert(capacity()); ++ } ++ bool should_rehash_for_bug_detection_on_move() const { ++ return CommonFieldsGenerationInfo::should_rehash_for_bug_detection_on_move( ++ capacity()); ++ } ++ void reset_reserved_growth(size_t reservation) { ++ CommonFieldsGenerationInfo::reset_reserved_growth(reservation, size()); ++ } ++ ++ // The size of the backing array allocation. ++ size_t alloc_size(size_t slot_size, size_t slot_align) const { ++ return RawHashSetLayout(capacity(), slot_size, slot_align, has_infoz()) ++ .alloc_size(); ++ } ++ ++ // Move fields other than heap_or_soo_. ++ void move_non_heap_or_soo_fields(CommonFields& that) { ++ static_cast(*this) = ++ std::move(static_cast(that)); ++ capacity_ = that.capacity_; ++ size_ = that.size_; ++ } ++ ++ // Returns the number of control bytes set to kDeleted. For testing only. ++ size_t TombstonesCount() const { ++ return static_cast( ++ std::count(control(), control() + capacity(), ctrl_t::kDeleted)); ++ } ++ ++ // Helper to enable sanitizer mode validation to protect against reentrant ++ // calls during element constructor/destructor. ++ template ++ void RunWithReentrancyGuard(F f) { ++#ifdef NDEBUG ++ f(); ++ return; ++#endif ++ const size_t cap = capacity(); ++ set_capacity(InvalidCapacity::kReentrance); ++ f(); ++ set_capacity(cap); ++ } ++ ++ private: ++ // We store the has_infoz bit in the lowest bit of size_. ++ static constexpr size_t HasInfozShift() { return 1; } ++ static constexpr size_t HasInfozMask() { ++ return (size_t{1} << HasInfozShift()) - 1; ++ } ++ ++ // We can't assert that SOO is enabled because we don't have SooEnabled(), but ++ // we assert what we can. ++ void AssertInSooMode() const { ++ ABSL_SWISSTABLE_ASSERT(capacity() == SooCapacity()); ++ ABSL_SWISSTABLE_ASSERT(!has_infoz()); ++ } ++ ++ // The number of slots in the backing array. This is always 2^N-1 for an ++ // integer N. NOTE: we tried experimenting with compressing the capacity and ++ // storing it together with size_: (a) using 6 bits to store the corresponding ++ // power (N in 2^N-1), and (b) storing 2^N as the most significant bit of ++ // size_ and storing size in the low bits. Both of these experiments were ++ // regressions, presumably because we need capacity to do find operations. ++ size_t capacity_; ++ ++ // TODO(b/289225379): we could put size_ into HeapOrSoo and make capacity_ ++ // encode the size in SOO case. We would be making size()/capacity() more ++ // expensive in order to have more SOO space. ++ HashtableSize size_; ++ ++ // Either the control/slots pointers or the SOO slot. ++ HeapOrSoo heap_or_soo_; ++}; ++ ++template ++class raw_hash_set; ++ ++// Returns the next valid capacity after `n`. ++constexpr size_t NextCapacity(size_t n) { ++ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(n) || n == 0); ++ return n * 2 + 1; ++} ++ ++// Returns the previous valid capacity before `n`. ++constexpr size_t PreviousCapacity(size_t n) { ++ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(n)); ++ return n / 2; ++} ++ ++// Applies the following mapping to every byte in the control array: ++// * kDeleted -> kEmpty ++// * kEmpty -> kEmpty ++// * _ -> kDeleted ++// PRECONDITION: ++// IsValidCapacity(capacity) ++// ctrl[capacity] == ctrl_t::kSentinel ++// ctrl[i] != ctrl_t::kSentinel for all i < capacity ++void ConvertDeletedToEmptyAndFullToDeleted(ctrl_t* ctrl, size_t capacity); ++ ++// Converts `n` into the next valid capacity, per `IsValidCapacity`. ++constexpr size_t NormalizeCapacity(size_t n) { ++ return n ? ~size_t{} >> countl_zero(n) : 1; ++} ++ ++// General notes on capacity/growth methods below: ++// - We use 7/8th as maximum load factor. For 16-wide groups, that gives an ++// average of two empty slots per group. ++// - For (capacity+1) >= Group::kWidth, growth is 7/8*capacity. ++// - For (capacity+1) < Group::kWidth, growth == capacity. In this case, we ++// never need to probe (the whole table fits in one group) so we don't need a ++// load factor less than 1. ++ ++// Given `capacity`, applies the load factor; i.e., it returns the maximum ++// number of values we should put into the table before a resizing rehash. ++constexpr size_t CapacityToGrowth(size_t capacity) { ++ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity)); ++ // `capacity*7/8` ++ if (Group::kWidth == 8 && capacity == 7) { ++ // x-x/8 does not work when x==7. ++ return 6; ++ } ++ return capacity - capacity / 8; ++} ++ ++// Given `size`, "unapplies" the load factor to find how large the capacity ++// should be to stay within the load factor. ++// ++// For size == 0, returns 0. ++// For other values, returns the same as `NormalizeCapacity(size*8/7)`. ++constexpr size_t SizeToCapacity(size_t size) { ++ if (size == 0) { ++ return 0; ++ } ++ // The minimum possible capacity is NormalizeCapacity(size). ++ // Shifting right `~size_t{}` by `leading_zeros` yields ++ // NormalizeCapacity(size). ++ int leading_zeros = absl::countl_zero(size); ++ constexpr size_t kLast3Bits = size_t{7} << (sizeof(size_t) * 8 - 3); ++ // max_size_for_next_capacity = max_load_factor * next_capacity ++ // = (7/8) * (~size_t{} >> leading_zeros) ++ // = (7/8*~size_t{}) >> leading_zeros ++ // = kLast3Bits >> leading_zeros ++ size_t max_size_for_next_capacity = kLast3Bits >> leading_zeros; ++ // Decrease shift if size is too big for the minimum capacity. ++ leading_zeros -= static_cast(size > max_size_for_next_capacity); ++ if constexpr (Group::kWidth == 8) { ++ // Formula doesn't work when size==7 for 8-wide groups. ++ leading_zeros -= (size == 7); ++ } ++ return (~size_t{}) >> leading_zeros; ++} ++ ++template ++size_t SelectBucketCountForIterRange(InputIter first, InputIter last, ++ size_t bucket_count) { ++ if (bucket_count != 0) { ++ return bucket_count; ++ } ++ if (base_internal::IsAtLeastIterator()) { ++ return SizeToCapacity(static_cast(std::distance(first, last))); ++ } ++ return 0; ++} ++ ++constexpr bool SwisstableDebugEnabled() { ++#if defined(ABSL_SWISSTABLE_ENABLE_GENERATIONS) || \ ++ ABSL_OPTION_HARDENED == 1 || !defined(NDEBUG) ++ return true; ++#else ++ return false; ++#endif ++} ++ ++inline void AssertIsFull(const ctrl_t* ctrl, GenerationType generation, ++ const GenerationType* generation_ptr, ++ const char* operation) { ++ if (!SwisstableDebugEnabled()) return; ++ // `SwisstableDebugEnabled()` is also true for release builds with hardening ++ // enabled. To minimize their impact in those builds: ++ // - use `ABSL_PREDICT_FALSE()` to provide a compiler hint for code layout ++ // - use `ABSL_RAW_LOG()` with a format string to reduce code size and improve ++ // the chances that the hot paths will be inlined. ++ if (ABSL_PREDICT_FALSE(ctrl == nullptr)) { ++ ABSL_RAW_LOG(FATAL, "%s called on end() iterator.", operation); ++ } ++ if (ABSL_PREDICT_FALSE(ctrl == DefaultIterControl())) { ++ ABSL_RAW_LOG(FATAL, "%s called on default-constructed iterator.", ++ operation); ++ } ++ if (SwisstableGenerationsEnabled()) { ++ if (ABSL_PREDICT_FALSE(generation != *generation_ptr)) { ++ ABSL_RAW_LOG(FATAL, ++ "%s called on invalid iterator. The table could have " ++ "rehashed or moved since this iterator was initialized.", ++ operation); ++ } ++ if (ABSL_PREDICT_FALSE(!IsFull(*ctrl))) { ++ ABSL_RAW_LOG( ++ FATAL, ++ "%s called on invalid iterator. The element was likely erased.", ++ operation); ++ } ++ } else { ++ if (ABSL_PREDICT_FALSE(!IsFull(*ctrl))) { ++ ABSL_RAW_LOG( ++ FATAL, ++ "%s called on invalid iterator. The element might have been erased " ++ "or the table might have rehashed. Consider running with " ++ "--config=asan to diagnose rehashing issues.", ++ operation); ++ } ++ } ++} ++ ++// Note that for comparisons, null/end iterators are valid. ++inline void AssertIsValidForComparison(const ctrl_t* ctrl, ++ GenerationType generation, ++ const GenerationType* generation_ptr) { ++ if (!SwisstableDebugEnabled()) return; ++ const bool ctrl_is_valid_for_comparison = ++ ctrl == nullptr || ctrl == DefaultIterControl() || IsFull(*ctrl); ++ if (SwisstableGenerationsEnabled()) { ++ if (ABSL_PREDICT_FALSE(generation != *generation_ptr)) { ++ ABSL_RAW_LOG(FATAL, ++ "Invalid iterator comparison. The table could have rehashed " ++ "or moved since this iterator was initialized."); ++ } ++ if (ABSL_PREDICT_FALSE(!ctrl_is_valid_for_comparison)) { ++ ABSL_RAW_LOG( ++ FATAL, "Invalid iterator comparison. The element was likely erased."); ++ } ++ } else { ++ ABSL_HARDENING_ASSERT_SLOW( ++ ctrl_is_valid_for_comparison && ++ "Invalid iterator comparison. The element might have been erased or " ++ "the table might have rehashed. Consider running with --config=asan to " ++ "diagnose rehashing issues."); ++ } ++} ++ ++// If the two iterators come from the same container, then their pointers will ++// interleave such that ctrl_a <= ctrl_b < slot_a <= slot_b or vice/versa. ++// Note: we take slots by reference so that it's not UB if they're uninitialized ++// as long as we don't read them (when ctrl is null). ++inline bool AreItersFromSameContainer(const ctrl_t* ctrl_a, ++ const ctrl_t* ctrl_b, ++ const void* const& slot_a, ++ const void* const& slot_b) { ++ // If either control byte is null, then we can't tell. ++ if (ctrl_a == nullptr || ctrl_b == nullptr) return true; ++ const bool a_is_soo = IsSooControl(ctrl_a); ++ if (a_is_soo != IsSooControl(ctrl_b)) return false; ++ if (a_is_soo) return slot_a == slot_b; ++ ++ const void* low_slot = slot_a; ++ const void* hi_slot = slot_b; ++ if (ctrl_a > ctrl_b) { ++ std::swap(ctrl_a, ctrl_b); ++ std::swap(low_slot, hi_slot); ++ } ++ return ctrl_b < low_slot && low_slot <= hi_slot; ++} ++ ++// Asserts that two iterators come from the same container. ++// Note: we take slots by reference so that it's not UB if they're uninitialized ++// as long as we don't read them (when ctrl is null). ++inline void AssertSameContainer(const ctrl_t* ctrl_a, const ctrl_t* ctrl_b, ++ const void* const& slot_a, ++ const void* const& slot_b, ++ const GenerationType* generation_ptr_a, ++ const GenerationType* generation_ptr_b) { ++ if (!SwisstableDebugEnabled()) return; ++ // `SwisstableDebugEnabled()` is also true for release builds with hardening ++ // enabled. To minimize their impact in those builds: ++ // - use `ABSL_PREDICT_FALSE()` to provide a compiler hint for code layout ++ // - use `ABSL_RAW_LOG()` with a format string to reduce code size and improve ++ // the chances that the hot paths will be inlined. ++ ++ // fail_if(is_invalid, message) crashes when is_invalid is true and provides ++ // an error message based on `message`. ++ const auto fail_if = [](bool is_invalid, const char* message) { ++ if (ABSL_PREDICT_FALSE(is_invalid)) { ++ ABSL_RAW_LOG(FATAL, "Invalid iterator comparison. %s", message); ++ } ++ }; ++ ++ const bool a_is_default = ctrl_a == DefaultIterControl(); ++ const bool b_is_default = ctrl_b == DefaultIterControl(); ++ if (a_is_default && b_is_default) return; ++ fail_if(a_is_default != b_is_default, ++ "Comparing default-constructed hashtable iterator with a " ++ "non-default-constructed hashtable iterator."); ++ ++ if (SwisstableGenerationsEnabled()) { ++ if (ABSL_PREDICT_TRUE(generation_ptr_a == generation_ptr_b)) return; ++ const bool a_is_empty = IsEmptyGeneration(generation_ptr_a); ++ const bool b_is_empty = IsEmptyGeneration(generation_ptr_b); ++ fail_if(a_is_empty != b_is_empty, ++ "Comparing an iterator from an empty hashtable with an iterator " ++ "from a non-empty hashtable."); ++ fail_if(a_is_empty && b_is_empty, ++ "Comparing iterators from different empty hashtables."); ++ ++ const bool a_is_end = ctrl_a == nullptr; ++ const bool b_is_end = ctrl_b == nullptr; ++ fail_if(a_is_end || b_is_end, ++ "Comparing iterator with an end() iterator from a different " ++ "hashtable."); ++ fail_if(true, "Comparing non-end() iterators from different hashtables."); ++ } else { ++ ABSL_HARDENING_ASSERT_SLOW( ++ AreItersFromSameContainer(ctrl_a, ctrl_b, slot_a, slot_b) && ++ "Invalid iterator comparison. The iterators may be from different " ++ "containers or the container might have rehashed or moved. Consider " ++ "running with --config=asan to diagnose issues."); ++ } ++} ++ ++struct FindInfo { ++ size_t offset; ++ size_t probe_length; ++}; ++ ++// Whether a table fits entirely into a probing group. ++// Arbitrary order of elements in such tables is correct. ++constexpr bool is_single_group(size_t capacity) { ++ return capacity <= Group::kWidth; ++} ++ ++// Begins a probing operation on `common.control`, using `hash`. ++inline probe_seq probe_h1(size_t capacity, size_t h1) { ++ return probe_seq(h1, capacity); ++} ++inline probe_seq probe(size_t capacity, size_t hash) { ++ return probe_h1(capacity, H1(hash)); ++} ++inline probe_seq probe(const CommonFields& common, size_t hash) { ++ return probe(common.capacity(), hash); ++} ++ ++constexpr size_t kProbedElementIndexSentinel = ~size_t{}; ++ ++// Implementation detail of transfer_unprobed_elements_to_next_capacity_fn. ++// Tries to find the new index for an element whose hash corresponds to ++// `h1` for growth to the next capacity. ++// Returns kProbedElementIndexSentinel if full probing is required. ++// ++// If element is located in the first probing group in the table before growth, ++// returns one of two positions: `old_index` or `old_index + old_capacity + 1`. ++// ++// Otherwise, we will try to insert it into the first probe group of the new ++// table. We only attempt to do so if the first probe group is already ++// initialized. ++template ++inline size_t TryFindNewIndexWithoutProbing(size_t h1, size_t old_index, ++ size_t old_capacity, ++ ctrl_t* new_ctrl, ++ size_t new_capacity) { ++ size_t index_diff = old_index - h1; ++ // The first probe group starts with h1 & capacity. ++ // All following groups start at (h1 + Group::kWidth * K) & capacity. ++ // We can find an index within the floating group as index_diff modulo ++ // Group::kWidth. ++ // Both old and new capacity are larger than Group::kWidth so we can avoid ++ // computing `& capacity`. ++ size_t in_floating_group_index = index_diff & (Group::kWidth - 1); ++ // By subtracting we will get the difference between the first probe group ++ // and the probe group corresponding to old_index. ++ index_diff -= in_floating_group_index; ++ if (ABSL_PREDICT_TRUE((index_diff & old_capacity) == 0)) { ++ size_t new_index = (h1 + in_floating_group_index) & new_capacity; ++ ABSL_ASSUME(new_index != kProbedElementIndexSentinel); ++ return new_index; ++ } ++ ABSL_SWISSTABLE_ASSERT(((old_index - h1) & old_capacity) >= Group::kWidth); ++ // Try to insert element into the first probe group. ++ // new_ctrl is not yet fully initialized so we can't use regular search via ++ // find_first_non_full. ++ ++ // We can search in the first probe group only if it is located in already ++ // initialized part of the table. ++ if (ABSL_PREDICT_FALSE((h1 & old_capacity) >= old_index)) { ++ return kProbedElementIndexSentinel; ++ } ++ size_t offset = h1 & new_capacity; ++ Group new_g(new_ctrl + offset); ++ if (auto mask = new_g.MaskNonFull(); ABSL_PREDICT_TRUE(mask)) { ++ size_t result = offset + mask.LowestBitSet(); ++ ABSL_ASSUME(result != kProbedElementIndexSentinel); ++ return result; ++ } ++ return kProbedElementIndexSentinel; ++} ++ ++// Extern template for inline function keeps possibility of inlining. ++// When compiler decided to not inline, no symbols will be added to the ++// corresponding translation unit. ++extern template size_t TryFindNewIndexWithoutProbing(size_t h1, ++ size_t old_index, ++ size_t old_capacity, ++ ctrl_t* new_ctrl, ++ size_t new_capacity); ++ ++// Sets sanitizer poisoning for slot corresponding to control byte being set. ++inline void DoSanitizeOnSetCtrl(const CommonFields& c, size_t i, ctrl_t h, ++ size_t slot_size) { ++ ABSL_SWISSTABLE_ASSERT(i < c.capacity()); ++ auto* slot_i = static_cast(c.slot_array()) + i * slot_size; ++ if (IsFull(h)) { ++ SanitizerUnpoisonMemoryRegion(slot_i, slot_size); ++ } else { ++ SanitizerPoisonMemoryRegion(slot_i, slot_size); ++ } ++} ++ ++// Sets `ctrl[i]` to `h`. ++// ++// Unlike setting it directly, this function will perform bounds checks and ++// mirror the value to the cloned tail if necessary. ++inline void SetCtrl(const CommonFields& c, size_t i, ctrl_t h, ++ size_t slot_size) { ++ ABSL_SWISSTABLE_ASSERT(!c.is_small()); ++ DoSanitizeOnSetCtrl(c, i, h, slot_size); ++ ctrl_t* ctrl = c.control(); ++ ctrl[i] = h; ++ ctrl[((i - NumClonedBytes()) & c.capacity()) + ++ (NumClonedBytes() & c.capacity())] = h; ++} ++// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. ++inline void SetCtrl(const CommonFields& c, size_t i, h2_t h, size_t slot_size) { ++ SetCtrl(c, i, static_cast(h), slot_size); ++} ++ ++// Like SetCtrl, but in a single group table, we can save some operations when ++// setting the cloned control byte. ++inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, ctrl_t h, ++ size_t slot_size) { ++ ABSL_SWISSTABLE_ASSERT(!c.is_small()); ++ ABSL_SWISSTABLE_ASSERT(is_single_group(c.capacity())); ++ DoSanitizeOnSetCtrl(c, i, h, slot_size); ++ ctrl_t* ctrl = c.control(); ++ ctrl[i] = h; ++ ctrl[i + c.capacity() + 1] = h; ++} ++// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. ++inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, h2_t h, ++ size_t slot_size) { ++ SetCtrlInSingleGroupTable(c, i, static_cast(h), slot_size); ++} ++ ++// Like SetCtrl, but in a table with capacity >= Group::kWidth - 1, ++// we can save some operations when setting the cloned control byte. ++inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, ctrl_t h, ++ size_t slot_size) { ++ ABSL_SWISSTABLE_ASSERT(c.capacity() >= Group::kWidth - 1); ++ DoSanitizeOnSetCtrl(c, i, h, slot_size); ++ ctrl_t* ctrl = c.control(); ++ ctrl[i] = h; ++ ctrl[((i - NumClonedBytes()) & c.capacity()) + NumClonedBytes()] = h; ++} ++// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. ++inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, h2_t h, ++ size_t slot_size) { ++ SetCtrlInLargeTable(c, i, static_cast(h), slot_size); ++} ++ ++// growth_info (which is a size_t) is stored with the backing array. ++constexpr size_t BackingArrayAlignment(size_t align_of_slot) { ++ return (std::max)(align_of_slot, alignof(GrowthInfo)); ++} ++ ++// Returns the address of the ith slot in slots where each slot occupies ++// slot_size. ++inline void* SlotAddress(void* slot_array, size_t slot, size_t slot_size) { ++ return static_cast(static_cast(slot_array) + ++ (slot * slot_size)); ++} ++ ++// Iterates over all full slots and calls `cb(const ctrl_t*, void*)`. ++// No insertion to the table is allowed during `cb` call. ++// Erasure is allowed only for the element passed to the callback. ++// The table must not be in SOO mode. ++void IterateOverFullSlots(const CommonFields& c, size_t slot_size, ++ absl::FunctionRef cb); ++ ++template ++constexpr bool ShouldSampleHashtablezInfoForAlloc() { ++ // Folks with custom allocators often make unwarranted assumptions about the ++ // behavior of their classes vis-a-vis trivial destructability and what ++ // calls they will or won't make. Avoid sampling for people with custom ++ // allocators to get us out of this mess. This is not a hard guarantee but ++ // a workaround while we plan the exact guarantee we want to provide. ++ return std::is_same_v>; ++} ++ ++// Allocates `n` bytes for a backing array. ++template ++ABSL_ATTRIBUTE_NOINLINE void* AllocateBackingArray(void* alloc, size_t n) { ++ return Allocate(static_cast(alloc), n); ++} ++ ++template ++ABSL_ATTRIBUTE_NOINLINE void DeallocateBackingArray( ++ void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, ++ size_t slot_align, bool had_infoz) { ++ RawHashSetLayout layout(capacity, slot_size, slot_align, had_infoz); ++ void* backing_array = ctrl - layout.control_offset(); ++ // Unpoison before returning the memory to the allocator. ++ SanitizerUnpoisonMemoryRegion(backing_array, layout.alloc_size()); ++ Deallocate(static_cast(alloc), backing_array, ++ layout.alloc_size()); ++} ++ ++// PolicyFunctions bundles together some information for a particular ++// raw_hash_set instantiation. This information is passed to ++// type-erased functions that want to do small amounts of type-specific ++// work. ++struct PolicyFunctions { ++ uint32_t key_size; ++ uint32_t value_size; ++ uint32_t slot_size; ++ uint16_t slot_align; ++ bool soo_enabled; ++ bool is_hashtablez_eligible; ++ ++ // Returns the pointer to the hash function stored in the set. ++ void* (*hash_fn)(CommonFields& common); ++ ++ // Returns the hash of the pointed-to slot. ++ HashSlotFn hash_slot; ++ ++ // Transfers the contents of `count` slots from src_slot to dst_slot. ++ // We use ability to transfer several slots in single group table growth. ++ void (*transfer_n)(void* set, void* dst_slot, void* src_slot, size_t count); ++ ++ // Returns the pointer to the CharAlloc stored in the set. ++ void* (*get_char_alloc)(CommonFields& common); ++ ++ // Allocates n bytes for the backing store for common. ++ void* (*alloc)(void* alloc, size_t n); ++ ++ // Deallocates the backing store from common. ++ void (*dealloc)(void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, ++ size_t slot_align, bool had_infoz); ++ ++ // Implementation detail of GrowToNextCapacity. ++ // Iterates over all full slots and transfers unprobed elements. ++ // Initializes the new control bytes except mirrored bytes and kSentinel. ++ // Caller must finish the initialization. ++ // All slots corresponding to the full control bytes are transferred. ++ // Probed elements are reported by `encode_probed_element` callback. ++ // encode_probed_element may overwrite old_ctrl buffer till source_offset. ++ // Different encoding is used depending on the capacity of the table. ++ // See ProbedItem*Bytes classes for details. ++ void (*transfer_unprobed_elements_to_next_capacity)( ++ CommonFields& common, const ctrl_t* old_ctrl, void* old_slots, ++ // TODO(b/382423690): Try to use absl::FunctionRef here. ++ void* probed_storage, ++ void (*encode_probed_element)(void* probed_storage, h2_t h2, ++ size_t source_offset, size_t h1)); ++ ++ uint8_t soo_capacity() const { ++ return static_cast(soo_enabled ? SooCapacity() : 0); ++ } ++}; ++ ++// Returns the maximum valid size for a table with 1-byte slots. ++// This function is an utility shared by MaxValidSize and IsAboveValidSize. ++// Template parameter is only used to enable testing. ++template ++constexpr size_t MaxValidSizeFor1ByteSlot() { ++ if constexpr (kSizeOfSizeT == 8) { ++ return CapacityToGrowth( ++ static_cast(uint64_t{1} << HashtableSize::kSizeBitCount) - 1); ++ } else { ++ static_assert(kSizeOfSizeT == 4); ++ return CapacityToGrowth((size_t{1} << (kSizeOfSizeT * 8 - 2)) - 1); ++ } ++} ++ ++// Returns the maximum valid size for a table with provided slot size. ++// Template parameter is only used to enable testing. ++template ++constexpr size_t MaxValidSize(size_t slot_size) { ++ if constexpr (kSizeOfSizeT == 8) { ++ // For small slot sizes we are limited by HashtableSize::kSizeBitCount. ++ if (slot_size < size_t{1} << (64 - HashtableSize::kSizeBitCount)) { ++ return MaxValidSizeFor1ByteSlot(); ++ } ++ return (size_t{1} << (kSizeOfSizeT * 8 - 2)) / slot_size; ++ } else { ++ return MaxValidSizeFor1ByteSlot() / slot_size; ++ } ++} ++ ++// Returns true if size is larger than the maximum valid size. ++// It is an optimization to avoid the division operation in the common case. ++// Template parameter is only used to enable testing. ++template ++constexpr bool IsAboveValidSize(size_t size, size_t slot_size) { ++ if constexpr (kSizeOfSizeT == 8) { ++ // For small slot sizes we are limited by HashtableSize::kSizeBitCount. ++ if (ABSL_PREDICT_TRUE(slot_size < ++ (size_t{1} << (64 - HashtableSize::kSizeBitCount)))) { ++ return size > MaxValidSizeFor1ByteSlot(); ++ } ++ return size > MaxValidSize(slot_size); ++ } else { ++ return uint64_t{size} * slot_size > ++ MaxValidSizeFor1ByteSlot(); ++ } ++} ++ ++// Returns the index of the SOO slot when growing from SOO to non-SOO in a ++// single group. See also InitializeSmallControlBytesAfterSoo(). It's important ++// to use index 1 so that when resizing from capacity 1 to 3, we can still have ++// random iteration order between the first two inserted elements. ++// I.e. it allows inserting the second element at either index 0 or 2. ++constexpr size_t SooSlotIndex() { return 1; } ++ ++// Maximum capacity for the algorithm for small table after SOO. ++// Note that typical size after SOO is 3, but we allow up to 7. ++// Allowing till 16 would require additional store that can be avoided. ++constexpr size_t MaxSmallAfterSooCapacity() { return 7; } ++ ++// Type erased version of raw_hash_set::reserve. ++// Requires: `new_size > policy.soo_capacity`. ++void ReserveTableToFitNewSize(CommonFields& common, ++ const PolicyFunctions& policy, size_t new_size); ++ ++// Resizes empty non-allocated table to the next valid capacity after ++// `bucket_count`. Requires: ++// 1. `c.capacity() == policy.soo_capacity`. ++// 2. `c.empty()`. ++// 3. `new_size > policy.soo_capacity`. ++// The table will be attempted to be sampled. ++void ReserveEmptyNonAllocatedTableToFitBucketCount( ++ CommonFields& common, const PolicyFunctions& policy, size_t bucket_count); ++ ++// Type erased version of raw_hash_set::rehash. ++void Rehash(CommonFields& common, const PolicyFunctions& policy, size_t n); ++ ++// Type erased version of copy constructor. ++void Copy(CommonFields& common, const PolicyFunctions& policy, ++ const CommonFields& other, ++ absl::FunctionRef copy_fn); ++ ++// Returns the optimal size for memcpy when transferring SOO slot. ++// Otherwise, returns the optimal size for memcpy SOO slot transfer ++// to SooSlotIndex(). ++// At the destination we are allowed to copy upto twice more bytes, ++// because there is at least one more slot after SooSlotIndex(). ++// The result must not exceed MaxSooSlotSize(). ++// Some of the cases are merged to minimize the number of function ++// instantiations. ++constexpr size_t OptimalMemcpySizeForSooSlotTransfer( ++ size_t slot_size, size_t max_soo_slot_size = MaxSooSlotSize()) { ++ static_assert(MaxSooSlotSize() >= 8, "unexpectedly small SOO slot size"); ++ if (slot_size == 1) { ++ return 1; ++ } ++ if (slot_size <= 3) { ++ return 4; ++ } ++ // We are merging 4 and 8 into one case because we expect them to be the ++ // hottest cases. Copying 8 bytes is as fast on common architectures. ++ if (slot_size <= 8) { ++ return 8; ++ } ++ if (max_soo_slot_size <= 16) { ++ return max_soo_slot_size; ++ } ++ if (slot_size <= 16) { ++ return 16; ++ } ++ if (max_soo_slot_size <= 24) { ++ return max_soo_slot_size; ++ } ++ static_assert(MaxSooSlotSize() <= 24, "unexpectedly large SOO slot size"); ++ return 24; ++} ++ ++// Resizes SOO table to the NextCapacity(SooCapacity()) and prepares insert for ++// the given new_hash. Returns the offset of the new element. ++// All possible template combinations are defined in cc file to improve ++// compilation time. ++template ++size_t GrowSooTableToNextCapacityAndPrepareInsert( ++ CommonFields& common, const PolicyFunctions& policy, ++ absl::FunctionRef get_hash, bool force_sampling); ++ ++// PrepareInsert for small tables (is_small()==true). ++// Returns the new control and the new slot. ++// Hash is only computed if the table is sampled or grew to large size ++// (is_small()==false). ++std::pair PrepareInsertSmallNonSoo( ++ CommonFields& common, const PolicyFunctions& policy, ++ absl::FunctionRef get_hash); ++ ++// Resizes table with allocated slots and change the table seed. ++// Tables with SOO enabled must have capacity > policy.soo_capacity. ++// No sampling will be performed since table is already allocated. ++void ResizeAllocatedTableWithSeedChange(CommonFields& common, ++ const PolicyFunctions& policy, ++ size_t new_capacity); ++ ++// ClearBackingArray clears the backing array, either modifying it in place, ++// or creating a new one based on the value of "reuse". ++// REQUIRES: c.capacity > 0 ++void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy, ++ void* alloc, bool reuse, bool soo_enabled); ++ ++// Type-erased versions of raw_hash_set::erase_meta_only_{small,large}. ++void EraseMetaOnlySmall(CommonFields& c, bool soo_enabled, size_t slot_size); ++void EraseMetaOnlyLarge(CommonFields& c, const ctrl_t* ctrl, size_t slot_size); ++ ++// For trivially relocatable types we use memcpy directly. This allows us to ++// share the same function body for raw_hash_set instantiations that have the ++// same slot size as long as they are relocatable. ++// Separate function for relocating single slot cause significant binary bloat. ++template ++ABSL_ATTRIBUTE_NOINLINE void TransferNRelocatable(void*, void* dst, void* src, ++ size_t count) { ++ // TODO(b/382423690): Experiment with making specialization for power of 2 and ++ // non power of 2. This would require passing the size of the slot. ++ memcpy(dst, src, SizeOfSlot * count); ++} ++ ++// Returns a pointer to `common`. This is used to implement type erased ++// raw_hash_set::get_hash_ref_fn and raw_hash_set::get_alloc_ref_fn for the ++// empty class cases. ++void* GetRefForEmptyClass(CommonFields& common); ++ ++// Given the hash of a value not currently in the table and the first empty ++// slot in the probe sequence, finds a viable slot index to insert it at. ++// ++// In case there's no space left, the table can be resized or rehashed ++// (for tables with deleted slots, see FindInsertPositionWithGrowthOrRehash). ++// ++// In the case of absence of deleted slots and positive growth_left, the element ++// can be inserted in the provided `target` position. ++// ++// When the table has deleted slots (according to GrowthInfo), the target ++// position will be searched one more time using `find_first_non_full`. ++// ++// REQUIRES: `!common.is_small()`. ++// REQUIRES: At least one non-full slot available. ++// REQUIRES: `target` is a valid empty position to insert. ++size_t PrepareInsertLarge(CommonFields& common, const PolicyFunctions& policy, ++ size_t hash, FindInfo target); ++ ++// Same as above, but with generations enabled, we may end up changing the seed, ++// which means we need to be able to recompute the hash. ++size_t PrepareInsertLargeGenerationsEnabled( ++ CommonFields& common, const PolicyFunctions& policy, size_t hash, ++ FindInfo target, absl::FunctionRef recompute_hash); ++ ++// A SwissTable. ++// ++// Policy: a policy defines how to perform different operations on ++// the slots of the hashtable (see hash_policy_traits.h for the full interface ++// of policy). ++// ++// Hash: a (possibly polymorphic) functor that hashes keys of the hashtable. The ++// functor should accept a key and return size_t as hash. For best performance ++// it is important that the hash function provides high entropy across all bits ++// of the hash. ++// ++// Eq: a (possibly polymorphic) functor that compares two keys for equality. It ++// should accept two (of possibly different type) keys and return a bool: true ++// if they are equal, false if they are not. If two keys compare equal, then ++// their hash values as defined by Hash MUST be equal. ++// ++// Allocator: an Allocator ++// [https://en.cppreference.com/w/cpp/named_req/Allocator] with which ++// the storage of the hashtable will be allocated and the elements will be ++// constructed and destroyed. ++template ++class raw_hash_set { ++ using PolicyTraits = hash_policy_traits; ++ using KeyArgImpl = ++ KeyArg::value && IsTransparent::value>; ++ ++ public: ++ using init_type = typename PolicyTraits::init_type; ++ using key_type = typename PolicyTraits::key_type; ++ using allocator_type = Alloc; ++ using size_type = size_t; ++ using difference_type = ptrdiff_t; ++ using hasher = Hash; ++ using key_equal = Eq; ++ using policy_type = Policy; ++ using value_type = typename PolicyTraits::value_type; ++ using reference = value_type&; ++ using const_reference = const value_type&; ++ using pointer = typename absl::allocator_traits< ++ allocator_type>::template rebind_traits::pointer; ++ using const_pointer = typename absl::allocator_traits< ++ allocator_type>::template rebind_traits::const_pointer; ++ ++ private: ++ // Alias used for heterogeneous lookup functions. ++ // `key_arg` evaluates to `K` when the functors are transparent and to ++ // `key_type` otherwise. It permits template argument deduction on `K` for the ++ // transparent case. ++ template ++ using key_arg = typename KeyArgImpl::template type; ++ ++ using slot_type = typename PolicyTraits::slot_type; ++ ++ constexpr static bool kIsDefaultHash = ++ std::is_same_v> || ++ std::is_same_v; ++ ++ // TODO(b/289225379): we could add extra SOO space inside raw_hash_set ++ // after CommonFields to allow inlining larger slot_types (e.g. std::string), ++ // but it's a bit complicated if we want to support incomplete mapped_type in ++ // flat_hash_map. We could potentially do this for flat_hash_set and for an ++ // allowlist of `mapped_type`s of flat_hash_map that includes e.g. arithmetic ++ // types, strings, cords, and pairs/tuples of allowlisted types. ++ constexpr static bool SooEnabled() { ++ return PolicyTraits::soo_enabled() && ++ sizeof(slot_type) <= sizeof(HeapOrSoo) && ++ alignof(slot_type) <= alignof(HeapOrSoo); ++ } ++ ++ constexpr static size_t DefaultCapacity() { ++ return SooEnabled() ? SooCapacity() : 0; ++ } ++ ++ // Whether `size` fits in the SOO capacity of this table. ++ bool fits_in_soo(size_t size) const { ++ return SooEnabled() && size <= SooCapacity(); ++ } ++ // Whether this table is in SOO mode or non-SOO mode. ++ bool is_soo() const { return fits_in_soo(capacity()); } ++ bool is_full_soo() const { return is_soo() && !empty(); } ++ ++ bool is_small() const { return common().is_small(); } ++ ++ // Give an early error when key_type is not hashable/eq. ++ auto KeyTypeCanBeHashed(const Hash& h, const key_type& k) -> decltype(h(k)); ++ auto KeyTypeCanBeEq(const Eq& eq, const key_type& k) -> decltype(eq(k, k)); ++ ++ // Try to be helpful when the hasher returns an unreasonable type. ++ using key_hash_result = ++ absl::remove_cvref_t()( ++ std::declval()))>; ++ static_assert(sizeof(key_hash_result) >= sizeof(size_t), ++ "`Hash::operator()` should return a `size_t`"); ++ ++ using AllocTraits = absl::allocator_traits; ++ using SlotAlloc = typename absl::allocator_traits< ++ allocator_type>::template rebind_alloc; ++ // People are often sloppy with the exact type of their allocator (sometimes ++ // it has an extra const or is missing the pair, but rebinds made it work ++ // anyway). ++ using CharAlloc = ++ typename absl::allocator_traits::template rebind_alloc; ++ using SlotAllocTraits = typename absl::allocator_traits< ++ allocator_type>::template rebind_traits; ++ ++ static_assert(std::is_lvalue_reference::value, ++ "Policy::element() must return a reference"); ++ ++ // An enabler for insert(T&&): T must be convertible to init_type or be the ++ // same as [cv] value_type [ref]. ++ template ++ using Insertable = absl::disjunction< ++ std::is_same, absl::remove_cvref_t>, ++ std::is_convertible>; ++ template ++ using IsNotBitField = std::is_pointer; ++ ++ // RequiresNotInit is a workaround for gcc prior to 7.1. ++ // See https://godbolt.org/g/Y4xsUh. ++ template ++ using RequiresNotInit = ++ typename std::enable_if::value, int>::type; ++ ++ template ++ using IsDecomposable = IsDecomposable; ++ ++ template ++ using IsDecomposableAndInsertable = ++ IsDecomposable::value, T>>; ++ ++ // Evaluates to true if an assignment from the given type would require the ++ // source object to remain alive for the life of the element. ++ template ++ using IsLifetimeBoundAssignmentFrom = std::conditional_t< ++ policy_trait_element_is_owner::value, std::false_type, ++ type_traits_internal::IsLifetimeBoundAssignment>; ++ ++ public: ++ static_assert(std::is_same::value, ++ "Allocators with custom pointer types are not supported"); ++ static_assert(std::is_same::value, ++ "Allocators with custom pointer types are not supported"); ++ ++ class iterator : private HashSetIteratorGenerationInfo { ++ friend class raw_hash_set; ++ friend struct HashtableFreeFunctionsAccess; ++ ++ public: ++ using iterator_category = std::forward_iterator_tag; ++ using value_type = typename raw_hash_set::value_type; ++ using reference = ++ absl::conditional_t; ++ using pointer = absl::remove_reference_t*; ++ using difference_type = typename raw_hash_set::difference_type; ++ ++ iterator() {} ++ ++ // PRECONDITION: not an end() iterator. ++ reference operator*() const { ++ assert_is_full("operator*()"); ++ return unchecked_deref(); ++ } ++ ++ // PRECONDITION: not an end() iterator. ++ pointer operator->() const { ++ assert_is_full("operator->"); ++ return &operator*(); ++ } ++ ++ // PRECONDITION: not an end() iterator. ++ iterator& operator++() { ++ assert_is_full("operator++"); ++ ++ctrl_; ++ ++slot_; ++ skip_empty_or_deleted(); ++ if (ABSL_PREDICT_FALSE(*ctrl_ == ctrl_t::kSentinel)) ctrl_ = nullptr; ++ return *this; ++ } ++ // PRECONDITION: not an end() iterator. ++ iterator operator++(int) { ++ auto tmp = *this; ++ ++*this; ++ return tmp; ++ } ++ ++ friend bool operator==(const iterator& a, const iterator& b) { ++ AssertIsValidForComparison(a.ctrl_, a.generation(), a.generation_ptr()); ++ AssertIsValidForComparison(b.ctrl_, b.generation(), b.generation_ptr()); ++ AssertSameContainer(a.ctrl_, b.ctrl_, a.slot_, b.slot_, ++ a.generation_ptr(), b.generation_ptr()); ++ return a.ctrl_ == b.ctrl_; ++ } ++ friend bool operator!=(const iterator& a, const iterator& b) { ++ return !(a == b); ++ } ++ ++ private: ++ iterator(ctrl_t* ctrl, slot_type* slot, ++ const GenerationType* generation_ptr) ++ : HashSetIteratorGenerationInfo(generation_ptr), ++ ctrl_(ctrl), ++ slot_(slot) { ++ // This assumption helps the compiler know that any non-end iterator is ++ // not equal to any end iterator. ++ ABSL_ASSUME(ctrl != nullptr); ++ } ++ // This constructor is used in begin() to avoid an MSan ++ // use-of-uninitialized-value error. Delegating from this constructor to ++ // the previous one doesn't avoid the error. ++ iterator(ctrl_t* ctrl, MaybeInitializedPtr slot, ++ const GenerationType* generation_ptr) ++ : HashSetIteratorGenerationInfo(generation_ptr), ++ ctrl_(ctrl), ++ slot_(to_slot(slot.get())) { ++ // This assumption helps the compiler know that any non-end iterator is ++ // not equal to any end iterator. ++ ABSL_ASSUME(ctrl != nullptr); ++ } ++ // For end() iterators. ++ explicit iterator(const GenerationType* generation_ptr) ++ : HashSetIteratorGenerationInfo(generation_ptr), ctrl_(nullptr) {} ++ ++ void assert_is_full(const char* operation) const { ++ AssertIsFull(ctrl_, generation(), generation_ptr(), operation); ++ } ++ ++ // Fixes up `ctrl_` to point to a full or sentinel by advancing `ctrl_` and ++ // `slot_` until they reach one. ++ void skip_empty_or_deleted() { ++ while (IsEmptyOrDeleted(*ctrl_)) { ++ ++ctrl_; ++ ++slot_; ++ } ++ } ++ ++ // An equality check which skips ABSL Hardening iterator invalidation ++ // checks. ++ // Should be used when the lifetimes of the iterators are well-enough ++ // understood to prove that they cannot be invalid. ++ bool unchecked_equals(const iterator& b) const { ++ return ctrl_ == b.control(); ++ } ++ ++ // Dereferences the iterator without ABSL Hardening iterator invalidation ++ // checks. ++ reference unchecked_deref() const { return PolicyTraits::element(slot_); } ++ ++ ctrl_t* control() const { return ctrl_; } ++ slot_type* slot() const { return slot_; } ++ ++ // We use DefaultIterControl() for default-constructed iterators so that ++ // they can be distinguished from end iterators, which have nullptr ctrl_. ++ ctrl_t* ctrl_ = DefaultIterControl(); ++ // To avoid uninitialized member warnings, put slot_ in an anonymous union. ++ // The member is not initialized on singleton and end iterators. ++ union { ++ slot_type* slot_; ++ }; ++ }; ++ ++ class const_iterator { ++ friend class raw_hash_set; ++ template ++ friend struct absl::container_internal::hashtable_debug_internal:: ++ HashtableDebugAccess; ++ ++ public: ++ using iterator_category = typename iterator::iterator_category; ++ using value_type = typename raw_hash_set::value_type; ++ using reference = typename raw_hash_set::const_reference; ++ using pointer = typename raw_hash_set::const_pointer; ++ using difference_type = typename raw_hash_set::difference_type; ++ ++ const_iterator() = default; ++ // Implicit construction from iterator. ++ const_iterator(iterator i) : inner_(std::move(i)) {} // NOLINT ++ ++ reference operator*() const { return *inner_; } ++ pointer operator->() const { return inner_.operator->(); } ++ ++ const_iterator& operator++() { ++ ++inner_; ++ return *this; ++ } ++ const_iterator operator++(int) { return inner_++; } ++ ++ friend bool operator==(const const_iterator& a, const const_iterator& b) { ++ return a.inner_ == b.inner_; ++ } ++ friend bool operator!=(const const_iterator& a, const const_iterator& b) { ++ return !(a == b); ++ } ++ ++ private: ++ const_iterator(const ctrl_t* ctrl, const slot_type* slot, ++ const GenerationType* gen) ++ : inner_(const_cast(ctrl), const_cast(slot), gen) { ++ } ++ bool unchecked_equals(const const_iterator& b) const { ++ return inner_.unchecked_equals(b.inner_); ++ } ++ ctrl_t* control() const { return inner_.control(); } ++ slot_type* slot() const { return inner_.slot(); } ++ ++ iterator inner_; ++ }; ++ ++ using node_type = node_handle, Alloc>; ++ using insert_return_type = InsertReturnType; ++ ++ // Note: can't use `= default` due to non-default noexcept (causes ++ // problems for some compilers). NOLINTNEXTLINE ++ raw_hash_set() noexcept( ++ std::is_nothrow_default_constructible::value && ++ std::is_nothrow_default_constructible::value && ++ std::is_nothrow_default_constructible::value) {} ++ ++ explicit raw_hash_set( ++ size_t bucket_count, const hasher& hash = hasher(), ++ const key_equal& eq = key_equal(), ++ const allocator_type& alloc = allocator_type()) ++ : settings_(CommonFields::CreateDefault(), hash, eq, ++ alloc) { ++ if (bucket_count > DefaultCapacity()) { ++ ReserveEmptyNonAllocatedTableToFitBucketCount( ++ common(), GetPolicyFunctions(), bucket_count); ++ } ++ } ++ ++ raw_hash_set(size_t bucket_count, const hasher& hash, ++ const allocator_type& alloc) ++ : raw_hash_set(bucket_count, hash, key_equal(), alloc) {} ++ ++ raw_hash_set(size_t bucket_count, const allocator_type& alloc) ++ : raw_hash_set(bucket_count, hasher(), key_equal(), alloc) {} ++ ++ explicit raw_hash_set(const allocator_type& alloc) ++ : raw_hash_set(0, hasher(), key_equal(), alloc) {} ++ ++ template ++ raw_hash_set(InputIter first, InputIter last, size_t bucket_count = 0, ++ const hasher& hash = hasher(), const key_equal& eq = key_equal(), ++ const allocator_type& alloc = allocator_type()) ++ : raw_hash_set(SelectBucketCountForIterRange(first, last, bucket_count), ++ hash, eq, alloc) { ++ insert(first, last); ++ } ++ ++ template ++ raw_hash_set(InputIter first, InputIter last, size_t bucket_count, ++ const hasher& hash, const allocator_type& alloc) ++ : raw_hash_set(first, last, bucket_count, hash, key_equal(), alloc) {} ++ ++ template ++ raw_hash_set(InputIter first, InputIter last, size_t bucket_count, ++ const allocator_type& alloc) ++ : raw_hash_set(first, last, bucket_count, hasher(), key_equal(), alloc) {} ++ ++ template ++ raw_hash_set(InputIter first, InputIter last, const allocator_type& alloc) ++ : raw_hash_set(first, last, 0, hasher(), key_equal(), alloc) {} ++ ++ // Instead of accepting std::initializer_list as the first ++ // argument like std::unordered_set does, we have two overloads ++ // that accept std::initializer_list and std::initializer_list. ++ // This is advantageous for performance. ++ // ++ // // Turns {"abc", "def"} into std::initializer_list, then ++ // // copies the strings into the set. ++ // std::unordered_set s = {"abc", "def"}; ++ // ++ // // Turns {"abc", "def"} into std::initializer_list, then ++ // // copies the strings into the set. ++ // absl::flat_hash_set s = {"abc", "def"}; ++ // ++ // The same trick is used in insert(). ++ // ++ // The enabler is necessary to prevent this constructor from triggering where ++ // the copy constructor is meant to be called. ++ // ++ // absl::flat_hash_set a, b{a}; ++ // ++ // RequiresNotInit is a workaround for gcc prior to 7.1. ++ template = 0, ++ std::enable_if_t::value, int> = 0> ++ raw_hash_set(std::initializer_list init, size_t bucket_count = 0, ++ const hasher& hash = hasher(), const key_equal& eq = key_equal(), ++ const allocator_type& alloc = allocator_type()) ++ : raw_hash_set(init.begin(), init.end(), bucket_count, hash, eq, alloc) {} ++ ++ raw_hash_set(std::initializer_list init, size_t bucket_count = 0, ++ const hasher& hash = hasher(), const key_equal& eq = key_equal(), ++ const allocator_type& alloc = allocator_type()) ++ : raw_hash_set(init.begin(), init.end(), bucket_count, hash, eq, alloc) {} ++ ++ template = 0, ++ std::enable_if_t::value, int> = 0> ++ raw_hash_set(std::initializer_list init, size_t bucket_count, ++ const hasher& hash, const allocator_type& alloc) ++ : raw_hash_set(init, bucket_count, hash, key_equal(), alloc) {} ++ ++ raw_hash_set(std::initializer_list init, size_t bucket_count, ++ const hasher& hash, const allocator_type& alloc) ++ : raw_hash_set(init, bucket_count, hash, key_equal(), alloc) {} ++ ++ template = 0, ++ std::enable_if_t::value, int> = 0> ++ raw_hash_set(std::initializer_list init, size_t bucket_count, ++ const allocator_type& alloc) ++ : raw_hash_set(init, bucket_count, hasher(), key_equal(), alloc) {} ++ ++ raw_hash_set(std::initializer_list init, size_t bucket_count, ++ const allocator_type& alloc) ++ : raw_hash_set(init, bucket_count, hasher(), key_equal(), alloc) {} ++ ++ template = 0, ++ std::enable_if_t::value, int> = 0> ++ raw_hash_set(std::initializer_list init, const allocator_type& alloc) ++ : raw_hash_set(init, 0, hasher(), key_equal(), alloc) {} ++ ++ raw_hash_set(std::initializer_list init, ++ const allocator_type& alloc) ++ : raw_hash_set(init, 0, hasher(), key_equal(), alloc) {} ++ ++ raw_hash_set(const raw_hash_set& that) ++ : raw_hash_set(that, AllocTraits::select_on_container_copy_construction( ++ allocator_type(that.char_alloc_ref()))) {} ++ ++ raw_hash_set(const raw_hash_set& that, const allocator_type& a) ++ : raw_hash_set(0, that.hash_ref(), that.eq_ref(), a) { ++ that.AssertNotDebugCapacity(); ++ if (that.empty()) return; ++ Copy(common(), GetPolicyFunctions(), that.common(), ++ [this](void* dst, const void* src) { ++ // TODO(b/413598253): type erase for trivially copyable types via ++ // PolicyTraits. ++ construct(to_slot(dst), ++ PolicyTraits::element( ++ static_cast(const_cast(src)))); ++ }); ++ } ++ ++ ABSL_ATTRIBUTE_NOINLINE raw_hash_set(raw_hash_set&& that) noexcept( ++ std::is_nothrow_copy_constructible::value && ++ std::is_nothrow_copy_constructible::value && ++ std::is_nothrow_copy_constructible::value) ++ : // Hash, equality and allocator are copied instead of moved because ++ // `that` must be left valid. If Hash is std::function, moving it ++ // would create a nullptr functor that cannot be called. ++ // Note: we avoid using exchange for better generated code. ++ settings_(PolicyTraits::transfer_uses_memcpy() || !that.is_full_soo() ++ ? std::move(that.common()) ++ : CommonFields{full_soo_tag_t{}}, ++ that.hash_ref(), that.eq_ref(), that.char_alloc_ref()) { ++ if (!PolicyTraits::transfer_uses_memcpy() && that.is_full_soo()) { ++ transfer(soo_slot(), that.soo_slot()); ++ } ++ that.common() = CommonFields::CreateDefault(); ++ annotate_for_bug_detection_on_move(that); ++ } ++ ++ raw_hash_set(raw_hash_set&& that, const allocator_type& a) ++ : settings_(CommonFields::CreateDefault(), that.hash_ref(), ++ that.eq_ref(), a) { ++ if (CharAlloc(a) == that.char_alloc_ref()) { ++ swap_common(that); ++ annotate_for_bug_detection_on_move(that); ++ } else { ++ move_elements_allocs_unequal(std::move(that)); ++ } ++ } ++ ++ raw_hash_set& operator=(const raw_hash_set& that) { ++ that.AssertNotDebugCapacity(); ++ if (ABSL_PREDICT_FALSE(this == &that)) return *this; ++ constexpr bool propagate_alloc = ++ AllocTraits::propagate_on_container_copy_assignment::value; ++ // TODO(ezb): maybe avoid allocating a new backing array if this->capacity() ++ // is an exact match for that.size(). If this->capacity() is too big, then ++ // it would make iteration very slow to reuse the allocation. Maybe we can ++ // do the same heuristic as clear() and reuse if it's small enough. ++ allocator_type alloc(propagate_alloc ? that.char_alloc_ref() ++ : char_alloc_ref()); ++ raw_hash_set tmp(that, alloc); ++ // NOLINTNEXTLINE: not returning *this for performance. ++ return assign_impl(std::move(tmp)); ++ } ++ ++ raw_hash_set& operator=(raw_hash_set&& that) noexcept( ++ AllocTraits::is_always_equal::value && ++ std::is_nothrow_move_assignable::value && ++ std::is_nothrow_move_assignable::value) { ++ // TODO(sbenza): We should only use the operations from the noexcept clause ++ // to make sure we actually adhere to that contract. ++ // NOLINTNEXTLINE: not returning *this for performance. ++ return move_assign( ++ std::move(that), ++ typename AllocTraits::propagate_on_container_move_assignment()); ++ } ++ ++ ~raw_hash_set() { ++ destructor_impl(); ++ if constexpr (SwisstableAssertAccessToDestroyedTable()) { ++ common().set_capacity(InvalidCapacity::kDestroyed); ++ } ++ } ++ ++ iterator begin() ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ if (ABSL_PREDICT_FALSE(empty())) return end(); ++ if (is_small()) return single_iterator(); ++ iterator it = {control(), common().slots_union(), ++ common().generation_ptr()}; ++ it.skip_empty_or_deleted(); ++ ABSL_SWISSTABLE_ASSERT(IsFull(*it.control())); ++ return it; ++ } ++ iterator end() ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ AssertNotDebugCapacity(); ++ return iterator(common().generation_ptr()); ++ } ++ ++ const_iterator begin() const ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return const_cast(this)->begin(); ++ } ++ const_iterator end() const ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return const_cast(this)->end(); ++ } ++ const_iterator cbegin() const ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return begin(); ++ } ++ const_iterator cend() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return end(); } ++ ++ bool empty() const { return !size(); } ++ size_t size() const { ++ AssertNotDebugCapacity(); ++ return common().size(); ++ } ++ size_t capacity() const { ++ const size_t cap = common().capacity(); ++ // Compiler complains when using functions in ASSUME so use local variable. ++ [[maybe_unused]] static constexpr size_t kDefaultCapacity = ++ DefaultCapacity(); ++ ABSL_ASSUME(cap >= kDefaultCapacity); ++ return cap; ++ } ++ size_t max_size() const { return MaxValidSize(sizeof(slot_type)); } ++ ++ ABSL_ATTRIBUTE_REINITIALIZES void clear() { ++ if (SwisstableGenerationsEnabled() && ++ capacity() >= InvalidCapacity::kMovedFrom) { ++ common().set_capacity(DefaultCapacity()); ++ } ++ AssertNotDebugCapacity(); ++ // Iterating over this container is O(bucket_count()). When bucket_count() ++ // is much greater than size(), iteration becomes prohibitively expensive. ++ // For clear() it is more important to reuse the allocated array when the ++ // container is small because allocation takes comparatively long time ++ // compared to destruction of the elements of the container. So we pick the ++ // largest bucket_count() threshold for which iteration is still fast and ++ // past that we simply deallocate the array. ++ const size_t cap = capacity(); ++ if (cap == 0) { ++ // Already guaranteed to be empty; so nothing to do. ++ } else if (is_small()) { ++ if (!empty()) { ++ destroy(single_slot()); ++ decrement_small_size(); ++ } ++ } else { ++ destroy_slots(); ++ clear_backing_array(/*reuse=*/cap < 128); ++ } ++ common().set_reserved_growth(0); ++ common().set_reservation_size(0); ++ } ++ ++ // This overload kicks in when the argument is an rvalue of insertable and ++ // decomposable type other than init_type. ++ // ++ // flat_hash_map m; ++ // m.insert(std::make_pair("abc", 42)); ++ template ::value && ++ IsNotBitField::value && ++ !IsLifetimeBoundAssignmentFrom::value, ++ int>()> ++ std::pair insert(T&& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return emplace(std::forward(value)); ++ } ++ ++ template ::value && ++ IsNotBitField::value && ++ IsLifetimeBoundAssignmentFrom::value, ++ int> = 0> ++ std::pair insert( ++ T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return this->template insert(std::forward(value)); ++ } ++ ++ // This overload kicks in when the argument is a bitfield or an lvalue of ++ // insertable and decomposable type. ++ // ++ // union { int n : 1; }; ++ // flat_hash_set s; ++ // s.insert(n); ++ // ++ // flat_hash_set s; ++ // const char* p = "hello"; ++ // s.insert(p); ++ // ++ template ::value && ++ !IsLifetimeBoundAssignmentFrom::value, ++ int>()> ++ std::pair insert(const T& value) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return emplace(value); ++ } ++ template ::value && ++ IsLifetimeBoundAssignmentFrom::value, ++ int> = 0> ++ std::pair insert( ++ const T& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return this->template insert(value); ++ } ++ ++ // This overload kicks in when the argument is an rvalue of init_type. Its ++ // purpose is to handle brace-init-list arguments. ++ // ++ // flat_hash_map s; ++ // s.insert({"abc", 42}); ++ std::pair insert(init_type&& value) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND ++#if __cplusplus >= 202002L ++ requires(!IsLifetimeBoundAssignmentFrom::value) ++#endif ++ { ++ return emplace(std::move(value)); ++ } ++#if __cplusplus >= 202002L ++ std::pair insert( ++ init_type&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND ++ requires(IsLifetimeBoundAssignmentFrom::value) ++ { ++ return emplace(std::move(value)); ++ } ++#endif ++ ++ template ::value && ++ IsNotBitField::value && ++ !IsLifetimeBoundAssignmentFrom::value, ++ int>()> ++ iterator insert(const_iterator, T&& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return insert(std::forward(value)).first; ++ } ++ template ::value && ++ IsNotBitField::value && ++ IsLifetimeBoundAssignmentFrom::value, ++ int> = 0> ++ iterator insert(const_iterator hint, ++ T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return this->template insert(hint, std::forward(value)); ++ } ++ ++ template ::value, int> = 0> ++ iterator insert(const_iterator, ++ const T& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return insert(value).first; ++ } ++ ++ iterator insert(const_iterator, ++ init_type&& value) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return insert(std::move(value)).first; ++ } ++ ++ template ++ void insert(InputIt first, InputIt last) { ++ for (; first != last; ++first) emplace(*first); ++ } ++ ++ template = 0, ++ std::enable_if_t::value, int> = 0> ++ void insert(std::initializer_list ilist) { ++ insert(ilist.begin(), ilist.end()); ++ } ++ ++ void insert(std::initializer_list ilist) { ++ insert(ilist.begin(), ilist.end()); ++ } ++ ++ insert_return_type insert(node_type&& node) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ if (!node) return {end(), false, node_type()}; ++ const auto& elem = PolicyTraits::element(CommonAccess::GetSlot(node)); ++ auto res = PolicyTraits::apply( ++ InsertSlot{*this, std::move(*CommonAccess::GetSlot(node))}, ++ elem); ++ if (res.second) { ++ CommonAccess::Reset(&node); ++ return {res.first, true, node_type()}; ++ } else { ++ return {res.first, false, std::move(node)}; ++ } ++ } ++ ++ iterator insert(const_iterator, ++ node_type&& node) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ auto res = insert(std::move(node)); ++ node = std::move(res.node); ++ return res.position; ++ } ++ ++ // This overload kicks in if we can deduce the key from args. This enables us ++ // to avoid constructing value_type if an entry with the same key already ++ // exists. ++ // ++ // For example: ++ // ++ // flat_hash_map m = {{"abc", "def"}}; ++ // // Creates no std::string copies and makes no heap allocations. ++ // m.emplace("abc", "xyz"); ++ template ::value, int> = 0> ++ std::pair emplace(Args&&... args) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return PolicyTraits::apply(EmplaceDecomposable{*this}, ++ std::forward(args)...); ++ } ++ ++ // This overload kicks in if we cannot deduce the key from args. It constructs ++ // value_type unconditionally and then either moves it into the table or ++ // destroys. ++ template ::value, int> = 0> ++ std::pair emplace(Args&&... args) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ alignas(slot_type) unsigned char raw[sizeof(slot_type)]; ++ slot_type* slot = to_slot(&raw); ++ ++ construct(slot, std::forward(args)...); ++ const auto& elem = PolicyTraits::element(slot); ++ return PolicyTraits::apply(InsertSlot{*this, std::move(*slot)}, elem); ++ } ++ ++ template ++ iterator emplace_hint(const_iterator, ++ Args&&... args) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return emplace(std::forward(args)...).first; ++ } ++ ++ // Extension API: support for lazy emplace. ++ // ++ // Looks up key in the table. If found, returns the iterator to the element. ++ // Otherwise calls `f` with one argument of type `raw_hash_set::constructor`, ++ // and returns an iterator to the new element. ++ // ++ // `f` must abide by several restrictions: ++ // - it MUST call `raw_hash_set::constructor` with arguments as if a ++ // `raw_hash_set::value_type` is constructed, ++ // - it MUST NOT access the container before the call to ++ // `raw_hash_set::constructor`, and ++ // - it MUST NOT erase the lazily emplaced element. ++ // Doing any of these is undefined behavior. ++ // ++ // For example: ++ // ++ // std::unordered_set s; ++ // // Makes ArenaStr even if "abc" is in the map. ++ // s.insert(ArenaString(&arena, "abc")); ++ // ++ // flat_hash_set s; ++ // // Makes ArenaStr only if "abc" is not in the map. ++ // s.lazy_emplace("abc", [&](const constructor& ctor) { ++ // ctor(&arena, "abc"); ++ // }); ++ // ++ // WARNING: This API is currently experimental. If there is a way to implement ++ // the same thing with the rest of the API, prefer that. ++ class constructor { ++ friend class raw_hash_set; ++ ++ public: ++ template ++ void operator()(Args&&... args) const { ++ ABSL_SWISSTABLE_ASSERT(*slot_); ++ PolicyTraits::construct(alloc_, *slot_, std::forward(args)...); ++ *slot_ = nullptr; ++ } ++ ++ private: ++ constructor(allocator_type* a, slot_type** slot) : alloc_(a), slot_(slot) {} ++ ++ allocator_type* alloc_; ++ slot_type** slot_; ++ }; ++ ++ template ++ iterator lazy_emplace(const key_arg& key, ++ F&& f) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ auto res = find_or_prepare_insert(key); ++ if (res.second) { ++ slot_type* slot = res.first.slot(); ++ allocator_type alloc(char_alloc_ref()); ++ std::forward(f)(constructor(&alloc, &slot)); ++ ABSL_SWISSTABLE_ASSERT(!slot); ++ } ++ return res.first; ++ } ++ ++ // Extension API: support for heterogeneous keys. ++ // ++ // std::unordered_set s; ++ // // Turns "abc" into std::string. ++ // s.erase("abc"); ++ // ++ // flat_hash_set s; ++ // // Uses "abc" directly without copying it into std::string. ++ // s.erase("abc"); ++ template ++ size_type erase(const key_arg& key) { ++ auto it = find(key); ++ if (it == end()) return 0; ++ erase(it); ++ return 1; ++ } ++ ++ // Erases the element pointed to by `it`. Unlike `std::unordered_set::erase`, ++ // this method returns void to reduce algorithmic complexity to O(1). The ++ // iterator is invalidated so any increment should be done before calling ++ // erase (e.g. `erase(it++)`). ++ void erase(const_iterator cit) { erase(cit.inner_); } ++ ++ // This overload is necessary because otherwise erase(const K&) would be ++ // a better match if non-const iterator is passed as an argument. ++ void erase(iterator it) { ++ ABSL_SWISSTABLE_ASSERT(capacity() > 0); ++ AssertNotDebugCapacity(); ++ it.assert_is_full("erase()"); ++ destroy(it.slot()); ++ erase_meta_only(it); ++ } ++ ++ iterator erase(const_iterator first, ++ const_iterator last) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ AssertNotDebugCapacity(); ++ // We check for empty first because clear_backing_array requires that ++ // capacity() > 0 as a precondition. ++ if (empty()) return end(); ++ if (first == last) return last.inner_; ++ if (is_small()) { ++ destroy(single_slot()); ++ erase_meta_only_small(); ++ return end(); ++ } ++ if (first == begin() && last == end()) { ++ // TODO(ezb): we access control bytes in destroy_slots so it could make ++ // sense to combine destroy_slots and clear_backing_array to avoid cache ++ // misses when the table is large. Note that we also do this in clear(). ++ destroy_slots(); ++ clear_backing_array(/*reuse=*/true); ++ common().set_reserved_growth(common().reservation_size()); ++ return end(); ++ } ++ while (first != last) { ++ erase(first++); ++ } ++ return last.inner_; ++ } ++ ++ // Moves elements from `src` into `this`. ++ // If the element already exists in `this`, it is left unmodified in `src`. ++ template ++ void merge(raw_hash_set& src) { // NOLINT ++ AssertNotDebugCapacity(); ++ src.AssertNotDebugCapacity(); ++ assert(this != &src); ++ // Returns whether insertion took place. ++ const auto insert_slot = [this](slot_type* src_slot) { ++ return PolicyTraits::apply(InsertSlot{*this, std::move(*src_slot)}, ++ PolicyTraits::element(src_slot)) ++ .second; ++ }; ++ ++ if (src.is_small()) { ++ if (src.empty()) return; ++ if (insert_slot(src.single_slot())) ++ src.erase_meta_only_small(); ++ return; ++ } ++ for (auto it = src.begin(), e = src.end(); it != e;) { ++ auto next = std::next(it); ++ if (insert_slot(it.slot())) src.erase_meta_only_large(it); ++ it = next; ++ } ++ } ++ ++ template ++ void merge(raw_hash_set&& src) { ++ merge(src); ++ } ++ ++ node_type extract(const_iterator position) { ++ AssertNotDebugCapacity(); ++ position.inner_.assert_is_full("extract()"); ++ allocator_type alloc(char_alloc_ref()); ++ auto node = CommonAccess::Transfer(alloc, position.slot()); ++ erase_meta_only(position); ++ return node; ++ } ++ ++ template ::value, int> = 0> ++ node_type extract(const key_arg& key) { ++ auto it = find(key); ++ return it == end() ? node_type() : extract(const_iterator{it}); ++ } ++ ++ void swap(raw_hash_set& that) noexcept( ++ AllocTraits::is_always_equal::value && ++ std::is_nothrow_swappable::value && ++ std::is_nothrow_swappable::value) { ++ AssertNotDebugCapacity(); ++ that.AssertNotDebugCapacity(); ++ using std::swap; ++ swap_common(that); ++ swap(hash_ref(), that.hash_ref()); ++ swap(eq_ref(), that.eq_ref()); ++ SwapAlloc(char_alloc_ref(), that.char_alloc_ref(), ++ typename AllocTraits::propagate_on_container_swap{}); ++ } ++ ++ void rehash(size_t n) { Rehash(common(), GetPolicyFunctions(), n); } ++ ++ void reserve(size_t n) { ++ if (ABSL_PREDICT_TRUE(n > DefaultCapacity())) { ++ ReserveTableToFitNewSize(common(), GetPolicyFunctions(), n); ++ } ++ } ++ ++ // Extension API: support for heterogeneous keys. ++ // ++ // std::unordered_set s; ++ // // Turns "abc" into std::string. ++ // s.count("abc"); ++ // ++ // ch_set s; ++ // // Uses "abc" directly without copying it into std::string. ++ // s.count("abc"); ++ template ++ size_t count(const key_arg& key) const { ++ return find(key) == end() ? 0 : 1; ++ } ++ ++ // Issues CPU prefetch instructions for the memory needed to find or insert ++ // a key. Like all lookup functions, this support heterogeneous keys. ++ // ++ // NOTE: This is a very low level operation and should not be used without ++ // specific benchmarks indicating its importance. ++ template ++ void prefetch([[maybe_unused]] const key_arg& key) const { ++ if (capacity() == DefaultCapacity()) return; ++ // Avoid probing if we won't be able to prefetch the addresses received. ++#ifdef ABSL_HAVE_PREFETCH ++ prefetch_heap_block(); ++ if (is_small()) return; ++ auto seq = probe(common(), hash_of(key)); ++ PrefetchToLocalCache(control() + seq.offset()); ++ PrefetchToLocalCache(slot_array() + seq.offset()); ++#endif // ABSL_HAVE_PREFETCH ++ } ++ ++ template ++ ABSL_DEPRECATE_AND_INLINE() ++ iterator find(const key_arg& key, ++ size_t) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return find(key); ++ } ++ // The API of find() has one extension: the type of the key argument doesn't ++ // have to be key_type. This is so called heterogeneous key support. ++ template ++ iterator find(const key_arg& key) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ AssertOnFind(key); ++ if (is_small()) return find_small(key); ++ prefetch_heap_block(); ++ return find_large(key, hash_of(key)); ++ } ++ ++ template ++ ABSL_DEPRECATE_AND_INLINE() ++ const_iterator find(const key_arg& key, ++ size_t) const ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return find(key); ++ } ++ template ++ const_iterator find(const key_arg& key) const ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return const_cast(this)->find(key); ++ } ++ ++ template ++ bool contains(const key_arg& key) const { ++ // Here neither the iterator returned by `find()` nor `end()` can be invalid ++ // outside of potential thread-safety issues. ++ // `find()`'s return value is constructed, used, and then destructed ++ // all in this context. ++ return !find(key).unchecked_equals(end()); ++ } ++ ++ template ++ std::pair equal_range(const key_arg& key) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ auto it = find(key); ++ if (it != end()) return {it, std::next(it)}; ++ return {it, it}; ++ } ++ template ++ std::pair equal_range( ++ const key_arg& key) const ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ auto it = find(key); ++ if (it != end()) return {it, std::next(it)}; ++ return {it, it}; ++ } ++ ++ size_t bucket_count() const { return capacity(); } ++ float load_factor() const { ++ return capacity() ? static_cast(size()) / capacity() : 0.0; ++ } ++ float max_load_factor() const { return 1.0f; } ++ void max_load_factor(float) { ++ // Does nothing. ++ } ++ ++ hasher hash_function() const { return hash_ref(); } ++ key_equal key_eq() const { return eq_ref(); } ++ allocator_type get_allocator() const { ++ return allocator_type(char_alloc_ref()); ++ } ++ ++ friend bool operator==(const raw_hash_set& a, const raw_hash_set& b) { ++ if (a.size() != b.size()) return false; ++ const raw_hash_set* outer = &a; ++ const raw_hash_set* inner = &b; ++ if (outer->capacity() > inner->capacity()) std::swap(outer, inner); ++ for (const value_type& elem : *outer) { ++ auto it = PolicyTraits::apply(FindElement{*inner}, elem); ++ if (it == inner->end()) return false; ++ // Note: we used key_equal to check for key equality in FindElement, but ++ // we may need to do an additional comparison using ++ // value_type::operator==. E.g. the keys could be equal and the ++ // mapped_types could be unequal in a map or even in a set, key_equal ++ // could ignore some fields that aren't ignored by operator==. ++ static constexpr bool kKeyEqIsValueEq = ++ std::is_same::value && ++ std::is_same>::value; ++ if (!kKeyEqIsValueEq && !(*it == elem)) return false; ++ } ++ return true; ++ } ++ ++ friend bool operator!=(const raw_hash_set& a, const raw_hash_set& b) { ++ return !(a == b); ++ } ++ ++ template ++ friend typename std::enable_if::value, ++ H>::type ++ AbslHashValue(H h, const raw_hash_set& s) { ++ return H::combine(H::combine_unordered(std::move(h), s.begin(), s.end()), ++ hash_internal::WeaklyMixedInteger{s.size()}); ++ } ++ ++ friend void swap(raw_hash_set& a, ++ raw_hash_set& b) noexcept(noexcept(a.swap(b))) { ++ a.swap(b); ++ } ++ ++ private: ++ template ++ friend struct absl::container_internal::hashtable_debug_internal:: ++ HashtableDebugAccess; ++ ++ friend struct absl::container_internal::HashtableFreeFunctionsAccess; ++ ++ struct FindElement { ++ template ++ const_iterator operator()(const K& key, Args&&...) const { ++ return s.find(key); ++ } ++ const raw_hash_set& s; ++ }; ++ ++ struct EmplaceDecomposable { ++ template ++ std::pair operator()(const K& key, Args&&... args) const { ++ auto res = s.find_or_prepare_insert(key); ++ if (res.second) { ++ s.emplace_at(res.first, std::forward(args)...); ++ } ++ return res; ++ } ++ raw_hash_set& s; ++ }; ++ ++ template ++ struct InsertSlot { ++ template ++ std::pair operator()(const K& key, Args&&...) && { ++ auto res = s.find_or_prepare_insert(key); ++ if (res.second) { ++ s.transfer(res.first.slot(), &slot); ++ } else if (do_destroy) { ++ s.destroy(&slot); ++ } ++ return res; ++ } ++ raw_hash_set& s; ++ // Constructed slot. Either moved into place or destroyed. ++ slot_type&& slot; ++ }; ++ ++ template ++ inline void construct(slot_type* slot, Args&&... args) { ++ common().RunWithReentrancyGuard([&] { ++ allocator_type alloc(char_alloc_ref()); ++ PolicyTraits::construct(&alloc, slot, std::forward(args)...); ++ }); ++ } ++ inline void destroy(slot_type* slot) { ++ common().RunWithReentrancyGuard([&] { ++ allocator_type alloc(char_alloc_ref()); ++ PolicyTraits::destroy(&alloc, slot); ++ }); ++ } ++ inline void transfer(slot_type* to, slot_type* from) { ++ common().RunWithReentrancyGuard([&] { ++ allocator_type alloc(char_alloc_ref()); ++ PolicyTraits::transfer(&alloc, to, from); ++ }); ++ } ++ ++ // TODO(b/289225379): consider having a helper class that has the impls for ++ // SOO functionality. ++ template ++ iterator find_small(const key_arg& key) { ++ ABSL_SWISSTABLE_ASSERT(is_small()); ++ return empty() || !equal_to(key, single_slot()) ? end() : single_iterator(); ++ } ++ ++ template ++ iterator find_large(const key_arg& key, size_t hash) { ++ ABSL_SWISSTABLE_ASSERT(!is_small()); ++ auto seq = probe(common(), hash); ++ const h2_t h2 = H2(hash); ++ const ctrl_t* ctrl = control(); ++ while (true) { ++#ifndef ABSL_HAVE_MEMORY_SANITIZER ++ absl::PrefetchToLocalCache(slot_array() + seq.offset()); ++#endif ++ Group g{ctrl + seq.offset()}; ++ for (uint32_t i : g.Match(h2)) { ++ if (ABSL_PREDICT_TRUE(equal_to(key, slot_array() + seq.offset(i)))) ++ return iterator_at(seq.offset(i)); ++ } ++ if (ABSL_PREDICT_TRUE(g.MaskEmpty())) return end(); ++ seq.next(); ++ ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity() && "full table!"); ++ } ++ } ++ ++ // Returns true if the table needs to be sampled. ++ // This should be called on insertion into an empty SOO table and in copy ++ // construction when the size can fit in SOO capacity. ++ bool should_sample_soo() const { ++ ABSL_SWISSTABLE_ASSERT(is_soo()); ++ if (!ShouldSampleHashtablezInfoForAlloc()) return false; ++ return ABSL_PREDICT_FALSE(ShouldSampleNextTable()); ++ } ++ ++ void clear_backing_array(bool reuse) { ++ ABSL_SWISSTABLE_ASSERT(capacity() > DefaultCapacity()); ++ ClearBackingArray(common(), GetPolicyFunctions(), &char_alloc_ref(), reuse, ++ SooEnabled()); ++ } ++ ++ void destroy_slots() { ++ ABSL_SWISSTABLE_ASSERT(!is_small()); ++ if (PolicyTraits::template destroy_is_trivial()) return; ++ auto destroy_slot = [&](const ctrl_t*, void* slot) { ++ this->destroy(static_cast(slot)); ++ }; ++ if constexpr (SwisstableAssertAccessToDestroyedTable()) { ++ CommonFields common_copy(non_soo_tag_t{}, this->common()); ++ common().set_capacity(InvalidCapacity::kDestroyed); ++ IterateOverFullSlots(common_copy, sizeof(slot_type), destroy_slot); ++ common().set_capacity(common_copy.capacity()); ++ } else { ++ IterateOverFullSlots(common(), sizeof(slot_type), destroy_slot); ++ } ++ } ++ ++ void dealloc() { ++ ABSL_SWISSTABLE_ASSERT(capacity() > DefaultCapacity()); ++ // Unpoison before returning the memory to the allocator. ++ SanitizerUnpoisonMemoryRegion(slot_array(), sizeof(slot_type) * capacity()); ++ infoz().Unregister(); ++ DeallocateBackingArray(&char_alloc_ref(), capacity(), control(), ++ sizeof(slot_type), alignof(slot_type), ++ common().has_infoz()); ++ } ++ ++ void destructor_impl() { ++ if (SwisstableGenerationsEnabled() && ++ capacity() >= InvalidCapacity::kMovedFrom) { ++ return; ++ } ++ if (capacity() == 0) return; ++ if (is_small()) { ++ if (!empty()) { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED(destroy(single_slot())); ++ } ++ if constexpr (SooEnabled()) return; ++ } else { ++ destroy_slots(); ++ } ++ dealloc(); ++ } ++ ++ // Erases, but does not destroy, the value pointed to by `it`. ++ // ++ // This merely updates the pertinent control byte. This can be used in ++ // conjunction with Policy::transfer to move the object to another place. ++ void erase_meta_only(const_iterator it) { ++ if (is_small()) { ++ erase_meta_only_small(); ++ return; ++ } ++ erase_meta_only_large(it); ++ } ++ void erase_meta_only_small() { ++ EraseMetaOnlySmall(common(), SooEnabled(), sizeof(slot_type)); ++ } ++ void erase_meta_only_large(const_iterator it) { ++ EraseMetaOnlyLarge(common(), it.control(), sizeof(slot_type)); ++ } ++ ++ template ++ ABSL_ATTRIBUTE_ALWAYS_INLINE bool equal_to(const K& key, ++ slot_type* slot) const { ++ return PolicyTraits::apply(EqualElement{key, eq_ref()}, ++ PolicyTraits::element(slot)); ++ } ++ template ++ ABSL_ATTRIBUTE_ALWAYS_INLINE size_t hash_of(const K& key) const { ++ return HashElement{hash_ref(), ++ common().seed().seed()}(key); ++ } ++ ABSL_ATTRIBUTE_ALWAYS_INLINE size_t hash_of(slot_type* slot) const { ++ return PolicyTraits::apply( ++ HashElement{hash_ref(), common().seed().seed()}, ++ PolicyTraits::element(slot)); ++ } ++ ++ // Casting directly from e.g. char* to slot_type* can cause compilation errors ++ // on objective-C. This function converts to void* first, avoiding the issue. ++ static ABSL_ATTRIBUTE_ALWAYS_INLINE slot_type* to_slot(void* buf) { ++ return static_cast(buf); ++ } ++ ++ // Requires that lhs does not have a full SOO slot. ++ static void move_common(bool rhs_is_full_soo, CharAlloc& rhs_alloc, ++ CommonFields& lhs, CommonFields&& rhs) { ++ if (PolicyTraits::transfer_uses_memcpy() || !rhs_is_full_soo) { ++ lhs = std::move(rhs); ++ } else { ++ lhs.move_non_heap_or_soo_fields(rhs); ++ rhs.RunWithReentrancyGuard([&] { ++ lhs.RunWithReentrancyGuard([&] { ++ PolicyTraits::transfer(&rhs_alloc, to_slot(lhs.soo_data()), ++ to_slot(rhs.soo_data())); ++ }); ++ }); ++ } ++ } ++ ++ // Swaps common fields making sure to avoid memcpy'ing a full SOO slot if we ++ // aren't allowed to do so. ++ void swap_common(raw_hash_set& that) { ++ using std::swap; ++ if (PolicyTraits::transfer_uses_memcpy()) { ++ swap(common(), that.common()); ++ return; ++ } ++ CommonFields tmp = CommonFields(uninitialized_tag_t{}); ++ const bool that_is_full_soo = that.is_full_soo(); ++ move_common(that_is_full_soo, that.char_alloc_ref(), tmp, ++ std::move(that.common())); ++ move_common(is_full_soo(), char_alloc_ref(), that.common(), ++ std::move(common())); ++ move_common(that_is_full_soo, that.char_alloc_ref(), common(), ++ std::move(tmp)); ++ } ++ ++ void annotate_for_bug_detection_on_move([[maybe_unused]] raw_hash_set& that) { ++ // We only enable moved-from validation when generations are enabled (rather ++ // than using NDEBUG) to avoid issues in which NDEBUG is enabled in some ++ // translation units but not in others. ++ if (SwisstableGenerationsEnabled()) { ++ that.common().set_capacity(this == &that ? InvalidCapacity::kSelfMovedFrom ++ : InvalidCapacity::kMovedFrom); ++ } ++ if (!SwisstableGenerationsEnabled() || capacity() == DefaultCapacity() || ++ capacity() > kAboveMaxValidCapacity) { ++ return; ++ } ++ common().increment_generation(); ++ if (!empty() && common().should_rehash_for_bug_detection_on_move()) { ++ ResizeAllocatedTableWithSeedChange(common(), GetPolicyFunctions(), ++ capacity()); ++ } ++ } ++ ++ template ++ raw_hash_set& assign_impl(raw_hash_set&& that) { ++ // We don't bother checking for this/that aliasing. We just need to avoid ++ // breaking the invariants in that case. ++ destructor_impl(); ++ move_common(that.is_full_soo(), that.char_alloc_ref(), common(), ++ std::move(that.common())); ++ hash_ref() = that.hash_ref(); ++ eq_ref() = that.eq_ref(); ++ CopyAlloc(char_alloc_ref(), that.char_alloc_ref(), ++ std::integral_constant()); ++ that.common() = CommonFields::CreateDefault(); ++ annotate_for_bug_detection_on_move(that); ++ return *this; ++ } ++ ++ raw_hash_set& move_elements_allocs_unequal(raw_hash_set&& that) { ++ const size_t size = that.size(); ++ if (size == 0) return *this; ++ reserve(size); ++ for (iterator it = that.begin(); it != that.end(); ++it) { ++ insert(std::move(PolicyTraits::element(it.slot()))); ++ that.destroy(it.slot()); ++ } ++ if (!that.is_soo()) that.dealloc(); ++ that.common() = CommonFields::CreateDefault(); ++ annotate_for_bug_detection_on_move(that); ++ return *this; ++ } ++ ++ raw_hash_set& move_assign(raw_hash_set&& that, ++ std::true_type /*propagate_alloc*/) { ++ return assign_impl(std::move(that)); ++ } ++ raw_hash_set& move_assign(raw_hash_set&& that, ++ std::false_type /*propagate_alloc*/) { ++ if (char_alloc_ref() == that.char_alloc_ref()) { ++ return assign_impl(std::move(that)); ++ } ++ // Aliasing can't happen here because allocs would compare equal above. ++ assert(this != &that); ++ destructor_impl(); ++ // We can't take over that's memory so we need to move each element. ++ // While moving elements, this should have that's hash/eq so copy hash/eq ++ // before moving elements. ++ hash_ref() = that.hash_ref(); ++ eq_ref() = that.eq_ref(); ++ return move_elements_allocs_unequal(std::move(that)); ++ } ++ ++ template ++ std::pair find_or_prepare_insert_soo(const K& key) { ++ ABSL_SWISSTABLE_ASSERT(is_soo()); ++ bool force_sampling; ++ if (empty()) { ++ if (!should_sample_soo()) { ++ common().set_full_soo(); ++ return {single_iterator(), true}; ++ } ++ force_sampling = true; ++ } else if (equal_to(key, single_slot())) { ++ return {single_iterator(), false}; ++ } else { ++ force_sampling = false; ++ } ++ ABSL_SWISSTABLE_ASSERT(capacity() == 1); ++ constexpr bool kUseMemcpy = ++ PolicyTraits::transfer_uses_memcpy() && SooEnabled(); ++ size_t index = GrowSooTableToNextCapacityAndPrepareInsert< ++ kUseMemcpy ? OptimalMemcpySizeForSooSlotTransfer(sizeof(slot_type)) : 0, ++ kUseMemcpy>(common(), GetPolicyFunctions(), ++ HashKey{hash_ref(), key}, ++ force_sampling); ++ return {iterator_at(index), true}; ++ } ++ ++ template ++ std::pair find_or_prepare_insert_small(const K& key) { ++ ABSL_SWISSTABLE_ASSERT(is_small()); ++ if constexpr (SooEnabled()) { ++ return find_or_prepare_insert_soo(key); ++ } ++ if (!empty()) { ++ if (equal_to(key, single_slot())) { ++ return {single_iterator(), false}; ++ } ++ } ++ return {iterator_at_ptr(PrepareInsertSmallNonSoo( ++ common(), GetPolicyFunctions(), ++ HashKey{hash_ref(), key})), ++ true}; ++ } ++ ++ template ++ std::pair find_or_prepare_insert_large(const K& key) { ++ ABSL_SWISSTABLE_ASSERT(!is_soo()); ++ prefetch_heap_block(); ++ const size_t hash = hash_of(key); ++ auto seq = probe(common(), hash); ++ const h2_t h2 = H2(hash); ++ const ctrl_t* ctrl = control(); ++ while (true) { ++#ifndef ABSL_HAVE_MEMORY_SANITIZER ++ absl::PrefetchToLocalCache(slot_array() + seq.offset()); ++#endif ++ Group g{ctrl + seq.offset()}; ++ for (uint32_t i : g.Match(h2)) { ++ if (ABSL_PREDICT_TRUE(equal_to(key, slot_array() + seq.offset(i)))) ++ return {iterator_at(seq.offset(i)), false}; ++ } ++ auto mask_empty = g.MaskEmpty(); ++ if (ABSL_PREDICT_TRUE(mask_empty)) { ++ size_t target = seq.offset(mask_empty.LowestBitSet()); ++ size_t index = ++ SwisstableGenerationsEnabled() ++ ? PrepareInsertLargeGenerationsEnabled( ++ common(), GetPolicyFunctions(), hash, ++ FindInfo{target, seq.index()}, ++ HashKey{hash_ref(), key}) ++ : PrepareInsertLarge(common(), GetPolicyFunctions(), hash, ++ FindInfo{target, seq.index()}); ++ return {iterator_at(index), true}; ++ } ++ seq.next(); ++ ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity() && "full table!"); ++ } ++ } ++ ++ protected: ++ // Asserts for correctness that we run on find/find_or_prepare_insert. ++ template ++ void AssertOnFind([[maybe_unused]] const K& key) { ++ AssertHashEqConsistent(key); ++ AssertNotDebugCapacity(); ++ } ++ ++ // Asserts that the capacity is not a sentinel invalid value. ++ void AssertNotDebugCapacity() const { ++#ifdef NDEBUG ++ if (!SwisstableGenerationsEnabled()) { ++ return; ++ } ++#endif ++ if (ABSL_PREDICT_TRUE(capacity() < ++ InvalidCapacity::kAboveMaxValidCapacity)) { ++ return; ++ } ++ assert(capacity() != InvalidCapacity::kReentrance && ++ "Reentrant container access during element construction/destruction " ++ "is not allowed."); ++ if constexpr (SwisstableAssertAccessToDestroyedTable()) { ++ if (capacity() == InvalidCapacity::kDestroyed) { ++ ABSL_RAW_LOG(FATAL, "Use of destroyed hash table."); ++ } ++ } ++ if (SwisstableGenerationsEnabled() && ++ ABSL_PREDICT_FALSE(capacity() >= InvalidCapacity::kMovedFrom)) { ++ if (capacity() == InvalidCapacity::kSelfMovedFrom) { ++ // If this log triggers, then a hash table was move-assigned to itself ++ // and then used again later without being reinitialized. ++ ABSL_RAW_LOG(FATAL, "Use of self-move-assigned hash table."); ++ } ++ ABSL_RAW_LOG(FATAL, "Use of moved-from hash table."); ++ } ++ } ++ ++ // Asserts that hash and equal functors provided by the user are consistent, ++ // meaning that `eq(k1, k2)` implies `hash(k1)==hash(k2)`. ++ template ++ void AssertHashEqConsistent(const K& key) { ++#ifdef NDEBUG ++ return; ++#endif ++ // If the hash/eq functors are known to be consistent, then skip validation. ++ if (std::is_same::value && ++ std::is_same::value) { ++ return; ++ } ++ if (std::is_scalar::value && ++ std::is_same>::value && ++ std::is_same>::value) { ++ return; ++ } ++ if (empty()) return; ++ ++ const size_t hash_of_arg = hash_of(key); ++ const auto assert_consistent = [&](const ctrl_t*, void* slot) { ++ const bool is_key_equal = equal_to(key, to_slot(slot)); ++ if (!is_key_equal) return; ++ ++ [[maybe_unused]] const bool is_hash_equal = ++ hash_of_arg == hash_of(to_slot(slot)); ++ assert((!is_key_equal || is_hash_equal) && ++ "eq(k1, k2) must imply that hash(k1) == hash(k2). " ++ "hash/eq functors are inconsistent."); ++ }; ++ ++ if (is_small()) { ++ assert_consistent(/*unused*/ nullptr, single_slot()); ++ return; ++ } ++ // We only do validation for small tables so that it's constant time. ++ if (capacity() > 16) return; ++ IterateOverFullSlots(common(), sizeof(slot_type), assert_consistent); ++ } ++ ++ // Attempts to find `key` in the table; if it isn't found, returns an iterator ++ // where the value can be inserted into, with the control byte already set to ++ // `key`'s H2. Returns a bool indicating whether an insertion can take place. ++ template ++ std::pair find_or_prepare_insert(const K& key) { ++ AssertOnFind(key); ++ if (is_small()) return find_or_prepare_insert_small(key); ++ return find_or_prepare_insert_large(key); ++ } ++ ++ // Constructs the value in the space pointed by the iterator. This only works ++ // after an unsuccessful find_or_prepare_insert() and before any other ++ // modifications happen in the raw_hash_set. ++ // ++ // PRECONDITION: iter was returned from find_or_prepare_insert(k), where k is ++ // the key decomposed from `forward(args)...`, and the bool returned by ++ // find_or_prepare_insert(k) was true. ++ // POSTCONDITION: *m.iterator_at(i) == value_type(forward(args)...). ++ template ++ void emplace_at(iterator iter, Args&&... args) { ++ construct(iter.slot(), std::forward(args)...); ++ ++ // When is_small, find calls find_small and if size is 0, then it will ++ // return an end iterator. This can happen in the raw_hash_set copy ctor. ++ assert((is_small() || ++ PolicyTraits::apply(FindElement{*this}, *iter) == iter) && ++ "constructed value does not match the lookup key"); ++ } ++ ++ iterator iterator_at(size_t i) ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return {control() + i, slot_array() + i, common().generation_ptr()}; ++ } ++ const_iterator iterator_at(size_t i) const ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return const_cast(this)->iterator_at(i); ++ } ++ iterator iterator_at_ptr(std::pair ptrs) ++ ABSL_ATTRIBUTE_LIFETIME_BOUND { ++ return {ptrs.first, to_slot(ptrs.second), common().generation_ptr()}; ++ } ++ ++ reference unchecked_deref(iterator it) { return it.unchecked_deref(); } ++ ++ private: ++ friend struct RawHashSetTestOnlyAccess; ++ ++ // The number of slots we can still fill without needing to rehash. ++ // ++ // This is stored separately due to tombstones: we do not include tombstones ++ // in the growth capacity, because we'd like to rehash when the table is ++ // otherwise filled with tombstones: otherwise, probe sequences might get ++ // unacceptably long without triggering a rehash. Callers can also force a ++ // rehash via the standard `rehash(0)`, which will recompute this value as a ++ // side-effect. ++ // ++ // See `CapacityToGrowth()`. ++ size_t growth_left() const { ++ return common().growth_left(); ++ } ++ ++ GrowthInfo& growth_info() { ++ return common().growth_info(); ++ } ++ GrowthInfo growth_info() const { ++ return common().growth_info(); ++ } ++ ++ // Prefetch the heap-allocated memory region to resolve potential TLB and ++ // cache misses. This is intended to overlap with execution of calculating the ++ // hash for a key. ++ void prefetch_heap_block() const { ++ ABSL_SWISSTABLE_ASSERT(!is_soo()); ++#if ABSL_HAVE_BUILTIN(__builtin_prefetch) || defined(__GNUC__) ++ __builtin_prefetch(control(), 0, 1); ++#endif ++ } ++ ++ CommonFields& common() { return settings_.template get<0>(); } ++ const CommonFields& common() const { return settings_.template get<0>(); } ++ ++ ctrl_t* control() const { ++ ABSL_SWISSTABLE_ASSERT(!is_soo()); ++ return common().control(); ++ } ++ slot_type* slot_array() const { ++ ABSL_SWISSTABLE_ASSERT(!is_soo()); ++ return static_cast(common().slot_array()); ++ } ++ slot_type* soo_slot() { ++ ABSL_SWISSTABLE_ASSERT(is_soo()); ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN( ++ static_cast(common().soo_data())); ++ } ++ const slot_type* soo_slot() const { ++ ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN( ++ const_cast(this)->soo_slot()); ++ } ++ slot_type* single_slot() { ++ ABSL_SWISSTABLE_ASSERT(is_small()); ++ return SooEnabled() ? soo_slot() : slot_array(); ++ } ++ const slot_type* single_slot() const { ++ return const_cast(this)->single_slot(); ++ } ++ void decrement_small_size() { ++ ABSL_SWISSTABLE_ASSERT(is_small()); ++ SooEnabled() ? common().set_empty_soo() : common().decrement_size(); ++ if (!SooEnabled()) { ++ SanitizerPoisonObject(single_slot()); ++ } ++ } ++ iterator single_iterator() { ++ return {SooControl(), single_slot(), common().generation_ptr()}; ++ } ++ const_iterator single_iterator() const { ++ return const_cast(this)->single_iterator(); ++ } ++ HashtablezInfoHandle infoz() { ++ ABSL_SWISSTABLE_ASSERT(!is_soo()); ++ return common().infoz(); ++ } ++ ++ hasher& hash_ref() { return settings_.template get<1>(); } ++ const hasher& hash_ref() const { return settings_.template get<1>(); } ++ key_equal& eq_ref() { return settings_.template get<2>(); } ++ const key_equal& eq_ref() const { return settings_.template get<2>(); } ++ CharAlloc& char_alloc_ref() { return settings_.template get<3>(); } ++ const CharAlloc& char_alloc_ref() const { ++ return settings_.template get<3>(); ++ } ++ ++ static void* get_char_alloc_ref_fn(CommonFields& common) { ++ auto* h = reinterpret_cast(&common); ++ return &h->char_alloc_ref(); ++ } ++ static void* get_hash_ref_fn(CommonFields& common) { ++ auto* h = reinterpret_cast(&common); ++ // TODO(b/397453582): Remove support for const hasher. ++ return const_cast*>(&h->hash_ref()); ++ } ++ static void transfer_n_slots_fn(void* set, void* dst, void* src, ++ size_t count) { ++ auto* src_slot = to_slot(src); ++ auto* dst_slot = to_slot(dst); ++ ++ auto* h = static_cast(set); ++ for (; count > 0; --count, ++src_slot, ++dst_slot) { ++ h->transfer(dst_slot, src_slot); ++ } ++ } ++ ++ // TODO(b/382423690): Try to type erase entire function or at least type erase ++ // by GetKey + Hash for memcpyable types. ++ // TODO(b/382423690): Try to type erase for big slots: sizeof(slot_type) > 16. ++ static void transfer_unprobed_elements_to_next_capacity_fn( ++ CommonFields& common, const ctrl_t* old_ctrl, void* old_slots, ++ void* probed_storage, ++ void (*encode_probed_element)(void* probed_storage, h2_t h2, ++ size_t source_offset, size_t h1)) { ++ const size_t new_capacity = common.capacity(); ++ const size_t old_capacity = PreviousCapacity(new_capacity); ++ ABSL_ASSUME(old_capacity + 1 >= Group::kWidth); ++ ABSL_ASSUME((old_capacity + 1) % Group::kWidth == 0); ++ ++ auto* set = reinterpret_cast(&common); ++ slot_type* old_slots_ptr = to_slot(old_slots); ++ ctrl_t* new_ctrl = common.control(); ++ slot_type* new_slots = set->slot_array(); ++ ++ for (size_t group_index = 0; group_index < old_capacity; ++ group_index += Group::kWidth) { ++ GroupFullEmptyOrDeleted old_g(old_ctrl + group_index); ++ std::memset(new_ctrl + group_index, static_cast(ctrl_t::kEmpty), ++ Group::kWidth); ++ std::memset(new_ctrl + group_index + old_capacity + 1, ++ static_cast(ctrl_t::kEmpty), Group::kWidth); ++ // TODO(b/382423690): try to type erase everything outside of the loop. ++ // We will share a lot of code in expense of one function call per group. ++ for (auto in_fixed_group_index : old_g.MaskFull()) { ++ size_t old_index = group_index + in_fixed_group_index; ++ slot_type* old_slot = old_slots_ptr + old_index; ++ // TODO(b/382423690): try to avoid entire hash calculation since we need ++ // only one new bit of h1. ++ size_t hash = set->hash_of(old_slot); ++ size_t h1 = H1(hash); ++ h2_t h2 = H2(hash); ++ size_t new_index = TryFindNewIndexWithoutProbing( ++ h1, old_index, old_capacity, new_ctrl, new_capacity); ++ // Note that encode_probed_element is allowed to use old_ctrl buffer ++ // till and included the old_index. ++ if (ABSL_PREDICT_FALSE(new_index == kProbedElementIndexSentinel)) { ++ encode_probed_element(probed_storage, h2, old_index, h1); ++ continue; ++ } ++ ABSL_SWISSTABLE_ASSERT((new_index & old_capacity) <= old_index); ++ ABSL_SWISSTABLE_ASSERT(IsEmpty(new_ctrl[new_index])); ++ new_ctrl[new_index] = static_cast(h2); ++ auto* new_slot = new_slots + new_index; ++ SanitizerUnpoisonMemoryRegion(new_slot, sizeof(slot_type)); ++ set->transfer(new_slot, old_slot); ++ SanitizerPoisonMemoryRegion(old_slot, sizeof(slot_type)); ++ } ++ } ++ } ++ ++ static const PolicyFunctions& GetPolicyFunctions() { ++ static_assert(sizeof(slot_type) <= (std::numeric_limits::max)(), ++ "Slot size is too large. Use std::unique_ptr for value type " ++ "or use absl::node_hash_{map,set}."); ++ static_assert(alignof(slot_type) <= ++ size_t{(std::numeric_limits::max)()}); ++ static_assert(sizeof(key_type) <= ++ size_t{(std::numeric_limits::max)()}); ++ static_assert(sizeof(value_type) <= ++ size_t{(std::numeric_limits::max)()}); ++ static constexpr size_t kBackingArrayAlignment = ++ BackingArrayAlignment(alignof(slot_type)); ++ static const PolicyFunctions value = { ++ static_cast(sizeof(key_type)), ++ static_cast(sizeof(value_type)), ++ static_cast(sizeof(slot_type)), ++ static_cast(alignof(slot_type)), SooEnabled(), ++ ShouldSampleHashtablezInfoForAlloc(), ++ // TODO(b/328722020): try to type erase ++ // for standard layout and alignof(Hash) <= alignof(CommonFields). ++ std::is_empty_v ? &GetRefForEmptyClass ++ : &raw_hash_set::get_hash_ref_fn, ++ PolicyTraits::template get_hash_slot_fn(), ++ PolicyTraits::transfer_uses_memcpy() ++ ? TransferNRelocatable ++ : &raw_hash_set::transfer_n_slots_fn, ++ std::is_empty_v ? &GetRefForEmptyClass ++ : &raw_hash_set::get_char_alloc_ref_fn, ++ &AllocateBackingArray, ++ &DeallocateBackingArray, ++ &raw_hash_set::transfer_unprobed_elements_to_next_capacity_fn}; ++ return value; ++ } ++ ++ // Bundle together CommonFields plus other objects which might be empty. ++ // CompressedTuple will ensure that sizeof is not affected by any of the empty ++ // fields that occur after CommonFields. ++ absl::container_internal::CompressedTuple ++ settings_{CommonFields::CreateDefault(), hasher{}, ++ key_equal{}, CharAlloc{}}; ++}; ++ ++// Friend access for free functions in raw_hash_set.h. ++struct HashtableFreeFunctionsAccess { ++ template ++ static typename Set::size_type EraseIf(Predicate& pred, Set* c) { ++ if (c->empty()) { ++ return 0; ++ } ++ if (c->is_small()) { ++ auto it = c->single_iterator(); ++ if (!pred(*it)) { ++ ABSL_SWISSTABLE_ASSERT(c->size() == 1 && ++ "hash table was modified unexpectedly"); ++ return 0; ++ } ++ c->destroy(it.slot()); ++ c->erase_meta_only_small(); ++ return 1; ++ } ++ [[maybe_unused]] const size_t original_size_for_assert = c->size(); ++ size_t num_deleted = 0; ++ using SlotType = typename Set::slot_type; ++ IterateOverFullSlots( ++ c->common(), sizeof(SlotType), ++ [&](const ctrl_t* ctrl, void* slot_void) { ++ auto* slot = static_cast(slot_void); ++ if (pred(Set::PolicyTraits::element(slot))) { ++ c->destroy(slot); ++ EraseMetaOnlyLarge(c->common(), ctrl, sizeof(*slot)); ++ ++num_deleted; ++ } ++ }); ++ // NOTE: IterateOverFullSlots allow removal of the current element, so we ++ // verify the size additionally here. ++ ABSL_SWISSTABLE_ASSERT(original_size_for_assert - num_deleted == ++ c->size() && ++ "hash table was modified unexpectedly"); ++ return num_deleted; ++ } ++ ++ template ++ static void ForEach(Callback& cb, Set* c) { ++ if (c->empty()) { ++ return; ++ } ++ if (c->is_small()) { ++ cb(*c->single_iterator()); ++ return; ++ } ++ using SlotType = typename Set::slot_type; ++ using ElementTypeWithConstness = decltype(*c->begin()); ++ IterateOverFullSlots( ++ c->common(), sizeof(SlotType), [&cb](const ctrl_t*, void* slot) { ++ ElementTypeWithConstness& element = ++ Set::PolicyTraits::element(static_cast(slot)); ++ cb(element); ++ }); ++ } ++}; ++ ++// Erases all elements that satisfy the predicate `pred` from the container `c`. ++template ++typename raw_hash_set::size_type EraseIf( ++ Predicate& pred, raw_hash_set* c) { ++ return HashtableFreeFunctionsAccess::EraseIf(pred, c); ++} ++ ++// Calls `cb` for all elements in the container `c`. ++template ++void ForEach(Callback& cb, raw_hash_set* c) { ++ return HashtableFreeFunctionsAccess::ForEach(cb, c); ++} ++template ++void ForEach(Callback& cb, const raw_hash_set* c) { ++ return HashtableFreeFunctionsAccess::ForEach(cb, c); ++} ++ ++namespace hashtable_debug_internal { ++template ++struct HashtableDebugAccess> { ++ using Traits = typename Set::PolicyTraits; ++ using Slot = typename Traits::slot_type; ++ ++ constexpr static bool kIsDefaultHash = Set::kIsDefaultHash; ++ ++ static size_t GetNumProbes(const Set& set, ++ const typename Set::key_type& key) { ++ if (set.is_small()) return 0; ++ size_t num_probes = 0; ++ const size_t hash = set.hash_of(key); ++ auto seq = probe(set.common(), hash); ++ const h2_t h2 = H2(hash); ++ const ctrl_t* ctrl = set.control(); ++ while (true) { ++ container_internal::Group g{ctrl + seq.offset()}; ++ for (uint32_t i : g.Match(h2)) { ++ if (set.equal_to(key, set.slot_array() + seq.offset(i))) ++ return num_probes; ++ ++num_probes; ++ } ++ if (g.MaskEmpty()) return num_probes; ++ seq.next(); ++ ++num_probes; ++ } ++ } ++ ++ static size_t AllocatedByteSize(const Set& c) { ++ size_t capacity = c.capacity(); ++ if (capacity == 0) return 0; ++ size_t m = ++ c.is_soo() ? 0 : c.common().alloc_size(sizeof(Slot), alignof(Slot)); ++ ++ size_t per_slot = Traits::space_used(static_cast(nullptr)); ++ if (per_slot != ~size_t{}) { ++ m += per_slot * c.size(); ++ } else { ++ for (auto it = c.begin(); it != c.end(); ++it) { ++ m += Traits::space_used(it.slot()); ++ } ++ } ++ return m; ++ } ++}; ++ ++} // namespace hashtable_debug_internal ++ ++// Extern template instantiations reduce binary size and linker input size. ++// Function definition is in raw_hash_set.cc. ++extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<0, false>( ++ CommonFields&, const PolicyFunctions&, absl::FunctionRef, ++ bool); ++extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<1, true>( ++ CommonFields&, const PolicyFunctions&, absl::FunctionRef, ++ bool); ++extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<4, true>( ++ CommonFields&, const PolicyFunctions&, absl::FunctionRef, ++ bool); ++extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<8, true>( ++ CommonFields&, const PolicyFunctions&, absl::FunctionRef, ++ bool); ++#if UINTPTR_MAX == UINT64_MAX ++extern template size_t GrowSooTableToNextCapacityAndPrepareInsert<16, true>( ++ CommonFields&, const PolicyFunctions&, absl::FunctionRef, ++ bool); ++#endif ++ ++} // namespace container_internal ++ABSL_NAMESPACE_END ++} // namespace absl ++ ++#undef ABSL_SWISSTABLE_ENABLE_GENERATIONS ++#undef ABSL_SWISSTABLE_IGNORE_UNINITIALIZED ++#undef ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN ++#undef ABSL_SWISSTABLE_ASSERT ++ ++#endif // ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ +diff --git a/src/3rdparty/chromium/third_party/angle/BUILD.gn b/src/3rdparty/chromium/third_party/angle/BUILD.gn +--- a/src/3rdparty/chromium/third_party/angle/BUILD.gn 2026-06-16 10:01:57.893380900 +0200 ++++ b/src/3rdparty/chromium/third_party/angle/BUILD.gn 2026-06-16 10:07:04.974505400 +0200 +@@ -700,7 +700,7 @@ + if (!angle_is_winuwp) { + libs += [ "setupapi.lib" ] + } +- libs += [ "dxgi.lib" ] ++ libs += [ "dxgi" ] + } + + if (is_linux || is_chromeos) { +diff --git a/src/3rdparty/chromium/third_party/blink/common/messaging/string_message_codec_unittest.cc b/src/3rdparty/chromium/third_party/blink/common/messaging/string_message_codec_unittest.cc +--- a/src/3rdparty/chromium/third_party/blink/common/messaging/string_message_codec_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/common/messaging/string_message_codec_unittest.cc 2026-06-16 10:06:30.273481400 +0200 +@@ -14,7 +14,7 @@ + #include "mojo/public/cpp/base/big_buffer.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/abseil-cpp/absl/functional/overload.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/public/devtools_protocol/BUILD.gn b/src/3rdparty/chromium/third_party/blink/public/devtools_protocol/BUILD.gn +--- a/src/3rdparty/chromium/third_party/blink/public/devtools_protocol/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/devtools_protocol/BUILD.gn 2026-06-16 10:07:11.213943700 +0200 +@@ -1,15 +1,24 @@ + import("//third_party/inspector_protocol/inspector_protocol.gni") ++import("//build/config/qtwebengine_private_paths.gni") + import("//v8/gni/v8.gni") + +-_inspector_protocol_dir = "//third_party/inspector_protocol" ++if (qtwebengine_private_chromium_include_dir != "") { ++ _inspector_protocol_dir = qtwebengine_private_chromium_include_dir + "/third_party/inspector_protocol" ++ _browser_protocol_pdl = qtwebengine_private_chromium_include_dir + "/third_party/blink/public/devtools_protocol/browser_protocol.pdl" ++ _browser_protocol_compat_json = qtwebengine_private_chromium_include_dir + "/third_party/blink/public/devtools_protocol/browser_protocol-1.3.json" ++} else { ++ _inspector_protocol_dir = "//third_party/inspector_protocol" ++ _browser_protocol_pdl = "browser_protocol.pdl" ++ _browser_protocol_compat_json = "browser_protocol-1.3.json" ++} + _protocol_out_dir = "$root_gen_dir/third_party/blink/public/devtools_protocol" + + action("protocol_compatibility_check") { + script = _inspector_protocol_dir + "/check_protocol_compatibility.py" + + inputs = [ +- "browser_protocol.pdl", +- "browser_protocol-1.3.json", ++ _browser_protocol_pdl, ++ _browser_protocol_compat_json, + v8_inspector_js_protocol, + ] + _stamp = "$_protocol_out_dir/browser_protocol.stamp" +@@ -18,7 +27,7 @@ + args = [ + "--stamp", + rebase_path(_stamp, root_build_dir), +- rebase_path("browser_protocol.pdl", root_build_dir), ++ rebase_path(_browser_protocol_pdl, root_build_dir), + rebase_path(v8_inspector_js_protocol, root_build_dir), + ] + } +@@ -28,14 +37,14 @@ + script = _inspector_protocol_dir + "/concatenate_protocols.py" + + inputs = [ +- "browser_protocol.pdl", ++ _browser_protocol_pdl, + v8_inspector_js_protocol, + ] + output_file = "$_protocol_out_dir/protocol.json" + outputs = [ output_file ] + + args = [ +- rebase_path("browser_protocol.pdl", root_build_dir), ++ rebase_path(_browser_protocol_pdl, root_build_dir), + rebase_path(v8_inspector_js_protocol, root_build_dir), + rebase_path(output_file, root_build_dir), + ] +diff --git a/src/3rdparty/chromium/third_party/blink/public/platform/platform.h b/src/3rdparty/chromium/third_party/blink/public/platform/platform.h +--- a/src/3rdparty/chromium/third_party/blink/public/platform/platform.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/platform/platform.h 2026-06-16 10:06:30.275488200 +0200 +@@ -61,7 +61,7 @@ + #include "third_party/blink/public/platform/websocket_handshake_throttle_provider.h" + #include "ui/base/resource/resource_scale_factor.h" + #include "ui/gl/angle_implementation.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + class GURL; + class SkCanvas; +diff --git a/src/3rdparty/chromium/third_party/blink/public/platform/web_isolated_world_info.h b/src/3rdparty/chromium/third_party/blink/public/platform/web_isolated_world_info.h +--- a/src/3rdparty/chromium/third_party/blink/public/platform/web_isolated_world_info.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/platform/web_isolated_world_info.h 2026-06-16 10:06:30.277497400 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_security_origin.h" + #include "third_party/blink/public/platform/web_string.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_ISOLATED_WORLD_INFO_H_ + #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_ISOLATED_WORLD_INFO_H_ +diff --git a/src/3rdparty/chromium/third_party/blink/public/platform/web_v8_value_converter.h b/src/3rdparty/chromium/third_party/blink/public/platform/web_v8_value_converter.h +--- a/src/3rdparty/chromium/third_party/blink/public/platform/web_v8_value_converter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/platform/web_v8_value_converter.h 2026-06-16 10:06:30.279511500 +0200 +@@ -9,7 +9,7 @@ + + #include "base/functional/callback.h" + #include "third_party/blink/public/platform/web_common.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace base { + class Value; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/blink.h b/src/3rdparty/chromium/third_party/blink/public/web/blink.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/blink.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/blink.h 2026-06-16 10:06:30.279511500 +0200 +@@ -35,7 +35,7 @@ + + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_string.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace mojo { + class BinderMap; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/modules/canvas/canvas_test_utils.h b/src/3rdparty/chromium/third_party/blink/public/web/modules/canvas/canvas_test_utils.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/modules/canvas/canvas_test_utils.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/modules/canvas/canvas_test_utils.h 2026-06-16 10:06:30.281565600 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_CANVAS_CANVAS_TEST_UTILS_H_ + + #include "third_party/blink/public/platform/web_common.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h b/src/3rdparty/chromium/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h 2026-06-16 10:06:30.283575200 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/public/platform/cross_variant_mojo_util.h" + #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_fetch_context.h" + #include "third_party/blink/public/platform/web_url.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace base { + class SequencedTaskRunner; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_array_buffer_converter.h b/src/3rdparty/chromium/third_party/blink/public/web/web_array_buffer_converter.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_array_buffer_converter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_array_buffer_converter.h 2026-06-16 10:06:30.285584200 +0200 +@@ -33,7 +33,7 @@ + + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/web/web_array_buffer.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_blob.h b/src/3rdparty/chromium/third_party/blink/public/web/web_blob.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_blob.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_blob.h 2026-06-16 10:06:30.287332400 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/public/platform/web_private_ptr.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/platform/web_url.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_console_message.h b/src/3rdparty/chromium/third_party/blink/public/web/web_console_message.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_console_message.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_console_message.h 2026-06-16 10:06:30.289340800 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/web/web_node.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Context; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_crypto_normalize.h b/src/3rdparty/chromium/third_party/blink/public/web/web_crypto_normalize.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_crypto_normalize.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_crypto_normalize.h 2026-06-16 10:06:30.291348800 +0200 +@@ -33,7 +33,7 @@ + + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_crypto_algorithm.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_dom_activity_logger.h b/src/3rdparty/chromium/third_party/blink/public/web/web_dom_activity_logger.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_dom_activity_logger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_dom_activity_logger.h 2026-06-16 10:06:30.293356200 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/platform/web_url.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + class WebLocalFrame; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_dom_file_system.h b/src/3rdparty/chromium/third_party/blink/public/web/web_dom_file_system.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_dom_file_system.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_dom_file_system.h 2026-06-16 10:06:30.295364700 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/platform/web_url.h" + #include "third_party/blink/public/web/web_frame.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_dom_media_stream_track.h b/src/3rdparty/chromium/third_party/blink/public/web/web_dom_media_stream_track.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_dom_media_stream_track.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_dom_media_stream_track.h 2026-06-16 10:06:30.297372300 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_track.h" + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_private_ptr.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Value; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_element.h b/src/3rdparty/chromium/third_party/blink/public/web/web_element.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_element.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_element.h 2026-06-16 10:06:30.299382400 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/public/web/web_node.h" + #include "third_party/skia/include/core/SkBitmap.h" + #include "ui/gfx/geometry/vector2d_f.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace gfx { + class Rect; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_frame.h b/src/3rdparty/chromium/third_party/blink/public/web/web_frame.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_frame.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_frame.h 2026-06-16 10:06:30.301390700 +0200 +@@ -41,7 +41,7 @@ + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/web/web_frame_load_type.h" + #include "third_party/blink/public/web/web_node.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame.h b/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame.h 2026-06-16 10:06:30.305184700 +0200 +@@ -57,7 +57,7 @@ + #include "ui/accessibility/ax_tree_id.h" + #include "ui/base/ime/ime_text_span.h" + #include "ui/gfx/range/range.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace base { + class SingleThreadTaskRunner; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame_client.h b/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame_client.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_local_frame_client.h 2026-06-16 10:06:30.307192700 +0200 +@@ -100,7 +100,7 @@ + #include "ui/accessibility/ax_location_and_scroll_updates.h" + #include "ui/accessibility/ax_tree_update.h" + #include "ui/events/types/scroll_types.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace cc { + class LayerTreeSettings; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_message_port_converter.h b/src/3rdparty/chromium/third_party/blink/public/web/web_message_port_converter.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_message_port_converter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_message_port_converter.h 2026-06-16 10:06:30.309199400 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "third_party/blink/public/platform/web_common.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_node.h b/src/3rdparty/chromium/third_party/blink/public/web/web_node.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_node.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_node.h 2026-06-16 10:06:30.311206200 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/public/platform/web_private_ptr.h" + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/public/web/web_dom_event.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_plugin.h b/src/3rdparty/chromium/third_party/blink/public/web/web_plugin.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_plugin.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_plugin.h 2026-06-16 10:06:30.313214900 +0200 +@@ -44,7 +44,7 @@ + #include "third_party/blink/public/platform/web_url.h" + #include "third_party/blink/public/web/web_drag_status.h" + #include "third_party/blink/public/web/web_input_method_controller.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace gfx { + class PointF; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_plugin_container.h b/src/3rdparty/chromium/third_party/blink/public/web/web_plugin_container.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_plugin_container.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_plugin_container.h 2026-06-16 10:06:30.315222500 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/public/platform/web_common.h" + #include "ui/gfx/geometry/point.h" + #include "ui/gfx/geometry/rect.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace cc { + class Layer; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_serialized_script_value.h b/src/3rdparty/chromium/third_party/blink/public/web/web_serialized_script_value.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_serialized_script_value.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_serialized_script_value.h 2026-06-16 10:06:30.317231300 +0200 +@@ -33,7 +33,7 @@ + + #include "third_party/blink/public/platform/web_common.h" + #include "third_party/blink/public/platform/web_private_ptr.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_testing_support.h b/src/3rdparty/chromium/third_party/blink/public/web/web_testing_support.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_testing_support.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_testing_support.h 2026-06-16 10:06:30.318979300 +0200 +@@ -26,7 +26,7 @@ + #ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_TESTING_SUPPORT_H_ + #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_TESTING_SUPPORT_H_ + +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class ScopedMockOverlayScrollbars; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_url_pattern_to_safe_url_pattern.h b/src/3rdparty/chromium/third_party/blink/public/web/web_url_pattern_to_safe_url_pattern.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_url_pattern_to_safe_url_pattern.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_url_pattern_to_safe_url_pattern.h 2026-06-16 10:06:30.320986900 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_URL_PATTERN_TO_SAFE_URL_PATTERN_H_ + + #include "third_party/blink/public/platform/web_common.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_v8_context_snapshot.h b/src/3rdparty/chromium/third_party/blink/public/web/web_v8_context_snapshot.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_v8_context_snapshot.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_v8_context_snapshot.h 2026-06-16 10:06:30.320986900 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_V8_CONTEXT_SNAPSHOT_H_ + + #include "third_party/blink/public/platform/web_common.h" +-#include "v8/include/v8-snapshot.h" ++#include "v8-snapshot.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/public/web/web_v8_features.h b/src/3rdparty/chromium/third_party/blink/public/web/web_v8_features.h +--- a/src/3rdparty/chromium/third_party/blink/public/web/web_v8_features.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/public/web/web_v8_features.h 2026-06-16 10:06:30.322996100 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/public/mojom/browser_interface_broker.mojom-shared.h" + #include "third_party/blink/public/platform/cross_variant_mojo_util.h" + #include "third_party/blink/public/platform/web_common.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/activity_logger_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/activity_logger_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/activity_logger_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/activity_logger_test.cc 2026-06-16 10:06:30.325003100 +0200 +@@ -18,7 +18,7 @@ + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/base64.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/bigint_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/bigint_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/bigint_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/bigint_test.cc 2026-06-16 10:06:30.329022200 +0200 +@@ -10,7 +10,7 @@ + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/binding_security.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/binding_security.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/binding_security.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/binding_security.h 2026-06-16 10:06:30.331030600 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/bindings/binding_security_for_platform.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/boxed_v8_module.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/boxed_v8_module.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/boxed_v8_module.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/boxed_v8_module.h 2026-06-16 10:06:30.333037500 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/hash_functions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/callback_invoke_helper.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/callback_invoke_helper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/callback_invoke_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/callback_invoke_helper.h 2026-06-16 10:06:30.334789600 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_value_or_script_wrappable_adapter.h" + #include "third_party/blink/renderer/platform/scheduler/public/task_attribution_tracker.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary.h 2026-06-16 10:06:30.336796900 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/platform/wtf/hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/dictionary_test.cc 2026-06-16 10:06:30.338805400 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/testing/exception_state_matchers.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/generated_code_helper.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/generated_code_helper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/generated_code_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/generated_code_helper.h 2026-06-16 10:06:30.340821800 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_messages.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/iterable.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/iterable.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/iterable.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/iterable.cc 2026-06-16 10:06:30.340821800 +0200 +@@ -7,9 +7,9 @@ + #include + + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace blink { + namespace bindings { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/js_based_event_listener.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/js_based_event_listener.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/js_based_event_listener.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/js_based_event_listener.h 2026-06-16 10:06:30.342831000 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/dom/events/event_listener.h" + #include "third_party/blink/renderer/platform/bindings/v8_private_property.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc 2026-06-16 10:06:30.344838600 +0200 +@@ -76,7 +76,7 @@ + #include "third_party/blink/renderer/platform/weborigin/reporting_disposition.h" + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" + #include "third_party/blink/renderer/platform/wtf/text/string_operators.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/local_window_proxy.h 2026-06-16 10:06:30.346847900 +0200 +@@ -38,7 +38,7 @@ + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record.h 2026-06-16 10:06:30.348855600 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_record_test.cc 2026-06-16 10:06:30.350605100 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_per_context_data.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_deque.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_request.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_request.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_request.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/module_request.h 2026-06-16 10:06:30.354619300 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-callbacks.h" ++#include "v8-callbacks.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits.h 2026-06-16 10:06:30.356626700 +0200 +@@ -10,7 +10,7 @@ + + #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.cc 2026-06-16 10:06:30.358633700 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/v8_ctype_traits.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/bindings/exception_messages.h" +-#include "v8/include/v8-fast-api-calls.h" ++#include "v8-fast-api-calls.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h 2026-06-16 10:06:30.360641700 +0200 +@@ -30,7 +30,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_messages.h" + #include "third_party/blink/renderer/platform/heap/heap_traits.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-fast-api-calls.h" ++#include "v8-fast-api-calls.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/observable_array_exotic_object_handler.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/observable_array_exotic_object_handler.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/observable_array_exotic_object_handler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/observable_array_exotic_object_handler.h 2026-06-16 10:06:30.362650100 +0200 +@@ -15,10 +15,10 @@ + #include "third_party/blink/renderer/platform/bindings/v8_set_return_value.h" + #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-function-callback.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.cc 2026-06-16 10:06:30.364657500 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder.h 2026-06-16 10:06:30.368415200 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/platform/wtf/hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" + #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" +-#include "v8/include/v8-profiler.h" ++#include "v8-profiler.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/profiler_trace_builder_test.cc 2026-06-16 10:06:30.370423000 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/v8_profiler_sample.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_profiler_trace.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + namespace blink { + + TEST(ProfilerTraceBuilderTest, AddVMStateMarker) { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/promise_all_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/promise_all_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/promise_all_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/promise_all_test.cc 2026-06-16 10:06:30.372430600 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/core/frame/local_dom_window.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc 2026-06-16 10:06:30.374437800 +0200 +@@ -6,7 +6,7 @@ + + #include "mojo/public/cpp/bindings/enum_utils.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h 2026-06-16 10:06:30.374437800 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc 2026-06-16 10:06:30.376446300 +0200 +@@ -7,7 +7,7 @@ + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.cc 2026-06-16 10:06:30.378462900 +0200 +@@ -39,7 +39,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h" + #include "third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h" + #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/remote_window_proxy.h 2026-06-16 10:06:30.382219100 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/window_proxy.h" + #include "third_party/blink/renderer/core/frame/remote_frame.h" + #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/retained_object_info.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/retained_object_info.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/retained_object_info.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/retained_object_info.h 2026-06-16 10:06:30.384228300 +0200 +@@ -32,7 +32,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_RETAINED_OBJECT_INFO_H_ + + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-profiler.h" ++#include "v8-profiler.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.cc 2026-06-16 10:06:30.386236800 +0200 +@@ -22,7 +22,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/worker_pool.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer.h 2026-06-16 10:06:30.388244500 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace base { + class SingleThreadTaskRunner; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer_client.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer_client.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_cache_consumer_client.h 2026-06-16 10:06:30.390252800 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/bindings/parkable_string.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8-script.h" ++#include "v8-script.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_controller.h 2026-06-16 10:06:30.392260000 +0200 +@@ -39,7 +39,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h 2026-06-16 10:06:30.394268400 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/html/custom/custom_element_definition.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition_builder.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition_builder.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition_builder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition_builder.h 2026-06-16 10:06:30.396275600 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/html/custom/custom_element_definition_builder.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_evaluation_result.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_evaluation_result.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_evaluation_result.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_evaluation_result.h 2026-06-16 10:06:30.398024900 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class ScriptState; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_function.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_function.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_function.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_function.h 2026-06-16 10:06:30.400031800 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_iterator.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_iterator.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_iterator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_iterator.h 2026-06-16 10:06:30.402040300 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise.h 2026-06-16 10:06:30.404048500 +0200 +@@ -45,7 +45,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc 2026-06-16 10:06:30.408065000 +0200 +@@ -25,7 +25,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/thread_state.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h 2026-06-16 10:06:30.410073300 +0200 +@@ -22,7 +22,7 @@ + #include "third_party/blink/renderer/platform/heap/prefinalizer.h" + #include "third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if DCHECK_IS_ON() + #include "base/debug/stack_trace.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_test.cc 2026-06-16 10:06:30.412080000 +0200 +@@ -22,7 +22,7 @@ + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/testing/url_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_with_tracker_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_with_tracker_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_with_tracker_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_resolver_with_tracker_test.cc 2026-06-16 10:06:30.413827100 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_promise_test.cc 2026-06-16 10:06:30.415835700 +0200 +@@ -45,7 +45,7 @@ + #include "third_party/blink/renderer/core/testing/null_execution_context.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer.h 2026-06-16 10:06:30.417843000 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/loader/fetch/url_loader/background_response_processor.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace mojo { + class SimpleWatcher; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc 2026-06-16 10:06:30.419862300 +0200 +@@ -68,7 +68,7 @@ + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier_base.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" + #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_value.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_value.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_value.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_value.h 2026-06-16 10:06:30.423881900 +0200 +@@ -38,7 +38,7 @@ + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace bindings { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc 2026-06-16 10:06:30.425896600 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/testing/dictionary_test.h" + #include "third_party/blink/renderer/core/testing/gc_object_liveness_observer.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/post_message_helper.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/post_message_helper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/post_message_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/post_message_helper.h 2026-06-16 10:06:30.427904200 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/public/mojom/messaging/user_activation_snapshot.mojom-blink-forward.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h 2026-06-16 10:06:30.427904200 +0200 +@@ -57,7 +57,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_fuzzer.cc 2026-06-16 10:06:30.431661700 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/testing/blink_fuzzer_test_support.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_deserializer.h 2026-06-16 10:06:30.433672600 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h 2026-06-16 10:06:30.435679300 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc 2026-06-16 10:06:30.439694500 +0200 +@@ -78,7 +78,7 @@ + #include "third_party/skia/include/core/SkCanvas.h" + #include "third_party/skia/include/core/SkImage.h" + #include "third_party/skia/include/core/SkSurface.h" +-#include "v8/include/v8-cppgc.h" ++#include "v8-cppgc.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.cc 2026-06-16 10:06:30.441702400 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h" + #include "third_party/blink/renderer/platform/bindings/v8_per_context_data.h" + #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" +-#include "v8/include/v8-context.h" ++#include "v8-context.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/shadow_realm_context.h 2026-06-16 10:06:30.441702400 +0200 +@@ -5,7 +5,7 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_SHADOW_REALM_CONTEXT_H_ + #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_SHADOW_REALM_CONTEXT_H_ + +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h 2026-06-16 10:06:30.445456500 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_deque.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/use_counter_callback.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/use_counter_callback.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/use_counter_callback.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/use_counter_callback.h 2026-06-16 10:06:30.447464400 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_USE_COUNTER_CALLBACK_H_ + + #include "third_party/blink/renderer/core/core_export.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h 2026-06-16 10:06:30.449476300 +0200 +@@ -43,7 +43,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h 2026-06-16 10:06:30.451483600 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h 2026-06-16 10:06:30.453490700 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_common.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_common.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_common.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_common.h 2026-06-16 10:06:30.455497700 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/core/execution_context/execution_context.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_for_streaming.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_for_streaming.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_for_streaming.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_for_streaming.h 2026-06-16 10:06:30.457504800 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/v8_code_cache.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_compile_hints_consumer.h" + #include "third_party/blink/renderer/core/core_export.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_producer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_producer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_producer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_compile_hints_producer.h 2026-06-16 10:06:30.459513300 +0200 +@@ -14,8 +14,8 @@ + #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-traced-handle.h" +-#include "v8/include/v8.h" ++#include "v8-traced-handle.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.h 2026-06-16 10:06:30.461261000 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_ctype_traits.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_ctype_traits.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_ctype_traits.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_ctype_traits.h 2026-06-16 10:06:30.463268900 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h" +-#include "v8/include/v8-fast-api-calls.h" ++#include "v8-fast-api-calls.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_event_listener_info.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_event_listener_info.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_event_listener_info.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_event_listener_info.h 2026-06-16 10:06:30.465284000 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h 2026-06-16 10:06:30.467293700 +0200 +@@ -33,8 +33,8 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.cc 2026-06-16 10:06:30.469300800 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/platform/instrumentation/histogram.h" + #include "third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_for_context_dispose.h 2026-06-16 10:06:30.471315700 +0200 +@@ -33,7 +33,7 @@ + + #include "third_party/blink/renderer/bindings/core/v8/window_proxy.h" + #include "third_party/blink/renderer/core/core_export.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.h 2026-06-16 10:06:30.473322700 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/html_element_type_helpers.h" + #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc 2026-06-16 10:01:57.938902100 +0200 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc 2026-06-16 10:06:51.428263900 +0200 +@@ -100,8 +100,8 @@ + #include "third_party/blink/renderer/platform/wtf/stack_util.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "tools/v8_context_snapshot/buildflags.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + #if defined(V8_USE_EXTERNAL_STARTUP_DATA) + #include "gin/public/v8_snapshot_file_type.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer.h 2026-06-16 10:06:30.477080700 +0200 +@@ -28,8 +28,8 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-callbacks.h" +-#include "v8/include/v8.h" ++#include "v8-callbacks.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer_win.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer_win.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer_win.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_initializer_win.cc 2026-06-16 10:06:30.479087900 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/execution_context/execution_context.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/re2/src/re2/re2.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_local_compile_hints_producer.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_local_compile_hints_producer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_local_compile_hints_producer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_local_compile_hints_producer.h 2026-06-16 10:06:30.481097100 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_metrics.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_metrics.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_metrics.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_metrics.h 2026-06-16 10:06:30.481097100 +0200 +@@ -7,7 +7,7 @@ + + #include "services/metrics/public/cpp/ukm_recorder.h" + #include "third_party/blink/renderer/core/core_export.h" +-#include "v8/include/v8-metrics.h" ++#include "v8-metrics.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_builder.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_builder.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_builder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_builder.h 2026-06-16 10:06:30.483103900 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_parser.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_parser.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_parser.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_object_parser.h 2026-06-16 10:06:30.485114600 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/css/css_property_names.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_page_popup_controller_binding.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_page_popup_controller_binding.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_page_popup_controller_binding.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_page_popup_controller_binding.h 2026-06-16 10:06:30.487124600 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner.h 2026-06-16 10:06:30.491137800 +0200 +@@ -33,7 +33,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc 2026-06-16 10:06:30.492890600 +0200 +@@ -30,7 +30,7 @@ + #include "third_party/blink/renderer/platform/weborigin/scheme_registry.h" + #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" + #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_string_resource.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_string_resource.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_string_resource.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_string_resource.h 2026-06-16 10:06:30.492890600 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" + #include "third_party/blink/renderer/platform/wtf/threading.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h 2026-06-16 10:06:30.494899300 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_private_property.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.h 2026-06-16 10:06:30.496909000 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.cc 2026-06-16 10:06:30.498916600 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/core/frame/dom_window.h" + #include "third_party/blink/renderer/core/frame/frame.h" + #include "third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy.h 2026-06-16 10:06:30.500924900 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h 2026-06-16 10:06:30.502931500 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/core/frame/remote_frame.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/window_proxy_test.cc 2026-06-16 10:06:30.506945400 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/core/testing/sim/sim_test.h" + #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc 2026-06-16 10:06:30.508702200 +0200 +@@ -52,7 +52,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" + #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h 2026-06-16 10:06:30.510711400 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference.h 2026-06-16 10:06:30.512729600 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/core/v8/world_safe_v8_reference_test.cc 2026-06-16 10:06:30.514737700 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.h b/src/3rdparty/chromium/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.h 2026-06-16 10:06:30.518758900 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/collect_idl_files.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/collect_idl_files.py +--- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/collect_idl_files.py 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/collect_idl_files.py 2026-06-16 10:06:52.057346500 +0200 +@@ -1,70 +1,92 @@ +-# Copyright 2017 The Chromium Authors +-# Use of this source code is governed by a BSD-style license that can be +-# found in the LICENSE file. +-""" +-Collects Web IDL definitions in IDL files into a Python object per Blink +-component. +- +-Collected IDL definitions are parsed into ASTs and saved into a file with +-a label of Blink component. +-""" +- +-import optparse +-import shlex +- +-import web_idl +- +-from idl_parser import idl_parser +-from idl_parser import idl_lexer +- +-_VALID_COMPONENTS = ('core', 'modules', 'extensions_chromeos', +- 'extensions_webview') +- +- +-def parse_options(): +- parser = optparse.OptionParser() +- parser.add_option( +- '--idl_list_file', +- type='string', +- help="a file path which lists IDL file paths to process") +- parser.add_option( +- '--component', +- type='choice', +- choices=_VALID_COMPONENTS, +- help="specify a component name") +- parser.add_option( +- '--for_testing', +- action='store_true', +- help=("specify this option if the IDL definitions are meant for " +- "testing only")) +- parser.add_option('--output', type='string', help="the output file path") +- options, args = parser.parse_args() +- +- required_option_names = ('idl_list_file', 'component', 'output') +- for opt_name in required_option_names: +- if getattr(options, opt_name) is None: +- parser.error("--{} is a required option.".format(opt_name)) +- +- if args: +- parser.error("Unknown arguments {}".format(args)) +- +- return options, args +- +- +-def main(): +- options, _ = parse_options() +- +- with open(options.idl_list_file, encoding='utf-8') as idl_list_file: +- filepaths = shlex.split(idl_list_file) +- lexer = idl_lexer.IDLLexer() +- parser = idl_parser.IDLParser(lexer) +- ast_group = web_idl.AstGroup( +- component=web_idl.Component(options.component), +- for_testing=bool(options.for_testing)) +- for filepath in filepaths: +- ast_group.add_ast_node(idl_parser.ParseFile(parser, filepath)) +- ast_group.write_to_file(options.output) +- +- +-if __name__ == '__main__': +- main() ++# Copyright 2017 The Chromium Authors ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++""" ++Collects Web IDL definitions in IDL files into a Python object per Blink ++component. ++ ++Collected IDL definitions are parsed into ASTs and saved into a file with ++a label of Blink component. ++""" ++ ++import os ++import optparse ++import shlex ++ ++import web_idl ++ ++from idl_parser import idl_parser ++from idl_parser import idl_lexer ++ ++_VALID_COMPONENTS = ('core', 'modules', 'extensions_chromeos', ++ 'extensions_webview') ++ ++ ++def parse_options(): ++ parser = optparse.OptionParser() ++ parser.add_option( ++ '--idl_list_file', ++ type='string', ++ help="a file path which lists IDL file paths to process") ++ parser.add_option( ++ '--component', ++ type='choice', ++ choices=_VALID_COMPONENTS, ++ help="specify a component name") ++ parser.add_option( ++ '--for_testing', ++ action='store_true', ++ help=("specify this option if the IDL definitions are meant for " ++ "testing only")) ++ parser.add_option('--output', type='string', help="the output file path") ++ options, args = parser.parse_args() ++ ++ required_option_names = ('idl_list_file', 'component', 'output') ++ for opt_name in required_option_names: ++ if getattr(options, opt_name) is None: ++ parser.error("--{} is a required option.".format(opt_name)) ++ ++ if args: ++ parser.error("Unknown arguments {}".format(args)) ++ ++ return options, args ++ ++ ++def main(): ++ options, _ = parse_options() ++ ++ with open(options.idl_list_file, encoding='utf-8') as idl_list_file: ++ filepaths = shlex.split(idl_list_file) ++ lexer = idl_lexer.IDLLexer() ++ parser = idl_parser.IDLParser(lexer) ++ ast_group = web_idl.AstGroup( ++ component=web_idl.Component(options.component), ++ for_testing=bool(options.for_testing)) ++ private_chromium_dir = os.environ.get("QTWEBENGINE_PRIVATE_CHROMIUM_DIR") ++ if not private_chromium_dir: ++ private_chromium_dir = os.path.abspath(os.path.join( ++ os.path.dirname(__file__), "..", "..", "..", "..", "..")) ++ ++ def _use_private_chromium_path(filepath): ++ if os.path.exists(filepath): ++ return filepath ++ normalized_path = filepath.replace("\\", "/") ++ third_party_marker = "/third_party/" ++ marker_index = normalized_path.find(third_party_marker) ++ if marker_index < 0: ++ return filepath ++ private_path = os.path.join( ++ private_chromium_dir, ++ normalized_path[marker_index + 1:].replace("/", os.sep)) ++ if os.path.exists(private_path): ++ return private_path ++ return filepath ++ ++ for filepath in filepaths: ++ ast_group.add_ast_node(idl_parser.ParseFile( ++ parser, _use_private_chromium_path(filepath))) ++ ast_group.write_to_file(options.output) ++ ++ ++if __name__ == '__main__': ++ main() +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc b/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc 2026-06-16 10:06:30.520767200 +0200 +@@ -66,7 +66,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/wtf.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if defined(USE_BLINK_EXTENSIONS_CHROMEOS) + #include "third_party/blink/renderer/extensions/chromeos/chromeos_extensions.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_shutdown.cc b/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_shutdown.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_shutdown.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/blink_shutdown.cc 2026-06-16 10:06:30.522781900 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/main_thread.h" + #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_collector.h b/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_collector.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_collector.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_collector.h 2026-06-16 10:06:30.524531000 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/public/mojom/call_stack_generator/call_stack_generator.mojom-blink.h" + #include "third_party/blink/renderer/controller/controller_export.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_generator.h b/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_generator.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_generator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/javascript_call_stack_generator.h 2026-06-16 10:06:30.526539100 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/controller/controller_export.h" + #include "third_party/blink/renderer/controller/javascript_call_stack_collector.h" + #include "third_party/blink/renderer/platform/wtf/hash_map.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor.cc b/src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor.cc 2026-06-16 10:06:30.528548000 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/main_thread.h" + #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" + #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/renderer_resource_coordinator_impl_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/renderer_resource_coordinator_impl_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/renderer_resource_coordinator_impl_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/renderer_resource_coordinator_impl_test.cc 2026-06-16 10:06:30.530555100 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/testing/url_test_helpers.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc 2026-06-16 10:06:30.532562600 +0200 +@@ -25,7 +25,7 @@ + #include "third_party/blink/renderer/platform/heap/thread_state.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/ref_counted.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl_test.cc 2026-06-16 10:06:30.534571800 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/core/testing/sim/sim_test.h" + #include "third_party/blink/renderer/core/workers/dedicated_worker_test.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.h b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.h 2026-06-16 10:06:30.536580500 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/controller/controller_export.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace base { + class SingleThreadTaskRunner; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/animation_test_helpers.h b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/animation_test_helpers.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/animation_test_helpers.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/animation_test_helpers.h 2026-06-16 10:06:30.536580500 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/core/animation/interpolation.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input.cc 2026-06-16 10:06:30.540338100 +0200 +@@ -68,7 +68,7 @@ + #include "third_party/blink/renderer/platform/wtf/hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/ascii_ctype.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/effect_input_test.cc 2026-06-16 10:06:30.542347600 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/core/dom/element.h" + #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/keyframe_effect_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/keyframe_effect_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/keyframe_effect_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/keyframe_effect_test.cc 2026-06-16 10:06:30.544357300 +0200 +@@ -30,7 +30,7 @@ + #include "third_party/blink/renderer/core/style/computed_style.h" + #include "third_party/blink/renderer/core/testing/page_test_base.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/timing_input_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/timing_input_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/animation/timing_input_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/animation/timing_input_test.cc 2026-06-16 10:06:30.546371900 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/core/css/cssom/css_unit_values.h" + #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.cc 2026-06-16 10:06:30.546371900 +0200 +@@ -7,7 +7,7 @@ + #include "third_party/blink/renderer/core/css/media_query_evaluator.h" + #include "third_party/blink/renderer/core/css/rule_set.h" + #include "third_party/blink/renderer/core/css/style_rule.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.h b/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/css/rule_set_diff.h 2026-06-16 10:06:30.548383100 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/dom/dom_exception.h b/src/3rdparty/chromium/third_party/blink/renderer/core/dom/dom_exception.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/dom/dom_exception.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/dom/dom_exception.h 2026-06-16 10:06:30.550399200 +0200 +@@ -33,7 +33,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_code.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-exception.h" ++#include "v8-exception.h" + + namespace blink { + class ExceptionContext; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/dom/events/listener_leak_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/dom/events/listener_leak_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/dom/events/listener_leak_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/dom/events/listener_leak_test.cc 2026-06-16 10:06:30.552418900 +0200 +@@ -41,8 +41,8 @@ + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/testing/url_loader_mock_factory.h" + #include "third_party/blink/renderer/platform/testing/url_test_helpers.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/events/error_event.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/events/error_event.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/events/error_event.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/events/error_event.cc 2026-06-16 10:06:30.554441600 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/v8_error_event_init.h" + #include "third_party/blink/renderer/core/event_interface_names.h" + #include "third_party/blink/renderer/core/event_type_names.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/events/message_event_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/events/message_event_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/events/message_event_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/events/message_event_test.cc 2026-06-16 10:06:30.558455900 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/core/frame/local_frame.h" + #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/agent.h b/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/agent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/agent.h 2026-06-16 10:06:30.560462700 +0200 +@@ -13,8 +13,8 @@ + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" + #include "third_party/blink/renderer/platform/supplementable.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-microtask-queue.h" ++#include "v8-forward.h" ++#include "v8-microtask-queue.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/execution_context.h b/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/execution_context.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/execution_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/execution_context/execution_context.h 2026-06-16 10:06:30.562471200 +0200 +@@ -56,8 +56,8 @@ + #include "third_party/blink/renderer/platform/use_counter_and_console_logger.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" +-#include "v8/include/v8-callbacks.h" +-#include "v8/include/v8-forward.h" ++#include "v8-callbacks.h" ++#include "v8-forward.h" + + namespace base { + class UnguessableToken; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_context_snapshot.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_context_snapshot.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_context_snapshot.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_context_snapshot.cc 2026-06-16 10:06:30.564479400 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/public/web/web_v8_context_snapshot.h" + + #include "third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_features.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_features.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_features.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_v8_features.cc 2026-06-16 10:06:30.566488100 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/main_thread.h" + #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_view_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_view_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_view_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_view_test.cc 2026-06-16 10:06:30.574260000 +0200 +@@ -170,7 +170,7 @@ + #include "ui/events/keycodes/dom/dom_key.h" + #include "ui/gfx/geometry/rect.h" + #include "ui/gfx/geometry/size.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(ENABLE_UNHANDLED_TAP) + #include "third_party/blink/public/mojom/unhandled_tap_notifier/unhandled_tap_notifier.mojom-blink.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/body_stream_buffer.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/body_stream_buffer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/body_stream_buffer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/body_stream_buffer.cc 2026-06-16 10:06:30.578272700 +0200 +@@ -31,7 +31,7 @@ + #include "third_party/blink/renderer/platform/network/encoded_form_data.h" + #include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/bytes_consumer_tee.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/bytes_consumer_tee.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/bytes_consumer_tee.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/bytes_consumer_tee.cc 2026-06-16 10:06:30.580279300 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/platform/heap/persistent.h" + #include "third_party/blink/renderer/platform/loader/fetch/bytes_consumer.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/fetch_manager.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/fetch_manager.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/fetch_manager.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/fetch_manager.cc 2026-06-16 10:06:30.582285200 +0200 +@@ -114,7 +114,7 @@ + #include "third_party/blink/renderer/platform/wtf/hash_set.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using network::mojom::CredentialsMode; + using network::mojom::FetchResponseType; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc 2026-06-16 10:06:30.586297800 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc 2026-06-16 10:06:30.588046500 +0200 +@@ -18,7 +18,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_script_identifier.h b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_script_identifier.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_script_identifier.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_script_identifier.h 2026-06-16 10:06:30.590057300 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/hash_traits.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.cc 2026-06-16 10:06:30.594086700 +0200 +@@ -26,8 +26,8 @@ + #include "third_party/blink/renderer/platform/loader/fetch/resource_request.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" +-#include "v8/include/v8-inspector.h" +-#include "v8/include/v8.h" ++#include "v8-inspector.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.h b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/ad_tracker.h 2026-06-16 10:06:30.596099200 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/renderer/platform/wtf/hash_set.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/csp/content_security_policy.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/csp/content_security_policy.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/csp/content_security_policy.cc 2026-06-16 10:06:30.600125100 +0200 +@@ -89,7 +89,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h" + #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" + #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/dactyloscoper.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/dactyloscoper.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/dactyloscoper.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/dactyloscoper.cc 2026-06-16 10:06:30.602146600 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/privacy_budget/identifiability_digest_helpers.h" + #include "third_party/perfetto/include/perfetto/tracing/event_context.h" +-#include "v8/include/v8-function-callback.h" ++#include "v8-function-callback.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_dom_window.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_dom_window.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_dom_window.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_dom_window.cc 2026-06-16 10:06:30.605919200 +0200 +@@ -171,7 +171,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/uuid.h" + #include "ui/display/screen_info.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client.h b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client.h 2026-06-16 10:06:30.609965400 +0200 +@@ -77,7 +77,7 @@ + #include "third_party/blink/renderer/platform/weborigin/referrer.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace network { + class SharedURLLoaderFactory; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/local_frame_client_impl.cc 2026-06-16 10:06:30.611977300 +0200 +@@ -111,7 +111,7 @@ + #include "third_party/blink/renderer/platform/network/http_parsers.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/pausable_script_executor.h b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/pausable_script_executor.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/pausable_script_executor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/pausable_script_executor.h 2026-06-16 10:06:30.613987700 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/platform/heap/self_keep_alive.h" + #include "third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.cc 2026-06-16 10:06:30.618016500 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/core/html/parser/html_document_parser.h" + #include "third_party/blink/renderer/core/probe/core_probes.h" + #include "third_party/blink/renderer/platform/bindings/source_location.h" +-#include "v8/include/v8-metrics.h" ++#include "v8-metrics.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.h b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor.h 2026-06-16 10:06:30.681452000 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/platform/heap/prefinalizer.h" + #include "third_party/blink/renderer/platform/scheduler/public/thread.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/performance_monitor_test.cc 2026-06-16 10:06:30.685214400 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/core/probe/core_probes.h" + #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #include + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_frame_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_frame_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_frame_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_frame_test.cc 2026-06-16 10:06:30.697278900 +0200 +@@ -236,7 +236,7 @@ + #include "ui/events/keycodes/dom/dom_key.h" + #include "ui/gfx/geometry/test/geometry_util.h" + #include "ui/gfx/geometry/transform.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using blink::mojom::SelectionMenuBehavior; + using blink::test::RunPendingTasks; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc 2026-06-16 10:06:30.703050000 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "ui/gfx/geometry/quad_f.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc 2026-06-16 10:06:30.705062700 +0200 +@@ -7,7 +7,7 @@ + #include "third_party/blink/renderer/core/execution_context/execution_context.h" + #include "third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h" + #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc 2026-06-16 10:06:30.707076100 +0200 +@@ -129,7 +129,7 @@ + #include "ui/base/resource/resource_scale_factor.h" + #include "ui/gfx/geometry/rect_conversions.h" + #include "ui/gfx/geometry/skia_conversions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/image_data.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/image_data.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/image_data.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/image_data.cc 2026-06-16 10:06:30.709084100 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/core/html/canvas/predefined_color_space.h" + #include "third_party/blink/renderer/core/imagebitmap/image_bitmap.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/html/custom/ce_reactions_scope.h b/src/3rdparty/chromium/third_party/blink/renderer/core/html/custom/ce_reactions_scope.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/html/custom/ce_reactions_scope.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/html/custom/ce_reactions_scope.h 2026-06-16 10:06:30.711091800 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/html/html_plugin_element.h b/src/3rdparty/chromium/third_party/blink/renderer/core/html/html_plugin_element.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/html/html_plugin_element.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/html/html_plugin_element.h 2026-06-16 10:06:30.714853100 +0200 +@@ -29,7 +29,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/dom/create_element_flags.h" + #include "third_party/blink/renderer/core/html/html_frame_owner_element.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/devtools_session.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/devtools_session.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/devtools_session.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/devtools_session.h 2026-06-16 10:06:30.716863400 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-inspector-protocol.h" ++#include "v8-inspector-protocol.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/exception_metadata.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/exception_metadata.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/exception_metadata.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/exception_metadata.cc 2026-06-16 10:06:30.718870600 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/bindings/thread_debugger.h" + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_animation_agent.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_animation_agent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_animation_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_animation_agent.h 2026-06-16 10:06:30.720881500 +0200 +@@ -18,7 +18,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/weak_cell.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_agent.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_agent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_agent.h 2026-06-16 10:06:30.722888300 +0200 +@@ -46,8 +46,8 @@ + #include "third_party/blink/renderer/platform/wtf/hash_set.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-inspector.h" +-#include "v8/include/v8-profiler.h" ++#include "v8-inspector.h" ++#include "v8-profiler.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_debugger_agent.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_debugger_agent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_debugger_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_debugger_agent.h 2026-06-16 10:06:30.726908700 +0200 +@@ -39,7 +39,7 @@ + #include "third_party/blink/renderer/core/inspector/protocol/dom_debugger.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.cc 2026-06-16 10:06:30.728917100 +0200 +@@ -45,7 +45,7 @@ + #include "third_party/blink/renderer/core/paint/paint_layer_paint_order_iterator.h" + #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" + #include "third_party/blink/renderer/platform/bindings/thread_debugger.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_event_breakpoints_agent.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_event_breakpoints_agent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_event_breakpoints_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_event_breakpoints_agent.h 2026-06-16 10:06:30.730664300 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/core/inspector/protocol/event_breakpoints.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_io_agent.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_io_agent.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_io_agent.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_io_agent.cc 2026-06-16 10:06:30.732678500 +0200 +@@ -6,7 +6,7 @@ + + #include "third_party/blink/renderer/bindings/core/v8/v8_blob.h" + #include "third_party/blink/renderer/core/fileapi/blob.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc 2026-06-16 10:06:30.736697600 +0200 +@@ -90,7 +90,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/inspector_protocol/crdtp/json.h" + #include "ui/accessibility/ax_mode.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using crdtp::SpanFrom; + using crdtp::json::ConvertCBORToJSON; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.cc 2026-06-16 10:06:30.740713300 +0200 +@@ -100,7 +100,7 @@ + #include "third_party/blink/renderer/platform/wtf/vector.h" + #include "third_party/inspector_protocol/crdtp/protocol_core.h" + #include "ui/display/screen_info.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_page_agent.h 2026-06-16 10:06:30.742722100 +0200 +@@ -43,7 +43,7 @@ + #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" + #include "third_party/blink/renderer/platform/wtf/hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_task_runner.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_task_runner.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_task_runner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_task_runner.h 2026-06-16 10:06:30.744730400 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.cc 2026-06-16 10:06:30.746480800 +0200 +@@ -64,8 +64,8 @@ + #include "third_party/blink/renderer/platform/wtf/dynamic_annotations.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_trace_events.h 2026-06-16 10:06:30.750496000 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #ifndef CR_EXPAND_ARG + #define CR_EXPAND_ARG(x) x +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/legacy_dom_snapshot_agent.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/legacy_dom_snapshot_agent.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/legacy_dom_snapshot_agent.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/legacy_dom_snapshot_agent.cc 2026-06-16 10:06:30.752504200 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" + #include "third_party/blink/renderer/core/style/computed_style.h" + #include "third_party/blink/renderer/platform/bindings/thread_debugger.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/locale_controller.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/locale_controller.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/locale_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/locale_controller.cc 2026-06-16 10:06:30.754513600 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" + #include "third_party/icu/source/common/unicode/locid.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/main_thread_debugger.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/main_thread_debugger.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/main_thread_debugger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/main_thread_debugger.h 2026-06-16 10:06:30.756522500 +0200 +@@ -36,8 +36,8 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/dom/document_lifecycle.h" + #include "third_party/blink/renderer/core/inspector/thread_debugger_common_impl.h" +-#include "v8/include/v8-inspector.h" +-#include "v8/include/v8.h" ++#include "v8-inspector.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/request_debug_header_scope.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/request_debug_header_scope.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/request_debug_header_scope.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/request_debug_header_scope.h 2026-06-16 10:06:30.758529300 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/resolve_node.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/resolve_node.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/resolve_node.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/resolve_node.h 2026-06-16 10:06:30.760536100 +0200 +@@ -9,7 +9,7 @@ + + #include "third_party/blink/renderer/core/inspector/protocol/runtime.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/v8_inspector_string.h b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/v8_inspector_string.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/v8_inspector_string.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/v8_inspector_string.h 2026-06-16 10:06:30.762284700 +0200 +@@ -20,8 +20,8 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/inspector_protocol/crdtp/protocol_core.h" + #include "third_party/inspector_protocol/crdtp/serializable.h" +-#include "v8/include/v8-inspector.h" +-#include "v8/include/v8-script.h" ++#include "v8-inspector.h" ++#include "v8-script.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/worker_thread_debugger.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/worker_thread_debugger.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/worker_thread_debugger.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/inspector/worker_thread_debugger.cc 2026-06-16 10:06:30.762284700 +0200 +@@ -47,7 +47,7 @@ + #include "third_party/blink/renderer/platform/bindings/source_location.h" + #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/layout/custom/css_layout_definition.h b/src/3rdparty/chromium/third_party/blink/renderer/core/layout/custom/css_layout_definition.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/layout/custom/css_layout_definition.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/layout/custom/css_layout_definition.h 2026-06-16 10:06:30.766308300 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/geometry/layout_unit.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/back_forward_cache_loader_helper_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/back_forward_cache_loader_helper_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/back_forward_cache_loader_helper_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/back_forward_cache_loader_helper_impl.cc 2026-06-16 10:06:30.768316400 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/renderer/core/loader/back_forward_cache_loader_helper_impl.h" + + #include "third_party/blink/renderer/platform/bindings/source_location.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/empty_clients.h b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/empty_clients.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/empty_clients.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/empty_clients.h 2026-06-16 10:06:30.770325300 +0200 +@@ -65,7 +65,7 @@ + #include "ui/gfx/geometry/point_f.h" + #include "ui/gfx/geometry/rect.h" + #include "ui/gfx/geometry/rect_f.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + /* + This file holds empty Client stubs for use by WebCore. +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h 2026-06-16 10:06:30.772332200 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-callbacks.h" ++#include "v8-callbacks.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc 2026-06-16 10:06:30.774339000 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/platform/loader/fetch/resource_loading_log.h" + #include "third_party/blink/renderer/platform/weborigin/security_policy.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + // +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc 2026-06-16 10:06:30.778097700 +0200 +@@ -66,7 +66,7 @@ + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" + #include "third_party/blink/renderer/platform/wtf/text/strcat.h" + #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc 2026-06-16 10:06:30.780109000 +0200 +@@ -28,7 +28,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + #include "ui/gfx/geometry/size.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.cc 2026-06-16 10:06:30.782116500 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.h b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/loader/web_bundle/script_web_bundle_error.h 2026-06-16 10:06:30.782116500 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_WEB_BUNDLE_SCRIPT_WEB_BUNDLE_ERROR_H_ + + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/messaging/blink_cloneable_message.h b/src/3rdparty/chromium/third_party/blink/renderer/core/messaging/blink_cloneable_message.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/messaging/blink_cloneable_message.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/messaging/blink_cloneable_message.h 2026-06-16 10:06:30.786130700 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc 2026-06-16 10:06:30.788137500 +0200 +@@ -39,7 +39,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" + #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/scheduler/task_attribution_task_state.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/scheduler/task_attribution_task_state.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/scheduler/task_attribution_task_state.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/scheduler/task_attribution_task_state.cc 2026-06-16 10:06:30.790144700 +0200 +@@ -6,8 +6,8 @@ + + #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h" + #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h" +-#include "v8/include/v8-cpp-heap-external.h" +-#include "v8/include/v8.h" ++#include "v8-cpp-heap-external.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/detect_javascript_frameworks.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/detect_javascript_frameworks.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/detect_javascript_frameworks.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/detect_javascript_frameworks.cc 2026-06-16 10:06:30.792154100 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver.cc 2026-06-16 10:06:30.793901000 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" + #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc 2026-06-16 10:06:30.795910300 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/core/testing/dummy_modulator.h" + #include "third_party/blink/renderer/core/testing/module_test_base.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/import_map_error.h b/src/3rdparty/chromium/third_party/blink/renderer/core/script/import_map_error.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/import_map_error.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/import_map_error.h 2026-06-16 10:06:30.797922100 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_CORE_SCRIPT_IMPORT_MAP_ERROR_H_ + + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/js_module_script.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/js_module_script.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/js_module_script.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/js_module_script.cc 2026-06-16 10:06:30.799935600 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_import_meta.h b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_import_meta.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_import_meta.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_import_meta.h 2026-06-16 10:06:30.799935600 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc 2026-06-16 10:06:30.801942700 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.cc 2026-06-16 10:06:30.803958900 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.h b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/module_script.h 2026-06-16 10:06:30.805967400 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/platform/weborigin/kurl_hash.h" + #include "third_party/blink/renderer/platform/wtf/hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/pending_import_map.h b/src/3rdparty/chromium/third_party/blink/renderer/core/script/pending_import_map.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/pending_import_map.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/pending_import_map.h 2026-06-16 10:06:30.807976800 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc 2026-06-16 10:06:30.809724300 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/renderer/platform/instrumentation/use_counter.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/text/text_position.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/script/wasm_module_script.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/script/wasm_module_script.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/script/wasm_module_script.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/script/wasm_module_script.cc 2026-06-16 10:06:30.811732100 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.h 2026-06-16 10:06:30.813739700 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h 2026-06-16 10:06:30.815747300 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/count_queuing_strategy.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/count_queuing_strategy.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/count_queuing_strategy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/count_queuing_strategy.h 2026-06-16 10:06:30.817754800 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/miscellaneous_operations.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/miscellaneous_operations.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/miscellaneous_operations.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/miscellaneous_operations.h 2026-06-16 10:06:30.819763300 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/script_value.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/pipe_to_engine.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/pipe_to_engine.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/pipe_to_engine.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/pipe_to_engine.h 2026-06-16 10:06:30.819763300 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queue_with_sizes.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queue_with_sizes.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queue_with_sizes.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queue_with_sizes.h 2026-06-16 10:06:30.821772900 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queuing_strategy_common.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queuing_strategy_common.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queuing_strategy_common.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/queuing_strategy_common.h 2026-06-16 10:06:30.825528400 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_QUEUING_STRATEGY_COMMON_H_ + + #include "third_party/blink/renderer/platform/bindings/v8_private_property.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_into_request.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_into_request.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_into_request.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_into_request.h 2026-06-16 10:06:30.849373900 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_request.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_request.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_request.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/read_request.h 2026-06-16 10:06:30.851380600 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class ExceptionState; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.cc 2026-06-16 10:06:30.829546100 +0200 +@@ -25,7 +25,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_byte_stream_controller.h 2026-06-16 10:06:30.831557200 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_deque.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream.h 2026-06-16 10:06:30.831557200 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_controller.h 2026-06-16 10:06:30.835574800 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class ExceptionState; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller.h 2026-06-16 10:06:30.837582500 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/core/streams/readable_stream_controller.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller_with_script_scope.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller_with_script_scope.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller_with_script_scope.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_default_controller_with_script_scope.h 2026-06-16 10:06:30.839590700 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.cc 2026-06-16 10:06:30.843345400 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_generic_reader.h 2026-06-16 10:06:30.845352100 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/readable_stream_test.cc 2026-06-16 10:06:30.847363800 +0200 +@@ -39,7 +39,7 @@ + #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/stream_algorithms.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/stream_algorithms.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/stream_algorithms.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/stream_algorithms.h 2026-06-16 10:06:30.853388300 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/tee_engine.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/tee_engine.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/tee_engine.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/tee_engine.h 2026-06-16 10:06:30.857149300 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/test_utils.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/test_utils.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/test_utils.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/test_utils.cc 2026-06-16 10:06:30.859159700 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/script_value.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams.cc 2026-06-16 10:06:30.861169500 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + // See the design doc at + // https://docs.google.com/document/d/1_KuZzg5c3pncLJPFa8SuVm23AP4tft6mzPCL5at3I9M/edit +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transferable_streams_test.cc 2026-06-16 10:06:30.865185300 +0200 +@@ -30,7 +30,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream.h 2026-06-16 10:06:30.867193800 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_default_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_default_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_default_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_default_controller.h 2026-06-16 10:06:30.869232900 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_test.cc 2026-06-16 10:06:30.871245500 +0200 +@@ -28,7 +28,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_transformer.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_transformer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_transformer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/transform_stream_transformer.h 2026-06-16 10:06:30.873023300 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_byte_source_base.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_byte_source_base.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_byte_source_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_byte_source_base.h 2026-06-16 10:06:30.875052100 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_sink_base.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_sink_base.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_sink_base.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_sink_base.cc 2026-06-16 10:06:30.877061900 +0200 +@@ -6,7 +6,7 @@ + + #include "base/containers/span.h" + #include "third_party/blink/renderer/core/streams/writable_stream_default_controller.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_source_base.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_source_base.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_source_base.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/underlying_source_base.cc 2026-06-16 10:06:30.879068100 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/core/streams/readable_stream_default_controller_with_script_scope.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream.h 2026-06-16 10:06:30.881079400 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_deque.h" + #include "third_party/blink/renderer/platform/heap/member.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_controller.h 2026-06-16 10:06:30.883087200 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_writer.h b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_writer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_writer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_default_writer.h 2026-06-16 10:06:30.887103800 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/streams/writable_stream_test.cc 2026-06-16 10:06:30.888858400 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/dictionary_test.h b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/dictionary_test.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/dictionary_test.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/dictionary_test.h 2026-06-16 10:06:30.890869800 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/member.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/gc_observation.h b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/gc_observation.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/gc_observation.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/gc_observation.h 2026-06-16 10:06:30.892877100 +0200 +@@ -33,7 +33,7 @@ + + #include "third_party/blink/renderer/platform/bindings/scoped_persistent.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals.cc 2026-06-16 10:06:30.898913000 +0200 +@@ -209,7 +209,7 @@ + #include "ui/gfx/geometry/point_conversions.h" + #include "ui/gfx/geometry/rect.h" + #include "ui/gfx/image/canvas_image_source.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals_cookies.h b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals_cookies.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals_cookies.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/internals_cookies.h 2026-06-16 10:06:30.898913000 +0200 +@@ -8,7 +8,7 @@ + #include "services/network/public/mojom/cookie_manager.mojom-blink.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_internal_cookie.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_internal_cookie_same_site.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/module_test_base.h b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/module_test_base.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/module_test_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/module_test_base.h 2026-06-16 10:06:30.900920200 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/script_evaluation_result.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/v8/web_core_test_support.h b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/v8/web_core_test_support.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/testing/v8/web_core_test_support.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/testing/v8/web_core_test_support.h 2026-06-16 10:06:30.902928700 +0200 +@@ -26,7 +26,7 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_TESTING_V8_WEB_CORE_TEST_SUPPORT_H_ + #define THIRD_PARTY_BLINK_RENDERER_CORE_TESTING_V8_WEB_CORE_TEST_SUPPORT_H_ + +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timezone/timezone_controller.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timezone/timezone_controller.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timezone/timezone_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timezone/timezone_controller.cc 2026-06-16 10:06:30.904676100 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" + #include "third_party/blink/renderer/platform/wtf/text/unicode_string.h" + #include "third_party/icu/source/i18n/unicode/timezone.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/internals_profiler.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/internals_profiler.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/internals_profiler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/internals_profiler.cc 2026-06-16 10:06:30.906685200 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/renderer/core/timing/internals_profiler.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" + +-#include "v8/include/v8-profiler.h" ++#include "v8-profiler.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/local_web_memory_measurer.h b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/local_web_memory_measurer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/local_web_memory_measurer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/local_web_memory_measurer.h 2026-06-16 10:06:30.906685200 +0200 +@@ -9,7 +9,7 @@ + + #include "third_party/blink/renderer/platform/heap/persistent.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc 2026-06-16 10:06:30.908696200 +0200 +@@ -30,7 +30,7 @@ + #include "third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using performance_manager::mojom::blink::WebMemoryAttribution; + using performance_manager::mojom::blink::WebMemoryAttributionPtr; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.h b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.h 2026-06-16 10:06:30.910706600 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/bindings/scoped_persistent.h" + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/member.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + class MemoryMeasurement; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/memory_info.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/memory_info.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/memory_info.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/memory_info.cc 2026-06-16 10:06:30.912716100 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/core/frame/settings.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/wtf/math_extras.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance.cc 2026-06-16 10:06:30.914724600 +0200 +@@ -102,7 +102,7 @@ + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" +-#include "v8/include/v8-metrics.h" ++#include "v8-metrics.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance_user_timing.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance_user_timing.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance_user_timing.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/performance_user_timing.cc 2026-06-16 10:06:30.916731300 +0200 +@@ -42,8 +42,8 @@ + #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" + #include "third_party/perfetto/include/perfetto/ext/base/string_utils.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.cc 2026-06-16 10:06:30.918739700 +0200 +@@ -25,8 +25,8 @@ + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.h b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/timing/profiler_group.h 2026-06-16 10:06:30.920486700 +0200 +@@ -14,8 +14,8 @@ + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8.h" ++#include "v8-profiler.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.h b/src/3rdparty/chromium/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.h 2026-06-16 10:06:30.922494100 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h b/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h 2026-06-16 10:06:30.924505900 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" + #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" + #include "third_party/blink/renderer/platform/wtf/wtf.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace base::subtle { + class PlatformSharedMemoryRegion; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer_test.cc 2026-06-16 10:06:30.926512700 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.h b/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/typed_arrays/dom_typed_array.h 2026-06-16 10:06:30.928521500 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer_view.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/view_transition/view_transition_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/view_transition/view_transition_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/view_transition/view_transition_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/view_transition/view_transition_test.cc 2026-06-16 10:06:30.932541400 +0200 +@@ -50,10 +50,10 @@ + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-value.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/custom_event_message.h b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/custom_event_message.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/custom_event_message.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/custom_event_message.h 2026-06-16 10:06:30.932541400 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/dedicated_worker.h b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/dedicated_worker.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/dedicated_worker.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/dedicated_worker.h 2026-06-16 10:06:30.936299200 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_backing_thread.h b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_backing_thread.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_backing_thread.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_backing_thread.h 2026-06-16 10:06:30.938307300 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/non_main_thread.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_global_scope.h b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_global_scope.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_global_scope.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_global_scope.h 2026-06-16 10:06:30.940314600 +0200 +@@ -56,7 +56,7 @@ + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" + #include "third_party/blink/renderer/platform/wtf/gc_plugin.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread.h b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread.h 2026-06-16 10:06:30.942322100 +0200 +@@ -59,8 +59,8 @@ + #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8-inspector.h" +-#include "v8/include/v8.h" ++#include "v8-inspector.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread_test_helper.h b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread_test_helper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread_test_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/workers/worker_thread_test_helper.h 2026-06-16 10:06:30.944329300 +0200 +@@ -39,7 +39,7 @@ + #include "third_party/blink/renderer/platform/wtf/forward.h" + + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #include "mojo/public/cpp/bindings/receiver.h" + #include "mojo/public/cpp/bindings/receiver_set.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc 2026-06-16 10:06:30.948369300 +0200 +@@ -94,8 +94,8 @@ + #include "third_party/blink/renderer/platform/wtf/vector.h" + #include "third_party/boringssl/src/include/openssl/curve25519.h" + #include "url/url_constants.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/protected_audience.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/protected_audience.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/protected_audience.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/ad_auction/protected_audience.cc 2026-06-16 10:06:50.783080700 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/ai/on_device_translation/language_detector.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/ai/on_device_translation/language_detector.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/ai/on_device_translation/language_detector.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/ai/on_device_translation/language_detector.cc 2026-06-16 10:06:50.786844700 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/modules/ai/create_monitor.h" + #include "third_party/blink/renderer/modules/ai/exception_helpers.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope.cc 2026-06-16 10:06:50.788857700 +0200 +@@ -25,7 +25,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_binding_macros.h" + #include "third_party/blink/renderer/platform/bindings/v8_object_constructor.h" + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.cc 2026-06-16 10:06:50.790869200 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/modules/animationworklet/animator_definition.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/animationworklet/animator.h 2026-06-16 10:06:50.792880100 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/platform/graphics/animation_worklet_mutators_state.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel_unittest.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel_unittest.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel_unittest.cc 2026-06-16 10:06:50.796903300 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h" + #include "third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/cached_color.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/cached_color.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/cached_color.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/cached_color.h 2026-06-16 10:06:50.798915100 +0200 +@@ -12,8 +12,8 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.cc 2026-06-16 10:06:50.802676200 +0200 +@@ -154,7 +154,7 @@ + #include "ui/gfx/geometry/size_f.h" + #include "ui/gfx/geometry/skia_conversions.h" + #include "ui/gfx/geometry/vector2d_f.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + // UMA Histogram macros trigger a bug in IWYU. + // https://github.com/include-what-you-use/include-what-you-use/issues/1546 +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_test_utils.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_test_utils.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_test_utils.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_test_utils.cc 2026-06-16 10:06:50.804688500 +0200 +@@ -8,9 +8,9 @@ + + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" + #include "third_party/blink/renderer/bindings/core/v8/v8_union_object_objectarray_string.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-script.h" + + namespace blink_testing { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc 2026-06-16 10:06:50.806695200 +0200 +@@ -59,8 +59,8 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + #include "third_party/skia/include/private/base/SkPoint_impl.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-local-handle.h" + + // GoogleTest expectation macros trigger a bug in IWYU: + // https://github.com/include-what-you-use/include-what-you-use/issues/1546 +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style_test_utils.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style_test_utils.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style_test_utils.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style_test_utils.cc 2026-06-16 10:06:50.808703200 +0200 +@@ -10,7 +10,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/mesh_2d_buffer.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/mesh_2d_buffer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/mesh_2d_buffer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/mesh_2d_buffer.h 2026-06-16 10:06:50.808703200 +0200 +@@ -13,7 +13,7 @@ + #include "base/numerics/safe_conversions.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/bindings/v8_external_memory_accounter.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace cc { + template +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.cc 2026-06-16 10:06:50.810710300 +0200 +@@ -16,8 +16,8 @@ + #include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_pattern.h" + #include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/v8_canvas_style.h 2026-06-16 10:06:50.810710300 +0200 +@@ -9,8 +9,8 @@ + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/graphics/color.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace v8 { + class Isolate; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/imagebitmap/image_bitmap_factories.cc 2026-06-16 10:06:50.812722100 +0200 +@@ -68,7 +68,7 @@ + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier_skia.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" + #include "third_party/blink/renderer/platform/wtf/shared_buffer.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/deflate_transformer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/deflate_transformer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/deflate_transformer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/deflate_transformer.cc 2026-06-16 10:06:50.814728900 +0200 +@@ -22,7 +22,7 @@ + #include "third_party/blink/renderer/modules/compression/compression_format.h" + #include "third_party/blink/renderer/modules/compression/zlib_partition_alloc.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/inflate_transformer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/inflate_transformer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/inflate_transformer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/compression/inflate_transformer.cc 2026-06-16 10:06:50.814728900 +0200 +@@ -24,7 +24,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/compute_pressure/pressure_observer_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/compute_pressure/pressure_observer_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/compute_pressure/pressure_observer_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/compute_pressure/pressure_observer_test.cc 2026-06-16 10:06:50.816743200 +0200 +@@ -23,7 +23,7 @@ + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using device::mojom::blink::PressureState; + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.cc 2026-06-16 10:06:50.818494500 +0200 +@@ -28,8 +28,8 @@ + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/text/base64.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.h 2026-06-16 10:06:50.820501200 +0200 +@@ -17,8 +17,8 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/crypto/normalize_algorithm.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/crypto/normalize_algorithm.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/crypto/normalize_algorithm.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/crypto/normalize_algorithm.h 2026-06-16 10:06:50.820501200 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/public/platform/web_string.h" + #include "third_party/blink/renderer/bindings/modules/v8/v8_typedefs.h" + #include "third_party/blink/renderer/modules/modules_export.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_definition.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_definition.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_definition.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_definition.h 2026-06-16 10:06:50.822508400 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/skia/include/core/SkRefCnt.h" + #include "ui/gfx/geometry/size_f.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_image_generator_impl.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_image_generator_impl.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_image_generator_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/css_paint_image_generator_impl.h 2026-06-16 10:06:50.824515800 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/bindings/scoped_persistent.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "ui/gfx/geometry/size_f.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/nativepaint/background_color_paint_image_generator_impl.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/nativepaint/background_color_paint_image_generator_impl.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/nativepaint/background_color_paint_image_generator_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/csspaint/nativepaint/background_color_paint_image_generator_impl.h 2026-06-16 10:06:50.824515800 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/core/css/background_color_paint_image_generator.h" + #include "third_party/blink/renderer/modules/modules_export.h" + #include "ui/gfx/geometry/size_f.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/direct_sockets/stream_wrapper.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/direct_sockets/stream_wrapper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/direct_sockets/stream_wrapper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/direct_sockets/stream_wrapper.h 2026-06-16 10:06:50.826524200 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/member.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/encoding/text_encoder_stream.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/encoding/text_encoder_stream.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/encoding/text_encoder_stream.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/encoding/text_encoder_stream.cc 2026-06-16 10:06:50.828530800 +0200 +@@ -22,7 +22,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/text_codec.h" + #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" + #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_crypto_normalize.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_crypto_normalize.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_crypto_normalize.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_crypto_normalize.cc 2026-06-16 10:06:50.828530800 +0200 +@@ -37,7 +37,7 @@ + #include "third_party/blink/renderer/modules/crypto/normalize_algorithm.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/crypto_result.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_dom_file_system.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_dom_file_system.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_dom_file_system.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_dom_file_system.cc 2026-06-16 10:06:50.830537600 +0200 +@@ -43,7 +43,7 @@ + #include "third_party/blink/renderer/modules/filesystem/dom_file_system.h" + #include "third_party/blink/renderer/modules/filesystem/file_entry.h" + #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_testing_support.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_testing_support.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_testing_support.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/exported/web_testing_support.cc 2026-06-16 10:06:50.830537600 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/renderer/core/testing/v8/web_core_test_support.h" + #include "third_party/blink/renderer/platform/bindings/origin_trial_features.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key.h 2026-06-16 10:06:50.832545100 +0200 +@@ -38,7 +38,7 @@ + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + class ScriptState; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key_path.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key_path.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key_path.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_key_path.h 2026-06-16 10:06:50.834293600 +0200 +@@ -32,7 +32,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + class ScriptState; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc 2026-06-16 10:06:50.836301300 +0200 +@@ -57,7 +57,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record.cc 2026-06-16 10:06:50.838309100 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/bindings/modules/v8/v8_binding_for_modules.h" + #include "third_party/blink/renderer/modules/indexeddb/idb_key.h" + #include "third_party/blink/renderer/modules/indexeddb/idb_value.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record_array.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record_array.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record_array.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_record_array.h 2026-06-16 10:06:50.838309100 +0200 +@@ -9,8 +9,8 @@ + + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace blink { + class IDBKey; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc 2026-06-16 10:06:50.840323800 +0200 +@@ -79,7 +79,7 @@ + #include "third_party/blink/renderer/platform/testing/url_loader_mock_factory.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_test_helper.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_test_helper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_test_helper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_test_helper.h 2026-06-16 10:06:50.842330800 +0200 +@@ -9,7 +9,7 @@ + + #include "base/memory/scoped_refptr.h" + #include "third_party/blink/renderer/modules/indexeddb/idb_value.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc 2026-06-16 10:06:50.842330800 +0200 +@@ -60,7 +60,7 @@ + #include "third_party/blink/renderer/platform/testing/testing_platform_support.h" + #include "third_party/blink/renderer/platform/testing/url_loader_mock_factory.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.cc 2026-06-16 10:06:50.844340300 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/modules/indexeddb/idb_value_wrapping.h" + #include "third_party/blink/renderer/platform/blob/blob_data.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value.h 2026-06-16 10:06:50.846347100 +0200 +@@ -18,7 +18,7 @@ + #include "third_party/blink/renderer/modules/indexeddb/idb_key_path.h" + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/bindings/v8_external_memory_accounter.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping.h 2026-06-16 10:06:50.846347100 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/indexeddb/idb_value_wrapping_test.cc 2026-06-16 10:06:50.848354000 +0200 +@@ -25,7 +25,7 @@ + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/nfc/ndef_record.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/nfc/ndef_record.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/nfc/ndef_record.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/nfc/ndef_record.cc 2026-06-16 10:06:50.850101600 +0200 +@@ -29,7 +29,7 @@ + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/text/ascii_ctype.h" + #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/abort_payment_respond_with_observer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/abort_payment_respond_with_observer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/abort_payment_respond_with_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/abort_payment_respond_with_observer.cc 2026-06-16 10:06:50.850101600 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/modules/service_worker/wait_until_observer.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/instrumentation/use_counter.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/can_make_payment_respond_with_observer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/can_make_payment_respond_with_observer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/can_make_payment_respond_with_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/can_make_payment_respond_with_observer.cc 2026-06-16 10:06:50.852111200 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h" + #include "third_party/blink/renderer/modules/service_worker/wait_until_observer.h" + #include "third_party/blink/renderer/platform/bindings/exception_state.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc 2026-06-16 10:06:50.854117700 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h" + #include "third_party/blink/renderer/modules/service_worker/wait_until_observer.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payments_validators.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payments_validators.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payments_validators.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/payments/payments_validators.h 2026-06-16 10:06:50.854117700 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc 2026-06-16 10:06:50.856124700 +0200 +@@ -48,7 +48,7 @@ + #include "third_party/blink/renderer/platform/testing/testing_platform_support.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/webrtc/api/rtc_error.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc 2026-06-16 10:06:50.858131700 +0200 +@@ -40,8 +40,8 @@ + #include "third_party/webrtc/api/stats/rtc_stats.h" + #include "third_party/webrtc/api/stats/rtc_stats_report.h" + #include "third_party/webrtc/api/stats/rtcstats_objects.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_availability_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_availability_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_availability_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_availability_test.cc 2026-06-16 10:06:50.858131700 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/platform/testing/url_test_helpers.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc 2026-06-16 10:06:50.860138600 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/modules/presentation/presentation_connection_list.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/url_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/push_messaging/push_message_data.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/push_messaging/push_message_data.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/push_messaging/push_message_data.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/push_messaging/push_message_data.cc 2026-06-16 10:06:50.860138600 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/renderer/platform/blob/blob_data.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/sensor/sensor_error_event.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/sensor/sensor_error_event.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/sensor/sensor_error_event.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/sensor/sensor_error_event.cc 2026-06-16 10:06:50.862147500 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/renderer/modules/sensor/sensor_error_event.h" + + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc 2026-06-16 10:06:50.864154300 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/platform/loader/fetch/bytes_consumer.h" + #include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" + #include "third_party/blink/renderer/platform/wtf/gc_plugin.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using blink::mojom::ServiceWorkerResponseError; + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/respond_with_observer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/respond_with_observer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/respond_with_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/respond_with_observer.cc 2026-06-16 10:06:50.864154300 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" + #include "third_party/blink/renderer/core/execution_context/execution_context.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using blink::mojom::ServiceWorkerResponseError; + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc 2026-06-16 10:06:50.865903300 +0200 +@@ -36,7 +36,7 @@ + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_error.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_error.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_error.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/service_worker_error.h 2026-06-16 10:06:50.867953000 +0200 +@@ -35,7 +35,7 @@ + #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_error.h" + #include "third_party/blink/renderer/bindings/core/v8/idl_types.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc 2026-06-16 10:06:50.869960800 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" + #include "third_party/blink/renderer/platform/scheduler/public/thread.h" + #include "third_party/blink/renderer/platform/web_test_support.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc 2026-06-16 10:06:50.871968600 +0200 +@@ -61,11 +61,11 @@ + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/blink/renderer/platform/wtf/text/base64.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_unittest.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_unittest.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_unittest.cc 2026-06-16 10:06:50.873975800 +0200 +@@ -57,7 +57,7 @@ + #include "third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_thread.h" + #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h" + #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/util.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/util.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/shared_storage/util.h 2026-06-16 10:06:50.875983000 +0200 +@@ -9,7 +9,7 @@ + #include "services/network/public/mojom/shared_storage.mojom-blink-forward.h" + #include "third_party/blink/public/mojom/shared_storage/shared_storage.mojom-blink-forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_manager_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_manager_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_manager_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_manager_test.cc 2026-06-16 10:06:50.875983000 +0200 +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel_test.cc 2026-06-16 10:06:50.877990300 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test.cc 2026-06-16 10:06:50.877990300 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h 2026-06-16 10:06:50.879999600 +0200 +@@ -22,7 +22,7 @@ + #include "third_party/blink/renderer/core/frame/local_dom_window.h" + #include "third_party/blink/renderer/modules/wake_lock/wake_lock_type.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.h 2026-06-16 10:06:50.881746300 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor_definition.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor_definition.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor_definition.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor_definition.h 2026-06-16 10:06:50.881746300 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/fuzzer_utils.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/fuzzer_utils.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/fuzzer_utils.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/fuzzer_utils.h 2026-06-16 10:06:50.883753200 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/renderer/modules/webcodecs/fuzzer_inputs.pb.h" + #include "third_party/blink/renderer/modules/webcodecs/video_frame.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + #include + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/video_frame.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/video_frame.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/video_frame.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/video_frame.cc 2026-06-16 10:06:50.885760100 +0200 +@@ -69,7 +69,7 @@ + #include "third_party/libyuv/include/libyuv/planar_functions.h" + #include "third_party/skia/include/gpu/ganesh/GrDirectContext.h" + #include "ui/gfx/geometry/skia_conversions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/dom_websocket_test.cc 2026-06-16 10:06:50.887767300 +0200 +@@ -29,7 +29,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using testing::_; + using testing::AnyNumber; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc 2026-06-16 10:06:50.887767300 +0200 +@@ -84,7 +84,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h" + #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" + #include "third_party/blink/renderer/platform/wtf/text/string_impl.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_error.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_error.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_error.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_error.h 2026-06-16 10:06:50.889777400 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_stream.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_stream.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_stream.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/websockets/websocket_stream.h 2026-06-16 10:06:50.891784100 +0200 +@@ -21,7 +21,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/visitor.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/bidirectional_stream_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/bidirectional_stream_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/bidirectional_stream_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/bidirectional_stream_test.cc 2026-06-16 10:06:50.891784100 +0200 +@@ -41,7 +41,7 @@ + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/weborigin/kurl.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream.cc 2026-06-16 10:06:50.893791400 +0200 +@@ -31,7 +31,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/heap/persistent.h" + #include "third_party/blink/renderer/platform/wtf/functional.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/incoming_stream_test.cc 2026-06-16 10:06:50.893791400 +0200 +@@ -27,7 +27,7 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream.h 2026-06-16 10:06:50.895798600 +0200 +@@ -19,7 +19,7 @@ + #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/heap/prefinalizer.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/outgoing_stream_test.cc 2026-06-16 10:06:50.897546300 +0200 +@@ -27,7 +27,7 @@ + #include "third_party/blink/renderer/platform/heap/persistent.h" + #include "third_party/blink/renderer/platform/testing/task_environment.h" + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/test_utils.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/test_utils.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/test_utils.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/test_utils.h 2026-06-16 10:06:50.899553600 +0200 +@@ -20,7 +20,7 @@ + #include "third_party/blink/public/mojom/webtransport/web_transport_connector.mojom-blink.h" + #include "third_party/blink/renderer/platform/heap/persistent.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport.cc 2026-06-16 10:06:50.899553600 +0200 +@@ -62,7 +62,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_error.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_error.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_error.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_error.h 2026-06-16 10:06:50.901568100 +0200 +@@ -15,7 +15,7 @@ + #include "third_party/blink/renderer/modules/modules_export.h" + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webtransport/web_transport_test.cc 2026-06-16 10:06:50.903575000 +0200 +@@ -59,7 +59,7 @@ + #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" + #include "third_party/blink/renderer/platform/wtf/deque.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.cc 2026-06-16 10:06:50.905582100 +0200 +@@ -6,11 +6,11 @@ + + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/bigint.h 2026-06-16 10:06:50.905582100 +0200 +@@ -11,11 +11,11 @@ + #include "third_party/abseil-cpp/absl/numeric/int128.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-forward.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/binding_security_for_platform.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/binding_security_for_platform.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/binding_security_for_platform.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/binding_security_for_platform.h 2026-06-16 10:06:50.907588900 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/callback_method_retriever.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/callback_method_retriever.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/callback_method_retriever.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/callback_method_retriever.h 2026-06-16 10:06:50.907588900 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/platform/bindings/callback_function_base.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.cc 2026-06-16 10:06:50.909596400 +0200 +@@ -6,7 +6,7 @@ + + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dictionary_base.h 2026-06-16 10:06:50.909596400 +0200 +@@ -8,8 +8,8 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-forward.h" ++#include "v8-local-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_data_store.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_data_store.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_data_store.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_data_store.h 2026-06-16 10:06:50.911603100 +0200 +@@ -42,7 +42,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/stack_util.h" + #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h 2026-06-16 10:06:50.913350100 +0200 +@@ -41,7 +41,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/ref_counted.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace base { + class UnguessableToken; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/enumeration_base.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/enumeration_base.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/enumeration_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/enumeration_base.h 2026-06-16 10:06:50.913350100 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_context.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_context.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_context.h 2026-06-16 10:06:50.915359000 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-exception.h" ++#include "v8-exception.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_messages.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_messages.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_messages.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_messages.h 2026-06-16 10:06:50.917366100 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-exception.h" ++#include "v8-exception.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_state.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_state.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_state.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/exception_state.h 2026-06-16 10:06:50.917366100 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/idl_member_installer.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/idl_member_installer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/idl_member_installer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/idl_member_installer.h 2026-06-16 10:06:50.919373300 +0200 +@@ -9,8 +9,8 @@ + #include "base/memory/raw_ptr.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-fast-api-calls.h" +-#include "v8/include/v8.h" ++#include "v8-fast-api-calls.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/name_client.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/name_client.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/name_client.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/name_client.h 2026-06-16 10:06:50.921380300 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/bindings/buildflags.h" + #include "third_party/blink/renderer/platform/platform_export.h" +-#include "v8/include/cppgc/name-provider.h" ++#include "cppgc/name-provider.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.cc 2026-06-16 10:06:50.921380300 +0200 +@@ -8,11 +8,11 @@ + #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" + #include "third_party/blink/renderer/platform/bindings/script_state.h" + #include "third_party/blink/renderer/platform/bindings/v8_private_property.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-proxy.h" +-#include "v8/include/v8-template.h" ++#include "v8-container.h" ++#include "v8-function.h" ++#include "v8-object.h" ++#include "v8-proxy.h" ++#include "v8-template.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/observable_array.h 2026-06-16 10:06:50.923387600 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + #include "third_party/blink/renderer/platform/heap/heap_traits.h" + #include "third_party/blink/renderer/platform/heap/member.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + // Overview of Blink implementation of Web IDL observable arrays + // +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/runtime_call_stats.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/runtime_call_stats.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/runtime_call_stats.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/runtime_call_stats.h 2026-06-16 10:06:50.925395200 +0200 +@@ -18,7 +18,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(RCS_COUNT_EVERYTHING) + #include "third_party/blink/renderer/platform/wtf/hash_map.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/scoped_persistent.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/scoped_persistent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/scoped_persistent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/scoped_persistent.h 2026-06-16 10:06:50.927402500 +0200 +@@ -32,7 +32,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_BINDINGS_SCOPED_PERSISTENT_H_ + + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_regexp.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_regexp.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_regexp.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_regexp.h 2026-06-16 10:06:50.929151200 +0200 +@@ -32,7 +32,7 @@ + #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_state.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_state.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_state.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_state.h 2026-06-16 10:06:50.931164500 +0200 +@@ -16,7 +16,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/assertions.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_wrappable.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_wrappable.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_wrappable.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/script_wrappable.h 2026-06-16 10:06:50.933174300 +0200 +@@ -38,7 +38,7 @@ + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.cc 2026-06-16 10:06:50.935181400 +0200 +@@ -9,7 +9,7 @@ + #include "third_party/blink/renderer/platform/bindings/thread_debugger.h" + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h" +-#include "v8/include/v8-inspector-protocol.h" ++#include "v8-inspector-protocol.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/source_location.h 2026-06-16 10:06:50.935181400 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-inspector.h" + + namespace perfetto::protos::pbzero { + class BlinkSourceLocation; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/string_resource.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/string_resource.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/string_resource.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/string_resource.h 2026-06-16 10:06:50.937188900 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/thread_debugger.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/thread_debugger.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/thread_debugger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/thread_debugger.h 2026-06-16 10:06:50.939195700 +0200 +@@ -10,8 +10,8 @@ + #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink-forward.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-inspector.h" ++#include "v8-forward.h" ++#include "v8-inspector.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/to_blink_string.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/to_blink_string.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/to_blink_string.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/to_blink_string.h 2026-06-16 10:06:50.939195700 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h 2026-06-16 10:06:50.941205800 +0200 +@@ -12,8 +12,8 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/hash_traits.h" + #include "third_party/blink/renderer/platform/wtf/vector_traits.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-traced-handle.h" ++#include "v8-cppgc.h" ++#include "v8-traced-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/union_base.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/union_base.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/union_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/union_base.h 2026-06-16 10:06:50.943212700 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" + #include "third_party/blink/renderer/platform/platform_export.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding.h 2026-06-16 10:06:50.943212700 +0200 +@@ -42,15 +42,15 @@ + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-maybe.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-forward.h" ++#include "v8-function-callback.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-maybe.h" ++#include "v8-persistent-handle.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding_macros.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding_macros.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding_macros.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_binding_macros.h 2026-06-16 10:06:50.944959400 +0200 +@@ -32,7 +32,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_BINDINGS_V8_BINDING_MACROS_H_ + + #include "build/build_config.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(IS_WIN) + #if !defined(alloca) +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.h 2026-06-16 10:06:50.944959400 +0200 +@@ -8,7 +8,7 @@ + #include "base/containers/span.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + // This file provides utilities to support implementation of cross origin + // properties in generated bindings code. Should be used only in generated +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_activity_logger.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_activity_logger.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_activity_logger.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_activity_logger.h 2026-06-16 10:06:50.946966300 +0200 +@@ -35,7 +35,7 @@ + + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h 2026-06-16 10:06:50.948974200 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_external_memory_accounter.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_external_memory_accounter.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_external_memory_accounter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_external_memory_accounter.h 2026-06-16 10:06:50.948974200 +0200 +@@ -8,8 +8,8 @@ + #include + + #include "base/check_op.h" +-#include "v8/include/v8-external-memory-accounter.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-external-memory-accounter.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_global_value_map.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_global_value_map.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_global_value_map.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_global_value_map.h 2026-06-16 10:06:50.950986100 +0200 +@@ -8,8 +8,8 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/hash_map.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" +-#include "v8/include/v8-util.h" +-#include "v8/include/v8.h" ++#include "v8-util.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_interface_bridge_base.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_interface_bridge_base.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_interface_bridge_base.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_interface_bridge_base.h 2026-06-16 10:06:50.952993400 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-blink-forward.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_object_constructor.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_object_constructor.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_object_constructor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_object_constructor.h 2026-06-16 10:06:50.952993400 +0200 +@@ -34,7 +34,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_context_data.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_context_data.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_context_data.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_context_data.h 2026-06-16 10:06:50.955000600 +0200 +@@ -45,7 +45,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h 2026-06-16 10:06:50.955000600 +0200 +@@ -41,11 +41,11 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/hash_map.h" +-#include "v8/include/v8-callbacks.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-callbacks.h" ++#include "v8-forward.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-persistent-handle.h" + + namespace base { + class SingleThreadTaskRunner; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_private_property.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_private_property.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_private_property.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_private_property.h 2026-06-16 10:06:50.957009000 +0200 +@@ -12,7 +12,7 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/hash_map.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_set_return_value.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_set_return_value.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_set_return_value.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_set_return_value.h 2026-06-16 10:06:50.959016900 +0200 +@@ -17,8 +17,8 @@ + #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" + #include "third_party/blink/renderer/platform/bindings/v8_value_cache.h" + #include "third_party/blink/renderer/platform/platform_export.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8.h" ++#include "v8-function-callback.h" ++#include "v8.h" + + namespace blink::bindings { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.cc 2026-06-16 10:06:50.959016900 +0200 +@@ -25,7 +25,7 @@ + #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" + + #include "third_party/blink/renderer/platform/bindings/v8_binding.h" +-#include "v8/include/v8-exception.h" ++#include "v8-exception.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_throw_exception.h 2026-06-16 10:06:50.960763500 +0200 +@@ -28,9 +28,9 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-forward.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_cache.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_cache.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_cache.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_cache.h 2026-06-16 10:06:50.960763500 +0200 +@@ -33,7 +33,7 @@ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_or_script_wrappable_adapter.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_or_script_wrappable_adapter.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_or_script_wrappable_adapter.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/v8_value_or_script_wrappable_adapter.h 2026-06-16 10:06:50.962770500 +0200 +@@ -8,7 +8,7 @@ + #include "third_party/blink/renderer/platform/heap/persistent.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/wrapper_type_info.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/wrapper_type_info.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/wrapper_type_info.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/bindings/wrapper_type_info.h 2026-06-16 10:06:50.964777800 +0200 +@@ -40,7 +40,7 @@ + #include "third_party/blink/renderer/platform/heap/visitor.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_custom_platform_data.cc 2026-06-16 10:06:50.964777800 +0200 +@@ -46,7 +46,7 @@ + #include "third_party/blink/renderer/platform/wtf/shared_buffer.h" + #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" + #include "third_party/skia/include/core/SkTypeface.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/simple_font_data.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/simple_font_data.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/simple_font_data.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/simple_font_data.cc 2026-06-16 10:06:50.966785100 +0200 +@@ -60,7 +60,7 @@ + #include "third_party/skia/include/core/SkTypes.h" + #include "ui/gfx/geometry/rect_f.h" + #include "ui/gfx/geometry/skia_conversions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc 2026-06-16 10:06:50.968792100 +0200 +@@ -79,7 +79,7 @@ + #include "third_party/skia/include/core/SkPixmap.h" + #include "third_party/skia/include/core/SkSurface.h" + #include "third_party/skia/include/gpu/ganesh/gl/GrGLTypes.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc 2026-06-16 10:06:50.970799300 +0200 +@@ -46,7 +46,7 @@ + #include "third_party/blink/renderer/platform/graphics/test/test_webgraphics_shared_image_interface_provider.h" + #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h" + #include "ui/gl/gpu_preference.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using testing::Test; + using testing::_; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc 2026-06-16 10:06:50.970799300 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/skia/include/core/SkPaint.h" + #include "third_party/skia/include/core/SkSurface.h" + #include "ui/gfx/geometry/skia_conversions.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/blink_gc_memory_dump_provider.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/blink_gc_memory_dump_provider.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/blink_gc_memory_dump_provider.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/blink_gc_memory_dump_provider.cc 2026-06-16 10:06:50.972806800 +0200 +@@ -15,8 +15,8 @@ + #include "base/trace_event/memory_allocator_dump.h" + #include "base/trace_event/memory_dump_manager.h" + #include "third_party/blink/renderer/platform/heap/thread_state.h" +-#include "v8/include/cppgc/heap-statistics.h" +-#include "v8/include/v8-isolate.h" ++#include "cppgc/heap-statistics.h" ++#include "v8-isolate.h" + + namespace blink { + namespace { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h 2026-06-16 10:06:50.974813600 +0200 +@@ -24,9 +24,9 @@ + #include "third_party/blink/renderer/platform/wtf/key_value_pair.h" + #include "third_party/blink/renderer/platform/wtf/sanitizers.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" +-#include "v8/include/cppgc/custom-space.h" +-#include "v8/include/cppgc/explicit-management.h" +-#include "v8/include/cppgc/object-size-trait.h" ++#include "cppgc/custom-space.h" ++#include "cppgc/explicit-management.h" ++#include "cppgc/object-size-trait.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_vector_backing.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_vector_backing.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_vector_backing.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/collection_support/heap_vector_backing.h 2026-06-16 10:06:50.976560700 +0200 +@@ -23,12 +23,12 @@ + #include "third_party/blink/renderer/platform/wtf/sanitizers.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" + #include "third_party/blink/renderer/platform/wtf/vector_traits.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/custom-space.h" +-#include "v8/include/cppgc/explicit-management.h" +-#include "v8/include/cppgc/object-size-trait.h" +-#include "v8/include/cppgc/trace-trait.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/allocation.h" ++#include "cppgc/custom-space.h" ++#include "cppgc/explicit-management.h" ++#include "cppgc/object-size-trait.h" ++#include "cppgc/trace-trait.h" ++#include "cppgc/visitor.h" + + namespace blink { + namespace internal { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_handle_internal.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_handle_internal.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_handle_internal.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_handle_internal.h 2026-06-16 10:06:50.976560700 +0200 +@@ -9,8 +9,8 @@ + #include "base/threading/platform_thread.h" + #include "third_party/blink/renderer/platform/heap/heap_buildflags.h" + #include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" +-#include "v8/include/cppgc/cross-thread-persistent.h" +-#include "v8/include/cppgc/source-location.h" ++#include "cppgc/cross-thread-persistent.h" ++#include "cppgc/source-location.h" + + // Required to optimize away locations for builds that do not need them to avoid + // binary size blowup. +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_persistent.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_persistent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_persistent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/cross_thread_persistent.h 2026-06-16 10:06:50.978567800 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_CROSS_THREAD_PERSISTENT_H_ + + #include "third_party/blink/renderer/platform/heap/persistent.h" +-#include "v8/include/cppgc/cross-thread-persistent.h" ++#include "cppgc/cross-thread-persistent.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/custom_spaces.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/custom_spaces.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/custom_spaces.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/custom_spaces.h 2026-06-16 10:06:50.978567800 +0200 +@@ -9,7 +9,7 @@ + #include + + #include "third_party/blink/renderer/platform/platform_export.h" +-#include "v8/include/cppgc/custom-space.h" ++#include "cppgc/custom-space.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/garbage_collected.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/garbage_collected.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/garbage_collected.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/garbage_collected.h 2026-06-16 10:06:50.980574800 +0200 +@@ -9,10 +9,10 @@ + + #include "base/functional/unretained_traits.h" + #include "third_party/blink/renderer/platform/heap/thread_state_storage.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/liveness-broker.h" +-#include "v8/include/cppgc/type-traits.h" ++#include "cppgc/allocation.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/liveness-broker.h" ++#include "cppgc/type-traits.h" + + namespace cppgc { + class LivenessBroker; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_allocator_impl.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_allocator_impl.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_allocator_impl.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_allocator_impl.h 2026-06-16 10:06:50.982581700 +0200 +@@ -15,11 +15,11 @@ + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/allocator/partition_allocator.h" +-#include "v8/include/cppgc/explicit-management.h" +-#include "v8/include/cppgc/heap-consistency.h" +-#include "v8/include/cppgc/internal/api-constants.h" +-#include "v8/include/cppgc/trace-trait.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/explicit-management.h" ++#include "cppgc/heap-consistency.h" ++#include "cppgc/internal/api-constants.h" ++#include "cppgc/trace-trait.h" ++#include "cppgc/visitor.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_platform.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_platform.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_platform.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_platform.h 2026-06-16 10:06:50.982581700 +0200 +@@ -7,7 +7,7 @@ + + #include + +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.cc 2026-06-16 10:06:50.984588400 +0200 +@@ -6,7 +6,7 @@ + #include + + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" +-#include "v8/include/cppgc/platform.h" ++#include "cppgc/platform.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_test_utilities.h 2026-06-16 10:06:50.984588400 +0200 +@@ -9,9 +9,9 @@ + #include "testing/gtest/include/gtest/gtest.h" + #include "third_party/blink/renderer/platform/heap/thread_state.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/cppgc/testing.h" +-#include "v8/include/v8.h" +-#include "v8/include/v8-cppgc.h" ++#include "cppgc/testing.h" ++#include "v8.h" ++#include "v8-cppgc.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/member.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/member.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/member.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/member.h 2026-06-16 10:06:50.986596900 +0200 +@@ -13,8 +13,8 @@ + #include "third_party/blink/renderer/platform/wtf/hash_functions.h" + #include "third_party/blink/renderer/platform/wtf/hash_traits.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" +-#include "v8/include/cppgc/member.h" // IWYU pragma: export +-#include "v8/include/cppgc/tagged-member.h" ++#include "cppgc/member.h" // IWYU pragma: export ++#include "cppgc/tagged-member.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/persistent.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/persistent.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/persistent.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/persistent.h 2026-06-16 10:06:50.988604300 +0200 +@@ -11,9 +11,9 @@ + #include "third_party/blink/renderer/platform/wtf/hash_traits.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" + #include "third_party/blink/renderer/platform/wtf/vector_traits.h" +-#include "v8/include/cppgc/cross-thread-persistent.h" +-#include "v8/include/cppgc/persistent.h" // IWYU pragma: export +-#include "v8/include/cppgc/source-location.h" ++#include "cppgc/cross-thread-persistent.h" ++#include "cppgc/persistent.h" // IWYU pragma: export ++#include "cppgc/source-location.h" + + // Required to optimize away locations for builds that do not need them to avoid + // binary size blowup. +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/prefinalizer.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/prefinalizer.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/prefinalizer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/prefinalizer.h 2026-06-16 10:06:50.988604300 +0200 +@@ -5,7 +5,7 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_PREFINALIZER_H_ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_PREFINALIZER_H_ + +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/prefinalizer.h" + + // Allows registering a method called `PreFinalizer` (name is adjustable) in an + // object of type `GarbageCollected` or `GarbageCollectedMixin`. A +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/process_heap.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/process_heap.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/process_heap.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/process_heap.h 2026-06-16 10:06:50.990611200 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/cppgc/process-heap-statistics.h" ++#include "cppgc/process-heap-statistics.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.cc 2026-06-16 10:06:50.990611200 +0200 +@@ -21,13 +21,13 @@ + #include "third_party/blink/renderer/platform/heap/thread_state_storage.h" + #include "third_party/blink/renderer/platform/wtf/hash_set.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" +-#include "v8/include/cppgc/heap-consistency.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-embedder-heap.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-profiler.h" +-#include "v8/include/v8-traced-handle.h" ++#include "cppgc/heap-consistency.h" ++#include "v8-cppgc.h" ++#include "v8-embedder-heap.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-profiler.h" ++#include "v8-traced-handle.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state.h 2026-06-16 10:06:50.992359100 +0200 +@@ -13,11 +13,11 @@ + #include "third_party/blink/renderer/platform/heap/thread_state_storage.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/threading.h" +-#include "v8/include/cppgc/common.h" // IWYU pragma: export (for ThreadState::StackState alias) +-#include "v8/include/cppgc/heap-consistency.h" +-#include "v8/include/v8-callbacks.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-profiler.h" ++#include "cppgc/common.h" // IWYU pragma: export (for ThreadState::StackState alias) ++#include "cppgc/heap-consistency.h" ++#include "v8-callbacks.h" ++#include "v8-cppgc.h" ++#include "v8-profiler.h" + + namespace v8 { + class CppHeap; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state_scopes.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state_scopes.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state_scopes.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/thread_state_scopes.h 2026-06-16 10:06:50.994366700 +0200 +@@ -7,7 +7,7 @@ + + #include "third_party/blink/renderer/platform/heap/thread_state.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/cppgc/heap-consistency.h" ++#include "cppgc/heap-consistency.h" + + #if defined(LEAK_SANITIZER) + #include +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/trace_traits.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/trace_traits.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/trace_traits.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/trace_traits.h 2026-06-16 10:06:50.994366700 +0200 +@@ -14,7 +14,7 @@ + #include "third_party/blink/renderer/platform/wtf/hash_table.h" + #include "third_party/blink/renderer/platform/wtf/key_value_pair.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" +-#include "v8/include/cppgc/trace-trait.h" ++#include "cppgc/trace-trait.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/visitor.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/visitor.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/visitor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/visitor.h 2026-06-16 10:06:50.996378400 +0200 +@@ -5,8 +5,8 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_VISITOR_H_ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_VISITOR_H_ + +-#include "v8/include/cppgc/liveness-broker.h" // IWYU pragma: export +-#include "v8/include/cppgc/visitor.h" // IWYU pragma: export ++#include "cppgc/liveness-broker.h" // IWYU pragma: export ++#include "cppgc/visitor.h" // IWYU pragma: export + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/write_barrier.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/write_barrier.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/write_barrier.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/write_barrier.h 2026-06-16 10:06:50.998389400 +0200 +@@ -9,8 +9,8 @@ + + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/type_traits.h" +-#include "v8/include/cppgc/heap-consistency.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/heap-consistency.h" ++#include "cppgc/member.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/event_loop.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/event_loop.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/event_loop.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/event_loop.cc 2026-06-16 10:06:51.000396500 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace blink { + namespace scheduler { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc 2026-06-16 10:06:51.000396500 +0200 +@@ -11,7 +11,7 @@ + #include "base/functional/callback.h" + #include "third_party/blink/public/common/features.h" + #include "third_party/blink/renderer/platform/bindings/source_location.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc 2026-06-16 10:06:51.002408100 +0200 +@@ -66,7 +66,7 @@ + #include "third_party/blink/renderer/platform/wtf/functional.h" + #include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.pbzero.h" + #include "third_party/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + #if BUILDFLAG(IS_ANDROID) + #include "base/android/self_compaction_manager.h" +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc 2026-06-16 10:06:51.006429600 +0200 +@@ -50,7 +50,7 @@ + #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_task_queue.h" + #include "third_party/blink/renderer/platform/scheduler/test/recording_task_time_observer.h" + #include "third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + using base::sequence_manager::TaskQueue; + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h 2026-06-16 10:06:51.008176700 +0200 +@@ -8,7 +8,7 @@ + #include + + #include "third_party/blink/renderer/platform/platform_export.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink { + class FrameScheduler; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/blink_fuzzer_test_support.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/blink_fuzzer_test_support.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/blink_fuzzer_test_support.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/blink_fuzzer_test_support.h 2026-06-16 10:06:51.008176700 +0200 +@@ -9,7 +9,7 @@ + + #include "base/at_exit.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace content { + class BlinkTestEnvironment; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/main_thread_isolate.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/main_thread_isolate.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/main_thread_isolate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/main_thread_isolate.h 2026-06-16 10:06:51.010186100 +0200 +@@ -6,7 +6,7 @@ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TESTING_MAIN_THREAD_ISOLATE_H_ + + #include "base/memory/raw_ptr.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink::test { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.cc +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.cc 2026-06-16 10:06:51.012192500 +0200 +@@ -5,7 +5,7 @@ + #include "third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.h" + + #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/task_environment.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/task_environment.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/task_environment.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/task_environment.h 2026-06-16 10:06:51.012192500 +0200 +@@ -11,7 +11,7 @@ + #include "third_party/blink/renderer/platform/scheduler/common/task_priority.h" + #include "third_party/blink/renderer/platform/testing/main_thread_isolate.h" + #include "third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace blink::scheduler { + class MainThreadSchedulerImpl; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/testing_platform_support.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/testing_platform_support.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/testing_platform_support.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/testing/testing_platform_support.h 2026-06-16 10:06:51.014199000 +0200 +@@ -44,7 +44,7 @@ + #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h" + #include "third_party/blink/renderer/platform/platform_export.h" + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" +-#include "v8/include/v8-platform.h" ++#include "v8-platform.h" + + namespace base { + class TestDiscardableMemoryAllocator; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h 2026-06-16 10:06:51.014199000 +0200 +@@ -30,7 +30,7 @@ + + #include "base/compiler_specific.h" + #include "build/build_config.h" +-#include "v8/include/cppgc/type-traits.h" // nogncheck ++#include "cppgc/type-traits.h" // nogncheck + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn 2026-06-16 10:01:58.061984100 +0200 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn 2026-06-16 10:07:10.894824100 +0200 +@@ -98,7 +98,6 @@ + if (crashpad_is_win) { + libs = [ "rpcrt4" ] + if (is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn 2026-06-16 10:01:58.085965700 +0200 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/handler/BUILD.gn 2026-06-16 10:07:10.898582000 +0200 +@@ -76,7 +76,6 @@ + ] + + if (crashpad_is_win) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } + +@@ -118,7 +117,6 @@ + "../util:net", + ] + if (crashpad_is_win) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } + +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn 2026-06-16 10:01:58.087996100 +0200 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/minidump/BUILD.gn 2026-06-16 10:07:10.898582000 +0200 +@@ -83,7 +83,6 @@ + + if (crashpad_is_win && is_msvc) { + cflags = [ +- "/wd4201", # nonstandard extension used : nameless struct/union + "/wd4324", # 'struct' : structure was padded due to __declspec(align()) + ] + } +@@ -143,7 +142,6 @@ + ] + + if (crashpad_is_win && is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } + +@@ -187,6 +185,5 @@ + ] + + if (crashpad_is_win && is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn 2026-06-16 10:01:58.091784000 +0200 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/BUILD.gn 2026-06-16 10:07:10.900589800 +0200 +@@ -255,7 +255,6 @@ + + if (crashpad_is_win) { + if (is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + libs = [ "powrprof" ] + } +@@ -277,7 +276,6 @@ + ] + + if (crashpad_is_win && is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } + +@@ -327,7 +325,6 @@ + ] + + if (crashpad_is_win && is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + } + +@@ -476,7 +473,6 @@ + + if (crashpad_is_win) { + if (is_msvc) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union + } + + data_deps += [ +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/tools/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/tools/BUILD.gn +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/tools/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/tools/BUILD.gn 2026-06-16 10:07:10.964117300 +0200 +@@ -1,178 +1,172 @@ +-# Copyright 2015 The Crashpad Authors +-# +-# Licensed under the Apache License, Version 2.0 (the "License"); +-# you may not use this file except in compliance with the License. +-# You may obtain a copy of the License at +-# +-# http://www.apache.org/licenses/LICENSE-2.0 +-# +-# Unless required by applicable law or agreed to in writing, software +-# distributed under the License is distributed on an "AS IS" BASIS, +-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-# See the License for the specific language governing permissions and +-# limitations under the License. +- +-import("../build/crashpad_buildconfig.gni") +- +-source_set("tool_support") { +- sources = [ +- "tool_support.cc", +- "tool_support.h", +- ] +- +- public_configs = [ "..:crashpad_config" ] +- +- deps = [ "$mini_chromium_source_parent:base" ] +-} +- +-crashpad_executable("dump_minidump_annotations") { +- sources = [ "dump_minidump_annotations.cc" ] +- +- deps = [ +- ":tool_support", +- "../client", +- "../snapshot", +- "../util", +- ] +- +- if (crashpad_is_win) { +- cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union +- } +-} +- +-if (!crashpad_is_ios && !crashpad_is_fuchsia) { +- crashpad_executable("crashpad_database_util") { +- sources = [ "crashpad_database_util.cc" ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../build:default_exe_manifest_win", +- "../client", +- "../compat", +- "../util", +- ] +- } +- +- crashpad_executable("crashpad_http_upload") { +- sources = [ "crashpad_http_upload.cc" ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../build:default_exe_manifest_win", +- "../compat", +- "../util", +- "../util:net", +- ] +- } +-} +- +-crashpad_executable("base94_encoder") { +- sources = [ "base94_encoder.cc" ] +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../build:default_exe_manifest_win", +- "../util", +- ] +-} +- +-if (!crashpad_is_fuchsia && !crashpad_is_ios) { +- crashpad_executable("generate_dump") { +- sources = [ "generate_dump.cc" ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../build:default_exe_manifest_win", +- "../compat", +- "../minidump", +- "../snapshot", +- "../util", +- ] +- +- if (crashpad_is_mac) { +- # This would be better as a config so that it could be shared with +- # exception_port_tool, but configs can’t alter “inputs”. +- # https://crbug.com/781858. +- inputs = [ "mac/sectaskaccess_info.plist" ] +- ldflags = [ +- "-sectcreate", +- "__TEXT", +- "__info_plist", +- rebase_path(inputs[0], root_build_dir), +- ] +- } +- +- if (crashpad_is_win) { +- cflags = +- [ "/wd4201" ] # nonstandard extension used : nameless struct/union +- } +- } +-} +- +-if (crashpad_is_mac || crashpad_is_fuchsia) { +- crashpad_executable("run_with_crashpad") { +- sources = [ "run_with_crashpad.cc" ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../client", +- "../compat", +- "../util", +- ] +- } +-} +- +-if (crashpad_is_mac) { +- crashpad_executable("catch_exception_tool") { +- sources = [ "mac/catch_exception_tool.cc" ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../compat", +- "../util", +- ] +- } +- +- crashpad_executable("exception_port_tool") { +- sources = [ "mac/exception_port_tool.cc" ] +- +- # This would be better as a config so that it could be shared with +- # generate_dump, but configs can’t alter “inputs”. https://crbug.com/781858. +- inputs = [ "mac/sectaskaccess_info.plist" ] +- ldflags = [ +- "-sectcreate", +- "__TEXT", +- "__info_plist", +- rebase_path(inputs[0], root_build_dir), +- ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../compat", +- "../util", +- ] +- } +- +- crashpad_executable("on_demand_service_tool") { +- sources = [ "mac/on_demand_service_tool.mm" ] +- +- frameworks = [ +- "CoreFoundation.framework", +- "Foundation.framework", +- ] +- +- deps = [ +- ":tool_support", +- "$mini_chromium_source_parent:base", +- "../build:apple_enable_arc", +- "../compat", +- "../util", +- ] +- } +-} ++# Copyright 2015 The Crashpad Authors ++# ++# Licensed under the Apache License, Version 2.0 (the "License"); ++# you may not use this file except in compliance with the License. ++# You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, software ++# distributed under the License is distributed on an "AS IS" BASIS, ++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++# See the License for the specific language governing permissions and ++# limitations under the License. ++ ++import("../build/crashpad_buildconfig.gni") ++ ++source_set("tool_support") { ++ sources = [ ++ "tool_support.cc", ++ "tool_support.h", ++ ] ++ ++ public_configs = [ "..:crashpad_config" ] ++ ++ deps = [ "$mini_chromium_source_parent:base" ] ++} ++ ++crashpad_executable("dump_minidump_annotations") { ++ sources = [ "dump_minidump_annotations.cc" ] ++ ++ deps = [ ++ ":tool_support", ++ "../client", ++ "../snapshot", ++ "../util", ++ ] ++ ++ if (crashpad_is_win) { ++ } ++} ++ ++if (!crashpad_is_ios && !crashpad_is_fuchsia) { ++ crashpad_executable("crashpad_database_util") { ++ sources = [ "crashpad_database_util.cc" ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../build:default_exe_manifest_win", ++ "../client", ++ "../compat", ++ "../util", ++ ] ++ } ++ ++ crashpad_executable("crashpad_http_upload") { ++ sources = [ "crashpad_http_upload.cc" ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../build:default_exe_manifest_win", ++ "../compat", ++ "../util", ++ "../util:net", ++ ] ++ } ++} ++ ++crashpad_executable("base94_encoder") { ++ sources = [ "base94_encoder.cc" ] ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../build:default_exe_manifest_win", ++ "../util", ++ ] ++} ++ ++if (!crashpad_is_fuchsia && !crashpad_is_ios) { ++ crashpad_executable("generate_dump") { ++ sources = [ "generate_dump.cc" ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../build:default_exe_manifest_win", ++ "../compat", ++ "../minidump", ++ "../snapshot", ++ "../util", ++ ] ++ ++ if (crashpad_is_mac) { ++ # This would be better as a config so that it could be shared with ++ # exception_port_tool, but configs can’t alter “inputs”. ++ # https://crbug.com/781858. ++ inputs = [ "mac/sectaskaccess_info.plist" ] ++ ldflags = [ ++ "-sectcreate", ++ "__TEXT", ++ "__info_plist", ++ rebase_path(inputs[0], root_build_dir), ++ ] ++ } ++ } ++} ++ ++if (crashpad_is_mac || crashpad_is_fuchsia) { ++ crashpad_executable("run_with_crashpad") { ++ sources = [ "run_with_crashpad.cc" ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../client", ++ "../compat", ++ "../util", ++ ] ++ } ++} ++ ++if (crashpad_is_mac) { ++ crashpad_executable("catch_exception_tool") { ++ sources = [ "mac/catch_exception_tool.cc" ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../compat", ++ "../util", ++ ] ++ } ++ ++ crashpad_executable("exception_port_tool") { ++ sources = [ "mac/exception_port_tool.cc" ] ++ ++ # This would be better as a config so that it could be shared with ++ # generate_dump, but configs can’t alter “inputs”. https://crbug.com/781858. ++ inputs = [ "mac/sectaskaccess_info.plist" ] ++ ldflags = [ ++ "-sectcreate", ++ "__TEXT", ++ "__info_plist", ++ rebase_path(inputs[0], root_build_dir), ++ ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../compat", ++ "../util", ++ ] ++ } ++ ++ crashpad_executable("on_demand_service_tool") { ++ sources = [ "mac/on_demand_service_tool.mm" ] ++ ++ frameworks = [ ++ "CoreFoundation.framework", ++ "Foundation.framework", ++ ] ++ ++ deps = [ ++ ":tool_support", ++ "$mini_chromium_source_parent:base", ++ "../build:apple_enable_arc", ++ "../compat", ++ "../util", ++ ] ++ } ++} +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn 2026-06-16 10:01:58.093825000 +0200 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn 2026-06-16 10:07:10.904604600 +0200 +@@ -632,7 +632,6 @@ + "winhttp.lib", + ] + +- cflags = [ "/wd4201" ] # nonstandard extension used: nameless struct/union. + + if (current_cpu == "x86") { + asmflags = [ "/safeseh" ] +diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/BUILD.gn b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/BUILD.gn +--- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/BUILD.gn 2026-06-16 10:07:05.946118900 +0200 +@@ -455,7 +455,7 @@ + # So we only link to it in debug build when compiling for UWP. + # In win32 we load dxgi.dll using LoadLibrary + # so no need for static linking. +- libs += [ "dxgi.lib" ] ++ libs += [ "dxgi" ] + } + + # TODO(dawn:766): +diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/tests/BUILD.gn b/src/3rdparty/chromium/third_party/dawn/src/dawn/tests/BUILD.gn +--- a/src/3rdparty/chromium/third_party/dawn/src/dawn/tests/BUILD.gn 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/tests/BUILD.gn 2026-06-16 10:07:05.955899600 +0200 +@@ -708,9 +708,9 @@ + + if (dawn_enable_d3d11 || dawn_enable_d3d12) { + libs += [ +- "d3d11.lib", ++ "d3d11", + "d3d12.lib", +- "dxgi.lib", ++ "dxgi", + ] + + sources += [ "end2end/VideoViewsTests_win.cpp" ] +diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/copy-file.js b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/copy-file.js +--- a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/copy-file.js 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/copy-file.js 2026-06-16 10:07:11.293583300 +0200 +@@ -1,38 +1,38 @@ +-// Copyright 2020 The Chromium Authors. All rights reserved. +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +-const fs = require('fs'); +-const path = require('path'); +- +-const {writeIfChanged} = require('./write-if-changed.js'); +-const [, , src, dest] = process.argv; +- +-const srcPath = path.join(process.cwd(), src); +-const destPath = path.join(process.cwd(), dest); +- +-// If there's a file there from a previous build, unlink it first. This +-// is because the file in that location might be a hardlinked file, and +-// overwriting it doesn't change the fact that it's hardlinked. +-const srcContents = fs.readFileSync(srcPath); +-let fileDiffer = true; +-if (fileExists(destPath)) { +- // Check contents, return early if match +- const destContents = fs.readFileSync(destPath); +- fileDiffer = srcContents.compare(destContents) !== 0; +-} +- +-// Force a write to the target filesystem, since by default the ninja +-// toolchain will create a hardlink, which in turn reflects changes in +-// gen and resources/inspector back to //front_end. +-if (fileDiffer) { +- writeIfChanged(destPath, srcContents); +-} +- +-/** +- * Case sensitive implementation of a file look up. +- */ +-function fileExists(filePath) { +- const dir = path.dirname(filePath); +- const files = fs.readdirSync(dir); +- return files.includes(path.basename(filePath)); +-} ++// Copyright 2020 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++const fs = require('fs'); ++const path = require('path'); ++ ++const {writeIfChanged} = require('./write-if-changed.js'); ++const [, , src, dest] = process.argv; ++ ++const srcPath = path.isAbsolute(src) ? src : path.join(process.cwd(), src); ++const destPath = path.isAbsolute(dest) ? dest : path.join(process.cwd(), dest); ++ ++// If there's a file there from a previous build, unlink it first. This ++// is because the file in that location might be a hardlinked file, and ++// overwriting it doesn't change the fact that it's hardlinked. ++const srcContents = fs.readFileSync(srcPath); ++let fileDiffer = true; ++if (fileExists(destPath)) { ++ // Check contents, return early if match ++ const destContents = fs.readFileSync(destPath); ++ fileDiffer = srcContents.compare(destContents) !== 0; ++} ++ ++// Force a write to the target filesystem, since by default the ninja ++// toolchain will create a hardlink, which in turn reflects changes in ++// gen and resources/inspector back to //front_end. ++if (fileDiffer) { ++ writeIfChanged(destPath, srcContents); ++} ++ ++/** ++ * Case sensitive implementation of a file look up. ++ */ ++function fileExists(filePath) { ++ const dir = path.dirname(filePath); ++ const files = fs.readdirSync(dir); ++ return files.includes(path.basename(filePath)); ++} +diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/generate-tsconfig.js b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/generate-tsconfig.js +--- a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/generate-tsconfig.js 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/ninja/generate-tsconfig.js 2026-06-16 10:07:11.367160700 +0200 +@@ -1,46 +1,49 @@ +-// Copyright 2020 The Chromium Authors. All rights reserved. +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +-const fs = require('fs'); +-const path = require('path'); +- +-const [, , tsconfigLocation, originalFileLocation, ...dependencies] = process.argv; +- +-const originalFrontendMappedLocation = +- path.relative(path.dirname(tsconfigLocation), path.join(process.cwd(), originalFileLocation)); +- +-const generatedTSConfig = { +- compilerOptions: { +- composite: true, +- outDir: '.', +- baseUrl: '.', +- rootDir: path.dirname(originalFrontendMappedLocation), +- }, +- files: [ +- originalFrontendMappedLocation, +- ], +- references: dependencies.map(dep => { +- // Deps come in the form of :foo, ../some/path:foo or +- // ../some/path, which means we can split on the colon and +- // obtain the path and target parts. If there is no target +- // part it is assumed to be the same as the final dirname of +- // the path. +- +- let [pathPart, targetPart] = dep.split(':'); +- if (pathPart === '') { +- pathPart = '.'; +- } +- +- // A path of ../some/path means that we need to assume +- // ../some/path with a target of path. +- if (pathPart === dep) { +- targetPart = path.basename(dep); +- } +- +- return { +- path: `${pathPart}/${targetPart}-tsconfig.json`, +- }; +- }), +-}; +- +-fs.writeFileSync(tsconfigLocation, JSON.stringify(generatedTSConfig)); ++// Copyright 2020 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++const fs = require('fs'); ++const path = require('path'); ++ ++const [, , tsconfigLocation, originalFileLocation, ...dependencies] = process.argv; ++ ++const originalPath = path.isAbsolute(originalFileLocation) || /^[A-Za-z]:[\\/]/.test(originalFileLocation) ? ++ originalFileLocation : ++ path.join(process.cwd(), originalFileLocation); ++const originalFrontendMappedLocation = ++ path.relative(path.dirname(tsconfigLocation), originalPath); ++ ++const generatedTSConfig = { ++ compilerOptions: { ++ composite: true, ++ outDir: '.', ++ baseUrl: '.', ++ rootDir: path.dirname(originalFrontendMappedLocation), ++ }, ++ files: [ ++ originalFrontendMappedLocation, ++ ], ++ references: dependencies.map(dep => { ++ // Deps come in the form of :foo, ../some/path:foo or ++ // ../some/path, which means we can split on the colon and ++ // obtain the path and target parts. If there is no target ++ // part it is assumed to be the same as the final dirname of ++ // the path. ++ ++ let [pathPart, targetPart] = dep.split(':'); ++ if (pathPart === '') { ++ pathPart = '.'; ++ } ++ ++ // A path of ../some/path means that we need to assume ++ // ../some/path with a target of path. ++ if (pathPart === dep) { ++ targetPart = path.basename(dep); ++ } ++ ++ return { ++ path: `${pathPart}/${targetPart}-tsconfig.json`, ++ }; ++ }), ++}; ++ ++fs.writeFileSync(tsconfigLocation, JSON.stringify(generatedTSConfig)); +diff --git a/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp 2026-06-16 10:06:51.016205400 +0200 +@@ -30,7 +30,7 @@ + #include "fxjs/cjs_runtime.h" + #include "fxjs/ijs_runtime.h" + #include "public/fpdf_formfill.h" +-#include "v8/include/cppgc/allocation.h" ++#include "cppgc/allocation.h" + #include "xfa/fgas/font/cfgas_gemodule.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffapp.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.h b/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.h +--- a/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_context.h 2026-06-16 10:06:51.018213300 +0200 +@@ -20,7 +20,7 @@ + #include "fpdfsdk/cpdfsdk_formfillenvironment.h" + #include "fpdfsdk/fpdfxfa/cpdfxfa_page.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/cxfa_ffapp.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_widget.h b/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_widget.h +--- a/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_widget.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdfxfa/cpdfxfa_widget.h 2026-06-16 10:06:51.020220800 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/fx_coordinates.h" + #include "fpdfsdk/cpdfsdk_annot.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/cxfa_ffwidget.h" + + class CPDFSDK_PageView; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.cpp 2026-06-16 10:06:51.025982400 +0200 +@@ -7,7 +7,7 @@ + #include "fxjs/cfx_v8.h" + + #include "fxjs/fxv8.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + CFX_V8::CFX_V8(v8::Isolate* isolate) : isolate_(isolate) {} + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8.h 2026-06-16 10:06:51.025982400 +0200 +@@ -13,7 +13,7 @@ + + #include "core/fxcrt/fx_string.h" + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class CFX_V8 { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_array_buffer_allocator.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_array_buffer_allocator.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_array_buffer_allocator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_array_buffer_allocator.h 2026-06-16 10:06:51.027991300 +0200 +@@ -11,7 +11,7 @@ + + #include + +-#include "v8/include/v8-array-buffer.h" ++#include "v8-array-buffer.h" + + class CFX_V8ArrayBufferAllocator final : public v8::ArrayBuffer::Allocator { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfx_v8_unittest.cpp 2026-06-16 10:06:51.027991300 +0200 +@@ -10,10 +10,10 @@ + + #include "testing/fxv8_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-date.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-date.h" ++#include "v8-isolate.h" + + namespace { + bool getter_sentinel = false; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.cpp 2026-06-16 10:06:51.020220800 +0200 +@@ -17,13 +17,13 @@ + #include "fxjs/cjs_object.h" + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_runtimedata.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-message.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" +-#include "v8/include/v8-util.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" ++#include "v8-message.h" ++#include "v8-primitive.h" ++#include "v8-script.h" ++#include "v8-util.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine.h 2026-06-16 10:06:51.022228100 +0200 +@@ -23,10 +23,10 @@ + #include "core/fxcrt/widestring.h" + #include "fxjs/cfx_v8.h" + #include "fxjs/ijs_runtime.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-template.h" ++#include "v8-forward.h" ++#include "v8-function-callback.h" ++#include "v8-persistent-handle.h" ++#include "v8-template.h" + + class CFXJS_ObjDefinition; + class V8TemplateMap; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_embeddertest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_embeddertest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_embeddertest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_embeddertest.cpp 2026-06-16 10:06:51.023975400 +0200 +@@ -6,11 +6,11 @@ + + #include "testing/external_engine_embedder_test.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-value.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" ++#include "v8-value.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cfxjs_engine_unittest.cpp 2026-06-16 10:06:51.023975400 +0200 +@@ -9,8 +9,8 @@ + #include "fxjs/cjs_object.h" + #include "testing/fxv8_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-isolate.h" + + class FXJSEngineUnitTest : public FXV8UnitTest { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_app.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_app.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_app.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_app.cpp 2026-06-16 10:06:51.029997900 +0200 +@@ -21,7 +21,7 @@ + #include "fxjs/global_timer.h" + #include "fxjs/ijs_event_context.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-container.h" ++#include "v8-container.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_color.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_color.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_color.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_color.cpp 2026-06-16 10:06:51.034069800 +0200 +@@ -15,7 +15,7 @@ + #include "fxjs/cjs_runtime.h" + #include "fxjs/fxv8.h" + #include "fxjs/js_define.h" +-#include "v8/include/v8-container.h" ++#include "v8-container.h" + + const JSPropertySpec CJS_Color::PropertySpecs[] = { + {"black", get_black_static, set_black_static}, +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_document.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_document.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_document.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_document.cpp 2026-06-16 10:06:51.036077100 +0200 +@@ -34,7 +34,7 @@ + #include "fxjs/cjs_field.h" + #include "fxjs/cjs_icon.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-container.h" ++#include "v8-container.h" + + const JSPropertySpec CJS_Document::PropertySpecs[] = { + {"ADBE", get_ADBE_static, set_ADBE_static}, +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_event_context.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_event_context.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_event_context.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_event_context.cpp 2026-06-16 10:06:51.036077100 +0200 +@@ -14,8 +14,8 @@ + #include "fxjs/cjs_runtime.h" + #include "fxjs/js_define.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-isolate.h" + + CJS_EventContext::CJS_EventContext(CJS_Runtime* pRuntime) + : runtime_(pRuntime), form_fill_env_(pRuntime->GetFormFillEnv()) {} +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_field.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_field.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_field.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_field.cpp 2026-06-16 10:06:51.039831400 +0200 +@@ -31,7 +31,7 @@ + #include "fxjs/cjs_icon.h" + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-container.h" ++#include "v8-container.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_global.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_global.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_global.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_global.cpp 2026-06-16 10:06:51.039831400 +0200 +@@ -21,7 +21,7 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_define.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_globalarrays.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_globalarrays.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_globalarrays.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_globalarrays.cpp 2026-06-16 10:06:51.041840300 +0200 +@@ -9,8 +9,8 @@ + #include + + #include "core/fxcrt/numerics/safe_conversions.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-container.h" ++#include "v8-isolate.h" + + #define GLOBAL_ARRAY(rt, name, ...) \ + { \ +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp 2026-06-16 10:06:51.043846900 +0200 +@@ -41,7 +41,7 @@ + #include "fxjs/fx_date_helpers.h" + #include "fxjs/js_define.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-container.h" ++#include "v8-container.h" + + // static + const JSMethodSpec CJS_PublicMethods::GlobalFunctionSpecs[] = { +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods_embeddertest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods_embeddertest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods_embeddertest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods_embeddertest.cpp 2026-06-16 10:06:51.043846900 +0200 +@@ -10,11 +10,11 @@ + #include "fxjs/cjs_publicmethods.h" + #include "testing/external_engine_embedder_test.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_result.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_result.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_result.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_result.h 2026-06-16 10:06:51.045853800 +0200 +@@ -10,7 +10,7 @@ + #include + + #include "fxjs/js_resources.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class CJS_Result { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_runtime.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_runtime.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_runtime.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_runtime.cpp 2026-06-16 10:06:51.045853800 +0200 +@@ -40,9 +40,9 @@ + #include "fxjs/cjs_zoomtype.h" + #include "fxjs/fxv8.h" + #include "fxjs/js_define.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" + + CJS_Runtime::CJS_Runtime(CPDFSDK_FormFillEnvironment* pFormFillEnv) + : form_fill_env_(pFormFillEnv) { +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.cpp 2026-06-16 10:06:51.047862900 +0200 +@@ -26,7 +26,7 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_define.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-date.h" ++#include "v8-date.h" + + #if BUILDFLAG(IS_ANDROID) + #include +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_util.h 2026-06-16 10:06:51.049870600 +0200 +@@ -11,7 +11,7 @@ + #include "core/fxcrt/widestring.h" + #include "fxjs/cjs_object.h" + #include "fxjs/js_define.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class CJS_Util final : public CJS_Object { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.cpp 2026-06-16 10:06:51.049870600 +0200 +@@ -8,12 +8,12 @@ + + #include "core/fxcrt/compiler_specific.h" + #include "core/fxcrt/numerics/safe_conversions.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-date.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-date.h" ++#include "v8-exception.h" ++#include "v8-isolate.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + + namespace fxv8 { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/fxv8.h 2026-06-16 10:06:51.051885100 +0200 +@@ -13,7 +13,7 @@ + + #include "core/fxcrt/fx_string.h" + #include "core/fxcrt/span.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + // The fxv8 functions soften up the interface to the V8 API. In particular, + // PDFium uses size_t for sizes and indices, but V8 mostly uses ints, so +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace.h 2026-06-16 10:06:51.051885100 +0200 +@@ -10,8 +10,8 @@ + #include + #include + +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + + namespace fxgc { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/container_trace_unittest.cpp 2026-06-16 10:06:51.053891900 +0200 +@@ -12,7 +12,7 @@ + #include + + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/member.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node.h 2026-06-16 10:06:51.055638900 +0200 +@@ -6,9 +6,9 @@ + #define FXJS_GC_GCED_TREE_NODE_H_ + + #include "core/fxcrt/tree_node.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + + namespace fxjs { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin.h 2026-06-16 10:06:51.055638900 +0200 +@@ -6,9 +6,9 @@ + #define FXJS_GC_GCED_TREE_NODE_MIXIN_H_ + + #include "core/fxcrt/tree_node.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + + namespace fxjs { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_mixin_unittest.cpp 2026-06-16 10:06:51.057656800 +0200 +@@ -11,8 +11,8 @@ + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "testing/v8_test_environment.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/allocation.h" ++#include "cppgc/persistent.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/gced_tree_node_unittest.cpp 2026-06-16 10:06:51.057656800 +0200 +@@ -11,8 +11,8 @@ + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "testing/v8_test_environment.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/allocation.h" ++#include "cppgc/persistent.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.cpp 2026-06-16 10:06:51.059664200 +0200 +@@ -8,7 +8,7 @@ + + #include "core/fxcrt/check.h" + #include "core/fxcrt/fx_system.h" +-#include "v8/include/cppgc/heap.h" ++#include "cppgc/heap.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap.h 2026-06-16 10:06:51.061670700 +0200 +@@ -7,7 +7,7 @@ + + #include + +-#include "v8/include/cppgc/allocation.h" ++#include "cppgc/allocation.h" + + namespace cppgc { + class Heap; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/heap_unittest.cpp 2026-06-16 10:06:51.061670700 +0200 +@@ -11,8 +11,8 @@ + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "testing/v8_test_environment.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/allocation.h" ++#include "cppgc/persistent.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/move_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/move_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/move_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/gc/move_unittest.cpp 2026-06-16 10:06:51.063677300 +0200 +@@ -7,8 +7,8 @@ + #include "fxjs/gc/heap.h" + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/member.h" ++#include "cppgc/persistent.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.cpp 2026-06-16 10:06:51.063677300 +0200 +@@ -19,9 +19,9 @@ + #include "fxjs/cjs_object.h" + #include "fxjs/fx_date_helpers.h" + #include "fxjs/fxv8.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-function.h" ++#include "v8-isolate.h" + + void JSDestructor(v8::Local obj) { + CFXJS_Engine::SetBinding(obj, nullptr); +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/js_define.h 2026-06-16 10:06:51.065686000 +0200 +@@ -15,7 +15,7 @@ + #include "fxjs/cjs_result.h" + #include "fxjs/cjs_runtime.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-local-handle.h" + + class CJS_Object; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.cpp 2026-06-16 10:06:51.067692900 +0200 +@@ -18,14 +18,14 @@ + #include "fxjs/xfa/cfxjse_context.h" + #include "fxjs/xfa/cfxjse_isolatetracker.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-container.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + using pdfium::fxjse::kClassTag; + using pdfium::fxjse::kFuncTag; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_class.h 2026-06-16 10:06:51.067692900 +0200 +@@ -9,8 +9,8 @@ + + #include "core/fxcrt/unowned_ptr.h" + #include "fxjs/xfa/fxjse.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + class CFXJSE_Context; + struct FXJSE_CLASS_DESCRIPTOR; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.cpp 2026-06-16 10:06:51.069699700 +0200 +@@ -19,10 +19,10 @@ + #include "fxjs/xfa/cfxjse_runtimedata.h" + #include "fxjs/xfa/cfxjse_value.h" + #include "fxjs/xfa/cjx_object.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-message.h" +-#include "v8/include/v8-script.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-message.h" ++#include "v8-script.h" + #include "xfa/fxfa/parser/cxfa_thisproxy.h" + + namespace { +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_context.h 2026-06-16 10:06:51.071447000 +0200 +@@ -12,9 +12,9 @@ + + #include "core/fxcrt/bytestring.h" + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "cppgc/persistent.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + class CFXJSE_Class; + class CFXJSE_HostObject; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.cpp 2026-06-16 10:06:51.071447000 +0200 +@@ -23,10 +23,10 @@ + #include "fxjs/xfa/cfxjse_resolveprocessor.h" + #include "fxjs/xfa/cfxjse_value.h" + #include "fxjs/xfa/cjx_object.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + #include "xfa/fxfa/cxfa_ffnotify.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_engine.h 2026-06-16 10:06:51.073453700 +0200 +@@ -16,9 +16,9 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "fxjs/cfx_v8.h" + #include "fxjs/xfa/cfxjse_context.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "cppgc/persistent.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/cxfa_script.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.cpp 2026-06-16 10:06:51.075460700 +0200 +@@ -37,11 +37,11 @@ + #include "fxjs/xfa/cfxjse_engine.h" + #include "fxjs/xfa/cfxjse_value.h" + #include "fxjs/xfa/cjx_object.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-container.h" ++#include "v8-function-callback.h" ++#include "v8-local-handle.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fgas/crt/cfgas_decimal.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/formcalc/cxfa_fmparser.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_formcalc_context.h 2026-06-16 10:06:51.077467900 +0200 +@@ -16,9 +16,9 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widetext_buffer.h" + #include "fxjs/xfa/fxjse.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "cppgc/persistent.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + class CFXJSE_Context; + class CXFA_Document; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_isolatetracker.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_isolatetracker.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_isolatetracker.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_isolatetracker.h 2026-06-16 10:06:51.079474900 +0200 +@@ -8,8 +8,8 @@ + #define FXJS_XFA_CFXJSE_ISOLATETRACKER_H_ + + #include "core/fxcrt/fx_memory.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-context.h" ++#include "v8-isolate.h" + + class CFXJSE_Context; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_nodehelper.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_nodehelper.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_nodehelper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_nodehelper.h 2026-06-16 10:06:51.079474900 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/widestring.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/fxfa_basic.h" + + class CXFA_Node; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_resolveprocessor.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_resolveprocessor.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_resolveprocessor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_resolveprocessor.h 2026-06-16 10:06:51.081481900 +0200 +@@ -12,7 +12,7 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widestring.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + #include "xfa/fxfa/fxfa_basic.h" + #include "xfa/fxfa/parser/xfa_basic_data.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.cpp 2026-06-16 10:06:51.081481900 +0200 +@@ -12,12 +12,12 @@ + #include "fxjs/cfxjs_engine.h" + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_isolatetracker.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-external.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-primitive.h" ++#include "v8-template.h" + + CFXJSE_RuntimeData::CFXJSE_RuntimeData() = default; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_runtimedata.h 2026-06-16 10:06:51.083491000 +0200 +@@ -10,8 +10,8 @@ + #include + + #include "fxjs/cfxjs_engine.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + class CFXJSE_RuntimeData final : public CFXJS_PerIsolateData::ExtensionIface { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.cpp 2026-06-16 10:06:51.083491000 +0200 +@@ -13,12 +13,12 @@ + #include "fxjs/xfa/cfxjse_class.h" + #include "fxjs/xfa/cfxjse_context.h" + #include "fxjs/xfa/cfxjse_isolatetracker.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-exception.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-script.h" ++#include "v8-container.h" ++#include "v8-exception.h" ++#include "v8-function.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" ++#include "v8-script.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cfxjse_value.h 2026-06-16 10:06:51.085497600 +0200 +@@ -15,8 +15,8 @@ + #include "core/fxcrt/check.h" + #include "core/fxcrt/fx_string.h" + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-persistent-handle.h" ++#include "v8-forward.h" ++#include "v8-persistent-handle.h" + + class CFXJSE_Class; + class CFXJSE_HostObject; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_boolean.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_boolean.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_boolean.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_boolean.cpp 2026-06-16 10:06:51.087244400 +0200 +@@ -9,7 +9,7 @@ + #include "core/fxcrt/fx_string.h" + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_boolean.h" + + CJX_Boolean::CJX_Boolean(CXFA_Boolean* node) : CJX_Object(node) {} +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_container.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_container.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_container.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_container.cpp 2026-06-16 10:06:51.087244400 +0200 +@@ -10,8 +10,8 @@ + #include "fxjs/xfa/cfxjse_class.h" + #include "fxjs/xfa/cfxjse_engine.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-object.h" ++#include "cppgc/allocation.h" ++#include "v8-object.h" + #include "xfa/fxfa/parser/cxfa_arraynodelist.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/cxfa_field.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_desc.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_desc.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_desc.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_desc.cpp 2026-06-16 10:06:51.089253500 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/cfx_v8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_desc.h" + + const CJX_MethodSpec CJX_Desc::MethodSpecs[] = {{"metadata", metadata_static}}; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_draw.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_draw.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_draw.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_draw.cpp 2026-06-16 10:06:51.089253500 +0200 +@@ -9,8 +9,8 @@ + #include "core/fxcrt/check.h" + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" +-#include "v8/include/v8-value.h" ++#include "v8-primitive.h" ++#include "v8-value.h" + #include "xfa/fxfa/parser/cxfa_draw.h" + + CJX_Draw::CJX_Draw(CXFA_Draw* node) : CJX_Container(node) {} +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_eventpseudomodel.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_eventpseudomodel.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_eventpseudomodel.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_eventpseudomodel.cpp 2026-06-16 10:06:51.091260400 +0200 +@@ -13,7 +13,7 @@ + #include "core/fxcrt/span.h" + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/parser/cscript_eventpseudomodel.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_exclgroup.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_exclgroup.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_exclgroup.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_exclgroup.cpp 2026-06-16 10:06:51.093267800 +0200 +@@ -10,8 +10,8 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/fxfa.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_field.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_field.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_field.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_field.cpp 2026-06-16 10:06:51.093267800 +0200 +@@ -11,7 +11,7 @@ + #include "fxjs/cfx_v8.h" + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fgas/crt/cfgas_decimal.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffnotify.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_form.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_form.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_form.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_form.cpp 2026-06-16 10:06:51.095277400 +0200 +@@ -10,9 +10,9 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/parser/cxfa_arraynodelist.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_hostpseudomodel.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_hostpseudomodel.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_hostpseudomodel.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_hostpseudomodel.cpp 2026-06-16 10:06:51.097284200 +0200 +@@ -11,7 +11,7 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/parser/cscript_hostpseudomodel.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.cpp 2026-06-16 10:06:51.097284200 +0200 +@@ -13,8 +13,8 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/parser/cxfa_document.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_instancemanager.h 2026-06-16 10:06:51.099292600 +0200 +@@ -9,7 +9,7 @@ + + #include "fxjs/xfa/cjx_node.h" + #include "fxjs/xfa/jse_define.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + class CXFA_InstanceManager; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_layoutpseudomodel.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_layoutpseudomodel.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_layoutpseudomodel.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_layoutpseudomodel.cpp 2026-06-16 10:06:51.101299200 +0200 +@@ -15,8 +15,8 @@ + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_class.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-object.h" ++#include "cppgc/allocation.h" ++#include "v8-object.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/layout/cxfa_contentlayoutitem.h" + #include "xfa/fxfa/layout/cxfa_layoutitem.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_list.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_list.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_list.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_list.cpp 2026-06-16 10:06:51.101299200 +0200 +@@ -12,8 +12,8 @@ + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_class.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/cxfa_list.h" + #include "xfa/fxfa/parser/cxfa_node.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_manifest.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_manifest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_manifest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_manifest.cpp 2026-06-16 10:06:51.117343900 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/cfx_v8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_manifest.h" + + const CJX_MethodSpec CJX_Manifest::MethodSpecs[] = { +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_model.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_model.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_model.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_model.cpp 2026-06-16 10:06:51.119096200 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + #include "xfa/fxfa/parser/cxfa_delta.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/xfa_basic_data.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_node.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_node.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_node.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_node.cpp 2026-06-16 10:06:51.121103000 +0200 +@@ -21,7 +21,7 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + #include "xfa/fxfa/cxfa_ffnotify.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.cpp 2026-06-16 10:06:51.123110100 +0200 +@@ -27,9 +27,9 @@ + #include "fxjs/xfa/cjx_draw.h" + #include "fxjs/xfa/cjx_field.h" + #include "fxjs/xfa/cjx_instancemanager.h" +-#include "v8/include/v8-forward.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-forward.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fgas/crt/cfgas_decimal.h" + #include "xfa/fgas/graphics/cfgas_gecolor.h" + #include "xfa/fxfa/cxfa_ffnotify.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_object.h 2026-06-16 10:06:51.125117500 +0200 +@@ -17,9 +17,9 @@ + #include "fxjs/gc/heap.h" + #include "fxjs/xfa/fxjse.h" + #include "fxjs/xfa/jse_define.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/v8-forward.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "v8-forward.h" + #include "xfa/fxfa/fxfa_basic.h" + + class CFXJSE_Engine; +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_occur.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_occur.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_occur.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_occur.cpp 2026-06-16 10:06:51.127124200 +0200 +@@ -8,7 +8,7 @@ + + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_occur.h" + + CJX_Occur::CJX_Occur(CXFA_Occur* node) : CJX_Node(node) {} +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_packet.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_packet.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_packet.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_packet.cpp 2026-06-16 10:06:51.129131600 +0200 +@@ -15,7 +15,7 @@ + #include "fxjs/cfx_v8.h" + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/parser/cxfa_packet.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_script.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_script.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_script.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_script.cpp 2026-06-16 10:06:51.129131600 +0200 +@@ -7,7 +7,7 @@ + #include "fxjs/xfa/cjx_script.h" + + #include "fxjs/fxv8.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_script.h" + + CJX_Script::CJX_Script(CXFA_Script* node) : CJX_Node(node) {} +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_signaturepseudomodel.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_signaturepseudomodel.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_signaturepseudomodel.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_signaturepseudomodel.cpp 2026-06-16 10:06:51.131138900 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cscript_signaturepseudomodel.h" + + const CJX_MethodSpec CJX_SignaturePseudoModel::MethodSpecs[] = { +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_subform.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_subform.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_subform.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_subform.cpp 2026-06-16 10:06:51.133152300 +0200 +@@ -11,7 +11,7 @@ + #include "fxjs/fxv8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffnotify.h" + #include "xfa/fxfa/fxfa.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_template.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_template.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_template.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_template.cpp 2026-06-16 10:06:51.134898700 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/cfx_v8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/cxfa_template.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_tree.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_tree.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_tree.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_tree.cpp 2026-06-16 10:06:51.136905800 +0200 +@@ -12,9 +12,9 @@ + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_class.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-primitive.h" ++#include "cppgc/allocation.h" ++#include "v8-object.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_arraynodelist.h" + #include "xfa/fxfa/parser/cxfa_attachnodelist.h" + #include "xfa/fxfa/parser/cxfa_document.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_treelist.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_treelist.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_treelist.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_treelist.cpp 2026-06-16 10:06:51.138961000 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_engine.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/cxfa_node.h" + #include "xfa/fxfa/parser/cxfa_treelist.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_wsdlconnection.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_wsdlconnection.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_wsdlconnection.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_wsdlconnection.cpp 2026-06-16 10:06:51.140967700 +0200 +@@ -10,7 +10,7 @@ + #include "fxjs/cfx_v8.h" + #include "fxjs/js_resources.h" + #include "fxjs/xfa/cfxjse_value.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-primitive.h" + #include "xfa/fxfa/parser/cxfa_wsdlconnection.h" + + const CJX_MethodSpec CJX_WsdlConnection::MethodSpecs[] = { +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_xfa.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_xfa.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_xfa.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/cjx_xfa.cpp 2026-06-16 10:06:51.142975000 +0200 +@@ -8,7 +8,7 @@ + + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_engine.h" +-#include "v8/include/v8-object.h" ++#include "v8-object.h" + #include "xfa/fxfa/parser/cxfa_document.h" + #include "xfa/fxfa/parser/cxfa_xfa.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.cpp b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.cpp 2026-06-16 10:06:51.142975000 +0200 +@@ -8,9 +8,9 @@ + + #include "fxjs/fxv8.h" + #include "fxjs/xfa/cfxjse_context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-object.h" +-#include "v8/include/v8-template.h" ++#include "v8-isolate.h" ++#include "v8-object.h" ++#include "v8-template.h" + + namespace pdfium::fxjse { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.h b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.h +--- a/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/fxjs/xfa/fxjse.h 2026-06-16 10:06:51.144982100 +0200 +@@ -11,7 +11,7 @@ + + #include "core/fxcrt/fx_string.h" + #include "core/fxcrt/span.h" +-#include "v8/include/v8-forward.h" ++#include "v8-forward.h" + + namespace pdfium { + namespace fxjse { +diff --git a/src/3rdparty/chromium/third_party/pdfium/samples/simple_with_v8.cc b/src/3rdparty/chromium/third_party/pdfium/samples/simple_with_v8.cc +--- a/src/3rdparty/chromium/third_party/pdfium/samples/simple_with_v8.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/samples/simple_with_v8.cc 2026-06-16 10:06:51.146990600 +0200 +@@ -11,10 +11,10 @@ + #include "public/fpdf_edit.h" + #include "public/fpdf_formfill.h" + #include "public/fpdfview.h" +-#include "v8/include/libplatform/libplatform.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-initialization.h" +-#include "v8/include/v8-isolate.h" ++#include "libplatform/libplatform.h" ++#include "v8-array-buffer.h" ++#include "v8-initialization.h" ++#include "v8-isolate.h" + + int main(int argc, const char* argv[]) { + // V8 must be initialized before the PDFium library if using V8. +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.cpp b/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.cpp 2026-06-16 10:06:51.146990600 +0200 +@@ -8,9 +8,9 @@ + + #include "fxjs/cfxjs_engine.h" + #include "testing/v8_test_environment.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" + + ExternalEngineEmbedderTest::ExternalEngineEmbedderTest() = default; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.h b/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.h +--- a/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/external_engine_embedder_test.h 2026-06-16 10:06:51.148999000 +0200 +@@ -8,8 +8,8 @@ + #include + + #include "testing/js_embedder_test.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-local-handle.h" ++#include "v8-context.h" ++#include "v8-local-handle.h" + + class CFXJS_Engine; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/fxgc_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/testing/fxgc_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/testing/fxgc_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/fxgc_unittest.cpp 2026-06-16 10:06:51.150746900 +0200 +@@ -7,7 +7,7 @@ + #include "fxjs/gc/heap.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "testing/v8_test_environment.h" +-#include "v8/include/libplatform/libplatform.h" ++#include "libplatform/libplatform.h" + + FXGCUnitTest::FXGCUnitTest() = default; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/fxv8_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/testing/fxv8_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/testing/fxv8_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/fxv8_unittest.cpp 2026-06-16 10:06:51.150746900 +0200 +@@ -7,7 +7,7 @@ + #include + + #include "fxjs/cfx_v8_array_buffer_allocator.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + void FXV8UnitTest::V8IsolateDeleter::operator()(v8::Isolate* ptr) const { + ptr->Dispose(); +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/pdfium_test.cc b/src/3rdparty/chromium/third_party/pdfium/testing/pdfium_test.cc +--- a/src/3rdparty/chromium/third_party/pdfium/testing/pdfium_test.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/pdfium_test.cc 2026-06-16 10:06:51.152754400 +0200 +@@ -90,11 +90,11 @@ + + #ifdef PDF_ENABLE_V8 + #include "testing/v8_initializer.h" +-#include "v8/include/libplatform/libplatform.h" +-#include "v8/include/v8-array-buffer.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-platform.h" +-#include "v8/include/v8-snapshot.h" ++#include "libplatform/libplatform.h" ++#include "v8-array-buffer.h" ++#include "v8-isolate.h" ++#include "v8-platform.h" ++#include "v8-snapshot.h" + #endif // PDF_ENABLE_V8 + + #ifdef _WIN32 +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/v8_initializer.cpp b/src/3rdparty/chromium/third_party/pdfium/testing/v8_initializer.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/testing/v8_initializer.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/v8_initializer.cpp 2026-06-16 10:06:51.154760900 +0200 +@@ -14,12 +14,12 @@ + #include "public/fpdfview.h" + #include "testing/utils/file_util.h" + #include "testing/utils/path_service.h" +-#include "v8/include/libplatform/libplatform.h" +-#include "v8/include/v8-initialization.h" +-#include "v8/include/v8-snapshot.h" ++#include "libplatform/libplatform.h" ++#include "v8-initialization.h" ++#include "v8-snapshot.h" + + #ifdef PDF_ENABLE_XFA +-#include "v8/include/cppgc/platform.h" ++#include "cppgc/platform.h" + #endif + + namespace { +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/v8_test_environment.cpp b/src/3rdparty/chromium/third_party/pdfium/testing/v8_test_environment.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/testing/v8_test_environment.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/v8_test_environment.cpp 2026-06-16 10:06:51.154760900 +0200 +@@ -10,10 +10,10 @@ + #include "core/fxcrt/check.h" + #include "core/fxcrt/fx_system.h" + #include "testing/v8_initializer.h" +-#include "v8/include/libplatform/libplatform.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-platform.h" +-#include "v8/include/v8-snapshot.h" ++#include "libplatform/libplatform.h" ++#include "v8-isolate.h" ++#include "v8-platform.h" ++#include "v8-snapshot.h" + + #ifdef V8_USE_EXTERNAL_STARTUP_DATA + #include +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.cpp b/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.cpp 2026-06-16 10:06:51.156773700 +0200 +@@ -15,9 +15,9 @@ + #include "fxjs/xfa/cfxjse_isolatetracker.h" + #include "fxjs/xfa/cfxjse_value.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/v8-container.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-container.h" ++#include "v8-local-handle.h" ++#include "v8-value.h" + + XFAJSEmbedderTest::XFAJSEmbedderTest() = default; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.h b/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.h +--- a/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/testing/xfa_js_embedder_test.h 2026-06-16 10:06:51.158780700 +0200 +@@ -9,9 +9,9 @@ + + #include "core/fxcrt/string_view_template.h" + #include "testing/js_embedder_test.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-persistent-handle.h" +-#include "v8/include/v8-value.h" ++#include "v8-local-handle.h" ++#include "v8-persistent-handle.h" ++#include "v8-value.h" + + class CFXJSE_Engine; + class CXFA_Document; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fgas/crt/cfgas_stringformatter_unittest.cpp 2026-06-16 10:06:51.158780700 +0200 +@@ -16,7 +16,7 @@ + #include "testing/gmock/include/gmock/gmock.h" + #include "testing/gtest/include/gtest/gtest.h" + #include "testing/scoped_set_tz.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/parser/cxfa_localemgr.h" + + using ::testing::ElementsAre; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.cpp 2026-06-16 10:06:51.160786800 +0200 +@@ -6,7 +6,7 @@ + + #include "xfa/fwl/cfwl_app.h" + +-#include "v8/include/cppgc/allocation.h" ++#include "cppgc/allocation.h" + #include "xfa/fwl/cfwl_notedriver.h" + #include "xfa/fwl/cfwl_widget.h" + #include "xfa/fwl/cfwl_widgetmgr.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_app.h 2026-06-16 10:06:51.162793600 +0200 +@@ -9,9 +9,9 @@ + + #include "core/fxcrt/cfx_timer.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_widgetmgr.h" + + namespace pdfium { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_combobox.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_combobox.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_combobox.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_combobox.cpp 2026-06-16 10:06:51.162793600 +0200 +@@ -6,7 +6,7 @@ + + #include "xfa/fwl/cfwl_combobox.h" + +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fde/cfde_texteditengine.h" + #include "xfa/fde/cfde_textout.h" + #include "xfa/fwl/cfwl_app.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_datetimepicker.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_datetimepicker.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_datetimepicker.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_datetimepicker.h 2026-06-16 10:06:51.164801000 +0200 +@@ -9,7 +9,7 @@ + + #include + +-#include "v8/include/cppgc/member.h" ++#include "cppgc/member.h" + #include "xfa/fwl/cfwl_datetimeedit.h" + #include "xfa/fwl/cfwl_event.h" + #include "xfa/fwl/cfwl_monthcalendar.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_edit.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_edit.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_edit.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_edit.cpp 2026-06-16 10:06:51.168557600 +0200 +@@ -16,7 +16,7 @@ + #include "core/fxcrt/numerics/safe_conversions.h" + #include "core/fxge/cfx_renderdevice.h" + #include "core/fxge/text_char_pos.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fde/cfde_textout.h" + #include "xfa/fgas/font/cfgas_gefont.h" + #include "xfa/fgas/graphics/cfgas_gegraphics.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_event.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_event.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_event.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_event.h 2026-06-16 10:06:51.196505400 +0200 +@@ -8,7 +8,7 @@ + #define XFA_FWL_CFWL_EVENT_H_ + + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + + namespace pdfium { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_listbox.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_listbox.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_listbox.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_listbox.cpp 2026-06-16 10:06:51.200269600 +0200 +@@ -13,7 +13,7 @@ + #include "core/fxcrt/containers/unique_ptr_adapters.h" + #include "core/fxcrt/numerics/safe_conversions.h" + #include "core/fxcrt/stl_util.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fde/cfde_textout.h" + #include "xfa/fgas/graphics/cfgas_gegraphics.h" + #include "xfa/fwl/cfwl_app.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_message.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_message.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_message.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_message.h 2026-06-16 10:06:51.200269600 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/mask.h" + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + + namespace pdfium { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_notedriver.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_notedriver.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_notedriver.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_notedriver.h 2026-06-16 10:06:51.202282100 +0200 +@@ -12,9 +12,9 @@ + #include + + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fgas/graphics/cfgas_gegraphics.h" + #include "xfa/fwl/cfwl_widget.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.cpp 2026-06-16 10:06:51.204292400 +0200 +@@ -11,7 +11,7 @@ + #include + + #include "core/fxcrt/check.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fde/cfde_textout.h" + #include "xfa/fwl/cfwl_app.h" + #include "xfa/fwl/cfwl_combobox.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widget.h 2026-06-16 10:06:51.206304000 +0200 +@@ -14,10 +14,10 @@ + #include "core/fxcrt/widestring.h" + #include "core/fxge/dib/fx_dib.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/macros.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/macros.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" + #include "xfa/fde/cfde_data.h" + #include "xfa/fwl/cfwl_themepart.h" + #include "xfa/fwl/cfwl_widgetmgr.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widgetmgr.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widgetmgr.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widgetmgr.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/cfwl_widgetmgr.h 2026-06-16 10:06:51.208314100 +0200 +@@ -12,9 +12,9 @@ + #include "core/fxcrt/fx_coordinates.h" + #include "fxjs/gc/gced_tree_node.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + + class CFGAS_GEGraphics; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_themeprovider.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_themeprovider.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_themeprovider.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_themeprovider.h 2026-06-16 10:06:51.210325600 +0200 +@@ -11,8 +11,8 @@ + #include "core/fxcrt/retain_ptr.h" + #include "core/fxge/dib/fx_dib.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" + + class CFGAS_GEFont; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_widgetdelegate.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_widgetdelegate.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_widgetdelegate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/ifwl_widgetdelegate.h 2026-06-16 10:06:51.212337600 +0200 +@@ -7,7 +7,7 @@ + #ifndef XFA_FWL_IFWL_WIDGETDELEGATE_H_ + #define XFA_FWL_IFWL_WIDGETDELEGATE_H_ + +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + + class CFGAS_GEGraphics; + class CFX_Matrix; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/theme/cfwl_widgettp.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/theme/cfwl_widgettp.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/theme/cfwl_widgettp.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fwl/theme/cfwl_widgettp.h 2026-06-16 10:06:51.214089000 +0200 +@@ -14,7 +14,7 @@ + #include "core/fxcrt/fx_system.h" + #include "core/fxcrt/retain_ptr.h" + #include "core/fxge/dib/fx_dib.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + #include "xfa/fwl/theme/cfwl_utils.h" + + class CFGAS_GEGraphics; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_eventparam.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_eventparam.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_eventparam.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_eventparam.h 2026-06-16 10:06:51.216100500 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widestring.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + #include "xfa/fxfa/fxfa_basic.h" + + enum XFA_EVENTTYPE : uint8_t { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffapp.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffapp.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffapp.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffapp.h 2026-06-16 10:06:51.218112100 +0200 +@@ -10,8 +10,8 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widestring.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" + #include "xfa/fwl/cfwl_app.h" + + class CXFA_FFDoc; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffbarcode.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffbarcode.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffbarcode.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffbarcode.h 2026-06-16 10:06:51.220123300 +0200 +@@ -8,8 +8,8 @@ + #define XFA_FXFA_CXFA_FFBARCODE_H_ + + #include "fxbarcode/BC_Library.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_ffpageview.h" + #include "xfa/fxfa/cxfa_fftextedit.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.cpp 2026-06-16 10:06:51.222134800 +0200 +@@ -7,7 +7,7 @@ + #include "xfa/fxfa/cxfa_ffcheckbutton.h" + + #include "core/fxcrt/check.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_checkbox.h" + #include "xfa/fwl/cfwl_messagemouse.h" + #include "xfa/fwl/cfwl_notedriver.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcheckbutton.h 2026-06-16 10:06:51.224145100 +0200 +@@ -7,7 +7,7 @@ + #ifndef XFA_FXFA_CXFA_FFCHECKBUTTON_H_ + #define XFA_FXFA_CXFA_FFCHECKBUTTON_H_ + +-#include "v8/include/cppgc/member.h" ++#include "cppgc/member.h" + #include "xfa/fxfa/cxfa_fffield.h" + #include "xfa/fxfa/cxfa_ffpageview.h" + #include "xfa/fxfa/parser/cxfa_node.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.cpp 2026-06-16 10:06:51.224145100 +0200 +@@ -10,7 +10,7 @@ + #include + + #include "core/fxcrt/check.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_combobox.h" + #include "xfa/fwl/cfwl_eventselectchanged.h" + #include "xfa/fwl/cfwl_notedriver.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffcombobox.h 2026-06-16 10:06:51.226152800 +0200 +@@ -7,7 +7,7 @@ + #ifndef XFA_FXFA_CXFA_FFCOMBOBOX_H_ + #define XFA_FXFA_CXFA_FFCOMBOBOX_H_ + +-#include "v8/include/cppgc/member.h" ++#include "cppgc/member.h" + #include "xfa/fxfa/cxfa_ffdropdown.h" + + class CXFA_EventParam; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.cpp 2026-06-16 10:06:51.228161400 +0200 +@@ -24,8 +24,8 @@ + #include "core/fxcrt/xml/cfx_xmlparser.h" + #include "core/fxge/dib/cfx_dibitmap.h" + #include "fxjs/xfa/cjx_object.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/heap.h" ++#include "cppgc/allocation.h" ++#include "cppgc/heap.h" + #include "xfa/fgas/font/cfgas_gefont.h" + #include "xfa/fgas/font/cfgas_pdffontmgr.h" + #include "xfa/fwl/cfwl_notedriver.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdoc.h 2026-06-16 10:06:51.228161400 +0200 +@@ -17,10 +17,10 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxge/dib/fx_dib.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/fxfa.h" + #include "xfa/fxfa/parser/cxfa_document.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdocview.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdocview.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdocview.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffdocview.h 2026-06-16 10:06:51.229911700 +0200 +@@ -12,9 +12,9 @@ + + #include "core/fxcrt/span.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffdoc.h" + #include "xfa/fxfa/cxfa_ffwidget.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimage.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimage.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimage.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimage.h 2026-06-16 10:06:51.231919300 +0200 +@@ -7,7 +7,7 @@ + #ifndef XFA_FXFA_CXFA_FFIMAGE_H_ + #define XFA_FXFA_CXFA_FFIMAGE_H_ + +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/prefinalizer.h" + #include "xfa/fxfa/cxfa_ffwidget.h" + + class CXFA_FFImage final : public CXFA_FFWidget { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.cpp 2026-06-16 10:06:51.233926700 +0200 +@@ -10,7 +10,7 @@ + + #include "core/fxcrt/check.h" + #include "core/fxge/dib/cfx_dibitmap.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_app.h" + #include "xfa/fwl/cfwl_messagemouse.h" + #include "xfa/fwl/cfwl_notedriver.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffimageedit.h 2026-06-16 10:06:51.233926700 +0200 +@@ -7,8 +7,8 @@ + #ifndef XFA_FXFA_CXFA_FFIMAGEEDIT_H_ + #define XFA_FXFA_CXFA_FFIMAGEEDIT_H_ + +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" + #include "xfa/fxfa/cxfa_fffield.h" + + class CXFA_FFImageEdit final : public CXFA_FFField { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.cpp 2026-06-16 10:06:51.235933600 +0200 +@@ -12,7 +12,7 @@ + + #include "core/fxcrt/check.h" + #include "core/fxcrt/stl_util.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_listbox.h" + #include "xfa/fwl/cfwl_notedriver.h" + #include "xfa/fwl/cfwl_widget.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fflistbox.h 2026-06-16 10:06:51.237941300 +0200 +@@ -7,8 +7,8 @@ + #ifndef XFA_FXFA_CXFA_FFLISTBOX_H_ + #define XFA_FXFA_CXFA_FFLISTBOX_H_ + +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" + #include "xfa/fxfa/cxfa_ffdropdown.h" + + class CXFA_FFListBox final : public CXFA_FFDropDown { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffnotify.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffnotify.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffnotify.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffnotify.h 2026-06-16 10:06:51.237941300 +0200 +@@ -9,9 +9,9 @@ + + #include "core/fxcrt/mask.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_eventparam.h" + #include "xfa/fxfa/cxfa_ffapp.h" + #include "xfa/fxfa/cxfa_ffdoc.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpageview.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpageview.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpageview.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpageview.h 2026-06-16 10:06:51.239951300 +0200 +@@ -12,9 +12,9 @@ + #include "core/fxcrt/mask.h" + #include "core/fxcrt/widestring.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_ffwidget.h" + #include "xfa/fxfa/layout/cxfa_contentlayoutitem.h" + #include "xfa/fxfa/layout/cxfa_traversestrategy_layoutitem.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpasswordedit.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpasswordedit.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpasswordedit.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpasswordedit.h 2026-06-16 10:06:51.241958400 +0200 +@@ -8,8 +8,8 @@ + #define XFA_FXFA_CXFA_FFPASSWORDEDIT_H_ + + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_fftextedit.h" + + class CXFA_PasswordEdit; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.cpp 2026-06-16 10:06:51.241958400 +0200 +@@ -7,7 +7,7 @@ + #include "xfa/fxfa/cxfa_ffpushbutton.h" + + #include "core/fxcrt/check.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fgas/graphics/cfgas_gecolor.h" + #include "xfa/fgas/graphics/cfgas_gepath.h" + #include "xfa/fwl/cfwl_notedriver.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffpushbutton.h 2026-06-16 10:06:51.243965900 +0200 +@@ -7,7 +7,7 @@ + #ifndef XFA_FXFA_CXFA_FFPUSHBUTTON_H_ + #define XFA_FXFA_CXFA_FFPUSHBUTTON_H_ + +-#include "v8/include/cppgc/member.h" ++#include "cppgc/member.h" + #include "xfa/fxfa/cxfa_fffield.h" + + #define XFA_FWL_PSBSTYLEEXT_HiliteInverted (1L << 0) +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fftextedit.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fftextedit.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fftextedit.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fftextedit.h 2026-06-16 10:06:51.245719000 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/fx_coordinates.h" + #include "core/fxcrt/widestring.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/prefinalizer.h" + #include "xfa/fxfa/cxfa_fffield.h" + + class CFX_Matrix; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidget.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidget.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidget.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidget.h 2026-06-16 10:06:51.247727000 +0200 +@@ -15,8 +15,8 @@ + #include "core/fxcrt/retain_ptr.h" + #include "core/fxge/cfx_graphstatedata.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_app.h" + #include "xfa/fwl/cfwl_messagemouse.h" + #include "xfa/fwl/cfwl_widget.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidgethandler.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidgethandler.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidgethandler.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_ffwidgethandler.h 2026-06-16 10:06:51.249734900 +0200 +@@ -10,9 +10,9 @@ + #include "core/fxcrt/fx_coordinates.h" + #include "core/fxcrt/mask.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fwl/cfwl_message.h" + #include "xfa/fwl/fwl_widgetdef.h" + #include "xfa/fxfa/cxfa_eventparam.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fontmgr.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fontmgr.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fontmgr.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fontmgr.h 2026-06-16 10:06:51.249734900 +0200 +@@ -13,7 +13,7 @@ + #include "core/fxcrt/fx_string.h" + #include "core/fxcrt/retain_ptr.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + + class CFGAS_GEFont; + class CXFA_FFDoc; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwladapterwidgetmgr.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwladapterwidgetmgr.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwladapterwidgetmgr.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwladapterwidgetmgr.h 2026-06-16 10:06:51.251742800 +0200 +@@ -8,7 +8,7 @@ + #define XFA_FXFA_CXFA_FWLADAPTERWIDGETMGR_H_ + + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + #include "xfa/fwl/cfwl_widgetmgr.h" + + class CFX_RectF; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwltheme.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwltheme.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwltheme.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_fwltheme.h 2026-06-16 10:06:51.253749900 +0200 +@@ -12,9 +12,9 @@ + #include "core/fxcrt/retain_ptr.h" + #include "core/fxcrt/widestring.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" + #include "xfa/fwl/ifwl_themeprovider.h" + + class CXFA_FFApp; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_readynodeiterator.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_readynodeiterator.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_readynodeiterator.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_readynodeiterator.h 2026-06-16 10:06:51.253749900 +0200 +@@ -8,7 +8,7 @@ + #define XFA_FXFA_CXFA_READYNODEITERATOR_H_ + + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + #include "xfa/fxfa/parser/cxfa_traversestrategy_xfacontainernode.h" + + class CXFA_Node; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textlayout.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textlayout.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textlayout.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textlayout.h 2026-06-16 10:06:51.255756100 +0200 +@@ -18,9 +18,9 @@ + #include "core/fxcrt/widestring.h" + #include "core/fxge/dib/fx_dib.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fgas/layout/cfgas_char.h" + #include "xfa/fgas/layout/cfgas_textpiece.h" + #include "xfa/fxfa/fxfa_basic.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser.h 2026-06-16 10:06:51.257764900 +0200 +@@ -21,7 +21,7 @@ + #include "core/fxcrt/widestring.h" + #include "core/fxge/dib/fx_dib.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + #include "xfa/fxfa/fxfa_basic.h" + + class CFGAS_GEFont; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textparser_unittest.cpp 2026-06-16 10:06:51.257764900 +0200 +@@ -7,7 +7,7 @@ + #include "fxjs/gc/heap.h" + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/heap.h" ++#include "cppgc/heap.h" + + class CXFA_TestTextParser final : public CXFA_TextParser { + public: +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textprovider.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textprovider.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textprovider.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/cxfa_textprovider.h 2026-06-16 10:06:51.259777700 +0200 +@@ -11,9 +11,9 @@ + + #include "core/fxcrt/widestring.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_textlayout.h" + + class CXFA_Font; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.cpp 2026-06-16 10:06:51.261524300 +0200 +@@ -14,7 +14,7 @@ + #include "core/fxcrt/fx_extension.h" + #include "core/fxcrt/widetext_buffer.h" + #include "fxjs/gc/container_trace.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/formcalc/cxfa_fmtojavascriptdepth.h" + + namespace { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.h 2026-06-16 10:06:51.263531200 +0200 +@@ -13,8 +13,8 @@ + #include "core/fxcrt/widestring.h" + #include "core/fxcrt/widetext_buffer.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" + #include "xfa/fxfa/formcalc/cxfa_fmlexer.h" + + class CXFA_FMExpression : public cppgc::GarbageCollected { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression_unittest.cpp 2026-06-16 10:06:51.265538300 +0200 +@@ -10,7 +10,7 @@ + #include "core/fxcrt/widetext_buffer.h" + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/heap.h" ++#include "cppgc/heap.h" + #include "xfa/fxfa/formcalc/cxfa_fmlexer.h" + #include "xfa/fxfa/formcalc/cxfa_fmtojavascriptdepth.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmlexer.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmlexer.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmlexer.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmlexer.h 2026-06-16 10:06:51.265538300 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/raw_span.h" + #include "core/fxcrt/widestring.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + + enum XFA_FM_TOKEN { + TOKand, +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.cpp 2026-06-16 10:06:51.267550000 +0200 +@@ -10,7 +10,7 @@ + #include + + #include "core/fxcrt/autorestorer.h" +-#include "v8/include/cppgc/heap.h" ++#include "cppgc/heap.h" + + namespace { + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmparser.h 2026-06-16 10:06:51.269556700 +0200 +@@ -13,8 +13,8 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/unowned_ptr_exclusion.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/macros.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/macros.h" ++#include "cppgc/member.h" + #include "xfa/fxfa/formcalc/cxfa_fmexpression.h" + #include "xfa/fxfa/formcalc/cxfa_fmlexer.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutitem.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutitem.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutitem.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutitem.h 2026-06-16 10:06:51.271563700 +0200 +@@ -9,7 +9,7 @@ + + #include "core/fxcrt/fx_coordinates.h" + #include "core/fxcrt/mask.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/fxfa.h" + #include "xfa/fxfa/layout/cxfa_layoutitem.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_contentlayoutprocessor.h 2026-06-16 10:06:51.271563700 +0200 +@@ -19,10 +19,10 @@ + #include "core/fxcrt/fx_coordinates.h" + #include "core/fxcrt/unowned_ptr.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/macros.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/macros.h" ++#include "cppgc/member.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/fxfa_basic.h" + + constexpr float kXFALayoutPrecision = 0.0005f; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutitem.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutitem.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutitem.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutitem.h 2026-06-16 10:06:51.273576100 +0200 +@@ -9,9 +9,9 @@ + + #include "fxjs/gc/gced_tree_node.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" ++#include "cppgc/visitor.h" + + class CXFA_ContentLayoutItem; + class CXFA_Node; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.cpp 2026-06-16 10:06:51.275583400 +0200 +@@ -8,7 +8,7 @@ + + #include "fxjs/gc/container_trace.h" + #include "fxjs/xfa/cjx_object.h" +-#include "v8/include/cppgc/heap.h" ++#include "cppgc/heap.h" + #include "xfa/fxfa/layout/cxfa_contentlayoutitem.h" + #include "xfa/fxfa/layout/cxfa_contentlayoutprocessor.h" + #include "xfa/fxfa/layout/cxfa_viewlayoutprocessor.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_layoutprocessor.h 2026-06-16 10:06:51.277332300 +0200 +@@ -11,9 +11,9 @@ + + #include "core/fxcrt/unowned_ptr.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/parser/cxfa_document.h" + + class CXFA_ContentLayoutProcessor; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutitem.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutitem.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutitem.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutitem.h 2026-06-16 10:06:51.279342800 +0200 +@@ -8,8 +8,8 @@ + #define XFA_FXFA_LAYOUT_CXFA_VIEWLAYOUTITEM_H_ + + #include "core/fxcrt/fx_coordinates.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/layout/cxfa_layoutitem.h" + + class CXFA_FFPageView; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutprocessor.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutprocessor.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutprocessor.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/layout/cxfa_viewlayoutprocessor.h 2026-06-16 10:06:51.279342800 +0200 +@@ -16,10 +16,10 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/unowned_ptr_exclusion.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/prefinalizer.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/prefinalizer.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/layout/cxfa_contentlayoutprocessor.h" + + class CXFA_LayoutItem; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_arraynodelist.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_arraynodelist.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_arraynodelist.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_arraynodelist.h 2026-06-16 10:06:51.281356500 +0200 +@@ -9,8 +9,8 @@ + + #include + +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/parser/cxfa_treelist.h" + + class CXFA_Document; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_attachnodelist.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_attachnodelist.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_attachnodelist.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_attachnodelist.h 2026-06-16 10:06:51.283368200 +0200 +@@ -7,8 +7,8 @@ + #ifndef XFA_FXFA_PARSER_CXFA_ATTACHNODELIST_H_ + #define XFA_FXFA_PARSER_CXFA_ATTACHNODELIST_H_ + +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/parser/cxfa_treelist.h" + + class CXFA_Document; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document.h 2026-06-16 10:06:51.285379700 +0200 +@@ -19,10 +19,10 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widestring.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/persistent.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/persistent.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/fxfa.h" + #include "xfa/fxfa/fxfa_basic.h" + #include "xfa/fxfa/parser/cxfa_localemgr.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder.h 2026-06-16 10:06:51.285379700 +0200 +@@ -8,7 +8,7 @@ + #define XFA_FXFA_PARSER_CXFA_DOCUMENT_BUILDER_H_ + + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + #include "xfa/fxfa/fxfa_basic.h" + + class CFX_XMLDocument; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp 2026-06-16 10:06:51.287394900 +0200 +@@ -11,8 +11,8 @@ + #include "core/fxcrt/xml/cfx_xmlparser.h" + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/allocation.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/parser/cxfa_document.h" + + class CXFADocumentBuilderTest : public FXGCUnitTest { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localemgr.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localemgr.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localemgr.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localemgr.h 2026-06-16 10:06:51.289406800 +0200 +@@ -13,8 +13,8 @@ + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widestring.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" + #include "xfa/fgas/crt/locale_mgr_iface.h" + #include "xfa/fxfa/parser/gced_locale_iface.h" + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localevalue.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localevalue.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localevalue.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_localevalue.h 2026-06-16 10:06:51.291459100 +0200 +@@ -11,7 +11,7 @@ + + #include "core/fxcrt/unowned_ptr.h" + #include "core/fxcrt/widestring.h" +-#include "v8/include/cppgc/macros.h" ++#include "cppgc/macros.h" + #include "xfa/fxfa/parser/cxfa_node.h" + + class CFX_DateTime; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node.h 2026-06-16 10:06:51.293205800 +0200 +@@ -24,8 +24,8 @@ + #include "core/fxcrt/widestring.h" + #include "core/fxge/dib/fx_dib.h" + #include "fxjs/gc/gced_tree_node_mixin.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/cxfa_ffwidget_type.h" + #include "xfa/fxfa/fxfa.h" + #include "xfa/fxfa/parser/cxfa_object.h" +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_node_unittest.cpp 2026-06-16 10:06:51.297220500 +0200 +@@ -8,8 +8,8 @@ + #include "fxjs/xfa/cjx_node.h" + #include "testing/fxgc_unittest.h" + #include "testing/gtest/include/gtest/gtest.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/cppgc/persistent.h" ++#include "cppgc/allocation.h" ++#include "cppgc/persistent.h" + #include "xfa/fxfa/parser/cxfa_document.h" + + namespace { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h 2026-06-16 10:06:51.295213000 +0200 +@@ -9,8 +9,8 @@ + + #include + #include "core/fxcrt/unowned_ptr.h" +-#include "v8/include/cppgc/macros.h" +-#include "v8/include/cppgc/type-traits.h" ++#include "cppgc/macros.h" ++#include "cppgc/type-traits.h" + + template + + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + + class CXFA_List; + +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_object.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_object.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_object.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_object.h 2026-06-16 10:06:51.299227900 +0200 +@@ -10,8 +10,8 @@ + #include "core/fxcrt/fx_string.h" + #include "fxjs/gc/heap.h" + #include "fxjs/xfa/fxjse.h" +-#include "v8/include/cppgc/garbage-collected.h" +-#include "v8/include/cppgc/member.h" ++#include "cppgc/garbage-collected.h" ++#include "cppgc/member.h" + #include "xfa/fxfa/fxfa_basic.h" + + namespace cppgc { +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_thisproxy.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_thisproxy.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_thisproxy.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_thisproxy.h 2026-06-16 10:06:51.301234900 +0200 +@@ -7,8 +7,8 @@ + #ifndef XFA_FXFA_PARSER_CXFA_THISPROXY_H_ + #define XFA_FXFA_PARSER_CXFA_THISPROXY_H_ + +-#include "v8/include/cppgc/member.h" +-#include "v8/include/cppgc/visitor.h" ++#include "cppgc/member.h" ++#include "cppgc/visitor.h" + #include "xfa/fxfa/parser/cxfa_object.h" + + class CXFA_Node; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_xmllocale.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_xmllocale.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_xmllocale.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/cxfa_xmllocale.h 2026-06-16 10:06:51.301234900 +0200 +@@ -12,7 +12,7 @@ + #include "core/fxcrt/span.h" + #include "core/fxcrt/unowned_ptr.h" + #include "fxjs/gc/heap.h" +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + #include "xfa/fxfa/parser/gced_locale_iface.h" + + class CFX_XMLDocument; +diff --git a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/gced_locale_iface.h b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/gced_locale_iface.h +--- a/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/gced_locale_iface.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/third_party/pdfium/xfa/fxfa/parser/gced_locale_iface.h 2026-06-16 10:06:51.303242000 +0200 +@@ -7,7 +7,7 @@ + #ifndef XFA_FXFA_PARSER_GCED_LOCALE_IFACE_H_ + #define XFA_FXFA_PARSER_GCED_LOCALE_IFACE_H_ + +-#include "v8/include/cppgc/garbage-collected.h" ++#include "cppgc/garbage-collected.h" + #include "xfa/fgas/crt/locale_iface.h" + + class GCedLocaleIface : public cppgc::GarbageCollected, +diff --git a/src/3rdparty/chromium/third_party/protobuf/proto_library.gni b/src/3rdparty/chromium/third_party/protobuf/proto_library.gni +--- a/src/3rdparty/chromium/third_party/protobuf/proto_library.gni 2026-06-16 10:01:58.649015300 +0200 ++++ b/src/3rdparty/chromium/third_party/protobuf/proto_library.gni 2026-06-16 10:07:11.041467200 +0200 +@@ -140,12 +140,13 @@ + import("//build/config/compiler/compiler.gni") + import("//build/config/cronet/config.gni") + import("//build/config/sanitizers/sanitizers.gni") ++import("//build/config/qtwebengine_private_paths.gni") + import("//build/toolchain/kythe.gni") + + declare_args() { + # Allows subprojects to omit javascript dependencies (e.g.) closure_compiler + # and google-closure-library. +- enable_js_protobuf = !is_cronet_build ++ enable_js_protobuf = false + } + + declare_args() { +@@ -293,7 +294,7 @@ + _generate_javascript = defined(invoker.generate_javascript) && + invoker.generate_javascript && enable_js_protobuf + _generate_typescript = defined(invoker.generate_typescript) && +- invoker.generate_typescript && enable_js_protobuf ++ invoker.generate_typescript + _generate_with_plugin = defined(invoker.generator_plugin_label) || + defined(invoker.generator_plugin_script) + +diff --git a/src/3rdparty/chromium/third_party/skia/BUILD.gn b/src/3rdparty/chromium/third_party/skia/BUILD.gn +--- a/src/3rdparty/chromium/third_party/skia/BUILD.gn 2026-06-16 10:01:58.337611400 +0200 ++++ b/src/3rdparty/chromium/third_party/skia/BUILD.gn 2026-06-16 10:07:08.765931000 +0200 +@@ -906,7 +906,7 @@ + if (dawn_enable_d3d12) { + libs += [ + "d3d12.lib", +- "dxgi.lib", ++ "dxgi", + "d3dcompiler.lib", + ] + } else if (dawn_enable_metal) { +@@ -1053,7 +1053,7 @@ + } else { + libs += [ + "d3d12.lib", +- "dxgi.lib", ++ "dxgi", + "d3dcompiler.lib", + ] + } +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn +--- a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn 2026-06-16 10:01:58.558030900 +0200 ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn 2026-06-16 10:07:09.219145800 +0200 +@@ -536,8 +536,8 @@ + ] + } else { + libs = [ +- "d3d11.lib", +- "dxgi.lib", ++ "d3d11", ++ "dxgi", + "shcore.lib", + ] + } +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn 2026-06-16 10:01:58.562055400 +0200 ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/BUILD.gn 2026-06-16 10:07:09.306415900 +0200 +@@ -1117,7 +1117,7 @@ + ] + } else { + libs = [ +- "crypt32.lib", ++ "crypt32", + "iphlpapi.lib", + "secur32.lib", + ] +diff --git a/src/3rdparty/chromium/tools/code_cache_generator/code_cache_generator.cc b/src/3rdparty/chromium/tools/code_cache_generator/code_cache_generator.cc +--- a/src/3rdparty/chromium/tools/code_cache_generator/code_cache_generator.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/tools/code_cache_generator/code_cache_generator.cc 2026-06-16 10:06:51.305249100 +0200 +@@ -18,7 +18,7 @@ + #include "third_party/blink/public/web/blink.h" + #include "third_party/blink/public/web/web_bundled_code_cache_generator.h" + #include "tools/v8_context_snapshot/buildflags.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/tools/v8_context_snapshot/v8_context_snapshot_generator.cc b/src/3rdparty/chromium/tools/v8_context_snapshot/v8_context_snapshot_generator.cc +--- a/src/3rdparty/chromium/tools/v8_context_snapshot/v8_context_snapshot_generator.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/tools/v8_context_snapshot/v8_context_snapshot_generator.cc 2026-06-16 10:06:51.305249100 +0200 +@@ -17,7 +17,7 @@ + #include "third_party/blink/public/platform/platform.h" + #include "third_party/blink/public/web/blink.h" + #include "third_party/blink/public/web/web_v8_context_snapshot.h" +-#include "v8/include/v8.h" ++#include "v8.h" + + namespace { + +diff --git a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner.h b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner.h +--- a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner.h 2026-06-16 10:06:51.307256200 +0200 +@@ -21,7 +21,7 @@ + #include "ui/accessibility/platform/automation/automation_api_util.h" + #include "ui/accessibility/platform/automation/automation_ax_tree_wrapper.h" + #include "ui/gfx/geometry/point.h" +-#include "v8/include/v8-isolate.h" ++#include "v8-isolate.h" + + namespace ui { + class AutomationV8Bindings; +diff --git a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner_unittest.cc b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner_unittest.cc +--- a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner_unittest.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_tree_manager_owner_unittest.cc 2026-06-16 10:06:51.309003300 +0200 +@@ -23,8 +23,8 @@ + #include "ui/accessibility/platform/automation/automation_v8_bindings.h" + #include "ui/accessibility/platform/automation/automation_v8_router.h" + #include "ui/gfx/geometry/rect.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-template.h" ++#include "v8-context.h" ++#include "v8-template.h" + + namespace ui { + +diff --git a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.cc b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.cc +--- a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.cc 2026-06-16 10:06:51.342808200 +0200 +@@ -30,9 +30,9 @@ + #include "ui/accessibility/platform/automation/automation_tree_manager_owner.h" + #include "ui/accessibility/platform/automation/automation_v8_router.h" + #include "ui/gfx/geometry/rect_conversions.h" +-#include "v8/include/cppgc/allocation.h" +-#include "v8/include/v8-cppgc.h" +-#include "v8/include/v8-function-callback.h" ++#include "cppgc/allocation.h" ++#include "v8-cppgc.h" ++#include "v8-function-callback.h" + + namespace ui { + +diff --git a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.h b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.h +--- a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_bindings.h 2026-06-16 10:06:51.344822500 +0200 +@@ -11,8 +11,8 @@ + #include "ui/accessibility/ax_enums.mojom-shared.h" + #include "ui/accessibility/ax_event_generator.h" + #include "ui/accessibility/platform/automation/automation_ax_tree_wrapper.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-value.h" ++#include "v8-function-callback.h" ++#include "v8-value.h" + + namespace ui { + +diff --git a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_router.h b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_router.h +--- a/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_router.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/accessibility/platform/automation/automation_v8_router.h 2026-06-16 10:06:51.348884200 +0200 +@@ -11,8 +11,8 @@ + #include "ui/accessibility/ax_event_generator.h" + #include "ui/accessibility/platform/automation/automation_tree_manager_owner.h" + #include "ui/accessibility/platform/automation/v8_handler_function_wrapper.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-value.h" ++#include "v8-function-callback.h" ++#include "v8-value.h" + + namespace ui { + +diff --git a/src/3rdparty/chromium/ui/accessibility/platform/automation/v8_handler_function_wrapper.h b/src/3rdparty/chromium/ui/accessibility/platform/automation/v8_handler_function_wrapper.h +--- a/src/3rdparty/chromium/ui/accessibility/platform/automation/v8_handler_function_wrapper.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/accessibility/platform/automation/v8_handler_function_wrapper.h 2026-06-16 10:06:51.350891700 +0200 +@@ -7,8 +7,8 @@ + + #include "base/component_export.h" + #include "base/memory/ref_counted.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-value.h" ++#include "v8-function-callback.h" ++#include "v8-value.h" + + namespace gin { + class Arguments; +diff --git a/src/3rdparty/chromium/ui/display/BUILD.gn b/src/3rdparty/chromium/ui/display/BUILD.gn +--- a/src/3rdparty/chromium/ui/display/BUILD.gn 2026-06-16 10:01:57.689094300 +0200 ++++ b/src/3rdparty/chromium/ui/display/BUILD.gn 2026-06-16 10:07:10.119556500 +0200 +@@ -147,8 +147,12 @@ + "//components/headless/screen_info", + "//ui/gfx/mojom:dxgi_info", + ] +- libs = [ "shcore.lib" ] +- ldflags = [ "/DELAYLOAD:shcore.dll" ] ++ if (is_mingw) { ++ libs = [ "shcore" ] ++ } else { ++ libs = [ "shcore.lib" ] ++ ldflags = [ "/DELAYLOAD:shcore.dll" ] ++ } + } + + if (use_aura) { +diff --git a/src/3rdparty/chromium/ui/gfx/BUILD.gn b/src/3rdparty/chromium/ui/gfx/BUILD.gn +--- a/src/3rdparty/chromium/ui/gfx/BUILD.gn 2026-06-16 10:01:57.694887100 +0200 ++++ b/src/3rdparty/chromium/ui/gfx/BUILD.gn 2026-06-16 10:07:10.188915300 +0200 +@@ -414,12 +414,21 @@ + + # Windows. + if (is_win) { +- libs = [ +- "setupapi.lib", +- "dwmapi.lib", +- "dwrite.lib", +- "onecore.lib", +- ] ++ if (is_mingw) { ++ libs = [ ++ "setupapi", ++ "dwmapi", ++ "dwrite", ++ "onecore", ++ ] ++ } else { ++ libs = [ ++ "setupapi.lib", ++ "dwmapi.lib", ++ "dwrite.lib", ++ "onecore.lib", ++ ] ++ } + + all_dependent_configs = [ ":gfx_win_linker_flags" ] + public_deps += [ "//components/crash/core/common" ] +diff --git a/src/3rdparty/chromium/ui/gl/BUILD.gn b/src/3rdparty/chromium/ui/gl/BUILD.gn +--- a/src/3rdparty/chromium/ui/gl/BUILD.gn 2026-06-16 10:01:57.698917700 +0200 ++++ b/src/3rdparty/chromium/ui/gl/BUILD.gn 2026-06-16 10:07:10.218543900 +0200 +@@ -299,7 +299,7 @@ + ] + } else { + libs = [ +- "dxgi.lib", ++ "dxgi", + "dxguid.lib", + "dwmapi.lib", + ] +diff --git a/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc b/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc +--- a/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc 2026-06-16 10:01:57.698917700 +0200 ++++ b/src/3rdparty/chromium/ui/gl/dc_layer_tree.cc 2026-06-16 10:06:04.806626800 +0200 +@@ -1,1568 +1,1568 @@ +-// Copyright 2019 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#include "ui/gl/dc_layer_tree.h" +- +-#include +- +-#include +- +-#include "base/check_is_test.h" +-#include "base/command_line.h" +-#include "base/feature_list.h" +-#include "base/logging.h" +-#include "base/metrics/histogram_functions.h" +-#include "base/metrics/histogram_macros.h" +-#include "base/trace_event/trace_event.h" +-#include "base/types/expected.h" +-#include "base/types/expected_macros.h" +-#include "third_party/microsoft_dxheaders/src/include/composition/dcomp-preview.h" +-#include "ui/gfx/color_space_win.h" +-#include "ui/gfx/geometry/rect_conversions.h" +-#include "ui/gfx/geometry/transform_util.h" +-#include "ui/gfx/overlay_layer_id.h" +-#include "ui/gl/direct_composition_support.h" +-#include "ui/gl/gl_switches.h" +-#include "ui/gl/swap_chain_presenter.h" +- +-namespace gl { +-namespace { +- +-constexpr size_t kVideoProcessorDimensionsWindowSize = 100; +- +-bool NeedSwapChainPresenter(const DCLayerOverlayParams& overlay) { +- return overlay.overlay_image && overlay.overlay_image->type() != +- DCLayerOverlayType::kDCompVisualContent; +-} +- +-#if !defined(COMPILER_GCC) // FIXME: missing Microsoft::WRL::ComPtr +-// Unconditionally get a IDCompositionVisual2 as a IDCompositionVisual3. +-// +-// |IDCompositionVisual3| should be available since Windows 8.1, but we noticed +-// crashes due to unconditionally casting to the interface on the earliest +-// versions of Windows 10. This should only be used for features that are +-// conditionally run above those versions of Windows. +-// +-// See: https://crbug.com/1455666 +-Microsoft::WRL::ComPtr CheckedCastToVisual3( +- const Microsoft::WRL::ComPtr& visual2) { +- Microsoft::WRL::ComPtr visual3; +- HRESULT hr = visual2.As(&visual3); +- CHECK_EQ(hr, S_OK); +- CHECK(visual3); +- return visual3; +-} +- +-D2D_MATRIX_3X2_F TransformToD2D_MATRIX_3X2_F(const gfx::Transform& transform) { +- DCHECK(transform.Is2dTransform()); +- // See |TransformToD2D_MATRIX_4X4_F| for notes. +- return D2D1::Matrix3x2F(transform.rc(0, 0), transform.rc(1, 0), +- transform.rc(0, 1), transform.rc(1, 1), +- transform.rc(0, 3), transform.rc(1, 3)); +-} +- +-D2D_MATRIX_4X4_F TransformToD2D_MATRIX_4X4_F(const gfx::Transform& transform) { +- // D2D matrices are stored with the translation portion in the last row, +- // whereas Skia matrices are stored with the translation in the last column. +- // We need to transpose the matrix during the conversion to account for this +- // difference. +- const gfx::Transform& t = transform; +- return D2D1::Matrix4x4F(t.rc(0, 0), t.rc(1, 0), t.rc(2, 0), t.rc(3, 0), +- t.rc(0, 1), t.rc(1, 1), t.rc(2, 1), t.rc(3, 1), +- t.rc(0, 2), t.rc(1, 2), t.rc(2, 2), t.rc(3, 2), +- t.rc(0, 3), t.rc(1, 3), t.rc(2, 3), t.rc(3, 3)); +-} +-#endif +- +-// The size the surfaces in the pool. Used in |VisualSubtree::Update| to +-// determine how to scale the background color visual. This can be any size +-// since we need a non-empty surface to display the background fill, so 1x1 +-// is fine. +-constexpr gfx::Size kSolidColorSurfaceSize = gfx::Size(1, 1); +- +-#if DCHECK_IS_ON() +-bool VisualTreeValid( +- std::vector>& subtree_index_to_overlay, +- const std::vector& prev_subtree_is_attached_to_root) { +- for (size_t i = 0; i < subtree_index_to_overlay.size(); i++) { +- // Unused subtrees must be removed from the root. +- if (!subtree_index_to_overlay[i] && prev_subtree_is_attached_to_root[i]) { +- return false; +- } +- } +- return true; +-} +-#endif // DCHECK_IS_ON() +-} // namespace +- +-VideoProcessorWrapper::VideoProcessorWrapper() = default; +-VideoProcessorWrapper::~VideoProcessorWrapper() = default; +- +-VideoProcessorWrapper::SizeSmoother::SizeSmoother() +- : width_(kVideoProcessorDimensionsWindowSize), +- height_(kVideoProcessorDimensionsWindowSize) {} +-VideoProcessorWrapper::SizeSmoother::~SizeSmoother() = default; +- +-void VideoProcessorWrapper::SizeSmoother::SizeSmoother::PutSize( +- gfx::Size size) { +- width_.AddSample(size.width()); +- height_.AddSample(size.height()); +-} +- +-gfx::Size VideoProcessorWrapper::SizeSmoother::GetSize() const { +- return gfx::Size(width_.Max(), height_.Max()); +-} +- +-// Owns a |IDCompositionSurface| filled with a solid color. +-class SolidColorSurface final { +- public: +- SolidColorSurface() = delete; +- SolidColorSurface(SolidColorSurface&&) = default; +- SolidColorSurface& operator=(SolidColorSurface&&) = default; +- ~SolidColorSurface() = default; +- +- IDCompositionSurface* surface() const { return surface_.Get(); } +- +- private: +- friend class SolidColorSurfacePool; +- +- explicit SolidColorSurface( +- Microsoft::WRL::ComPtr surface) +- : surface_(std::move(surface)) { +- CHECK(surface_); +- } +- +- // Fill the surface with the opaque part of |color|. +- base::expected FillColor(ID3D11Device* d3d11_device, +- SkColor4f color) { +- HRESULT hr = S_OK; +- RECT update_rect = D2D1::Rect(0, 0, kSolidColorSurfaceSize.width(), +- kSolidColorSurfaceSize.height()); +- Microsoft::WRL::ComPtr draw_texture; +- POINT update_offset; +- hr = surface_->BeginDraw(&update_rect, IID_PPV_ARGS(&draw_texture), +- &update_offset); +- if (FAILED(hr)) { +- LOG(ERROR) << "BeginDraw failed: " +- << logging::SystemErrorCodeToString(hr); +- return base::unexpected( +- CommitError{CommitError::Reason::kSolidColorSurfaceBeginDraw, hr}); +- } +- +- Microsoft::WRL::ComPtr rtv; +- hr = +- d3d11_device->CreateRenderTargetView(draw_texture.Get(), nullptr, &rtv); +- if (FAILED(hr)) { +- LOG(ERROR) << "CreateRenderTargetView failed: " +- << logging::SystemErrorCodeToString(hr); +- return base::unexpected(CommitError{ +- CommitError::Reason::kSolidColorSurfaceCreateRenderTargetView, hr}); +- } +- +- Microsoft::WRL::ComPtr immediate_context; +- d3d11_device->GetImmediateContext(&immediate_context); +- immediate_context->ClearRenderTargetView(rtv.Get(), +- color.makeOpaque().vec()); +- +- hr = surface_->EndDraw(); +- if (FAILED(hr)) { +- LOG(ERROR) << "EndDraw failed: " << logging::SystemErrorCodeToString(hr); +- return base::unexpected( +- CommitError{CommitError::Reason::kSolidColorSurfaceEndDraw, hr}); +- } +- +- color_ = color; +- +- return base::ok(); +- } +- +- // A surface with |DXGI_ALPHA_MODE_IGNORE|, filled with the opaque parts of +- // |color_|. +- Microsoft::WRL::ComPtr surface_; +- +- // Only set if |surface_| was successfully filled to this color. +- std::optional color_; +-}; +- +-SolidColorSurfacePool::SolidColorSurfacePool( +- Microsoft::WRL::ComPtr d3d11_device, +- Microsoft::WRL::ComPtr dcomp_device) +- : d3d11_device_(std::move(d3d11_device)), +- dcomp_device_(std::move(dcomp_device)) { +- CHECK(d3d11_device_); +- CHECK(dcomp_device_); +-} +-SolidColorSurfacePool::~SolidColorSurfacePool() = default; +- +-base::expected +-SolidColorSurfacePool::GetSolidColorSurface(const SkColor4f& color) { +- stats_since_last_trim_.num_surfaces_requested += 1; +- +- HRESULT hr = S_OK; +- +- auto first_unused_surface_it = +- std::next(tracked_surfaces_.begin(), num_used_this_frame_); +- +- if (auto found_color_it = std::ranges::find(tracked_surfaces_, color, +- &SolidColorSurface::color_); +- found_color_it != tracked_surfaces_.end()) { +- // We found an existing surface in the pool that already has the requested +- // color. +- +- if (found_color_it >= first_unused_surface_it) { +- // If the surface is in the "unused" portion of |tracked_surfaces_|, make +- // it be tracked now. +- std::swap(*first_unused_surface_it, *found_color_it); +- found_color_it = first_unused_surface_it; +- num_used_this_frame_++; +- } else { +- // The surface is already used by another overlay in this frame, so we can +- // just share it with no extra work. +- } +- +- return found_color_it->surface(); +- } +- +- // There is no surface that already contains the requested |color|, so we'll +- // need to fill one. +- auto surface_to_fill_it = first_unused_surface_it; +- if (surface_to_fill_it == tracked_surfaces_.end()) { +- // If there are no existing allocations, we'll need to create a new one. +- Microsoft::WRL::ComPtr dcomp_surface; +- hr = dcomp_device_->CreateSurface( +- kSolidColorSurfaceSize.width(), kSolidColorSurfaceSize.height(), +- gfx::ColorSpaceWin::GetDXGIFormat(gfx::ColorSpace::CreateSRGB()), +- DXGI_ALPHA_MODE_IGNORE, &dcomp_surface); +- if (FAILED(hr)) { +- LOG(ERROR) << "CreateSurface failed: " +- << logging::SystemErrorCodeToString(hr); +- return base::unexpected(CommitError{ +- CommitError::Reason::kSolidColorSurfacePoolCreateSurface, hr}); +- } +- +- surface_to_fill_it = tracked_surfaces_.insert( +- first_unused_surface_it, SolidColorSurface(std::move(dcomp_surface))); +- } +- +- // The surface we want to use doesn't have the right color at this point. +- RETURN_IF_ERROR(surface_to_fill_it->FillColor(d3d11_device_.Get(), color)); +- +- // Update the partitioning index after |FillColor| succeeds. In the case of +- // failure, |tracked_surfaces_[num_used_this_frame_]| will still have a valid +- // surface, just not filled to any color yet. +- num_used_this_frame_++; +- +- stats_since_last_trim_.num_surfaces_recolored += 1; +- +- return surface_to_fill_it->surface(); +-} +- +-void SolidColorSurfacePool::TrimAfterCommit() { +- // The is the maximum number of solid color surfaces (both in use and not in +- // use) that we will retain between frames. If we are actively using more than +- // this, this value will be ignored. +- // +- // The value is copied from gbm_surfaceless_wayland.cc's +- // |kMaxSolidColorBuffers|, which picks this value based on observationally +- // seeing max 9 in-flight buffers + some margin. However, this can be any +- // value. If the value is smaller than the number of overlays commonly seen +- // in a frame, we may thrash on allocations. If the value is too large, we +- // will end up wasting space. +- static constexpr size_t kMaxSolidColorSurfacesToRetain = 12; +- +- // Preserve up to |kMaxSolidColorSurfacesToRetain| surfaces, even if they +- // aren't used this frame. +- size_t trim_target_size = +- std::max(num_used_this_frame_, kMaxSolidColorSurfacesToRetain); +- // Protect against the case where there are fewer tracked surfaces than +- // |kMaxSolidColorSurfacesToRetain|. +- trim_target_size = std::min(trim_target_size, tracked_surfaces_.size()); +- +- DVLOG(3) << "SolidColorSurfacePool stats before trim: " << "requested=" +- << stats_since_last_trim_.num_surfaces_requested << ", " +- << "recolored=" << stats_since_last_trim_.num_surfaces_recolored +- << ", " << "in-use/total=" << num_used_this_frame_ << "/" +- << tracked_surfaces_.size() +- << (num_used_this_frame_ > kMaxSolidColorSurfacesToRetain +- ? " (in-use exceeds kMaxSolidColorSurfacesToRetain)" +- : "") +- << ", will trim to " << trim_target_size; +- +- auto first_surface_to_remove = +- std::next(tracked_surfaces_.begin(), trim_target_size); +- tracked_surfaces_.erase(first_surface_to_remove, tracked_surfaces_.end()); +- +- // Reset for the next frame. +- num_used_this_frame_ = 0; +- stats_since_last_trim_ = {}; +-} +- +-size_t SolidColorSurfacePool::GetNumSurfacesInPoolForTesting() const { +- CHECK_IS_TEST(); +- return tracked_surfaces_.size(); +-} +- +-DCLayerTree::DCLayerTree(bool disable_nv12_dynamic_textures, +- bool disable_vp_auto_hdr, +- bool disable_vp_scaling, +- bool disable_vp_super_resolution, +- bool disable_dc_letterbox_video_optimization, +- bool force_dcomp_triple_buffer_video_swap_chain, +- bool no_downscaled_overlay_promotion) +- : disable_nv12_dynamic_textures_(disable_nv12_dynamic_textures), +- disable_vp_auto_hdr_(disable_vp_auto_hdr), +- disable_vp_scaling_(disable_vp_scaling), +- disable_vp_super_resolution_(disable_vp_super_resolution), +- disable_dc_letterbox_video_optimization_( +- disable_dc_letterbox_video_optimization), +- force_dcomp_triple_buffer_video_swap_chain_( +- force_dcomp_triple_buffer_video_swap_chain), +- no_downscaled_overlay_promotion_(no_downscaled_overlay_promotion), +- tint_video_layer_(base::CommandLine::ForCurrentProcess()->HasSwitch( +- switches::kTintDcLayer)), +- ink_renderer_(std::make_unique()) {} +- +-DCLayerTree::~DCLayerTree() = default; +- +-void DCLayerTree::Initialize( +- HWND window, +- Microsoft::WRL::ComPtr d3d11_device) { +- window_ = window; +- DCHECK(window_); +- +- d3d11_device_ = std::move(d3d11_device); +- DCHECK(d3d11_device_); +- +- dcomp_device_ = GetDirectCompositionDevice(); +- DCHECK(dcomp_device_); +- +- solid_color_surface_pool_ = +- std::make_unique(d3d11_device_, dcomp_device_); +- +- Microsoft::WRL::ComPtr desktop_device; +- dcomp_device_.As(&desktop_device); +- DCHECK(desktop_device); +- +- HRESULT hr = +- desktop_device->CreateTargetForHwnd(window_, TRUE, &dcomp_target_); +- // |CreateTargetForHwnd| can fail if |window_| belongs to a different process +- // (DCOMPOSITION_ERROR_ACCESS_DENIED) or we have already called +- // |CreateTargetForHwnd| for this window +- // (DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED). We don't expect either to be +- // the case here. +- CHECK_EQ(hr, S_OK); +- +- hr = dcomp_device_->CreateVisual(&dcomp_root_visual_); +- CHECK_EQ(hr, S_OK); +- +- if (base::FeatureList::IsEnabled(features::kDCompDebugVisualization)) { +- Microsoft::WRL::ComPtr debug_device; +- hr = dcomp_device_.As(&debug_device); +- CHECK_EQ(hr, S_OK); +- CHECK(debug_device); +- DLOG(WARNING) << "DComp debug counters enabled, visible in the top right."; +- DLOG(WARNING) << " - left: The composition engine FPS, averaged over the " +- "last 60 composition frames"; +- DLOG(WARNING) << " - right: The overall CPU usage of the composition " +- "thread, in milliseconds"; +- hr = debug_device->EnableDebugCounters(); +- CHECK_EQ(hr, S_OK); +- +- Microsoft::WRL::ComPtr debug_visual; +- hr = dcomp_root_visual_.As(&debug_visual); +- CHECK_EQ(hr, S_OK); +- CHECK(debug_visual); +- hr = debug_visual->EnableRedrawRegions(); +- CHECK_EQ(hr, S_OK); +- } +- +- dcomp_target_->SetRoot(dcomp_root_visual_.Get()); +- // A visual inherits the interpolation mode of the parent visual by default. +- // If no visuals set the interpolation mode, the default for the entire visual +- // tree is nearest neighbor interpolation. +- // Set the interpolation mode to Linear to get a better upscaling quality. +- dcomp_root_visual_->SetBitmapInterpolationMode( +- DCOMPOSITION_BITMAP_INTERPOLATION_MODE_LINEAR); +- +- hdr_metadata_helper_ = std::make_unique(d3d11_device_); +- +- if (Microsoft::WRL::ComPtr dcomp_device5; +- SUCCEEDED(dcomp_device_.As(&dcomp_device5))) { +- hr = dcomp_device5->CreateDynamicTexture(&primary_plane_surface_); +- if (FAILED(hr)) { +- LOG(WARNING) << "Failed to create IDCompositionDynamicTexture: " +- << logging::SystemErrorCodeToString(hr); +- } +- } +-} +- +-VideoProcessorWrapper* DCLayerTree::InitializeVideoProcessor( +- const gfx::Size& input_size, +- const gfx::Size& output_size, +- bool is_hdr_output, +- bool& video_processor_recreated) { +- video_processor_recreated = false; +- auto& video_processor_wrapper = is_hdr_output ? video_processor_wrapper_hdr_ +- : video_processor_wrapper_sdr_; +- if (!video_processor_wrapper.video_device) { +- // This can fail if the D3D device is "Microsoft Basic Display Adapter". +- if (FAILED(d3d11_device_.As(&video_processor_wrapper.video_device))) { +- DLOG(ERROR) << "Failed to retrieve video device from D3D11 device"; +- DCHECK(false); +- DisableDirectCompositionOverlays(); +- return nullptr; +- } +- DCHECK(video_processor_wrapper.video_device); +- +- Microsoft::WRL::ComPtr context; +- d3d11_device_->GetImmediateContext(&context); +- DCHECK(context); +- context.As(&video_processor_wrapper.video_context); +- DCHECK(video_processor_wrapper.video_context); +- } +- +- // Calculate input and output size to be maximum in a sliding window. +- video_processor_wrapper.input_size_smoother.PutSize(input_size); +- video_processor_wrapper.output_size_smoother.PutSize(output_size); +- +- gfx::Size effective_input_size = +- video_processor_wrapper.input_size_smoother.GetSize(); +- gfx::Size effective_output_size = +- video_processor_wrapper.output_size_smoother.GetSize(); +- +- // Reuse existing video processor only if it has exactly the computed size. +- // Even if it may have bigger dimensions and may be reusable for requested +- // sizes we will recreate it to reduce resource usage. Sliding window max +- // above guarantees that this reduction will only happen after prolonged usage +- // with smaller texture sizes. +- if (video_processor_wrapper.video_processor && +- video_processor_wrapper.video_input_size == effective_input_size && +- video_processor_wrapper.video_output_size == effective_output_size) { +- return &video_processor_wrapper; +- } +- +- TRACE_EVENT2("gpu", "DCLayerTree::InitializeVideoProcessor", "input_size", +- input_size.ToString(), "output_size", output_size.ToString()); +- +- video_processor_wrapper.video_input_size = effective_input_size; +- video_processor_wrapper.video_output_size = effective_output_size; +- video_processor_wrapper.video_processor.Reset(); +- video_processor_wrapper.video_processor_enumerator.Reset(); +- D3D11_VIDEO_PROCESSOR_CONTENT_DESC desc = {}; +- desc.InputFrameFormat = D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE; +- desc.InputFrameRate.Numerator = 60; +- desc.InputFrameRate.Denominator = 1; +- desc.InputWidth = input_size.width(); +- desc.InputHeight = input_size.height(); +- desc.OutputFrameRate.Numerator = 60; +- desc.OutputFrameRate.Denominator = 1; +- desc.OutputWidth = output_size.width(); +- desc.OutputHeight = output_size.height(); +- desc.Usage = D3D11_VIDEO_USAGE_PLAYBACK_NORMAL; +- HRESULT hr = +- video_processor_wrapper.video_device->CreateVideoProcessorEnumerator( +- &desc, &video_processor_wrapper.video_processor_enumerator); +- if (FAILED(hr)) { +- DLOG(ERROR) << "CreateVideoProcessorEnumerator failed with error 0x" +- << std::hex << hr; +- // It might fail again next time. Disable overlay support so +- // overlay processor will stop sending down overlay frames. +- DisableDirectCompositionOverlays(); +- return nullptr; +- } +- hr = video_processor_wrapper.video_device->CreateVideoProcessor( +- video_processor_wrapper.video_processor_enumerator.Get(), 0, +- &video_processor_wrapper.video_processor); +- if (FAILED(hr)) { +- DLOG(ERROR) << "CreateVideoProcessor failed with error 0x" << std::hex +- << hr; +- // It might fail again next time. Disable overlay support so +- // overlay processor will stop sending down overlay frames. +- DisableDirectCompositionOverlays(); +- return nullptr; +- } +- // Auto stream processing (the default) can hurt power consumption. +- video_processor_wrapper.video_context +- ->VideoProcessorSetStreamAutoProcessingMode( +- video_processor_wrapper.video_processor.Get(), 0, FALSE); +- +- video_processor_recreated = true; +- return &video_processor_wrapper; +-} +- +-IDXGISwapChain1* DCLayerTree::GetLayerSwapChainForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- if (video_swap_chains_.contains(layer_id)) { +- return video_swap_chains_.at(layer_id)->swap_chain().Get(); +- } +- return nullptr; +-} +- +-DCLayerTree::VisualTree::VisualSubtree* +-DCLayerTree::GetFrontMostVideoVisualSubtreeForTesting() const { +- CHECK_IS_TEST(); +- VisualTree::VisualSubtree* front_sub_tree = +- visual_tree_->GetFrontMostVisualSubtreeForTesting(); // IN-TEST +- // `dcomp_visual_content` on front-most subtree should match +- // SwapChainPresenter::content() in `video_swap_chains` +- for (const auto& video_swap_chain : video_swap_chains_) { +- const auto& swap_chain_presenter = video_swap_chain.second; +- if (swap_chain_presenter->content_for_testing().Get() == // IN-TEST +- front_sub_tree->dcomp_visual_content()) { +- return front_sub_tree; +- } +- } +- +- return nullptr; +-} +- +-DCLayerTree::VisualTree::VisualSubtree::VisualSubtree() = default; +-DCLayerTree::VisualTree::VisualSubtree::~VisualSubtree() { +- if (content_visual_) { +- // Explicitly null out the `content_visual_`'s content to ensure there are +- // no unexpected references to e.g. `IDCompositionTexture`, in case there +- // are lingering references to `content_visual_`. +- HRESULT hr = content_visual_->SetContent(nullptr); +- CHECK_EQ(S_OK, hr); +- } +-} +- +-bool DCLayerTree::VisualTree::VisualSubtree::Update( +- IDCompositionDevice3* dcomp_device, +- Microsoft::WRL::ComPtr dcomp_visual_content, +- uint64_t dcomp_surface_serial, +- const gfx::Size& image_size, +- const gfx::RectF& content_rect, +- Microsoft::WRL::ComPtr background_color_surface, +- const SkColor4f& background_color, +- const gfx::Rect& quad_rect, +- bool nearest_neighbor_filter, +- const gfx::Transform& quad_to_root_transform, +- const gfx::RRectF& rounded_corner_bounds, +- float opacity, +- const std::optional& clip_rect_in_root, +- bool allow_antialiasing) { +- bool needs_commit = false; +- +- // Helper function to set |field| to |parameter| and return whether it +- // changed. +- auto SetField = [&needs_commit](auto& field, auto& parameter) -> bool { +- const bool changed = field != parameter; +- if (changed) { +- field = std::move(parameter); +- +- // We assume that any change to the input of |Update| will result in some +- // visual property change that requires a commit. If this is not true, an +- // input is not needed. +- needs_commit = true; +- } +- return changed; +- }; +- +- // Fields on |VisualSubtree| should map 1:1 with parameters to |Update| (with +- // the exception of the DComp device pointer, DComp visuals, and Z-order). To +- // avoid issues with incremental computation, set fields to input parameters +- // here with the helper function and read the member fields below only if +- // guarded by the corresponding |*_changed| variable. +- const bool dcomp_visual_content_changed = +- SetField(dcomp_visual_content_, dcomp_visual_content); +- const bool dcomp_surface_serial_changed = +- SetField(dcomp_surface_serial_, dcomp_surface_serial); +- const bool image_size_changed = SetField(image_size_, image_size); +- const bool content_rect_changed = SetField(content_rect_, content_rect); +- const bool background_color_surface_changed = +- SetField(background_color_surface_, background_color_surface); +- const bool background_color_changed = +- SetField(background_color_, background_color); +- const bool quad_rect_changed = SetField(quad_rect_, quad_rect); +- const bool nearest_neighbor_filter_changed = +- SetField(nearest_neighbor_filter_, nearest_neighbor_filter); +- const bool quad_to_root_transform_changed = +- SetField(quad_to_root_transform_, quad_to_root_transform); +- const bool rounded_corner_bounds_changed = +- SetField(rounded_corner_bounds_, rounded_corner_bounds); +- const bool opacity_changed = SetField(opacity_, opacity); +- const bool clip_rect_in_root_changed = +- SetField(clip_rect_in_root_, clip_rect_in_root); +- const bool allow_antialiasing_changed = +- SetField(allow_antialiasing_, allow_antialiasing); +- +- // Methods that update the visual tree can only fail with OOM. We'll assert +- // success in this function to aid in debugging. +- HRESULT hr = S_OK; +- +- // All the visual are created together on the first |Update|. +- if (!clip_visual_) { +- needs_commit = true; +- +- CHECK(!rounded_corners_visual_); +- CHECK(!transform_visual_); +- CHECK(!background_color_visual_); +- CHECK(!content_visual_); +- +- hr = dcomp_device->CreateVisual(&clip_visual_); +- CHECK_EQ(hr, S_OK); +- hr = dcomp_device->CreateVisual(&rounded_corners_visual_); +- CHECK_EQ(hr, S_OK); +- hr = dcomp_device->CreateVisual(&transform_visual_); +- CHECK_EQ(hr, S_OK); +- hr = dcomp_device->CreateVisual(&background_color_visual_); +- CHECK_EQ(hr, S_OK); +- hr = dcomp_device->CreateVisual(&content_visual_); +- CHECK_EQ(hr, S_OK); +- +- hr = clip_visual_->AddVisual(rounded_corners_visual_.Get(), FALSE, nullptr); +- CHECK_EQ(hr, S_OK); +- hr = rounded_corners_visual_->AddVisual(transform_visual_.Get(), FALSE, +- nullptr); +- CHECK_EQ(hr, S_OK); +- hr = transform_visual_->AddVisual(background_color_visual_.Get(), FALSE, +- nullptr); +- CHECK_EQ(hr, S_OK); +- hr = transform_visual_->AddVisual(content_visual_.Get(), FALSE, nullptr); +- CHECK_EQ(hr, S_OK); +- +- // The default state for the border mode is INHERIT, so we need to force it +- // to HARD. +- hr = transform_visual_->SetBorderMode(DCOMPOSITION_BORDER_MODE_HARD); +- CHECK_EQ(hr, S_OK); +- } +- +- if (clip_rect_in_root_changed) { +- if (clip_rect_in_root_.has_value()) { +- // DirectComposition clips happen in the pre-transform visual space, while +- // cc/ clips happen post-transform. So the clip needs to go on a separate +- // parent visual that's untransformed. +- const gfx::Rect& clip_rect = clip_rect_in_root_.value(); +- hr = clip_visual_->SetClip(D2D1::RectF( +- clip_rect.x(), clip_rect.y(), clip_rect.right(), clip_rect.bottom())); +- CHECK_EQ(hr, S_OK); +- } else { +- hr = clip_visual_->SetClip(nullptr); +- CHECK_EQ(hr, S_OK); +- } +- } +- +-#if !defined(COMPILER_GCC) +- if (opacity_changed) { +- if (opacity_ != 1) { +- hr = CheckedCastToVisual3(clip_visual_)->SetOpacity(opacity_); +- CHECK_EQ(hr, S_OK); +- +- // Let all of this subtree's visuals blend as one, instead of +- // individually +- hr = clip_visual_->SetOpacityMode(DCOMPOSITION_OPACITY_MODE_LAYER); +- CHECK_EQ(hr, S_OK); +- } else { +- hr = CheckedCastToVisual3(clip_visual_)->SetOpacity(1.0); +- CHECK_EQ(hr, S_OK); +- hr = clip_visual_->SetOpacityMode(DCOMPOSITION_OPACITY_MODE_MULTIPLY); +- CHECK_EQ(hr, S_OK); +- } +- } +-#endif +- +- if (rounded_corner_bounds_changed) { +- if (!rounded_corner_bounds_.IsEmpty()) { +- Microsoft::WRL::ComPtr clip; +- hr = dcomp_device->CreateRectangleClip(&clip); +- CHECK_EQ(hr, S_OK); +- CHECK(clip); +- +- const gfx::RectF rect = rounded_corner_bounds_.rect(); +- hr = clip->SetLeft(rect.x()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetRight(rect.right()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetBottom(rect.bottom()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetTop(rect.y()); +- CHECK_EQ(hr, S_OK); +- +- const gfx::Vector2dF top_left = rounded_corner_bounds_.GetCornerRadii( +- gfx::RRectF::Corner::kUpperLeft); +- hr = clip->SetTopLeftRadiusX(top_left.x()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetTopLeftRadiusY(top_left.y()); +- CHECK_EQ(hr, S_OK); +- +- const gfx::Vector2dF top_right = rounded_corner_bounds_.GetCornerRadii( +- gfx::RRectF::Corner::kUpperRight); +- hr = clip->SetTopRightRadiusX(top_right.x()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetTopRightRadiusY(top_right.y()); +- CHECK_EQ(hr, S_OK); +- +- const gfx::Vector2dF bottom_left = rounded_corner_bounds_.GetCornerRadii( +- gfx::RRectF::Corner::kLowerLeft); +- hr = clip->SetBottomLeftRadiusX(bottom_left.x()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetBottomLeftRadiusY(bottom_left.y()); +- CHECK_EQ(hr, S_OK); +- +- const gfx::Vector2dF bottom_right = rounded_corner_bounds_.GetCornerRadii( +- gfx::RRectF::Corner::kLowerRight); +- hr = clip->SetBottomRightRadiusX(bottom_right.x()); +- CHECK_EQ(hr, S_OK); +- hr = clip->SetBottomRightRadiusY(bottom_right.y()); +- CHECK_EQ(hr, S_OK); +- +- hr = rounded_corners_visual_->SetClip(clip.Get()); +- CHECK_EQ(hr, S_OK); +- +- // Enable anti-aliasing of the rounded corners. +- hr = +- rounded_corners_visual_->SetBorderMode(DCOMPOSITION_BORDER_MODE_SOFT); +- CHECK_EQ(hr, S_OK); +- } else { +- hr = rounded_corners_visual_->SetClip(nullptr); +- CHECK_EQ(hr, S_OK); +- hr = rounded_corners_visual_->SetBorderMode( +- DCOMPOSITION_BORDER_MODE_INHERIT); +- CHECK_EQ(hr, S_OK); +- } +- } +- +-#if !defined(COMPILER_GCC) +- if (quad_to_root_transform_changed) { +- if (quad_to_root_transform_.Is2dTransform()) { +- const D2D_MATRIX_3X2_F matrix = +- TransformToD2D_MATRIX_3X2_F(quad_to_root_transform_); +- hr = Microsoft::WRL::ComPtr(transform_visual_) +- ->SetTransform(matrix); +- CHECK_EQ(hr, S_OK); +- } else { +- const D2D_MATRIX_4X4_F matrix = +- TransformToD2D_MATRIX_4X4_F(quad_to_root_transform_); +- hr = CheckedCastToVisual3(transform_visual_)->SetTransform(matrix); +- CHECK_EQ(hr, S_OK); +- } +- } +-#endif +- +- if (nearest_neighbor_filter_changed) { +- hr = transform_visual_->SetBitmapInterpolationMode( +- nearest_neighbor_filter_ +- ? DCOMPOSITION_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR +- : DCOMPOSITION_BITMAP_INTERPOLATION_MODE_LINEAR); +- CHECK_EQ(hr, S_OK); +- } +- +- if (image_size_changed || content_rect_changed || quad_rect_changed) { +- if (content_rect_.Contains(gfx::RectF(image_size_))) { +- // No need to set clip to content if the whole image is inside the content +- // rect region. +- hr = content_visual_->SetClip(nullptr); +- CHECK_EQ(hr, S_OK); +- } else { +- // Exclude content outside the content rect region. +- const auto content_clip = +- D2D1::RectF(content_rect_.x(), content_rect_.y(), +- content_rect_.right(), content_rect_.bottom()); +- hr = content_visual_->SetClip(content_clip); +- CHECK_EQ(hr, S_OK); +- } +- +- // Transform the (clipped) content so that it fills |quad_rect_|'s bounds. +- // |quad_rect_|'s offset is handled below, so we exclude it from the matrix. +- const bool needs_offset = !content_rect_.OffsetFromOrigin().IsZero(); +- const bool needs_scale = +- static_cast(quad_rect_.width()) != content_rect_.width() || +- static_cast(quad_rect_.height()) != content_rect_.height(); +- if (needs_offset || needs_scale) { +- const float scale_x = +- static_cast(quad_rect_.width()) / content_rect_.width(); +- const float scale_y = +- static_cast(quad_rect_.height()) / content_rect_.height(); +- const D2D_MATRIX_3X2_F matrix = +- D2D1::Matrix3x2F::Translation(-content_rect_.x(), +- -content_rect_.y()) * +- D2D1::Matrix3x2F::Scale(scale_x, scale_y); +- hr = Microsoft::WRL::ComPtr(content_visual_) +- ->SetTransform(matrix); +- CHECK_EQ(hr, S_OK); +- } else { +- hr = content_visual_->SetTransform(nullptr); +- CHECK_EQ(hr, S_OK); +- } +- +- // Visual offset is applied after transform so it is affected by the +- // transform, which is consistent with how the compositor maps quad rects to +- // their target space. +- hr = content_visual_->SetOffsetX(quad_rect_.x()); +- CHECK_EQ(hr, S_OK); +- hr = content_visual_->SetOffsetY(quad_rect_.y()); +- CHECK_EQ(hr, S_OK); +- } +- +- if (dcomp_visual_content_changed) { +- hr = content_visual_->SetContent(dcomp_visual_content_.Get()); +- CHECK_EQ(hr, S_OK); +- } +-#if DCHECK_IS_ON() +- dcomp_visual_content_changed_from_previous_frame_ = +- dcomp_visual_content_changed; +-#endif +- +- if (dcomp_surface_serial_changed) { +- // The DComp surface has been drawn to and needs a commit to show its +- // update. No visual changes are needed in this case. +- } +- +-#if !defined(COMPILER_GCC) +- if (quad_rect_changed || background_color_surface_changed || +- background_color_changed) { +- if (!background_color_surface_ || background_color.fA == 0.0) { +- // A fully transparent color is the same as no background fill. +- hr = background_color_visual_->SetContent(nullptr); +- CHECK_EQ(hr, S_OK); +- } else { +- const D2D_MATRIX_3X2_F matrix = +- TransformToD2D_MATRIX_3X2_F(gfx::TransformBetweenRects( +- gfx::RectF(kSolidColorSurfaceSize), gfx::RectF(quad_rect_))); +- hr = Microsoft::WRL::ComPtr(background_color_visual_) +- ->SetTransform(matrix); +- CHECK_EQ(hr, S_OK); +- +- hr = +- background_color_visual_->SetContent(background_color_surface_.Get()); +- CHECK_EQ(hr, S_OK); +- +- hr = CheckedCastToVisual3(background_color_visual_) +- ->SetOpacity(background_color.fA); +- CHECK_EQ(hr, S_OK); +- } +- } +-#endif +- +- if (quad_to_root_transform_changed || quad_rect_changed || +- allow_antialiasing_changed) { +- const float kNeedsSoftBorderTolerance = 0.001; +- const bool content_soft_borders = +- allow_antialiasing_ && +- (!quad_to_root_transform_.Preserves2dAxisAlignment() || +- !gfx::IsNearestRectWithinDistance( +- quad_to_root_transform_.MapRect(gfx::RectF(quad_rect_)), +- kNeedsSoftBorderTolerance)); +- // The border mode of the transform visual is set (instead of the content +- // visual), so this setting can affect both the content and the background +- // color, since both are are children of the transform visual. +- hr = transform_visual_->SetBorderMode(content_soft_borders +- ? DCOMPOSITION_BORDER_MODE_SOFT +- : DCOMPOSITION_BORDER_MODE_HARD); +- CHECK_EQ(hr, S_OK); +- } +- +- return needs_commit; +-} +- +-void DCLayerTree::VisualTree::VisualSubtree::GetSwapChainVisualInfoForTesting( +- gfx::Transform* out_transform, +- gfx::Point* out_offset, +- gfx::Rect* out_clip_rect) const { +- CHECK_IS_TEST(); +- *out_transform = quad_to_root_transform_; +- *out_offset = quad_rect_.origin(); +- *out_clip_rect = clip_rect_in_root_.value_or(gfx::Rect()); +-} +- +-DCLayerTree::VisualTree::VisualTree(DCLayerTree* dc_layer_tree) +- : dc_layer_tree_(dc_layer_tree) {} +- +-DCLayerTree::VisualTree::~VisualTree() = default; +- +-base::expected DCLayerTree::VisualTree::BuildTree( +- const std::vector& overlays) { +- // Index into the subtree from the previous frame that is being reused in the +- // current frame for the given overlay index. +- // |overlay_index_to_reused_subtree| has an entry for every overlay in the +- // current frame. Each entry indexes into |visual_subtrees_|, which are the +- // subtrees for the previous frame. Initialized with std::nullopt, +- // meaning not reused. +- std::vector> overlay_index_to_reused_subtree( +- overlays.size(), std::nullopt); +- +- // Index into the current frame overlay that uses the subtree of the previous +- // frame for the given subtree index. |subtree_index_to_overlay| has an entry +- // for every subtree in the previous frame. Each entry indexes into |overlays| +- // of the current frame. Initialized with std::nullopt, meaning the subtree +- // is not being reused in the current frame. +- std::vector> subtree_index_to_overlay( +- visual_subtrees_.size(), std::nullopt); +- +- // |visual_subtrees| will become |visual_subtrees_| of the current frame; +- std::vector> visual_subtrees; +- visual_subtrees.resize(overlays.size()); +- +- decltype(layer_ids_for_testing_) layer_ids_for_testing; +- layer_ids_for_testing.reserve(overlays.size()); +- +- // Populate the map with visual content and assign matching subtrees to the +- // overlays. +- VisualSubtreeMap subtree_map = BuildMapAndAssignMatchingSubtrees( +- overlays, visual_subtrees, overlay_index_to_reused_subtree, +- subtree_index_to_overlay); +- +- // Assign unused subtrees to the overlays that don't have a match. +- const size_t first_prev_frame_subtree_unused_index = +- ReuseUnmatchedSubtrees(visual_subtrees, overlay_index_to_reused_subtree, +- subtree_index_to_overlay); +- +- // Status for each subtree of the previous frame if it's attached to the root. +- // Initialized with true, meaning attached. +- std::vector prev_subtree_is_attached_to_root(visual_subtrees_.size(), +- true); +- +- bool needs_commit = DetachUnusedSubtreesFromRoot( +- first_prev_frame_subtree_unused_index, prev_subtree_is_attached_to_root); +- +- // Remove unused subtrees from the root that need repositioning. +- needs_commit |= DetachReusedSubtreesThatNeedRepositioningFromRoot( +- visual_subtrees, overlay_index_to_reused_subtree, +- subtree_index_to_overlay, prev_subtree_is_attached_to_root); +- +-#if DCHECK_IS_ON() +- VisualTreeValid(subtree_index_to_overlay, prev_subtree_is_attached_to_root); +-#endif // DCHECK_IS_ON() +- +- IDCompositionVisual2* left_sibling_visual = nullptr; +- +- base::flat_set> +- layers_with_multiple_overlays; +- for (size_t i = 1; i < overlays.size(); i++) { +- const decltype(layers_with_multiple_overlays)::key_type sqs_layer_id = +- overlays[i].layer_id.shared_quad_state_layer_id(); +- if (sqs_layer_id == decltype(layers_with_multiple_overlays)::key_type()) { +- // A default layer ID implies no explicit layer, which should be treated +- // as different from every other layer ID, including itself. +- continue; +- } +- +- if (overlays[i].layer_id == overlays[i - 1].layer_id) { +- // There were at least two contiguous quads in the same layer. +- layers_with_multiple_overlays.emplace(sqs_layer_id); +- } +- } +- +- size_t num_layers_modified = 0; +- +- // This loop walks the overlays and builds or updates the visual subtree for +- // each overlay. |left_sibling_visual| is required to properly stack visual +- // subtrees that are detached from the root visual. +- for (unsigned int i = 0; i < overlays.size(); i++) { +- bool subtree_attached_to_root = false; +- if (visual_subtrees[i]) { +- DCHECK(overlay_index_to_reused_subtree[i]); +- subtree_attached_to_root = +- prev_subtree_is_attached_to_root[overlay_index_to_reused_subtree[i] +- .value()]; +- } else { +- // This overlay does not reuse a subtree from the previous frame. +- // Instantiate a new one. +- visual_subtrees[i] = std::make_unique(); +- } +- +- const uint64_t dcomp_surface_serial = +- overlays[i].overlay_image.has_value() +- ? overlays[i].overlay_image->dcomp_surface_serial() +- : 0; +- const gfx::Size image_size = overlays[i].overlay_image.has_value() +- ? overlays[i].overlay_image->size() +- : gfx::Size(); +- +- // Only get a background color surface if we have a non-transparent +- // background color. +- IDCompositionSurface* background_color_surface = nullptr; +- if (overlays[i].background_color && +- overlays[i].background_color->fA != 0.0) { +- // TODO(http://crbug.com/1380822): Refactor to remove early exits. They +- // may leave visual_subtrees_ corrupted. +- ASSIGN_OR_RETURN( +- background_color_surface, +- dc_layer_tree_->solid_color_surface_pool_->GetSolidColorSurface( +- overlays[i].background_color.value())); +- } +- +- VisualSubtree* visual_subtree = visual_subtrees[i].get(); +- visual_subtree->set_z_order(overlays[i].z_order); +- IUnknown* dcomp_visual_content = +- overlays[i].overlay_image +- ? overlays[i].overlay_image->dcomp_visual_content() +- : nullptr; +- +- // TODO(crbug.com/324460866): We turn off overlay edge antialiasing when +- // there are multiple overlays in the same layer. This is a workaround to +- // avoid seams when there is e.g. a complex transform applied to the layer. +- // This works for partial delegation because we only expect non-trivial +- // transforms in ephemeral (i.e. animation) states. To support arbitrary +- // content in full delegation, we'll need to parent overlays in the same +- // layer under the same transform visual. +- const bool allow_antialiasing = !layers_with_multiple_overlays.contains( +- overlays[i].layer_id.shared_quad_state_layer_id()); +- +- const bool visual_needs_commit = visual_subtrees[i]->Update( +- dc_layer_tree_->dcomp_device_.Get(), dcomp_visual_content, +- dcomp_surface_serial, image_size, overlays[i].content_rect, +- background_color_surface, +- overlays[i].background_color.value_or(SkColors::kTransparent), +- overlays[i].quad_rect, overlays[i].nearest_neighbor_filter, +- overlays[i].transform, overlays[i].rounded_corner_bounds, +- overlays[i].opacity, overlays[i].clip_rect, allow_antialiasing); +- +- if (!subtree_attached_to_root) { +- HRESULT hr = dc_layer_tree_->dcomp_root_visual_.Get()->AddVisual( +- visual_subtree->container_visual(), TRUE, left_sibling_visual); +- CHECK_EQ(hr, S_OK); +- } +- left_sibling_visual = visual_subtree->container_visual(); +- +- if (visual_needs_commit || !subtree_attached_to_root) { +- num_layers_modified++; +- needs_commit = true; +- } +- +- layer_ids_for_testing.push_back(overlays[i].layer_id); +- } +- +- // Update subtree_map_ and visual_subtrees_ with new values. +- subtree_map_ = std::move(subtree_map); +- visual_subtrees_ = std::move(visual_subtrees); +- layer_ids_for_testing_ = std::move(layer_ids_for_testing); +- +- UMA_HISTOGRAM_COUNTS("GPU.OsCompositor.NumLayersModified", +- num_layers_modified); +- +- if (needs_commit) { +- TRACE_EVENT0("gpu", "DCLayerTree::CommitAndClearPendingOverlays::Commit"); +- HRESULT hr = dc_layer_tree_->dcomp_device_->Commit(); +- if (FAILED(hr)) { +- DLOG(ERROR) << "Commit failed with error 0x" << std::hex << hr; +- return base::unexpected( +- CommitError{CommitError::Reason::kIDCompositionDeviceCommit, hr}); +- } +- } +- return base::ok(); +-} +- +-DCLayerTree::VisualTree::VisualSubtreeMap +-DCLayerTree::VisualTree::BuildMapAndAssignMatchingSubtrees( +- const std::vector& overlays, +- std::vector>& new_visual_subtrees, +- std::vector>& overlay_index_to_reused_subtree, +- std::vector>& subtree_index_to_overlay) { +- CHECK_EQ(overlay_index_to_reused_subtree.size(), overlays.size()); +- CHECK_EQ(new_visual_subtrees.size(), overlays.size()); +- CHECK_EQ(subtree_index_to_overlay.size(), visual_subtrees_.size()); +- +- // Contains {visual content, overlay index} pairs for this frame overlays. +- // This structure has entries for overlays that have visual content. +- // No entry is inserted for the overlays with no visual content. +- std::vector, size_t>> map_results; +- // For each overlay populate |map_results| with visual content and indices +- // of overlays from this frame and find the matching subtree from the +- // previous frame. +- for (size_t i = 0; i < overlays.size(); i++) { +- if (!overlays[i].overlay_image) { +- continue; +- } +- IUnknown* dcomp_visual_content = +- overlays[i].overlay_image->dcomp_visual_content(); +- if (!dcomp_visual_content) { +- continue; +- } +- map_results.emplace_back(dcomp_visual_content, i); +- +- // Find matching visual content from the previous frame. +- auto it = subtree_map_.find(dcomp_visual_content); +- if (it == subtree_map_.end()) { +- continue; +- } +- size_t matched_index = it->second; +- if (visual_subtrees_[matched_index]) { +- // Assign the matched index to the corresponding overlay. +- overlay_index_to_reused_subtree[i] = matched_index; +- // Assign overlay index to the matched subtree. +- subtree_index_to_overlay[matched_index] = i; +- // Move visual subtree from the old subtrees to new subtrees. +- new_visual_subtrees[i] = std::move(visual_subtrees_[matched_index]); +- } +- } +- // This converts to a flat_map on returning. We're doing this on purpose to +- // go from O(N^2) to O(N*logN) for building the map. +- return map_results; +-} +- +-size_t DCLayerTree::VisualTree::ReuseUnmatchedSubtrees( +- std::vector>& new_visual_subtrees, +- std::vector>& overlay_index_to_reused_subtree, +- std::vector>& subtree_index_to_overlay) { +- CHECK_EQ(new_visual_subtrees.size(), overlay_index_to_reused_subtree.size()); +- CHECK_EQ(subtree_index_to_overlay.size(), visual_subtrees_.size()); +- +- // No further actions are needed if the previous frame is empty. +- if (visual_subtrees_.empty()) { +- return 0; +- } +- // Index into |visual_subtrees_|. +- size_t prev_frame_subtree_index = 0; +- // Assign unused subtrees from previous frames to overlays that don't have +- // a match. +- for (size_t i = 0; i < new_visual_subtrees.size() && +- prev_frame_subtree_index < visual_subtrees_.size(); +- i++) { +- if (new_visual_subtrees[i]) { +- // Skip overlay that has a match. +- continue; +- } +- // Find next unused subtree and assign it to the overlay at index |i|. +- for (; prev_frame_subtree_index < visual_subtrees_.size(); +- prev_frame_subtree_index++) { +- if (!visual_subtrees_[prev_frame_subtree_index]) { +- continue; +- } +- // Assign the found index to the corresponding overlay. +- overlay_index_to_reused_subtree[i] = prev_frame_subtree_index; +- // Assign the overlay index to the found subtree. +- subtree_index_to_overlay[prev_frame_subtree_index] = i; +- // Move visual subtree from the old subtrees to new subtrees. +- new_visual_subtrees[i] = +- std::move(visual_subtrees_[prev_frame_subtree_index]); +- prev_frame_subtree_index++; +- break; +- } +- } +- return prev_frame_subtree_index; +-} +- +-bool DCLayerTree::VisualTree::DetachUnusedSubtreesFromRoot( +- size_t first_prev_frame_subtree_unused_index, +- std::vector& prev_subtree_is_attached_to_root) { +- CHECK_EQ(prev_subtree_is_attached_to_root.size(), visual_subtrees_.size()); +- bool needs_commit = false; +- // Detach the remaining unused subtrees from the root. +- for (size_t i = first_prev_frame_subtree_unused_index; +- i < visual_subtrees_.size(); i++) { +- if (!visual_subtrees_[i]) { +- continue; +- } +- DetachSubtreeFromRoot(visual_subtrees_[i].get()); +- prev_subtree_is_attached_to_root[i] = false; +- needs_commit = true; +- } +- return needs_commit; +-} +- +-bool DCLayerTree::VisualTree::DetachReusedSubtreesThatNeedRepositioningFromRoot( +- const std::vector>& new_visual_subtrees, +- const std::vector>& overlay_index_to_reused_subtree, +- const std::vector>& subtree_index_to_overlay, +- std::vector& prev_subtree_is_attached_to_root) { +- CHECK_EQ(new_visual_subtrees.size(), overlay_index_to_reused_subtree.size()); +- CHECK_EQ(subtree_index_to_overlay.size(), visual_subtrees_.size()); +- CHECK_EQ(prev_subtree_is_attached_to_root.size(), visual_subtrees_.size()); +- +- // No further actions are needed if the previous frame is empty. +- if (visual_subtrees_.empty()) { +- return false; +- } +- bool needs_commit = false; +- // Index into |visual_subtrees_|. +- size_t prev_frame_subtree_index = 0; +- // This loop walks the overlay indices and detaches from the root any +- // subtrees that need repositioning in the current frame. +- for (size_t i = 0; i < overlay_index_to_reused_subtree.size(); i++) { +- if (!overlay_index_to_reused_subtree[i]) { +- continue; +- } +- size_t reused_subtree_index = overlay_index_to_reused_subtree[i].value(); +- DCHECK_EQ(i, subtree_index_to_overlay[reused_subtree_index].value()); +- // If the overlay at index |i| has a match, detach from the root any +- // subtrees that appear before the matching subtree and the previous match. +- for (; prev_frame_subtree_index < reused_subtree_index; +- prev_frame_subtree_index++) { +- if (!prev_subtree_is_attached_to_root[prev_frame_subtree_index]) { +- continue; +- } +- VisualSubtree* subtree = +- new_visual_subtrees[subtree_index_to_overlay[prev_frame_subtree_index] +- .value()] +- .get(); +- DetachSubtreeFromRoot(subtree); +- prev_subtree_is_attached_to_root[prev_frame_subtree_index] = false; +- needs_commit = true; +- } +- if (reused_subtree_index == prev_frame_subtree_index) { +- ++prev_frame_subtree_index; +- } +- } +- return needs_commit; +-} +- +-void DCLayerTree::VisualTree::DetachSubtreeFromRoot(VisualSubtree* subtree) { +- HRESULT hr = dc_layer_tree_->dcomp_root_visual_.Get()->RemoveVisual( +- subtree->container_visual()); +- CHECK_EQ(hr, S_OK); +-} +- +-DCLayerTree::VisualTree::VisualSubtree* +-DCLayerTree::VisualTree::GetFrontMostVisualSubtreeForTesting() const { +- CHECK_IS_TEST(); +- return visual_subtrees_.back().get(); +-} +- +-base::expected DCLayerTree::CommitAndClearPendingOverlays( +- std::vector overlays) { +- TRACE_EVENT1("gpu", "DCLayerTree::CommitAndClearPendingOverlays", +- "num_overlays", overlays.size()); +- +- base::ScopedUmaHistogramTimer scoped_timer( +- "GPU.DirectComposition.CommitAndClearPendingOverlaysDuration", +- base::ScopedUmaHistogramTimer::ScopedHistogramTiming::kMicrosecondTimes); +- +- // If delegated ink metadata exists for this frame, attempt to make an overlay +- // so that a visual subtree can be created for a delegated ink visual. +- // TODO(crbug.com/335553727) Consider clearing ink_renderer_ when there's no +- // metadata. +- if (pending_delegated_ink_metadata_) { +- Microsoft::WRL::ComPtr root_swap_chain; +- auto it = std::ranges::find(overlays, 0, &DCLayerOverlayParams::z_order); +- if (it != overlays.end() && (*it).overlay_image) { +- Microsoft::WRL::ComPtr root_visual_content = +- (*it).overlay_image->dcomp_visual_content(); +- CHECK(root_visual_content); +- HRESULT hr = root_visual_content.As(&root_swap_chain); +- if (hr == E_NOINTERFACE) { +- DCHECK_EQ(root_swap_chain, nullptr); +- } else { +- CHECK_EQ(S_OK, hr); +- CHECK_NE(root_swap_chain, nullptr); +- } +- } +- +- if (auto ink_layer = ink_renderer_->MakeDelegatedInkOverlay( +- dcomp_device_.Get(), root_swap_chain.Get(), +- std::move(pending_delegated_ink_metadata_))) { +- overlays.push_back(std::move(*ink_layer)); +- } +- } +- +- // Sort layers by z-order. +- std::ranges::sort(overlays, std::ranges::less(), +- &DCLayerOverlayParams::z_order); +- +- // Move unused video swap chains to `unused_video_swap_chains` for potential +- // reuse (when adjacent frames have a videos that have different layer IDs +- // which can sometimes happen when a video's src changes), then cleanup. +- decltype(video_swap_chains_) unused_video_swap_chains; +- { +- // Move all video swap chains to `unused_video_swap_chains` and the move +- // ones that are in the current frame back into `video_swap_chains_`. +- unused_video_swap_chains = std::move(video_swap_chains_); +- +- // We may be moving up to all of the swap chains back. +- video_swap_chains_.reserve(unused_video_swap_chains.size()); +- +- size_t num_swap_chain_presenters = 0; +- for (auto& overlay : overlays) { +- if (NeedSwapChainPresenter(overlay)) { +- auto reused_video_swap_chain_it = +- unused_video_swap_chains.find(overlay.layer_id); +- if (reused_video_swap_chain_it != unused_video_swap_chains.end()) { +- video_swap_chains_.insert(std::move(*reused_video_swap_chain_it)); +- unused_video_swap_chains.erase(reused_video_swap_chain_it); +- } +- num_swap_chain_presenters++; +- } +- } +- +- // If there are more videos this frame, reserve enough space for them. +- video_swap_chains_.reserve(num_swap_chain_presenters); +- } +- +- bool did_update_primary_plane_damage = false; +- bool need_background_layer = false; +- +- // Populate |overlays| with information required to build dcomp visual tree. +- for (auto it = overlays.begin(); it != overlays.end(); it++) { +- auto& overlay = *it; +- if (NeedSwapChainPresenter(overlay)) { +- // Present to swap chain and update the overlay with transform, clip +- // and content. +- auto& video_swap_chain = video_swap_chains_[overlay.layer_id]; +- if (!video_swap_chain) { +- // TODO(sunnyps): Try to find a matching swap chain based on size, type +- // of swap chain, gl image, etc. +- auto unused_video_swap_chain_it = unused_video_swap_chains.begin(); +- if (unused_video_swap_chain_it != unused_video_swap_chains.end()) { +- video_swap_chain = std::move(unused_video_swap_chain_it->second); +- unused_video_swap_chains.erase(unused_video_swap_chain_it); +- } else { +- video_swap_chain = std::make_unique( +- this, d3d11_device_, dcomp_device_); +- } +- } +- gfx::Transform transform; +- gfx::Rect clip_rect; +- if (!video_swap_chain->PresentToSwapChain(overlay, &transform, +- &clip_rect)) { +- DLOG(ERROR) << "PresentToSwapChain failed"; +- return base::unexpected( +- CommitError{CommitError::Reason::kPresentToSwapChain}); +- } +- +- gfx::Size content_size = video_swap_chain->content_size(); +- +- if (base::FeatureList::IsEnabled( +- features::kEarlyFullScreenVideoOptimization)) { +- if (overlay.video_params.is_full_screen_video) { +- const gfx::Size monitor_size = GetMonitorSizeForWindow(window()); +- if (video_swap_chain->TryDisablePrimaryPlane(monitor_size, overlay)) { +- // If we successfully disable the primary plane, it means DWM's +- // internal swap chain is now the size of the monitor. In this case +- // we want to just treat it as an unscaled image that completely +- // fills the screen. +- overlay.transform = gfx::Transform(); +- overlay.quad_rect = gfx::Rect(monitor_size); +- if (overlay.clip_rect.has_value()) { +- overlay.clip_rect = gfx::Rect(monitor_size); +- } +- content_size = monitor_size; +- } else { +- need_background_layer = true; +- } +- } +- } else { +- CHECK(!overlay.video_params.is_full_screen_video); +- +- // |SwapChainPresenter| may have changed the size of the overlay's quad +- // rect, e.g. to present to a swap chain exactly the size of the display +- // rect when the source video is larger. +- overlay.transform = transform; +- overlay.quad_rect.set_size(video_swap_chain->content_size()); +- if (overlay.clip_rect.has_value()) { +- overlay.clip_rect = clip_rect; +- } +- } +- +- overlay.overlay_image = DCLayerOverlayImage( +- content_size, video_swap_chain->FinishPresentToSwapChain()); +- overlay.content_rect = gfx::RectF(content_size); +- +- if (tint_video_layer_) { +- SkColor4f tint_color; +- switch (video_swap_chain->GetLastPresentationMode()) { +- case SwapChainPresenter::PresentationMode::kDecodeSwapChain: +- tint_color = SkColors::kBlue; +- break; +- case SwapChainPresenter::PresentationMode::kVpBlt: +- tint_color = SkColors::kMagenta; +- break; +- case SwapChainPresenter::PresentationMode::kVpBltWithStagingTexture: +- tint_color = SkColor4f(1.0, 0.5, 0.0, 1.0); +- break; +- case SwapChainPresenter::PresentationMode::kMfSurfaceProxy: +- tint_color = SkColors::kGreen; +- break; +- } +- +- DCLayerOverlayParams tint_overlay; +- tint_overlay.quad_rect = it->quad_rect; +- tint_overlay.transform = it->transform; +- tint_overlay.clip_rect = it->clip_rect; +- tint_overlay.rounded_corner_bounds = it->rounded_corner_bounds; +- tint_overlay.opacity = 0.25; +- tint_overlay.background_color = tint_color; +- tint_overlay.layer_id = +- it->layer_id.MakeForChildOfSharedQuadStateLayer(1); +- it = overlays.insert(std::next(it), std::move(tint_overlay)); +- // Do not access `overlay` after this point since it is invalidated. +- } +- } else if (primary_plane_surface_) { +- // If supported, "present" the primary plane buffer to a surface with +- // incremental damage. +- if (overlay.z_order == 0 && overlay.overlay_image) { +- if (Microsoft::WRL::ComPtr dcomp_texture; +- SUCCEEDED(Microsoft::WRL::ComPtr( +- overlay.overlay_image->dcomp_visual_content()) +- .As(&dcomp_texture))) { +- DVLOG(1) << "Set primary_plane_surface_ damage: " +- << overlay.damage_rect.ToString(); +- +- const RECT damage_rect = +- gfx::ToEnclosingRect(overlay.damage_rect).ToRECT(); +- HRESULT hr = primary_plane_surface_->SetTexture(dcomp_texture.Get(), +- &damage_rect, 1); +- CHECK_EQ(hr, S_OK); +- +- Microsoft::WRL::ComPtr primary_plane_surface_unknown; +- primary_plane_surface_.As(&primary_plane_surface_unknown); +- overlay.overlay_image = DCLayerOverlayImage( +- overlay.overlay_image->size(), primary_plane_surface_unknown, +- primary_plane_surface_serial_++); +- did_update_primary_plane_damage = true; +- } else { +- // Primary plane is not backed by `BufferQueue`. +- } +- } else { +- // Overlay is not the primary plane. +- } +- } +- } +- +- if (primary_plane_surface_ && !did_update_primary_plane_damage) { +- DVLOG(1) << "Reset primary_plane_surface_ damage."; +- primary_plane_surface_->SetTexture(nullptr); +- primary_plane_surface_serial_ = 0; +- } +- +- if (need_background_layer) { +- // If we failed to disable the desktop plane, we need to manually +- // add a solid color layer to act as the video background mat. +- DCLayerOverlayParams background_mat; +- background_mat.quad_rect = gfx::Rect(GetMonitorSizeForWindow(window())); +- background_mat.z_order = INT_MIN; +- background_mat.background_color = SkColors::kBlack; +- background_mat.layer_id = gfx::OverlayLayerId::MakeVizInternal( +- gfx::OverlayLayerId::VizInternalId::kBackgroundColorLayer); +- overlays.insert(overlays.begin(), std::move(background_mat)); +- } +- +- if (!visual_tree_) { +- visual_tree_ = std::make_unique(this); +- } +- +- const base::expected status = +- visual_tree_->BuildTree(overlays); +- +- ink_renderer_->ReportPointsDrawn(); +- +- // Clean up excess surfaces so the pool will not grow unbounded. +- solid_color_surface_pool_->TrimAfterCommit(); +- +- return status; +-} +- +-bool DCLayerTree::SupportsDelegatedInk() { +- return ink_renderer_->DelegatedInkIsSupported(dcomp_device_); +-} +- +-void DCLayerTree::SetDelegatedInkTrailStartPoint( +- std::unique_ptr metadata) { +- DCHECK(SupportsDelegatedInk()); +- pending_delegated_ink_metadata_ = std::move(metadata); +-} +- +-void DCLayerTree::InitDelegatedInkPointRendererReceiver( +- mojo::PendingReceiver +- pending_receiver) { +- DCHECK(SupportsDelegatedInk()); +- +- ink_renderer_->InitMessagePipeline(std::move(pending_receiver)); +-} +- +-// Return properties of non root swap chain at given index. +-void DCLayerTree::GetSwapChainVisualInfoForTesting( +- const gfx::OverlayLayerId& layer_id, +- gfx::Transform* out_transform, +- gfx::Point* out_offset, +- gfx::Rect* out_clip_rect) const { +- CHECK_IS_TEST(); +- visual_tree_->GetSwapChainVisualInfoForTesting( // IN-TEST +- layer_id, out_transform, out_offset, out_clip_rect); +-} +- +-size_t DCLayerTree::GetSwapChainPresenterCountForTesting() const { +- CHECK_IS_TEST(); +- return video_swap_chains_.size(); +-} +- +-size_t DCLayerTree::GetDcompLayerCountForTesting() const { +- CHECK_IS_TEST(); +- return visual_tree_->GetDcompLayerCountForTesting(); // IN-TEST +-} +- +-IDCompositionVisual2* DCLayerTree::GetContentVisualForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- return visual_tree_->GetContentVisualForTesting(layer_id); // IN-TEST +-} +- +-IDCompositionSurface* DCLayerTree::GetBackgroundColorSurfaceForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- return visual_tree_->GetBackgroundColorSurfaceForTesting( // IN-TEST +- layer_id); +-} +- +-size_t DCLayerTree::GetNumSurfacesInPoolForTesting() const { +- CHECK_IS_TEST(); +- return solid_color_surface_pool_ +- ->GetNumSurfacesInPoolForTesting(); // IN-TEST +-} +- +-#if DCHECK_IS_ON() +-bool DCLayerTree::DcompVisualContentChangedFromPreviousFrameForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- return visual_tree_ +- ->DcompVisualContentChangedFromPreviousFrameForTesting( // IN-TEST +- layer_id); +-} +-#endif // DCHECK_IS_ON() +- +-const DCLayerTree::VisualTree::VisualSubtree* +-DCLayerTree::VisualTree::GetSubtreeFromLayerIdForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- const auto it = std::ranges::find(layer_ids_for_testing_, layer_id); +- CHECK(it != layer_ids_for_testing_.end()); +- const size_t index = +- std::ranges::distance(layer_ids_for_testing_.begin(), it); +- return visual_subtrees_.at(index).get(); +-} +- +-// Return properties of non root swap chain at given index. +-void DCLayerTree::VisualTree::GetSwapChainVisualInfoForTesting( +- const gfx::OverlayLayerId& layer_id, +- gfx::Transform* out_transform, +- gfx::Point* out_offset, +- gfx::Rect* out_clip_rect) const { +- CHECK_IS_TEST(); +- return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST +- ->GetSwapChainVisualInfoForTesting(out_transform, out_offset, // IN-TEST +- out_clip_rect); +-} +- +-size_t DCLayerTree::VisualTree::GetDcompLayerCountForTesting() const { +- CHECK_IS_TEST(); +- return visual_subtrees_.size(); +-} +- +-IDCompositionVisual2* DCLayerTree::VisualTree::GetContentVisualForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST +- ->container_visual(); +-} +- +-IDCompositionSurface* +-DCLayerTree::VisualTree::GetBackgroundColorSurfaceForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST +- ->background_color_surface_for_testing(); // IN-TEST +-} +- +-#if DCHECK_IS_ON() +-bool DCLayerTree::VisualTree:: +- DcompVisualContentChangedFromPreviousFrameForTesting( +- const gfx::OverlayLayerId& layer_id) const { +- CHECK_IS_TEST(); +- return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST +- ->DcompVisualContentChangedFromPreviousFrameForTesting(); // IN-TEST +-} +-#endif // DCHECK_IS_ON() +- +-} // namespace gl ++// Copyright 2019 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "ui/gl/dc_layer_tree.h" ++ ++#include ++ ++#include ++ ++#include "base/check_is_test.h" ++#include "base/command_line.h" ++#include "base/feature_list.h" ++#include "base/logging.h" ++#include "base/metrics/histogram_functions.h" ++#include "base/metrics/histogram_macros.h" ++#include "base/trace_event/trace_event.h" ++#include "base/types/expected.h" ++#include "base/types/expected_macros.h" ++#include "third_party/microsoft_dxheaders/src/include/composition/dcomp-preview.h" ++#include "ui/gfx/color_space_win.h" ++#include "ui/gfx/geometry/rect_conversions.h" ++#include "ui/gfx/geometry/transform_util.h" ++#include "ui/gfx/overlay_layer_id.h" ++#include "ui/gl/direct_composition_support.h" ++#include "ui/gl/gl_switches.h" ++#include "ui/gl/swap_chain_presenter.h" ++ ++namespace gl { ++namespace { ++ ++constexpr size_t kVideoProcessorDimensionsWindowSize = 100; ++ ++bool NeedSwapChainPresenter(const DCLayerOverlayParams& overlay) { ++ return overlay.overlay_image && overlay.overlay_image->type() != ++ DCLayerOverlayType::kDCompVisualContent; ++} ++ ++#if !defined(COMPILER_GCC) // FIXME: missing Microsoft::WRL::ComPtr ++// Unconditionally get a IDCompositionVisual2 as a IDCompositionVisual3. ++// ++// |IDCompositionVisual3| should be available since Windows 8.1, but we noticed ++// crashes due to unconditionally casting to the interface on the earliest ++// versions of Windows 10. This should only be used for features that are ++// conditionally run above those versions of Windows. ++// ++// See: https://crbug.com/1455666 ++Microsoft::WRL::ComPtr CheckedCastToVisual3( ++ const Microsoft::WRL::ComPtr& visual2) { ++ Microsoft::WRL::ComPtr visual3; ++ HRESULT hr = visual2.As(&visual3); ++ CHECK_EQ(hr, S_OK); ++ CHECK(visual3); ++ return visual3; ++} ++ ++D2D_MATRIX_3X2_F TransformToD2D_MATRIX_3X2_F(const gfx::Transform& transform) { ++ DCHECK(transform.Is2dTransform()); ++ // See |TransformToD2D_MATRIX_4X4_F| for notes. ++ return D2D1::Matrix3x2F(transform.rc(0, 0), transform.rc(1, 0), ++ transform.rc(0, 1), transform.rc(1, 1), ++ transform.rc(0, 3), transform.rc(1, 3)); ++} ++ ++D2D_MATRIX_4X4_F TransformToD2D_MATRIX_4X4_F(const gfx::Transform& transform) { ++ // D2D matrices are stored with the translation portion in the last row, ++ // whereas Skia matrices are stored with the translation in the last column. ++ // We need to transpose the matrix during the conversion to account for this ++ // difference. ++ const gfx::Transform& t = transform; ++ return D2D1::Matrix4x4F(t.rc(0, 0), t.rc(1, 0), t.rc(2, 0), t.rc(3, 0), ++ t.rc(0, 1), t.rc(1, 1), t.rc(2, 1), t.rc(3, 1), ++ t.rc(0, 2), t.rc(1, 2), t.rc(2, 2), t.rc(3, 2), ++ t.rc(0, 3), t.rc(1, 3), t.rc(2, 3), t.rc(3, 3)); ++} ++#endif ++ ++// The size the surfaces in the pool. Used in |VisualSubtree::Update| to ++// determine how to scale the background color visual. This can be any size ++// since we need a non-empty surface to display the background fill, so 1x1 ++// is fine. ++constexpr gfx::Size kSolidColorSurfaceSize = gfx::Size(1, 1); ++ ++#if DCHECK_IS_ON() ++bool VisualTreeValid( ++ std::vector>& subtree_index_to_overlay, ++ const std::vector& prev_subtree_is_attached_to_root) { ++ for (size_t i = 0; i < subtree_index_to_overlay.size(); i++) { ++ // Unused subtrees must be removed from the root. ++ if (!subtree_index_to_overlay[i] && prev_subtree_is_attached_to_root[i]) { ++ return false; ++ } ++ } ++ return true; ++} ++#endif // DCHECK_IS_ON() ++} // namespace ++ ++VideoProcessorWrapper::VideoProcessorWrapper() = default; ++VideoProcessorWrapper::~VideoProcessorWrapper() = default; ++ ++VideoProcessorWrapper::SizeSmoother::SizeSmoother() ++ : width_(kVideoProcessorDimensionsWindowSize), ++ height_(kVideoProcessorDimensionsWindowSize) {} ++VideoProcessorWrapper::SizeSmoother::~SizeSmoother() = default; ++ ++void VideoProcessorWrapper::SizeSmoother::SizeSmoother::PutSize( ++ gfx::Size size) { ++ width_.AddSample(size.width()); ++ height_.AddSample(size.height()); ++} ++ ++gfx::Size VideoProcessorWrapper::SizeSmoother::GetSize() const { ++ return gfx::Size(width_.Max(), height_.Max()); ++} ++ ++// Owns a |IDCompositionSurface| filled with a solid color. ++class SolidColorSurface final { ++ public: ++ SolidColorSurface() = delete; ++ SolidColorSurface(SolidColorSurface&&) = default; ++ SolidColorSurface& operator=(SolidColorSurface&&) = default; ++ ~SolidColorSurface() = default; ++ ++ IDCompositionSurface* surface() const { return surface_.Get(); } ++ ++ private: ++ friend class SolidColorSurfacePool; ++ ++ explicit SolidColorSurface( ++ Microsoft::WRL::ComPtr surface) ++ : surface_(std::move(surface)) { ++ CHECK(surface_); ++ } ++ ++ // Fill the surface with the opaque part of |color|. ++ base::expected FillColor(ID3D11Device* d3d11_device, ++ SkColor4f color) { ++ HRESULT hr = S_OK; ++ RECT update_rect = D2D1::Rect(0, 0, kSolidColorSurfaceSize.width(), ++ kSolidColorSurfaceSize.height()); ++ Microsoft::WRL::ComPtr draw_texture; ++ POINT update_offset; ++ hr = surface_->BeginDraw(&update_rect, IID_PPV_ARGS(&draw_texture), ++ &update_offset); ++ if (FAILED(hr)) { ++ LOG(ERROR) << "BeginDraw failed: " ++ << logging::SystemErrorCodeToString(hr); ++ return base::unexpected( ++ CommitError{CommitError::Reason::kSolidColorSurfaceBeginDraw, hr}); ++ } ++ ++ Microsoft::WRL::ComPtr rtv; ++ hr = ++ d3d11_device->CreateRenderTargetView(draw_texture.Get(), nullptr, &rtv); ++ if (FAILED(hr)) { ++ LOG(ERROR) << "CreateRenderTargetView failed: " ++ << logging::SystemErrorCodeToString(hr); ++ return base::unexpected(CommitError{ ++ CommitError::Reason::kSolidColorSurfaceCreateRenderTargetView, hr}); ++ } ++ ++ Microsoft::WRL::ComPtr immediate_context; ++ d3d11_device->GetImmediateContext(&immediate_context); ++ immediate_context->ClearRenderTargetView(rtv.Get(), ++ color.makeOpaque().vec()); ++ ++ hr = surface_->EndDraw(); ++ if (FAILED(hr)) { ++ LOG(ERROR) << "EndDraw failed: " << logging::SystemErrorCodeToString(hr); ++ return base::unexpected( ++ CommitError{CommitError::Reason::kSolidColorSurfaceEndDraw, hr}); ++ } ++ ++ color_ = color; ++ ++ return base::ok(); ++ } ++ ++ // A surface with |DXGI_ALPHA_MODE_IGNORE|, filled with the opaque parts of ++ // |color_|. ++ Microsoft::WRL::ComPtr surface_; ++ ++ // Only set if |surface_| was successfully filled to this color. ++ std::optional color_; ++}; ++ ++SolidColorSurfacePool::SolidColorSurfacePool( ++ Microsoft::WRL::ComPtr d3d11_device, ++ Microsoft::WRL::ComPtr dcomp_device) ++ : d3d11_device_(std::move(d3d11_device)), ++ dcomp_device_(std::move(dcomp_device)) { ++ CHECK(d3d11_device_); ++ CHECK(dcomp_device_); ++} ++SolidColorSurfacePool::~SolidColorSurfacePool() = default; ++ ++base::expected ++SolidColorSurfacePool::GetSolidColorSurface(const SkColor4f& color) { ++ stats_since_last_trim_.num_surfaces_requested += 1; ++ ++ HRESULT hr = S_OK; ++ ++ auto first_unused_surface_it = ++ std::next(tracked_surfaces_.begin(), num_used_this_frame_); ++ ++ if (auto found_color_it = std::ranges::find(tracked_surfaces_, color, ++ &SolidColorSurface::color_); ++ found_color_it != tracked_surfaces_.end()) { ++ // We found an existing surface in the pool that already has the requested ++ // color. ++ ++ if (found_color_it >= first_unused_surface_it) { ++ // If the surface is in the "unused" portion of |tracked_surfaces_|, make ++ // it be tracked now. ++ std::swap(*first_unused_surface_it, *found_color_it); ++ found_color_it = first_unused_surface_it; ++ num_used_this_frame_++; ++ } else { ++ // The surface is already used by another overlay in this frame, so we can ++ // just share it with no extra work. ++ } ++ ++ return found_color_it->surface(); ++ } ++ ++ // There is no surface that already contains the requested |color|, so we'll ++ // need to fill one. ++ auto surface_to_fill_it = first_unused_surface_it; ++ if (surface_to_fill_it == tracked_surfaces_.end()) { ++ // If there are no existing allocations, we'll need to create a new one. ++ Microsoft::WRL::ComPtr dcomp_surface; ++ hr = dcomp_device_->CreateSurface( ++ kSolidColorSurfaceSize.width(), kSolidColorSurfaceSize.height(), ++ gfx::ColorSpaceWin::GetDXGIFormat(gfx::ColorSpace::CreateSRGB()), ++ DXGI_ALPHA_MODE_IGNORE, &dcomp_surface); ++ if (FAILED(hr)) { ++ LOG(ERROR) << "CreateSurface failed: " ++ << logging::SystemErrorCodeToString(hr); ++ return base::unexpected(CommitError{ ++ CommitError::Reason::kSolidColorSurfacePoolCreateSurface, hr}); ++ } ++ ++ surface_to_fill_it = tracked_surfaces_.insert( ++ first_unused_surface_it, SolidColorSurface(std::move(dcomp_surface))); ++ } ++ ++ // The surface we want to use doesn't have the right color at this point. ++ RETURN_IF_ERROR(surface_to_fill_it->FillColor(d3d11_device_.Get(), color)); ++ ++ // Update the partitioning index after |FillColor| succeeds. In the case of ++ // failure, |tracked_surfaces_[num_used_this_frame_]| will still have a valid ++ // surface, just not filled to any color yet. ++ num_used_this_frame_++; ++ ++ stats_since_last_trim_.num_surfaces_recolored += 1; ++ ++ return surface_to_fill_it->surface(); ++} ++ ++void SolidColorSurfacePool::TrimAfterCommit() { ++ // The is the maximum number of solid color surfaces (both in use and not in ++ // use) that we will retain between frames. If we are actively using more than ++ // this, this value will be ignored. ++ // ++ // The value is copied from gbm_surfaceless_wayland.cc's ++ // |kMaxSolidColorBuffers|, which picks this value based on observationally ++ // seeing max 9 in-flight buffers + some margin. However, this can be any ++ // value. If the value is smaller than the number of overlays commonly seen ++ // in a frame, we may thrash on allocations. If the value is too large, we ++ // will end up wasting space. ++ static constexpr size_t kMaxSolidColorSurfacesToRetain = 12; ++ ++ // Preserve up to |kMaxSolidColorSurfacesToRetain| surfaces, even if they ++ // aren't used this frame. ++ size_t trim_target_size = ++ std::max(num_used_this_frame_, kMaxSolidColorSurfacesToRetain); ++ // Protect against the case where there are fewer tracked surfaces than ++ // |kMaxSolidColorSurfacesToRetain|. ++ trim_target_size = std::min(trim_target_size, tracked_surfaces_.size()); ++ ++ DVLOG(3) << "SolidColorSurfacePool stats before trim: " << "requested=" ++ << stats_since_last_trim_.num_surfaces_requested << ", " ++ << "recolored=" << stats_since_last_trim_.num_surfaces_recolored ++ << ", " << "in-use/total=" << num_used_this_frame_ << "/" ++ << tracked_surfaces_.size() ++ << (num_used_this_frame_ > kMaxSolidColorSurfacesToRetain ++ ? " (in-use exceeds kMaxSolidColorSurfacesToRetain)" ++ : "") ++ << ", will trim to " << trim_target_size; ++ ++ auto first_surface_to_remove = ++ std::next(tracked_surfaces_.begin(), trim_target_size); ++ tracked_surfaces_.erase(first_surface_to_remove, tracked_surfaces_.end()); ++ ++ // Reset for the next frame. ++ num_used_this_frame_ = 0; ++ stats_since_last_trim_ = {}; ++} ++ ++size_t SolidColorSurfacePool::GetNumSurfacesInPoolForTesting() const { ++ CHECK_IS_TEST(); ++ return tracked_surfaces_.size(); ++} ++ ++DCLayerTree::DCLayerTree(bool disable_nv12_dynamic_textures, ++ bool disable_vp_auto_hdr, ++ bool disable_vp_scaling, ++ bool disable_vp_super_resolution, ++ bool disable_dc_letterbox_video_optimization, ++ bool force_dcomp_triple_buffer_video_swap_chain, ++ bool no_downscaled_overlay_promotion) ++ : disable_nv12_dynamic_textures_(disable_nv12_dynamic_textures), ++ disable_vp_auto_hdr_(disable_vp_auto_hdr), ++ disable_vp_scaling_(disable_vp_scaling), ++ disable_vp_super_resolution_(disable_vp_super_resolution), ++ disable_dc_letterbox_video_optimization_( ++ disable_dc_letterbox_video_optimization), ++ force_dcomp_triple_buffer_video_swap_chain_( ++ force_dcomp_triple_buffer_video_swap_chain), ++ no_downscaled_overlay_promotion_(no_downscaled_overlay_promotion), ++ tint_video_layer_(base::CommandLine::ForCurrentProcess()->HasSwitch( ++ switches::kTintDcLayer)), ++ ink_renderer_(std::make_unique()) {} ++ ++DCLayerTree::~DCLayerTree() = default; ++ ++void DCLayerTree::Initialize( ++ HWND window, ++ Microsoft::WRL::ComPtr d3d11_device) { ++ window_ = window; ++ DCHECK(window_); ++ ++ d3d11_device_ = std::move(d3d11_device); ++ DCHECK(d3d11_device_); ++ ++ dcomp_device_ = GetDirectCompositionDevice(); ++ DCHECK(dcomp_device_); ++ ++ solid_color_surface_pool_ = ++ std::make_unique(d3d11_device_, dcomp_device_); ++ ++ Microsoft::WRL::ComPtr desktop_device; ++ dcomp_device_.As(&desktop_device); ++ DCHECK(desktop_device); ++ ++ HRESULT hr = ++ desktop_device->CreateTargetForHwnd(window_, TRUE, &dcomp_target_); ++ // |CreateTargetForHwnd| can fail if |window_| belongs to a different process ++ // (DCOMPOSITION_ERROR_ACCESS_DENIED) or we have already called ++ // |CreateTargetForHwnd| for this window ++ // (DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED). We don't expect either to be ++ // the case here. ++ CHECK_EQ(hr, S_OK); ++ ++ hr = dcomp_device_->CreateVisual(&dcomp_root_visual_); ++ CHECK_EQ(hr, S_OK); ++ ++ if (base::FeatureList::IsEnabled(features::kDCompDebugVisualization)) { ++ Microsoft::WRL::ComPtr debug_device; ++ hr = dcomp_device_.As(&debug_device); ++ CHECK_EQ(hr, S_OK); ++ CHECK(debug_device); ++ DLOG(WARNING) << "DComp debug counters enabled, visible in the top right."; ++ DLOG(WARNING) << " - left: The composition engine FPS, averaged over the " ++ "last 60 composition frames"; ++ DLOG(WARNING) << " - right: The overall CPU usage of the composition " ++ "thread, in milliseconds"; ++ hr = debug_device->EnableDebugCounters(); ++ CHECK_EQ(hr, S_OK); ++ ++ Microsoft::WRL::ComPtr debug_visual; ++ hr = dcomp_root_visual_.As(&debug_visual); ++ CHECK_EQ(hr, S_OK); ++ CHECK(debug_visual); ++ hr = debug_visual->EnableRedrawRegions(); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ dcomp_target_->SetRoot(dcomp_root_visual_.Get()); ++ // A visual inherits the interpolation mode of the parent visual by default. ++ // If no visuals set the interpolation mode, the default for the entire visual ++ // tree is nearest neighbor interpolation. ++ // Set the interpolation mode to Linear to get a better upscaling quality. ++ dcomp_root_visual_->SetBitmapInterpolationMode( ++ DCOMPOSITION_BITMAP_INTERPOLATION_MODE_LINEAR); ++ ++ hdr_metadata_helper_ = std::make_unique(d3d11_device_); ++ ++ if (Microsoft::WRL::ComPtr dcomp_device5; ++ SUCCEEDED(dcomp_device_.As(&dcomp_device5))) { ++ hr = dcomp_device5->CreateDynamicTexture(&primary_plane_surface_); ++ if (FAILED(hr)) { ++ LOG(WARNING) << "Failed to create IDCompositionDynamicTexture: " ++ << logging::SystemErrorCodeToString(hr); ++ } ++ } ++} ++ ++VideoProcessorWrapper* DCLayerTree::InitializeVideoProcessor( ++ const gfx::Size& input_size, ++ const gfx::Size& output_size, ++ bool is_hdr_output, ++ bool& video_processor_recreated) { ++ video_processor_recreated = false; ++ auto& video_processor_wrapper = is_hdr_output ? video_processor_wrapper_hdr_ ++ : video_processor_wrapper_sdr_; ++ if (!video_processor_wrapper.video_device) { ++ // This can fail if the D3D device is "Microsoft Basic Display Adapter". ++ if (FAILED(d3d11_device_.As(&video_processor_wrapper.video_device))) { ++ DLOG(ERROR) << "Failed to retrieve video device from D3D11 device"; ++ DCHECK(false); ++ DisableDirectCompositionOverlays(); ++ return nullptr; ++ } ++ DCHECK(video_processor_wrapper.video_device); ++ ++ Microsoft::WRL::ComPtr context; ++ d3d11_device_->GetImmediateContext(&context); ++ DCHECK(context); ++ context.As(&video_processor_wrapper.video_context); ++ DCHECK(video_processor_wrapper.video_context); ++ } ++ ++ // Calculate input and output size to be maximum in a sliding window. ++ video_processor_wrapper.input_size_smoother.PutSize(input_size); ++ video_processor_wrapper.output_size_smoother.PutSize(output_size); ++ ++ gfx::Size effective_input_size = ++ video_processor_wrapper.input_size_smoother.GetSize(); ++ gfx::Size effective_output_size = ++ video_processor_wrapper.output_size_smoother.GetSize(); ++ ++ // Reuse existing video processor only if it has exactly the computed size. ++ // Even if it may have bigger dimensions and may be reusable for requested ++ // sizes we will recreate it to reduce resource usage. Sliding window max ++ // above guarantees that this reduction will only happen after prolonged usage ++ // with smaller texture sizes. ++ if (video_processor_wrapper.video_processor && ++ video_processor_wrapper.video_input_size == effective_input_size && ++ video_processor_wrapper.video_output_size == effective_output_size) { ++ return &video_processor_wrapper; ++ } ++ ++ TRACE_EVENT2("gpu", "DCLayerTree::InitializeVideoProcessor", "input_size", ++ input_size.ToString(), "output_size", output_size.ToString()); ++ ++ video_processor_wrapper.video_input_size = effective_input_size; ++ video_processor_wrapper.video_output_size = effective_output_size; ++ video_processor_wrapper.video_processor.Reset(); ++ video_processor_wrapper.video_processor_enumerator.Reset(); ++ D3D11_VIDEO_PROCESSOR_CONTENT_DESC desc = {}; ++ desc.InputFrameFormat = D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE; ++ desc.InputFrameRate.Numerator = 60; ++ desc.InputFrameRate.Denominator = 1; ++ desc.InputWidth = input_size.width(); ++ desc.InputHeight = input_size.height(); ++ desc.OutputFrameRate.Numerator = 60; ++ desc.OutputFrameRate.Denominator = 1; ++ desc.OutputWidth = output_size.width(); ++ desc.OutputHeight = output_size.height(); ++ desc.Usage = D3D11_VIDEO_USAGE_PLAYBACK_NORMAL; ++ HRESULT hr = ++ video_processor_wrapper.video_device->CreateVideoProcessorEnumerator( ++ &desc, &video_processor_wrapper.video_processor_enumerator); ++ if (FAILED(hr)) { ++ DLOG(ERROR) << "CreateVideoProcessorEnumerator failed with error 0x" ++ << std::hex << hr; ++ // It might fail again next time. Disable overlay support so ++ // overlay processor will stop sending down overlay frames. ++ DisableDirectCompositionOverlays(); ++ return nullptr; ++ } ++ hr = video_processor_wrapper.video_device->CreateVideoProcessor( ++ video_processor_wrapper.video_processor_enumerator.Get(), 0, ++ &video_processor_wrapper.video_processor); ++ if (FAILED(hr)) { ++ DLOG(ERROR) << "CreateVideoProcessor failed with error 0x" << std::hex ++ << hr; ++ // It might fail again next time. Disable overlay support so ++ // overlay processor will stop sending down overlay frames. ++ DisableDirectCompositionOverlays(); ++ return nullptr; ++ } ++ // Auto stream processing (the default) can hurt power consumption. ++ video_processor_wrapper.video_context ++ ->VideoProcessorSetStreamAutoProcessingMode( ++ video_processor_wrapper.video_processor.Get(), 0, FALSE); ++ ++ video_processor_recreated = true; ++ return &video_processor_wrapper; ++} ++ ++IDXGISwapChain1* DCLayerTree::GetLayerSwapChainForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ if (video_swap_chains_.contains(layer_id)) { ++ return video_swap_chains_.at(layer_id)->swap_chain().Get(); ++ } ++ return nullptr; ++} ++ ++DCLayerTree::VisualTree::VisualSubtree* ++DCLayerTree::GetFrontMostVideoVisualSubtreeForTesting() const { ++ CHECK_IS_TEST(); ++ VisualTree::VisualSubtree* front_sub_tree = ++ visual_tree_->GetFrontMostVisualSubtreeForTesting(); // IN-TEST ++ // `dcomp_visual_content` on front-most subtree should match ++ // SwapChainPresenter::content() in `video_swap_chains` ++ for (const auto& video_swap_chain : video_swap_chains_) { ++ const auto& swap_chain_presenter = video_swap_chain.second; ++ if (swap_chain_presenter->content_for_testing().Get() == // IN-TEST ++ front_sub_tree->dcomp_visual_content()) { ++ return front_sub_tree; ++ } ++ } ++ ++ return nullptr; ++} ++ ++DCLayerTree::VisualTree::VisualSubtree::VisualSubtree() = default; ++DCLayerTree::VisualTree::VisualSubtree::~VisualSubtree() { ++ if (content_visual_) { ++ // Explicitly null out the `content_visual_`'s content to ensure there are ++ // no unexpected references to e.g. `IDCompositionTexture`, in case there ++ // are lingering references to `content_visual_`. ++ HRESULT hr = content_visual_->SetContent(nullptr); ++ CHECK_EQ(S_OK, hr); ++ } ++} ++ ++bool DCLayerTree::VisualTree::VisualSubtree::Update( ++ IDCompositionDevice3* dcomp_device, ++ Microsoft::WRL::ComPtr dcomp_visual_content, ++ uint64_t dcomp_surface_serial, ++ const gfx::Size& image_size, ++ const gfx::RectF& content_rect, ++ Microsoft::WRL::ComPtr background_color_surface, ++ const SkColor4f& background_color, ++ const gfx::Rect& quad_rect, ++ bool nearest_neighbor_filter, ++ const gfx::Transform& quad_to_root_transform, ++ const gfx::RRectF& rounded_corner_bounds, ++ float opacity, ++ const std::optional& clip_rect_in_root, ++ bool allow_antialiasing) { ++ bool needs_commit = false; ++ ++ // Helper function to set |field| to |parameter| and return whether it ++ // changed. ++ auto SetField = [&needs_commit](auto& field, auto& parameter) -> bool { ++ const bool changed = field != parameter; ++ if (changed) { ++ field = std::move(parameter); ++ ++ // We assume that any change to the input of |Update| will result in some ++ // visual property change that requires a commit. If this is not true, an ++ // input is not needed. ++ needs_commit = true; ++ } ++ return changed; ++ }; ++ ++ // Fields on |VisualSubtree| should map 1:1 with parameters to |Update| (with ++ // the exception of the DComp device pointer, DComp visuals, and Z-order). To ++ // avoid issues with incremental computation, set fields to input parameters ++ // here with the helper function and read the member fields below only if ++ // guarded by the corresponding |*_changed| variable. ++ const bool dcomp_visual_content_changed = ++ SetField(dcomp_visual_content_, dcomp_visual_content); ++ const bool dcomp_surface_serial_changed = ++ SetField(dcomp_surface_serial_, dcomp_surface_serial); ++ const bool image_size_changed = SetField(image_size_, image_size); ++ const bool content_rect_changed = SetField(content_rect_, content_rect); ++ const bool background_color_surface_changed = ++ SetField(background_color_surface_, background_color_surface); ++ const bool background_color_changed = ++ SetField(background_color_, background_color); ++ const bool quad_rect_changed = SetField(quad_rect_, quad_rect); ++ const bool nearest_neighbor_filter_changed = ++ SetField(nearest_neighbor_filter_, nearest_neighbor_filter); ++ const bool quad_to_root_transform_changed = ++ SetField(quad_to_root_transform_, quad_to_root_transform); ++ const bool rounded_corner_bounds_changed = ++ SetField(rounded_corner_bounds_, rounded_corner_bounds); ++ const bool opacity_changed = SetField(opacity_, opacity); ++ const bool clip_rect_in_root_changed = ++ SetField(clip_rect_in_root_, clip_rect_in_root); ++ const bool allow_antialiasing_changed = ++ SetField(allow_antialiasing_, allow_antialiasing); ++ ++ // Methods that update the visual tree can only fail with OOM. We'll assert ++ // success in this function to aid in debugging. ++ HRESULT hr = S_OK; ++ ++ // All the visual are created together on the first |Update|. ++ if (!clip_visual_) { ++ needs_commit = true; ++ ++ CHECK(!rounded_corners_visual_); ++ CHECK(!transform_visual_); ++ CHECK(!background_color_visual_); ++ CHECK(!content_visual_); ++ ++ hr = dcomp_device->CreateVisual(&clip_visual_); ++ CHECK_EQ(hr, S_OK); ++ hr = dcomp_device->CreateVisual(&rounded_corners_visual_); ++ CHECK_EQ(hr, S_OK); ++ hr = dcomp_device->CreateVisual(&transform_visual_); ++ CHECK_EQ(hr, S_OK); ++ hr = dcomp_device->CreateVisual(&background_color_visual_); ++ CHECK_EQ(hr, S_OK); ++ hr = dcomp_device->CreateVisual(&content_visual_); ++ CHECK_EQ(hr, S_OK); ++ ++ hr = clip_visual_->AddVisual(rounded_corners_visual_.Get(), FALSE, nullptr); ++ CHECK_EQ(hr, S_OK); ++ hr = rounded_corners_visual_->AddVisual(transform_visual_.Get(), FALSE, ++ nullptr); ++ CHECK_EQ(hr, S_OK); ++ hr = transform_visual_->AddVisual(background_color_visual_.Get(), FALSE, ++ nullptr); ++ CHECK_EQ(hr, S_OK); ++ hr = transform_visual_->AddVisual(content_visual_.Get(), FALSE, nullptr); ++ CHECK_EQ(hr, S_OK); ++ ++ // The default state for the border mode is INHERIT, so we need to force it ++ // to HARD. ++ hr = transform_visual_->SetBorderMode(DCOMPOSITION_BORDER_MODE_HARD); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ if (clip_rect_in_root_changed) { ++ if (clip_rect_in_root_.has_value()) { ++ // DirectComposition clips happen in the pre-transform visual space, while ++ // cc/ clips happen post-transform. So the clip needs to go on a separate ++ // parent visual that's untransformed. ++ const gfx::Rect& clip_rect = clip_rect_in_root_.value(); ++ hr = clip_visual_->SetClip(D2D1::RectF( ++ clip_rect.x(), clip_rect.y(), clip_rect.right(), clip_rect.bottom())); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ hr = clip_visual_->SetClip(nullptr); ++ CHECK_EQ(hr, S_OK); ++ } ++ } ++ ++#if !defined(COMPILER_GCC) ++ if (opacity_changed) { ++ if (opacity_ != 1) { ++ hr = CheckedCastToVisual3(clip_visual_)->SetOpacity(opacity_); ++ CHECK_EQ(hr, S_OK); ++ ++ // Let all of this subtree's visuals blend as one, instead of ++ // individually ++ hr = clip_visual_->SetOpacityMode(DCOMPOSITION_OPACITY_MODE_LAYER); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ hr = CheckedCastToVisual3(clip_visual_)->SetOpacity(1.0); ++ CHECK_EQ(hr, S_OK); ++ hr = clip_visual_->SetOpacityMode(DCOMPOSITION_OPACITY_MODE_MULTIPLY); ++ CHECK_EQ(hr, S_OK); ++ } ++ } ++#endif ++ ++ if (rounded_corner_bounds_changed) { ++ if (!rounded_corner_bounds_.IsEmpty()) { ++ Microsoft::WRL::ComPtr clip; ++ hr = dcomp_device->CreateRectangleClip(&clip); ++ CHECK_EQ(hr, S_OK); ++ CHECK(clip); ++ ++ const gfx::RectF rect = rounded_corner_bounds_.rect(); ++ hr = clip->SetLeft(rect.x()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetRight(rect.right()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetBottom(rect.bottom()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetTop(rect.y()); ++ CHECK_EQ(hr, S_OK); ++ ++ const gfx::Vector2dF top_left = rounded_corner_bounds_.GetCornerRadii( ++ gfx::RRectF::Corner::kUpperLeft); ++ hr = clip->SetTopLeftRadiusX(top_left.x()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetTopLeftRadiusY(top_left.y()); ++ CHECK_EQ(hr, S_OK); ++ ++ const gfx::Vector2dF top_right = rounded_corner_bounds_.GetCornerRadii( ++ gfx::RRectF::Corner::kUpperRight); ++ hr = clip->SetTopRightRadiusX(top_right.x()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetTopRightRadiusY(top_right.y()); ++ CHECK_EQ(hr, S_OK); ++ ++ const gfx::Vector2dF bottom_left = rounded_corner_bounds_.GetCornerRadii( ++ gfx::RRectF::Corner::kLowerLeft); ++ hr = clip->SetBottomLeftRadiusX(bottom_left.x()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetBottomLeftRadiusY(bottom_left.y()); ++ CHECK_EQ(hr, S_OK); ++ ++ const gfx::Vector2dF bottom_right = rounded_corner_bounds_.GetCornerRadii( ++ gfx::RRectF::Corner::kLowerRight); ++ hr = clip->SetBottomRightRadiusX(bottom_right.x()); ++ CHECK_EQ(hr, S_OK); ++ hr = clip->SetBottomRightRadiusY(bottom_right.y()); ++ CHECK_EQ(hr, S_OK); ++ ++ hr = rounded_corners_visual_->SetClip(clip.Get()); ++ CHECK_EQ(hr, S_OK); ++ ++ // Enable anti-aliasing of the rounded corners. ++ hr = ++ rounded_corners_visual_->SetBorderMode(DCOMPOSITION_BORDER_MODE_SOFT); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ hr = rounded_corners_visual_->SetClip(nullptr); ++ CHECK_EQ(hr, S_OK); ++ hr = rounded_corners_visual_->SetBorderMode( ++ DCOMPOSITION_BORDER_MODE_INHERIT); ++ CHECK_EQ(hr, S_OK); ++ } ++ } ++ ++#if !defined(COMPILER_GCC) ++ if (quad_to_root_transform_changed) { ++ if (quad_to_root_transform_.Is2dTransform()) { ++ const D2D_MATRIX_3X2_F matrix = ++ TransformToD2D_MATRIX_3X2_F(quad_to_root_transform_); ++ hr = Microsoft::WRL::ComPtr(transform_visual_) ++ ->SetTransform(matrix); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ const D2D_MATRIX_4X4_F matrix = ++ TransformToD2D_MATRIX_4X4_F(quad_to_root_transform_); ++ hr = CheckedCastToVisual3(transform_visual_)->SetTransform(matrix); ++ CHECK_EQ(hr, S_OK); ++ } ++ } ++#endif ++ ++ if (nearest_neighbor_filter_changed) { ++ hr = transform_visual_->SetBitmapInterpolationMode( ++ nearest_neighbor_filter_ ++ ? DCOMPOSITION_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR ++ : DCOMPOSITION_BITMAP_INTERPOLATION_MODE_LINEAR); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ if (image_size_changed || content_rect_changed || quad_rect_changed) { ++ if (content_rect_.Contains(gfx::RectF(image_size_))) { ++ // No need to set clip to content if the whole image is inside the content ++ // rect region. ++ hr = content_visual_->SetClip(nullptr); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ // Exclude content outside the content rect region. ++ const auto content_clip = ++ D2D1::RectF(content_rect_.x(), content_rect_.y(), ++ content_rect_.right(), content_rect_.bottom()); ++ hr = content_visual_->SetClip(content_clip); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ // Transform the (clipped) content so that it fills |quad_rect_|'s bounds. ++ // |quad_rect_|'s offset is handled below, so we exclude it from the matrix. ++ const bool needs_offset = !content_rect_.OffsetFromOrigin().IsZero(); ++ const bool needs_scale = ++ static_cast(quad_rect_.width()) != content_rect_.width() || ++ static_cast(quad_rect_.height()) != content_rect_.height(); ++ if (needs_offset || needs_scale) { ++ const float scale_x = ++ static_cast(quad_rect_.width()) / content_rect_.width(); ++ const float scale_y = ++ static_cast(quad_rect_.height()) / content_rect_.height(); ++ const D2D_MATRIX_3X2_F matrix = ++ D2D1::Matrix3x2F::Translation(-content_rect_.x(), ++ -content_rect_.y()) * ++ D2D1::Matrix3x2F::Scale(scale_x, scale_y); ++ hr = Microsoft::WRL::ComPtr(content_visual_) ++ ->SetTransform(matrix); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ hr = content_visual_->SetTransform(nullptr); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ // Visual offset is applied after transform so it is affected by the ++ // transform, which is consistent with how the compositor maps quad rects to ++ // their target space. ++ hr = content_visual_->SetOffsetX(quad_rect_.x()); ++ CHECK_EQ(hr, S_OK); ++ hr = content_visual_->SetOffsetY(quad_rect_.y()); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ if (dcomp_visual_content_changed) { ++ hr = content_visual_->SetContent(dcomp_visual_content_.Get()); ++ CHECK_EQ(hr, S_OK); ++ } ++#if DCHECK_IS_ON() ++ dcomp_visual_content_changed_from_previous_frame_ = ++ dcomp_visual_content_changed; ++#endif ++ ++ if (dcomp_surface_serial_changed) { ++ // The DComp surface has been drawn to and needs a commit to show its ++ // update. No visual changes are needed in this case. ++ } ++ ++#if !defined(COMPILER_GCC) ++ if (quad_rect_changed || background_color_surface_changed || ++ background_color_changed) { ++ if (!background_color_surface_ || background_color.fA == 0.0) { ++ // A fully transparent color is the same as no background fill. ++ hr = background_color_visual_->SetContent(nullptr); ++ CHECK_EQ(hr, S_OK); ++ } else { ++ const D2D_MATRIX_3X2_F matrix = ++ TransformToD2D_MATRIX_3X2_F(gfx::TransformBetweenRects( ++ gfx::RectF(kSolidColorSurfaceSize), gfx::RectF(quad_rect_))); ++ hr = Microsoft::WRL::ComPtr(background_color_visual_) ++ ->SetTransform(matrix); ++ CHECK_EQ(hr, S_OK); ++ ++ hr = ++ background_color_visual_->SetContent(background_color_surface_.Get()); ++ CHECK_EQ(hr, S_OK); ++ ++ hr = CheckedCastToVisual3(background_color_visual_) ++ ->SetOpacity(background_color.fA); ++ CHECK_EQ(hr, S_OK); ++ } ++ } ++#endif ++ ++ if (quad_to_root_transform_changed || quad_rect_changed || ++ allow_antialiasing_changed) { ++ const float kNeedsSoftBorderTolerance = 0.001; ++ const bool content_soft_borders = ++ allow_antialiasing_ && ++ (!quad_to_root_transform_.Preserves2dAxisAlignment() || ++ !gfx::IsNearestRectWithinDistance( ++ quad_to_root_transform_.MapRect(gfx::RectF(quad_rect_)), ++ kNeedsSoftBorderTolerance)); ++ // The border mode of the transform visual is set (instead of the content ++ // visual), so this setting can affect both the content and the background ++ // color, since both are are children of the transform visual. ++ hr = transform_visual_->SetBorderMode(content_soft_borders ++ ? DCOMPOSITION_BORDER_MODE_SOFT ++ : DCOMPOSITION_BORDER_MODE_HARD); ++ CHECK_EQ(hr, S_OK); ++ } ++ ++ return needs_commit; ++} ++ ++void DCLayerTree::VisualTree::VisualSubtree::GetSwapChainVisualInfoForTesting( ++ gfx::Transform* out_transform, ++ gfx::Point* out_offset, ++ gfx::Rect* out_clip_rect) const { ++ CHECK_IS_TEST(); ++ *out_transform = quad_to_root_transform_; ++ *out_offset = quad_rect_.origin(); ++ *out_clip_rect = clip_rect_in_root_.value_or(gfx::Rect()); ++} ++ ++DCLayerTree::VisualTree::VisualTree(DCLayerTree* dc_layer_tree) ++ : dc_layer_tree_(dc_layer_tree) {} ++ ++DCLayerTree::VisualTree::~VisualTree() = default; ++ ++base::expected DCLayerTree::VisualTree::BuildTree( ++ const std::vector& overlays) { ++ // Index into the subtree from the previous frame that is being reused in the ++ // current frame for the given overlay index. ++ // |overlay_index_to_reused_subtree| has an entry for every overlay in the ++ // current frame. Each entry indexes into |visual_subtrees_|, which are the ++ // subtrees for the previous frame. Initialized with std::nullopt, ++ // meaning not reused. ++ std::vector> overlay_index_to_reused_subtree( ++ overlays.size(), std::nullopt); ++ ++ // Index into the current frame overlay that uses the subtree of the previous ++ // frame for the given subtree index. |subtree_index_to_overlay| has an entry ++ // for every subtree in the previous frame. Each entry indexes into |overlays| ++ // of the current frame. Initialized with std::nullopt, meaning the subtree ++ // is not being reused in the current frame. ++ std::vector> subtree_index_to_overlay( ++ visual_subtrees_.size(), std::nullopt); ++ ++ // |visual_subtrees| will become |visual_subtrees_| of the current frame; ++ std::vector> visual_subtrees; ++ visual_subtrees.resize(overlays.size()); ++ ++ decltype(layer_ids_for_testing_) layer_ids_for_testing; ++ layer_ids_for_testing.reserve(overlays.size()); ++ ++ // Populate the map with visual content and assign matching subtrees to the ++ // overlays. ++ VisualSubtreeMap subtree_map = BuildMapAndAssignMatchingSubtrees( ++ overlays, visual_subtrees, overlay_index_to_reused_subtree, ++ subtree_index_to_overlay); ++ ++ // Assign unused subtrees to the overlays that don't have a match. ++ const size_t first_prev_frame_subtree_unused_index = ++ ReuseUnmatchedSubtrees(visual_subtrees, overlay_index_to_reused_subtree, ++ subtree_index_to_overlay); ++ ++ // Status for each subtree of the previous frame if it's attached to the root. ++ // Initialized with true, meaning attached. ++ std::vector prev_subtree_is_attached_to_root(visual_subtrees_.size(), ++ true); ++ ++ bool needs_commit = DetachUnusedSubtreesFromRoot( ++ first_prev_frame_subtree_unused_index, prev_subtree_is_attached_to_root); ++ ++ // Remove unused subtrees from the root that need repositioning. ++ needs_commit |= DetachReusedSubtreesThatNeedRepositioningFromRoot( ++ visual_subtrees, overlay_index_to_reused_subtree, ++ subtree_index_to_overlay, prev_subtree_is_attached_to_root); ++ ++#if DCHECK_IS_ON() ++ VisualTreeValid(subtree_index_to_overlay, prev_subtree_is_attached_to_root); ++#endif // DCHECK_IS_ON() ++ ++ IDCompositionVisual2* left_sibling_visual = nullptr; ++ ++ base::flat_set> ++ layers_with_multiple_overlays; ++ for (size_t i = 1; i < overlays.size(); i++) { ++ const decltype(layers_with_multiple_overlays)::key_type sqs_layer_id = ++ overlays[i].layer_id.shared_quad_state_layer_id(); ++ if (sqs_layer_id == decltype(layers_with_multiple_overlays)::key_type()) { ++ // A default layer ID implies no explicit layer, which should be treated ++ // as different from every other layer ID, including itself. ++ continue; ++ } ++ ++ if (overlays[i].layer_id == overlays[i - 1].layer_id) { ++ // There were at least two contiguous quads in the same layer. ++ layers_with_multiple_overlays.emplace(sqs_layer_id); ++ } ++ } ++ ++ size_t num_layers_modified = 0; ++ ++ // This loop walks the overlays and builds or updates the visual subtree for ++ // each overlay. |left_sibling_visual| is required to properly stack visual ++ // subtrees that are detached from the root visual. ++ for (unsigned int i = 0; i < overlays.size(); i++) { ++ bool subtree_attached_to_root = false; ++ if (visual_subtrees[i]) { ++ DCHECK(overlay_index_to_reused_subtree[i]); ++ subtree_attached_to_root = ++ prev_subtree_is_attached_to_root[overlay_index_to_reused_subtree[i] ++ .value()]; ++ } else { ++ // This overlay does not reuse a subtree from the previous frame. ++ // Instantiate a new one. ++ visual_subtrees[i] = std::make_unique(); ++ } ++ ++ const uint64_t dcomp_surface_serial = ++ overlays[i].overlay_image.has_value() ++ ? overlays[i].overlay_image->dcomp_surface_serial() ++ : 0; ++ const gfx::Size image_size = overlays[i].overlay_image.has_value() ++ ? overlays[i].overlay_image->size() ++ : gfx::Size(); ++ ++ // Only get a background color surface if we have a non-transparent ++ // background color. ++ IDCompositionSurface* background_color_surface = nullptr; ++ if (overlays[i].background_color && ++ overlays[i].background_color->fA != 0.0) { ++ // TODO(http://crbug.com/1380822): Refactor to remove early exits. They ++ // may leave visual_subtrees_ corrupted. ++ ASSIGN_OR_RETURN( ++ background_color_surface, ++ dc_layer_tree_->solid_color_surface_pool_->GetSolidColorSurface( ++ overlays[i].background_color.value())); ++ } ++ ++ VisualSubtree* visual_subtree = visual_subtrees[i].get(); ++ visual_subtree->set_z_order(overlays[i].z_order); ++ IUnknown* dcomp_visual_content = ++ overlays[i].overlay_image ++ ? overlays[i].overlay_image->dcomp_visual_content() ++ : nullptr; ++ ++ // TODO(crbug.com/324460866): We turn off overlay edge antialiasing when ++ // there are multiple overlays in the same layer. This is a workaround to ++ // avoid seams when there is e.g. a complex transform applied to the layer. ++ // This works for partial delegation because we only expect non-trivial ++ // transforms in ephemeral (i.e. animation) states. To support arbitrary ++ // content in full delegation, we'll need to parent overlays in the same ++ // layer under the same transform visual. ++ const bool allow_antialiasing = !layers_with_multiple_overlays.contains( ++ overlays[i].layer_id.shared_quad_state_layer_id()); ++ ++ const bool visual_needs_commit = visual_subtrees[i]->Update( ++ dc_layer_tree_->dcomp_device_.Get(), dcomp_visual_content, ++ dcomp_surface_serial, image_size, overlays[i].content_rect, ++ background_color_surface, ++ overlays[i].background_color.value_or(SkColors::kTransparent), ++ overlays[i].quad_rect, overlays[i].nearest_neighbor_filter, ++ overlays[i].transform, overlays[i].rounded_corner_bounds, ++ overlays[i].opacity, overlays[i].clip_rect, allow_antialiasing); ++ ++ if (!subtree_attached_to_root) { ++ HRESULT hr = dc_layer_tree_->dcomp_root_visual_.Get()->AddVisual( ++ visual_subtree->container_visual(), TRUE, left_sibling_visual); ++ CHECK_EQ(hr, S_OK); ++ } ++ left_sibling_visual = visual_subtree->container_visual(); ++ ++ if (visual_needs_commit || !subtree_attached_to_root) { ++ num_layers_modified++; ++ needs_commit = true; ++ } ++ ++ layer_ids_for_testing.push_back(overlays[i].layer_id); ++ } ++ ++ // Update subtree_map_ and visual_subtrees_ with new values. ++ subtree_map_ = std::move(subtree_map); ++ visual_subtrees_ = std::move(visual_subtrees); ++ layer_ids_for_testing_ = std::move(layer_ids_for_testing); ++ ++ UMA_HISTOGRAM_COUNTS("GPU.OsCompositor.NumLayersModified", ++ num_layers_modified); ++ ++ if (needs_commit) { ++ TRACE_EVENT0("gpu", "DCLayerTree::CommitAndClearPendingOverlays::Commit"); ++ HRESULT hr = dc_layer_tree_->dcomp_device_->Commit(); ++ if (FAILED(hr)) { ++ DLOG(ERROR) << "Commit failed with error 0x" << std::hex << hr; ++ return base::unexpected( ++ CommitError{CommitError::Reason::kIDCompositionDeviceCommit, hr}); ++ } ++ } ++ return base::ok(); ++} ++ ++DCLayerTree::VisualTree::VisualSubtreeMap ++DCLayerTree::VisualTree::BuildMapAndAssignMatchingSubtrees( ++ const std::vector& overlays, ++ std::vector>& new_visual_subtrees, ++ std::vector>& overlay_index_to_reused_subtree, ++ std::vector>& subtree_index_to_overlay) { ++ CHECK_EQ(overlay_index_to_reused_subtree.size(), overlays.size()); ++ CHECK_EQ(new_visual_subtrees.size(), overlays.size()); ++ CHECK_EQ(subtree_index_to_overlay.size(), visual_subtrees_.size()); ++ ++ // Contains {visual content, overlay index} pairs for this frame overlays. ++ // This structure has entries for overlays that have visual content. ++ // No entry is inserted for the overlays with no visual content. ++ std::vector, size_t>> map_results; ++ // For each overlay populate |map_results| with visual content and indices ++ // of overlays from this frame and find the matching subtree from the ++ // previous frame. ++ for (size_t i = 0; i < overlays.size(); i++) { ++ if (!overlays[i].overlay_image) { ++ continue; ++ } ++ IUnknown* dcomp_visual_content = ++ overlays[i].overlay_image->dcomp_visual_content(); ++ if (!dcomp_visual_content) { ++ continue; ++ } ++ map_results.emplace_back(dcomp_visual_content, i); ++ ++ // Find matching visual content from the previous frame. ++ auto it = subtree_map_.find(dcomp_visual_content); ++ if (it == subtree_map_.end()) { ++ continue; ++ } ++ size_t matched_index = it->second; ++ if (visual_subtrees_[matched_index]) { ++ // Assign the matched index to the corresponding overlay. ++ overlay_index_to_reused_subtree[i] = matched_index; ++ // Assign overlay index to the matched subtree. ++ subtree_index_to_overlay[matched_index] = i; ++ // Move visual subtree from the old subtrees to new subtrees. ++ new_visual_subtrees[i] = std::move(visual_subtrees_[matched_index]); ++ } ++ } ++ // This converts to a flat_map on returning. We're doing this on purpose to ++ // go from O(N^2) to O(N*logN) for building the map. ++ return map_results; ++} ++ ++size_t DCLayerTree::VisualTree::ReuseUnmatchedSubtrees( ++ std::vector>& new_visual_subtrees, ++ std::vector>& overlay_index_to_reused_subtree, ++ std::vector>& subtree_index_to_overlay) { ++ CHECK_EQ(new_visual_subtrees.size(), overlay_index_to_reused_subtree.size()); ++ CHECK_EQ(subtree_index_to_overlay.size(), visual_subtrees_.size()); ++ ++ // No further actions are needed if the previous frame is empty. ++ if (visual_subtrees_.empty()) { ++ return 0; ++ } ++ // Index into |visual_subtrees_|. ++ size_t prev_frame_subtree_index = 0; ++ // Assign unused subtrees from previous frames to overlays that don't have ++ // a match. ++ for (size_t i = 0; i < new_visual_subtrees.size() && ++ prev_frame_subtree_index < visual_subtrees_.size(); ++ i++) { ++ if (new_visual_subtrees[i]) { ++ // Skip overlay that has a match. ++ continue; ++ } ++ // Find next unused subtree and assign it to the overlay at index |i|. ++ for (; prev_frame_subtree_index < visual_subtrees_.size(); ++ prev_frame_subtree_index++) { ++ if (!visual_subtrees_[prev_frame_subtree_index]) { ++ continue; ++ } ++ // Assign the found index to the corresponding overlay. ++ overlay_index_to_reused_subtree[i] = prev_frame_subtree_index; ++ // Assign the overlay index to the found subtree. ++ subtree_index_to_overlay[prev_frame_subtree_index] = i; ++ // Move visual subtree from the old subtrees to new subtrees. ++ new_visual_subtrees[i] = ++ std::move(visual_subtrees_[prev_frame_subtree_index]); ++ prev_frame_subtree_index++; ++ break; ++ } ++ } ++ return prev_frame_subtree_index; ++} ++ ++bool DCLayerTree::VisualTree::DetachUnusedSubtreesFromRoot( ++ size_t first_prev_frame_subtree_unused_index, ++ std::vector& prev_subtree_is_attached_to_root) { ++ CHECK_EQ(prev_subtree_is_attached_to_root.size(), visual_subtrees_.size()); ++ bool needs_commit = false; ++ // Detach the remaining unused subtrees from the root. ++ for (size_t i = first_prev_frame_subtree_unused_index; ++ i < visual_subtrees_.size(); i++) { ++ if (!visual_subtrees_[i]) { ++ continue; ++ } ++ DetachSubtreeFromRoot(visual_subtrees_[i].get()); ++ prev_subtree_is_attached_to_root[i] = false; ++ needs_commit = true; ++ } ++ return needs_commit; ++} ++ ++bool DCLayerTree::VisualTree::DetachReusedSubtreesThatNeedRepositioningFromRoot( ++ const std::vector>& new_visual_subtrees, ++ const std::vector>& overlay_index_to_reused_subtree, ++ const std::vector>& subtree_index_to_overlay, ++ std::vector& prev_subtree_is_attached_to_root) { ++ CHECK_EQ(new_visual_subtrees.size(), overlay_index_to_reused_subtree.size()); ++ CHECK_EQ(subtree_index_to_overlay.size(), visual_subtrees_.size()); ++ CHECK_EQ(prev_subtree_is_attached_to_root.size(), visual_subtrees_.size()); ++ ++ // No further actions are needed if the previous frame is empty. ++ if (visual_subtrees_.empty()) { ++ return false; ++ } ++ bool needs_commit = false; ++ // Index into |visual_subtrees_|. ++ size_t prev_frame_subtree_index = 0; ++ // This loop walks the overlay indices and detaches from the root any ++ // subtrees that need repositioning in the current frame. ++ for (size_t i = 0; i < overlay_index_to_reused_subtree.size(); i++) { ++ if (!overlay_index_to_reused_subtree[i]) { ++ continue; ++ } ++ size_t reused_subtree_index = overlay_index_to_reused_subtree[i].value(); ++ DCHECK_EQ(i, subtree_index_to_overlay[reused_subtree_index].value()); ++ // If the overlay at index |i| has a match, detach from the root any ++ // subtrees that appear before the matching subtree and the previous match. ++ for (; prev_frame_subtree_index < reused_subtree_index; ++ prev_frame_subtree_index++) { ++ if (!prev_subtree_is_attached_to_root[prev_frame_subtree_index]) { ++ continue; ++ } ++ VisualSubtree* subtree = ++ new_visual_subtrees[subtree_index_to_overlay[prev_frame_subtree_index] ++ .value()] ++ .get(); ++ DetachSubtreeFromRoot(subtree); ++ prev_subtree_is_attached_to_root[prev_frame_subtree_index] = false; ++ needs_commit = true; ++ } ++ if (reused_subtree_index == prev_frame_subtree_index) { ++ ++prev_frame_subtree_index; ++ } ++ } ++ return needs_commit; ++} ++ ++void DCLayerTree::VisualTree::DetachSubtreeFromRoot(VisualSubtree* subtree) { ++ HRESULT hr = dc_layer_tree_->dcomp_root_visual_.Get()->RemoveVisual( ++ subtree->container_visual()); ++ CHECK_EQ(hr, S_OK); ++} ++ ++DCLayerTree::VisualTree::VisualSubtree* ++DCLayerTree::VisualTree::GetFrontMostVisualSubtreeForTesting() const { ++ CHECK_IS_TEST(); ++ return visual_subtrees_.back().get(); ++} ++ ++base::expected DCLayerTree::CommitAndClearPendingOverlays( ++ std::vector overlays) { ++ TRACE_EVENT1("gpu", "DCLayerTree::CommitAndClearPendingOverlays", ++ "num_overlays", overlays.size()); ++ ++ base::ScopedUmaHistogramTimer scoped_timer( ++ "GPU.DirectComposition.CommitAndClearPendingOverlaysDuration", ++ base::ScopedUmaHistogramTimer::ScopedHistogramTiming::kMicrosecondTimes); ++ ++ // If delegated ink metadata exists for this frame, attempt to make an overlay ++ // so that a visual subtree can be created for a delegated ink visual. ++ // TODO(crbug.com/335553727) Consider clearing ink_renderer_ when there's no ++ // metadata. ++ if (pending_delegated_ink_metadata_) { ++ Microsoft::WRL::ComPtr root_swap_chain; ++ auto it = std::ranges::find(overlays, 0, &DCLayerOverlayParams::z_order); ++ if (it != overlays.end() && (*it).overlay_image) { ++ Microsoft::WRL::ComPtr root_visual_content = ++ (*it).overlay_image->dcomp_visual_content(); ++ CHECK(root_visual_content); ++ HRESULT hr = root_visual_content.As(&root_swap_chain); ++ if (hr == E_NOINTERFACE) { ++ DCHECK_EQ(root_swap_chain, nullptr); ++ } else { ++ CHECK_EQ(S_OK, hr); ++ CHECK_NE(root_swap_chain, nullptr); ++ } ++ } ++ ++ if (auto ink_layer = ink_renderer_->MakeDelegatedInkOverlay( ++ dcomp_device_.Get(), root_swap_chain.Get(), ++ std::move(pending_delegated_ink_metadata_))) { ++ overlays.push_back(std::move(*ink_layer)); ++ } ++ } ++ ++ // Sort layers by z-order. ++ std::ranges::sort(overlays, std::ranges::less(), ++ &DCLayerOverlayParams::z_order); ++ ++ // Move unused video swap chains to `unused_video_swap_chains` for potential ++ // reuse (when adjacent frames have a videos that have different layer IDs ++ // which can sometimes happen when a video's src changes), then cleanup. ++ decltype(video_swap_chains_) unused_video_swap_chains; ++ { ++ // Move all video swap chains to `unused_video_swap_chains` and the move ++ // ones that are in the current frame back into `video_swap_chains_`. ++ unused_video_swap_chains = std::move(video_swap_chains_); ++ ++ // We may be moving up to all of the swap chains back. ++ video_swap_chains_.reserve(unused_video_swap_chains.size()); ++ ++ size_t num_swap_chain_presenters = 0; ++ for (auto& overlay : overlays) { ++ if (NeedSwapChainPresenter(overlay)) { ++ auto reused_video_swap_chain_it = ++ unused_video_swap_chains.find(overlay.layer_id); ++ if (reused_video_swap_chain_it != unused_video_swap_chains.end()) { ++ video_swap_chains_.insert(std::move(*reused_video_swap_chain_it)); ++ unused_video_swap_chains.erase(reused_video_swap_chain_it); ++ } ++ num_swap_chain_presenters++; ++ } ++ } ++ ++ // If there are more videos this frame, reserve enough space for them. ++ video_swap_chains_.reserve(num_swap_chain_presenters); ++ } ++ ++ bool did_update_primary_plane_damage = false; ++ bool need_background_layer = false; ++ ++ // Populate |overlays| with information required to build dcomp visual tree. ++ for (auto it = overlays.begin(); it != overlays.end(); it++) { ++ auto& overlay = *it; ++ if (NeedSwapChainPresenter(overlay)) { ++ // Present to swap chain and update the overlay with transform, clip ++ // and content. ++ auto& video_swap_chain = video_swap_chains_[overlay.layer_id]; ++ if (!video_swap_chain) { ++ // TODO(sunnyps): Try to find a matching swap chain based on size, type ++ // of swap chain, gl image, etc. ++ auto unused_video_swap_chain_it = unused_video_swap_chains.begin(); ++ if (unused_video_swap_chain_it != unused_video_swap_chains.end()) { ++ video_swap_chain = std::move(unused_video_swap_chain_it->second); ++ unused_video_swap_chains.erase(unused_video_swap_chain_it); ++ } else { ++ video_swap_chain = std::make_unique( ++ this, d3d11_device_, dcomp_device_); ++ } ++ } ++ gfx::Transform transform; ++ gfx::Rect clip_rect; ++ if (!video_swap_chain->PresentToSwapChain(overlay, &transform, ++ &clip_rect)) { ++ DLOG(ERROR) << "PresentToSwapChain failed"; ++ return base::unexpected( ++ CommitError{CommitError::Reason::kPresentToSwapChain}); ++ } ++ ++ gfx::Size content_size = video_swap_chain->content_size(); ++ ++ if (base::FeatureList::IsEnabled( ++ features::kEarlyFullScreenVideoOptimization)) { ++ if (overlay.video_params.is_full_screen_video) { ++ const gfx::Size monitor_size = GetMonitorSizeForWindow(window()); ++ if (video_swap_chain->TryDisablePrimaryPlane(monitor_size, overlay)) { ++ // If we successfully disable the primary plane, it means DWM's ++ // internal swap chain is now the size of the monitor. In this case ++ // we want to just treat it as an unscaled image that completely ++ // fills the screen. ++ overlay.transform = gfx::Transform(); ++ overlay.quad_rect = gfx::Rect(monitor_size); ++ if (overlay.clip_rect.has_value()) { ++ overlay.clip_rect = gfx::Rect(monitor_size); ++ } ++ content_size = monitor_size; ++ } else { ++ need_background_layer = true; ++ } ++ } ++ } else { ++ CHECK(!overlay.video_params.is_full_screen_video); ++ ++ // |SwapChainPresenter| may have changed the size of the overlay's quad ++ // rect, e.g. to present to a swap chain exactly the size of the display ++ // rect when the source video is larger. ++ overlay.transform = transform; ++ overlay.quad_rect.set_size(video_swap_chain->content_size()); ++ if (overlay.clip_rect.has_value()) { ++ overlay.clip_rect = clip_rect; ++ } ++ } ++ ++ overlay.overlay_image = DCLayerOverlayImage( ++ content_size, video_swap_chain->FinishPresentToSwapChain()); ++ overlay.content_rect = gfx::RectF(content_size); ++ ++ if (tint_video_layer_) { ++ SkColor4f tint_color; ++ switch (video_swap_chain->GetLastPresentationMode()) { ++ case SwapChainPresenter::PresentationMode::kDecodeSwapChain: ++ tint_color = SkColors::kBlue; ++ break; ++ case SwapChainPresenter::PresentationMode::kVpBlt: ++ tint_color = SkColors::kMagenta; ++ break; ++ case SwapChainPresenter::PresentationMode::kVpBltWithStagingTexture: ++ tint_color = SkColor4f(1.0, 0.5, 0.0, 1.0); ++ break; ++ case SwapChainPresenter::PresentationMode::kMfSurfaceProxy: ++ tint_color = SkColors::kGreen; ++ break; ++ } ++ ++ DCLayerOverlayParams tint_overlay; ++ tint_overlay.quad_rect = it->quad_rect; ++ tint_overlay.transform = it->transform; ++ tint_overlay.clip_rect = it->clip_rect; ++ tint_overlay.rounded_corner_bounds = it->rounded_corner_bounds; ++ tint_overlay.opacity = 0.25; ++ tint_overlay.background_color = tint_color; ++ tint_overlay.layer_id = ++ it->layer_id.MakeForChildOfSharedQuadStateLayer(1); ++ it = overlays.insert(std::next(it), std::move(tint_overlay)); ++ // Do not access `overlay` after this point since it is invalidated. ++ } ++ } else if (primary_plane_surface_) { ++ // If supported, "present" the primary plane buffer to a surface with ++ // incremental damage. ++ if (overlay.z_order == 0 && overlay.overlay_image) { ++ if (Microsoft::WRL::ComPtr dcomp_texture; ++ SUCCEEDED(Microsoft::WRL::ComPtr( ++ overlay.overlay_image->dcomp_visual_content()) ++ .As(&dcomp_texture))) { ++ DVLOG(1) << "Set primary_plane_surface_ damage: " ++ << overlay.damage_rect.ToString(); ++ ++ const RECT damage_rect = ++ gfx::ToEnclosingRect(overlay.damage_rect).ToRECT(); ++ HRESULT hr = primary_plane_surface_->SetTexture(dcomp_texture.Get(), ++ &damage_rect, 1); ++ CHECK_EQ(hr, S_OK); ++ ++ Microsoft::WRL::ComPtr primary_plane_surface_unknown; ++ primary_plane_surface_.As(&primary_plane_surface_unknown); ++ overlay.overlay_image = DCLayerOverlayImage( ++ overlay.overlay_image->size(), primary_plane_surface_unknown, ++ primary_plane_surface_serial_++); ++ did_update_primary_plane_damage = true; ++ } else { ++ // Primary plane is not backed by `BufferQueue`. ++ } ++ } else { ++ // Overlay is not the primary plane. ++ } ++ } ++ } ++ ++ if (primary_plane_surface_ && !did_update_primary_plane_damage) { ++ DVLOG(1) << "Reset primary_plane_surface_ damage."; ++ primary_plane_surface_->SetTexture(nullptr); ++ primary_plane_surface_serial_ = 0; ++ } ++ ++ if (need_background_layer) { ++ // If we failed to disable the desktop plane, we need to manually ++ // add a solid color layer to act as the video background mat. ++ DCLayerOverlayParams background_mat; ++ background_mat.quad_rect = gfx::Rect(GetMonitorSizeForWindow(window())); ++ background_mat.z_order = INT_MIN; ++ background_mat.background_color = SkColors::kBlack; ++ background_mat.layer_id = gfx::OverlayLayerId::MakeVizInternal( ++ gfx::OverlayLayerId::VizInternalId::kBackgroundColorLayer); ++ overlays.insert(overlays.begin(), std::move(background_mat)); ++ } ++ ++ if (!visual_tree_) { ++ visual_tree_ = std::make_unique(this); ++ } ++ ++ const base::expected status = ++ visual_tree_->BuildTree(overlays); ++ ++ ink_renderer_->ReportPointsDrawn(); ++ ++ // Clean up excess surfaces so the pool will not grow unbounded. ++ solid_color_surface_pool_->TrimAfterCommit(); ++ ++ return status; ++} ++ ++bool DCLayerTree::SupportsDelegatedInk() { ++ return ink_renderer_->DelegatedInkIsSupported(dcomp_device_); ++} ++ ++void DCLayerTree::SetDelegatedInkTrailStartPoint( ++ std::unique_ptr metadata) { ++ DCHECK(SupportsDelegatedInk()); ++ pending_delegated_ink_metadata_ = std::move(metadata); ++} ++ ++void DCLayerTree::InitDelegatedInkPointRendererReceiver( ++ mojo::PendingReceiver ++ pending_receiver) { ++ DCHECK(SupportsDelegatedInk()); ++ ++ ink_renderer_->InitMessagePipeline(std::move(pending_receiver)); ++} ++ ++// Return properties of non root swap chain at given index. ++void DCLayerTree::GetSwapChainVisualInfoForTesting( ++ const gfx::OverlayLayerId& layer_id, ++ gfx::Transform* out_transform, ++ gfx::Point* out_offset, ++ gfx::Rect* out_clip_rect) const { ++ CHECK_IS_TEST(); ++ visual_tree_->GetSwapChainVisualInfoForTesting( // IN-TEST ++ layer_id, out_transform, out_offset, out_clip_rect); ++} ++ ++size_t DCLayerTree::GetSwapChainPresenterCountForTesting() const { ++ CHECK_IS_TEST(); ++ return video_swap_chains_.size(); ++} ++ ++size_t DCLayerTree::GetDcompLayerCountForTesting() const { ++ CHECK_IS_TEST(); ++ return visual_tree_->GetDcompLayerCountForTesting(); // IN-TEST ++} ++ ++IDCompositionVisual2* DCLayerTree::GetContentVisualForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ return visual_tree_->GetContentVisualForTesting(layer_id); // IN-TEST ++} ++ ++IDCompositionSurface* DCLayerTree::GetBackgroundColorSurfaceForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ return visual_tree_->GetBackgroundColorSurfaceForTesting( // IN-TEST ++ layer_id); ++} ++ ++size_t DCLayerTree::GetNumSurfacesInPoolForTesting() const { ++ CHECK_IS_TEST(); ++ return solid_color_surface_pool_ ++ ->GetNumSurfacesInPoolForTesting(); // IN-TEST ++} ++ ++#if DCHECK_IS_ON() ++bool DCLayerTree::DcompVisualContentChangedFromPreviousFrameForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ return visual_tree_ ++ ->DcompVisualContentChangedFromPreviousFrameForTesting( // IN-TEST ++ layer_id); ++} ++#endif // DCHECK_IS_ON() ++ ++const DCLayerTree::VisualTree::VisualSubtree* ++DCLayerTree::VisualTree::GetSubtreeFromLayerIdForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ const auto it = std::ranges::find(layer_ids_for_testing_, layer_id); ++ CHECK(it != layer_ids_for_testing_.end()); ++ const size_t index = ++ std::ranges::distance(layer_ids_for_testing_.begin(), it); ++ return visual_subtrees_.at(index).get(); ++} ++ ++// Return properties of non root swap chain at given index. ++void DCLayerTree::VisualTree::GetSwapChainVisualInfoForTesting( ++ const gfx::OverlayLayerId& layer_id, ++ gfx::Transform* out_transform, ++ gfx::Point* out_offset, ++ gfx::Rect* out_clip_rect) const { ++ CHECK_IS_TEST(); ++ return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST ++ ->GetSwapChainVisualInfoForTesting(out_transform, out_offset, // IN-TEST ++ out_clip_rect); ++} ++ ++size_t DCLayerTree::VisualTree::GetDcompLayerCountForTesting() const { ++ CHECK_IS_TEST(); ++ return visual_subtrees_.size(); ++} ++ ++IDCompositionVisual2* DCLayerTree::VisualTree::GetContentVisualForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST ++ ->container_visual(); ++} ++ ++IDCompositionSurface* ++DCLayerTree::VisualTree::GetBackgroundColorSurfaceForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST ++ ->background_color_surface_for_testing(); // IN-TEST ++} ++ ++#if DCHECK_IS_ON() ++bool DCLayerTree::VisualTree:: ++ DcompVisualContentChangedFromPreviousFrameForTesting( ++ const gfx::OverlayLayerId& layer_id) const { ++ CHECK_IS_TEST(); ++ return GetSubtreeFromLayerIdForTesting(layer_id) // IN-TEST ++ ->DcompVisualContentChangedFromPreviousFrameForTesting(); // IN-TEST ++} ++#endif // DCHECK_IS_ON() ++ ++} // namespace gl +diff --git a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc +--- a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc 2026-06-16 10:01:57.700928200 +0200 ++++ b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc 2026-06-16 10:06:04.892198300 +0200 +@@ -1,555 +1,555 @@ +-// Copyright 2024 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#include "ui/gl/delegated_ink_point_renderer_gpu.h" +- +-#include +-#include +-#include +-#include +- +-#include "base/debug/dump_without_crashing.h" +-#include "base/metrics/histogram_functions.h" +-#include "base/metrics/histogram_macros.h" +-#include "base/time/time.h" +-#include "base/trace_event/trace_event.h" +-#include "base/win/windows_version.h" +-#include "ui/gfx/geometry/rect_conversions.h" +- +-namespace gl { +- +-namespace { +- +-// Maximum number of pointer ids that will be considered for drawing. Number is +-// chosen arbitrarily, as it seems unlikely that the total number of input +-// sources using delegated ink trails would exceed 10, but it can be raised if +-// the need arises. +-constexpr uint64_t kMaximumNumberOfPointerIds = 10; +- +-// Note that this returns true if the HRESULT is anything other than S_OK, +-// meaning that it returns true when an event is traced (because of a +-// failure). +-bool TraceEventOnFailure(HRESULT hr, const char* name) { +- if (SUCCEEDED(hr)) { +- return false; +- } +- +- TRACE_EVENT_INSTANT1("delegated_ink_trails", name, TRACE_EVENT_SCOPE_THREAD, +- "hr", hr); +- return true; +-} +- +-} // namespace +- +-DelegatedInkPointRendererGpu::DelegatedInkPointRendererGpu() = default; +-DelegatedInkPointRendererGpu::~DelegatedInkPointRendererGpu() = default; +- +-void DelegatedInkPointRendererGpu::InitMessagePipeline( +- mojo::PendingReceiver +- pending_receiver) { +- // The remote end of this pipeline exists on a per-tab basis, so if tab A +- // is using the feature and then tab B starts trying to use it, a new +- // PendingReceiver will arrive here while |receiver_| is still bound to the +- // remote in tab A. Because of this possibility, we unconditionally reset +- // |receiver_| before trying to bind anything here. This is fine to do +- // because we only ever need to actively receive points from one tab as only +- // one tab can be in the foreground and actively inking at a time. +- receiver_.reset(); +- +- receiver_.Bind(std::move(pending_receiver)); +-} +- +-bool DelegatedInkPointRendererGpu::Initialize( +- IDCompositionDevice2* dcomp_device2, +- IDXGISwapChain1* root_swap_chain) { +-#if !defined(COMPILER_GCC) +- if (swap_chain_ == root_swap_chain && delegated_ink_trail_) { +- return true; +- } +- +- swap_chain_ = root_swap_chain; +- +- if (!ink_trail_device_ && +- TraceEventOnFailure( +- dcomp_device2->QueryInterface(IID_PPV_ARGS(&ink_trail_device_)), +- "DelegatedInkPointRendererGpu::Initialize - " +- "DCompDevice2 as InkTrailDevice failed")) { +- return false; +- } +- +- if (TraceEventOnFailure( +- ink_trail_device_->CreateDelegatedInkTrailForSwapChain( +- root_swap_chain, &delegated_ink_trail_), +- "DelegatedInkPointRendererGpu::Initialize - Failed to create " +- "delegated ink trail.")) { +- return false; +- } +- +- // Start a new trail if the renderer needs to be (re)initialized. +- force_new_ink_trail_ = true; +- +- return true; +-#else +- return false; +-#endif +-} +- +-bool DelegatedInkPointRendererGpu::DelegatedInkIsSupported( +- const Microsoft::WRL::ComPtr& dcomp_device) const { +- // Issues related to the delegated ink trail API, such as flickering in the +- // top 3rd of the screen are addressed in 24H2. +- if (base::win::GetVersion() < base::win::Version::WIN11_24H2) { +- return false; +- } +- +-#if !defined(COMPILER_GCC) +- Microsoft::WRL::ComPtr ink_trail_device; +- HRESULT hr = dcomp_device.As(&ink_trail_device); +- return hr == S_OK; +-#endif +-} +- +-uint64_t DelegatedInkPointRendererGpu::GetMaximumNumberOfPointerIdsForTesting() +- const { +- CHECK_IS_TEST(); +- return kMaximumNumberOfPointerIds; +-} +- +-void DelegatedInkPointRendererGpu::ReportPointsDrawn() { +- const base::TimeTicks now = base::TimeTicks::Now(); +- // If there is a point that matches the metadata and the histogram has not yet +- // been fired, then this is the first frame that the metadata point will be +- // painted via the JS API. +- if (metadata_paint_time_.has_value()) { +- base::UmaHistogramCustomTimes( +- "Renderer.DelegatedInkTrail.OS.TimeFromDelegatedInkToApiPaint", +- now - metadata_paint_time_.value(), base::Milliseconds(1), +- base::Seconds(1), 50); +- metadata_paint_time_ = std::nullopt; +- } +- +- if (points_to_be_drawn_.empty()) { +- return; +- } +- +- CHECK(metadata_); +- base::TimeTicks most_recent_timestamp = base::TimeTicks::Min(); +- for (const auto& point : points_to_be_drawn_) { +- UMA_HISTOGRAM_TIMES("Renderer.DelegatedInkTrail.OS.TimeToDrawPointsMillis", +- now - point.timestamp()); +- most_recent_timestamp = std::max(point.timestamp(), most_recent_timestamp); +- +- // Update the point's `paint_timestamp` if this is the first time it is +- // being painted so that it can later be compared with the metadata's first +- // paint time. +- DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- delegated_ink_points_[point.pointer_id()]; +- auto trail_point_it = token_map.find(point); +- if (trail_point_it != token_map.end()) { +- gfx::DelegatedInkPoint& trail_point = trail_point_it->first; +- if (!trail_point.paint_timestamp().has_value()) { +- trail_point.set_paint_timestamp(now); +- } +- } +- } +- +- CHECK_GE(most_recent_timestamp, metadata_->timestamp()); +- base::UmaHistogramTimes( +- "Renderer.DelegatedInkTrail.LatencyImprovement.OS.WithoutPrediction", +- most_recent_timestamp - metadata_->timestamp()); +- base::UmaHistogramCounts100( +- "Renderer.DelegatedInkTrail.OS.OutstandingPointsToDraw", +- points_to_be_drawn_.size()); +- +- points_to_be_drawn_.clear(); +-} +- +-void DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint( +- std::unique_ptr metadata) { +-#if !defined(COMPILER_GCC) +- TRACE_EVENT_WITH_FLOW1( +- "delegated_ink_trails", +- "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint", +- TRACE_ID_GLOBAL(metadata->trace_id()), TRACE_EVENT_FLAG_FLOW_IN, +- "metadata", metadata->ToString()); +- +- DCHECK(delegated_ink_trail_); +- +- // If certain conditions are met, we can simply erase the trail up to the +- // point matching |metadata|, instead of starting a new trail. These +- // conditions include: +- // 1. A trail has already been started, meaning that |metadata_| and +- // |pointer_id_| exist. +- // 2. The current |metadata_| and |metadata| both have the same color, so +- // the color of the trail does not need to change. +- // 3. |force_new_ink_trail_| is false - renderer has not been +- // re-initialized. +- // (continued below) +- if (!force_new_ink_trail_ && metadata_ && +- metadata->color() == metadata_->color() && pointer_id_) { +- DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- delegated_ink_points_[pointer_id_.value()]; +- auto point_matching_metadata_it = token_map.find( +- gfx::DelegatedInkPoint(metadata->point(), metadata->timestamp())); +- // (continued from above) +- // 4. We have a DelegatedInkPoint with a timestamp equal to or greater +- // than |metadata|'s timestamp in the token map associated with +- // |pointer_id_|. +- // (continued below) +- if (point_matching_metadata_it != token_map.end()) { +- gfx::DelegatedInkPoint point_matching_metadata = +- point_matching_metadata_it->first; +- std::optional token = point_matching_metadata_it->second; +- // (continued from above) +- // 5. The DelegatedInkPoint retrieved above matches |metadata| - this +- // means that the timestamp is an exact match and the point is +- // acceptably close. +- // 6. The token associated with this DelegatedInkPoint is valid, +- // meaning that the point has previously been drawn as part of a +- // trail. +- // +- // If all of these conditions are met, then we can attempt to just +- // remove points from the trail instead of starting a new trail +- // altogether. +- if (point_matching_metadata.MatchesDelegatedInkMetadata(metadata.get()) && +- token) { +- metadata_paint_time_ = point_matching_metadata.paint_timestamp(); +- bool remove_trail_points_failed = TraceEventOnFailure( +- delegated_ink_trail_->RemoveTrailPoints(token.value()), +- "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint - " +- "Failed to remove trail points."); +- if (!remove_trail_points_failed) { +- // Remove all points up to and including the point that matches +- // |metadata|. No need to hold on to the point that matches metadata +- // because we've already added it to AddTrailPoints previously, and +- // the next valid |metadata| is guaranteed to be after it. +- token_map.erase(token_map.begin(), +- std::next(point_matching_metadata_it)); +- // Ensure that points that are being removed from the trail are not +- // being reported as painted in `ReportPointsDrawn()`. +- std::erase_if(points_to_be_drawn_, +- [&](const gfx::DelegatedInkPoint& x) { +- return metadata->timestamp() > x.timestamp(); +- }); +- metadata_ = std::move(metadata); +- return; +- } +- } +- } +- } +- +- D2D1_COLOR_F d2d1_color; +- const float kMaxRGBAValue = 255.f; +- d2d1_color.a = SkColorGetA(metadata->color()) / kMaxRGBAValue; +- d2d1_color.r = SkColorGetR(metadata->color()) / kMaxRGBAValue; +- d2d1_color.g = SkColorGetG(metadata->color()) / kMaxRGBAValue; +- d2d1_color.b = SkColorGetB(metadata->color()) / kMaxRGBAValue; +- if (TraceEventOnFailure( +- delegated_ink_trail_->StartNewTrail(d2d1_color), +- "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint - " +- "Failed to start a new trail.")) { +- return; +- } +- +- points_to_be_drawn_.clear(); +- wait_for_new_trail_to_draw_ = false; +- metadata_ = std::move(metadata); +- DrawSavedTrailPoints(); +- force_new_ink_trail_ = false; +-#endif +-} +- +-void DelegatedInkPointRendererGpu::StoreDelegatedInkPoint( +- const gfx::DelegatedInkPoint& point) { +- TRACE_EVENT_WITH_FLOW1("delegated_ink_trails", +- "DelegatedInkPointRendererGpu::StoreDelegatedInkPoint", +- TRACE_ID_GLOBAL(point.trace_id()), +- TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, +- "point", point.ToString()); +- +- const int32_t pointer_id = point.pointer_id(); +- +- DCHECK(delegated_ink_points_.find(pointer_id) == +- delegated_ink_points_.end() || +- delegated_ink_points_[pointer_id].empty() || +- point.timestamp() > +- delegated_ink_points_[pointer_id].rbegin()->first.timestamp()); +- +- if (metadata_ && point.timestamp() < metadata_->timestamp()) { +- return; +- } +- +- DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- delegated_ink_points_[pointer_id]; +- // Always save the point so that it can be drawn later. This allows points +- // that arrive before the first metadata makes it here to be drawn after +- // StartNewTrail is called. If we get to the maximum number of points that +- // we will store, start erasing the oldest ones first. This matches what the +- // OS compositor does internally when it hits the max number of points. +- if (token_map.size() == gfx::kMaximumNumberOfDelegatedInkPoints) { +- token_map.erase(token_map.begin()); +- } +- token_map.insert({point, std::nullopt}); +- +- EraseExcessPointerIds(); +- +- if (pointer_id_ && pointer_id_.value() == pointer_id) { +- DrawDelegatedInkPoint(point); +- } else if (!pointer_id_ && metadata_) { +- DrawSavedTrailPoints(); +- } +-} +- +-void DelegatedInkPointRendererGpu::ResetPrediction() { +- // Don't reset |metadata_| here so that RemoveTrailPoints() can continue +- // to be called as the final metadata(s) arrive. +- // TODO(crbug.com/40118757): Start predicting points and reset it here. +- wait_for_new_trail_to_draw_ = true; +-} +- +-uint64_t DelegatedInkPointRendererGpu::InkTrailTokenCountForTesting() const { +- CHECK_IS_TEST(); +- DCHECK_EQ(delegated_ink_points_.size(), 1u); +- uint64_t valid_tokens = 0u; +- for (const auto& it : delegated_ink_points_.begin()->second) { +- if (it.second) { +- valid_tokens++; +- } +- } +- return valid_tokens; +-} +- +-bool DelegatedInkPointRendererGpu::CheckForPointerIdForTesting( +- int32_t pointer_id) const { +- CHECK_IS_TEST(); +- return delegated_ink_points_.find(pointer_id) != delegated_ink_points_.end(); +-} +- +-void DelegatedInkPointRendererGpu::EraseExcessPointerIds() { +- auto token_map_it = delegated_ink_points_.begin(); +- while (token_map_it != delegated_ink_points_.end()) { +- const DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- token_map_it->second; +- if (token_map.empty()) { +- token_map_it = delegated_ink_points_.erase(token_map_it); +- } else { +- token_map_it++; +- } +- } +- +- // In order to get to the maximum pointer id limit, sometimes one token map +- // will need to be removed even if it has a valid DelegatedInkPoint. In this +- // case, we'll remove the token map that has gone the longest without +- // receiving a new point - similar to a least recently used eviction policy. +- // This would also mean that the token map that would result in the smallest +- // latency improvement if it were drawn is being removed. The only exception +- // to this is if the above heuristic would result in the token map that has +- // a pointer id matching |pointer_id_| being removed. Since |pointer_id_| +- // matches the trail that is currently being drawn to the screen, we prefer +- // to save it so we can try to continue that trail. In this case, just +- // remove the token map with the oldest new point that is not currently +- // being drawn. +- if (delegated_ink_points_.size() > kMaximumNumberOfPointerIds) { +- std::vector> +- earliest_time_and_pointer_id; +- for (const auto& it : delegated_ink_points_) { +- earliest_time_and_pointer_id.emplace_back( +- it.second.rbegin()->first.timestamp(), it.first); +- } +- +- std::sort(earliest_time_and_pointer_id.begin(), +- earliest_time_and_pointer_id.end()); +- +- uint64_t pointer_id_to_remove = 0; +- while (pointer_id_to_remove < earliest_time_and_pointer_id.size() && +- pointer_id_ && +- earliest_time_and_pointer_id[pointer_id_to_remove].second == +- pointer_id_.value()) { +- pointer_id_to_remove++; +- } +- +- CHECK_LT(pointer_id_to_remove, earliest_time_and_pointer_id.size()); +- delegated_ink_points_.erase( +- earliest_time_and_pointer_id[pointer_id_to_remove].second); +- } +- +- DCHECK_LE(delegated_ink_points_.size(), kMaximumNumberOfPointerIds); +-} +- +-std::optional DelegatedInkPointRendererGpu::GetPointerIdForMetadata() { +- if (pointer_id_ && delegated_ink_points_.find(pointer_id_.value()) != +- delegated_ink_points_.end()) { +- // Since we remove all DelegatedInkPoints with timestamp before +- // |metadata_|'s before calling GetPointerIdForMetadata(), we know we can +- // just grab the first DelegatedInkPoint matching |pointer_id_|. +- const gfx::DelegatedInkPoint& point_matching_metadata = +- delegated_ink_points_[pointer_id_.value()].begin()->first; +- if (point_matching_metadata.MatchesDelegatedInkMetadata(metadata_.get())) { +- return pointer_id_; +- } +- } +- +- pointer_id_ = std::nullopt; +- +- for (auto token_map_it = delegated_ink_points_.begin(); +- token_map_it != delegated_ink_points_.end() && !pointer_id_; +- ++token_map_it) { +- int32_t potential_pointer_id = token_map_it->first; +- const DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- token_map_it->second; +- DCHECK(!token_map.empty()); +- if (token_map.begin()->first.MatchesDelegatedInkMetadata(metadata_.get())) { +- DCHECK(!pointer_id_); +- pointer_id_ = potential_pointer_id; +- } +- } +- +- return pointer_id_; +-} +- +-void DelegatedInkPointRendererGpu::DrawSavedTrailPoints() { +- DCHECK(metadata_); +- TRACE_EVENT0("delegated_ink_trails", "DrawSavedTrailPoints"); +- +- // Remove all points that have a timestamp earlier than |metadata_|'s, since +- // we know that we won't need to draw them. This is subtly different than +- // the erasing done in SetDelegatedInkTrailStartPoint() - there the point +- // matching the metadata is removed, here it is not. The reason for this +- // difference is because there we know that it matches |metadata_| and +- // therefore it cannot possibly be drawn again, so it is safe to remove. +- // Here however, we are erasing all points up to, but not including, the +- // first point with a timestamp equal to or greater than |metadata_|'s so +- // that we can then check that point to confirm that it matches |metadata_| +- // before deciding to draw an ink trail. The point could then be erased +- // after it is successfully checked against |metadata_| and drawn, it just +- // isn't for simplicity's sake. +- for (auto& it : delegated_ink_points_) { +- DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- it.second; +- token_map.erase(token_map.begin(), +- token_map.lower_bound(gfx::DelegatedInkPoint( +- metadata_->point(), metadata_->timestamp()))); +- } +- +- EraseExcessPointerIds(); +- +- std::optional pointer_id = GetPointerIdForMetadata(); +- +- // Now, the very first point must match |metadata_|, and as long as it does +- // we can continue to draw everything else. If at any point something can't +- // or fails to draw though, don't attempt to draw anything after it so that +- // the trail can match the user's actual stroke. +- if (pointer_id && delegated_ink_points_.find(pointer_id.value()) != +- delegated_ink_points_.end()) { +- DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = +- delegated_ink_points_[pointer_id.value()]; +- if (!token_map.empty() && +- token_map.begin()->first.MatchesDelegatedInkMetadata(metadata_.get())) { +- for (const auto& it : token_map) { +- if (!DrawDelegatedInkPoint(it.first)) { +- break; +- } +- } +- } +- } else { +- TRACE_EVENT_INSTANT0("delegated_ink_trails", +- "DrawSavedTrailPoints failed - no pointer id", +- TRACE_EVENT_SCOPE_THREAD); +- } +-} +- +-std::optional +-DelegatedInkPointRendererGpu::MakeDelegatedInkOverlay( +- IDCompositionDevice2* dcomp_device2, +- IDXGISwapChain1* root_swap_chain, +- std::unique_ptr metadata) { +- if (!Initialize(dcomp_device2, root_swap_chain)) { +- return std::nullopt; +- } +- DCLayerOverlayParams ink_layer; +- // Ink trail should be rendered on top of all content. +- ink_layer.z_order = INT_MAX; +- const gfx::Rect presentation_rect = +- gfx::ToEnclosedRect(metadata->presentation_area()); +- const gfx::Size presentation_area_enclosed_size = +- gfx::Size(presentation_rect.width(), presentation_rect.height()); +- ink_layer.quad_rect = gfx::Rect(presentation_area_enclosed_size); +- ink_layer.content_rect = gfx::RectF(presentation_area_enclosed_size); +- // If (0,0) of a visual is clipped out, it can result in delegated ink not +- // being drawn at all. This is more common when DComp Surfaces are enabled, +- // but doesn't negatively impact things when the swapchain is used, so just +- // offset the visual instead of clipping the top left corner in all cases. +- ink_layer.clip_rect = std::make_optional( +- 0, 0, presentation_rect.right(), presentation_rect.bottom()); +- ink_layer.transform = gfx::Transform::MakeTranslation( +- metadata->presentation_area().OffsetFromOrigin()); +-#if !defined(COMPILER_GCC) +- ink_layer.overlay_image = DCLayerOverlayImage(presentation_area_enclosed_size, +- delegated_ink_trail_); +-#endif +- ink_layer.layer_id = gfx::OverlayLayerId::MakeVizInternal( +- gfx::OverlayLayerId::VizInternalId::kDelegatedInkTrail); +- SetDelegatedInkTrailStartPoint(std::move(metadata)); +- return ink_layer; +-} +- +-bool DelegatedInkPointRendererGpu::DrawDelegatedInkPoint( +- const gfx::DelegatedInkPoint& point) { +- // Always wait for a new trail to be started before attempting to draw +- // anything, even if |metadata_| exists. +- if (wait_for_new_trail_to_draw_) { +- return false; +- } +- +- DCHECK(metadata_); +- if (!metadata_->presentation_area().Contains(point.point())) { +- return false; +- } +- +- DCHECK(delegated_ink_trail_); +- +- DCompositionInkTrailPoint ink_point; +- ink_point.radius = metadata_->diameter() / 2.f; +- // In order to account for the visual offset, the point must be offset in +- // the opposite direction. +- ink_point.x = point.point().x() - metadata_->presentation_area().x(); +- ink_point.y = point.point().y() - metadata_->presentation_area().y(); +- unsigned int token; +- +- // AddTrailPoints() can accept and draw more than one InkTrailPoint per +- // call. However, all the points get lumped together in the one token then, +- // which means that they can only be removed all together. This may be fine +- // in some scenarios, but in the vast majority of cases we will need to +- // remove one point at a time, so we choose to only add one InkTrailPoint at +- // a time. +- if (TraceEventOnFailure( +- delegated_ink_trail_->AddTrailPoints(&ink_point, +- /*inkPointsCount*/ 1, &token), +- "DelegatedInkPointRendererGpu::DrawDelegatedInkPoint - Failed to " +- "add trail point")) { +- // TODO(crbug.com/40118757): Start predicting points. +- return false; +- } +- +- TRACE_EVENT_WITH_FLOW1("delegated_ink_trails", +- "DelegatedInkPointRendererGpu::DrawDelegatedInkPoint " +- "- Point added to trail", +- TRACE_ID_GLOBAL(point.trace_id()), +- TRACE_EVENT_FLAG_FLOW_IN, "point", point.ToString()); +- +- if (point.timestamp().IsHighResolution() && +- point.timestamp().IsConsistentAcrossProcesses()) { +- points_to_be_drawn_.push_back(point); +- } +- delegated_ink_points_[point.pointer_id()][point] = token; +- return true; +-} +- +-void DelegatedInkPointRendererGpu::InitializeForTesting( +- IDCompositionDevice2* dcomp_device2) { +- CHECK_IS_TEST(); +- Initialize(dcomp_device2, nullptr); +-} +- +-} // namespace gl ++// Copyright 2024 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "ui/gl/delegated_ink_point_renderer_gpu.h" ++ ++#include ++#include ++#include ++#include ++ ++#include "base/debug/dump_without_crashing.h" ++#include "base/metrics/histogram_functions.h" ++#include "base/metrics/histogram_macros.h" ++#include "base/time/time.h" ++#include "base/trace_event/trace_event.h" ++#include "base/win/windows_version.h" ++#include "ui/gfx/geometry/rect_conversions.h" ++ ++namespace gl { ++ ++namespace { ++ ++// Maximum number of pointer ids that will be considered for drawing. Number is ++// chosen arbitrarily, as it seems unlikely that the total number of input ++// sources using delegated ink trails would exceed 10, but it can be raised if ++// the need arises. ++constexpr uint64_t kMaximumNumberOfPointerIds = 10; ++ ++// Note that this returns true if the HRESULT is anything other than S_OK, ++// meaning that it returns true when an event is traced (because of a ++// failure). ++bool TraceEventOnFailure(HRESULT hr, const char* name) { ++ if (SUCCEEDED(hr)) { ++ return false; ++ } ++ ++ TRACE_EVENT_INSTANT1("delegated_ink_trails", name, TRACE_EVENT_SCOPE_THREAD, ++ "hr", hr); ++ return true; ++} ++ ++} // namespace ++ ++DelegatedInkPointRendererGpu::DelegatedInkPointRendererGpu() = default; ++DelegatedInkPointRendererGpu::~DelegatedInkPointRendererGpu() = default; ++ ++void DelegatedInkPointRendererGpu::InitMessagePipeline( ++ mojo::PendingReceiver ++ pending_receiver) { ++ // The remote end of this pipeline exists on a per-tab basis, so if tab A ++ // is using the feature and then tab B starts trying to use it, a new ++ // PendingReceiver will arrive here while |receiver_| is still bound to the ++ // remote in tab A. Because of this possibility, we unconditionally reset ++ // |receiver_| before trying to bind anything here. This is fine to do ++ // because we only ever need to actively receive points from one tab as only ++ // one tab can be in the foreground and actively inking at a time. ++ receiver_.reset(); ++ ++ receiver_.Bind(std::move(pending_receiver)); ++} ++ ++bool DelegatedInkPointRendererGpu::Initialize( ++ IDCompositionDevice2* dcomp_device2, ++ IDXGISwapChain1* root_swap_chain) { ++#if !defined(COMPILER_GCC) ++ if (swap_chain_ == root_swap_chain && delegated_ink_trail_) { ++ return true; ++ } ++ ++ swap_chain_ = root_swap_chain; ++ ++ if (!ink_trail_device_ && ++ TraceEventOnFailure( ++ dcomp_device2->QueryInterface(IID_PPV_ARGS(&ink_trail_device_)), ++ "DelegatedInkPointRendererGpu::Initialize - " ++ "DCompDevice2 as InkTrailDevice failed")) { ++ return false; ++ } ++ ++ if (TraceEventOnFailure( ++ ink_trail_device_->CreateDelegatedInkTrailForSwapChain( ++ root_swap_chain, &delegated_ink_trail_), ++ "DelegatedInkPointRendererGpu::Initialize - Failed to create " ++ "delegated ink trail.")) { ++ return false; ++ } ++ ++ // Start a new trail if the renderer needs to be (re)initialized. ++ force_new_ink_trail_ = true; ++ ++ return true; ++#else ++ return false; ++#endif ++} ++ ++bool DelegatedInkPointRendererGpu::DelegatedInkIsSupported( ++ const Microsoft::WRL::ComPtr& dcomp_device) const { ++ // Issues related to the delegated ink trail API, such as flickering in the ++ // top 3rd of the screen are addressed in 24H2. ++ if (base::win::GetVersion() < base::win::Version::WIN11_24H2) { ++ return false; ++ } ++ ++#if !defined(COMPILER_GCC) ++ Microsoft::WRL::ComPtr ink_trail_device; ++ HRESULT hr = dcomp_device.As(&ink_trail_device); ++ return hr == S_OK; ++#endif ++} ++ ++uint64_t DelegatedInkPointRendererGpu::GetMaximumNumberOfPointerIdsForTesting() ++ const { ++ CHECK_IS_TEST(); ++ return kMaximumNumberOfPointerIds; ++} ++ ++void DelegatedInkPointRendererGpu::ReportPointsDrawn() { ++ const base::TimeTicks now = base::TimeTicks::Now(); ++ // If there is a point that matches the metadata and the histogram has not yet ++ // been fired, then this is the first frame that the metadata point will be ++ // painted via the JS API. ++ if (metadata_paint_time_.has_value()) { ++ base::UmaHistogramCustomTimes( ++ "Renderer.DelegatedInkTrail.OS.TimeFromDelegatedInkToApiPaint", ++ now - metadata_paint_time_.value(), base::Milliseconds(1), ++ base::Seconds(1), 50); ++ metadata_paint_time_ = std::nullopt; ++ } ++ ++ if (points_to_be_drawn_.empty()) { ++ return; ++ } ++ ++ CHECK(metadata_); ++ base::TimeTicks most_recent_timestamp = base::TimeTicks::Min(); ++ for (const auto& point : points_to_be_drawn_) { ++ UMA_HISTOGRAM_TIMES("Renderer.DelegatedInkTrail.OS.TimeToDrawPointsMillis", ++ now - point.timestamp()); ++ most_recent_timestamp = std::max(point.timestamp(), most_recent_timestamp); ++ ++ // Update the point's `paint_timestamp` if this is the first time it is ++ // being painted so that it can later be compared with the metadata's first ++ // paint time. ++ DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ delegated_ink_points_[point.pointer_id()]; ++ auto trail_point_it = token_map.find(point); ++ if (trail_point_it != token_map.end()) { ++ gfx::DelegatedInkPoint& trail_point = trail_point_it->first; ++ if (!trail_point.paint_timestamp().has_value()) { ++ trail_point.set_paint_timestamp(now); ++ } ++ } ++ } ++ ++ CHECK_GE(most_recent_timestamp, metadata_->timestamp()); ++ base::UmaHistogramTimes( ++ "Renderer.DelegatedInkTrail.LatencyImprovement.OS.WithoutPrediction", ++ most_recent_timestamp - metadata_->timestamp()); ++ base::UmaHistogramCounts100( ++ "Renderer.DelegatedInkTrail.OS.OutstandingPointsToDraw", ++ points_to_be_drawn_.size()); ++ ++ points_to_be_drawn_.clear(); ++} ++ ++void DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint( ++ std::unique_ptr metadata) { ++#if !defined(COMPILER_GCC) ++ TRACE_EVENT_WITH_FLOW1( ++ "delegated_ink_trails", ++ "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint", ++ TRACE_ID_GLOBAL(metadata->trace_id()), TRACE_EVENT_FLAG_FLOW_IN, ++ "metadata", metadata->ToString()); ++ ++ DCHECK(delegated_ink_trail_); ++ ++ // If certain conditions are met, we can simply erase the trail up to the ++ // point matching |metadata|, instead of starting a new trail. These ++ // conditions include: ++ // 1. A trail has already been started, meaning that |metadata_| and ++ // |pointer_id_| exist. ++ // 2. The current |metadata_| and |metadata| both have the same color, so ++ // the color of the trail does not need to change. ++ // 3. |force_new_ink_trail_| is false - renderer has not been ++ // re-initialized. ++ // (continued below) ++ if (!force_new_ink_trail_ && metadata_ && ++ metadata->color() == metadata_->color() && pointer_id_) { ++ DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ delegated_ink_points_[pointer_id_.value()]; ++ auto point_matching_metadata_it = token_map.find( ++ gfx::DelegatedInkPoint(metadata->point(), metadata->timestamp())); ++ // (continued from above) ++ // 4. We have a DelegatedInkPoint with a timestamp equal to or greater ++ // than |metadata|'s timestamp in the token map associated with ++ // |pointer_id_|. ++ // (continued below) ++ if (point_matching_metadata_it != token_map.end()) { ++ gfx::DelegatedInkPoint point_matching_metadata = ++ point_matching_metadata_it->first; ++ std::optional token = point_matching_metadata_it->second; ++ // (continued from above) ++ // 5. The DelegatedInkPoint retrieved above matches |metadata| - this ++ // means that the timestamp is an exact match and the point is ++ // acceptably close. ++ // 6. The token associated with this DelegatedInkPoint is valid, ++ // meaning that the point has previously been drawn as part of a ++ // trail. ++ // ++ // If all of these conditions are met, then we can attempt to just ++ // remove points from the trail instead of starting a new trail ++ // altogether. ++ if (point_matching_metadata.MatchesDelegatedInkMetadata(metadata.get()) && ++ token) { ++ metadata_paint_time_ = point_matching_metadata.paint_timestamp(); ++ bool remove_trail_points_failed = TraceEventOnFailure( ++ delegated_ink_trail_->RemoveTrailPoints(token.value()), ++ "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint - " ++ "Failed to remove trail points."); ++ if (!remove_trail_points_failed) { ++ // Remove all points up to and including the point that matches ++ // |metadata|. No need to hold on to the point that matches metadata ++ // because we've already added it to AddTrailPoints previously, and ++ // the next valid |metadata| is guaranteed to be after it. ++ token_map.erase(token_map.begin(), ++ std::next(point_matching_metadata_it)); ++ // Ensure that points that are being removed from the trail are not ++ // being reported as painted in `ReportPointsDrawn()`. ++ std::erase_if(points_to_be_drawn_, ++ [&](const gfx::DelegatedInkPoint& x) { ++ return metadata->timestamp() > x.timestamp(); ++ }); ++ metadata_ = std::move(metadata); ++ return; ++ } ++ } ++ } ++ } ++ ++ D2D1_COLOR_F d2d1_color; ++ const float kMaxRGBAValue = 255.f; ++ d2d1_color.a = SkColorGetA(metadata->color()) / kMaxRGBAValue; ++ d2d1_color.r = SkColorGetR(metadata->color()) / kMaxRGBAValue; ++ d2d1_color.g = SkColorGetG(metadata->color()) / kMaxRGBAValue; ++ d2d1_color.b = SkColorGetB(metadata->color()) / kMaxRGBAValue; ++ if (TraceEventOnFailure( ++ delegated_ink_trail_->StartNewTrail(d2d1_color), ++ "DelegatedInkPointRendererGpu::SetDelegatedInkTrailStartPoint - " ++ "Failed to start a new trail.")) { ++ return; ++ } ++ ++ points_to_be_drawn_.clear(); ++ wait_for_new_trail_to_draw_ = false; ++ metadata_ = std::move(metadata); ++ DrawSavedTrailPoints(); ++ force_new_ink_trail_ = false; ++#endif ++} ++ ++void DelegatedInkPointRendererGpu::StoreDelegatedInkPoint( ++ const gfx::DelegatedInkPoint& point) { ++ TRACE_EVENT_WITH_FLOW1("delegated_ink_trails", ++ "DelegatedInkPointRendererGpu::StoreDelegatedInkPoint", ++ TRACE_ID_GLOBAL(point.trace_id()), ++ TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, ++ "point", point.ToString()); ++ ++ const int32_t pointer_id = point.pointer_id(); ++ ++ DCHECK(delegated_ink_points_.find(pointer_id) == ++ delegated_ink_points_.end() || ++ delegated_ink_points_[pointer_id].empty() || ++ point.timestamp() > ++ delegated_ink_points_[pointer_id].rbegin()->first.timestamp()); ++ ++ if (metadata_ && point.timestamp() < metadata_->timestamp()) { ++ return; ++ } ++ ++ DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ delegated_ink_points_[pointer_id]; ++ // Always save the point so that it can be drawn later. This allows points ++ // that arrive before the first metadata makes it here to be drawn after ++ // StartNewTrail is called. If we get to the maximum number of points that ++ // we will store, start erasing the oldest ones first. This matches what the ++ // OS compositor does internally when it hits the max number of points. ++ if (token_map.size() == gfx::kMaximumNumberOfDelegatedInkPoints) { ++ token_map.erase(token_map.begin()); ++ } ++ token_map.insert({point, std::nullopt}); ++ ++ EraseExcessPointerIds(); ++ ++ if (pointer_id_ && pointer_id_.value() == pointer_id) { ++ DrawDelegatedInkPoint(point); ++ } else if (!pointer_id_ && metadata_) { ++ DrawSavedTrailPoints(); ++ } ++} ++ ++void DelegatedInkPointRendererGpu::ResetPrediction() { ++ // Don't reset |metadata_| here so that RemoveTrailPoints() can continue ++ // to be called as the final metadata(s) arrive. ++ // TODO(crbug.com/40118757): Start predicting points and reset it here. ++ wait_for_new_trail_to_draw_ = true; ++} ++ ++uint64_t DelegatedInkPointRendererGpu::InkTrailTokenCountForTesting() const { ++ CHECK_IS_TEST(); ++ DCHECK_EQ(delegated_ink_points_.size(), 1u); ++ uint64_t valid_tokens = 0u; ++ for (const auto& it : delegated_ink_points_.begin()->second) { ++ if (it.second) { ++ valid_tokens++; ++ } ++ } ++ return valid_tokens; ++} ++ ++bool DelegatedInkPointRendererGpu::CheckForPointerIdForTesting( ++ int32_t pointer_id) const { ++ CHECK_IS_TEST(); ++ return delegated_ink_points_.find(pointer_id) != delegated_ink_points_.end(); ++} ++ ++void DelegatedInkPointRendererGpu::EraseExcessPointerIds() { ++ auto token_map_it = delegated_ink_points_.begin(); ++ while (token_map_it != delegated_ink_points_.end()) { ++ const DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ token_map_it->second; ++ if (token_map.empty()) { ++ token_map_it = delegated_ink_points_.erase(token_map_it); ++ } else { ++ token_map_it++; ++ } ++ } ++ ++ // In order to get to the maximum pointer id limit, sometimes one token map ++ // will need to be removed even if it has a valid DelegatedInkPoint. In this ++ // case, we'll remove the token map that has gone the longest without ++ // receiving a new point - similar to a least recently used eviction policy. ++ // This would also mean that the token map that would result in the smallest ++ // latency improvement if it were drawn is being removed. The only exception ++ // to this is if the above heuristic would result in the token map that has ++ // a pointer id matching |pointer_id_| being removed. Since |pointer_id_| ++ // matches the trail that is currently being drawn to the screen, we prefer ++ // to save it so we can try to continue that trail. In this case, just ++ // remove the token map with the oldest new point that is not currently ++ // being drawn. ++ if (delegated_ink_points_.size() > kMaximumNumberOfPointerIds) { ++ std::vector> ++ earliest_time_and_pointer_id; ++ for (const auto& it : delegated_ink_points_) { ++ earliest_time_and_pointer_id.emplace_back( ++ it.second.rbegin()->first.timestamp(), it.first); ++ } ++ ++ std::sort(earliest_time_and_pointer_id.begin(), ++ earliest_time_and_pointer_id.end()); ++ ++ uint64_t pointer_id_to_remove = 0; ++ while (pointer_id_to_remove < earliest_time_and_pointer_id.size() && ++ pointer_id_ && ++ earliest_time_and_pointer_id[pointer_id_to_remove].second == ++ pointer_id_.value()) { ++ pointer_id_to_remove++; ++ } ++ ++ CHECK_LT(pointer_id_to_remove, earliest_time_and_pointer_id.size()); ++ delegated_ink_points_.erase( ++ earliest_time_and_pointer_id[pointer_id_to_remove].second); ++ } ++ ++ DCHECK_LE(delegated_ink_points_.size(), kMaximumNumberOfPointerIds); ++} ++ ++std::optional DelegatedInkPointRendererGpu::GetPointerIdForMetadata() { ++ if (pointer_id_ && delegated_ink_points_.find(pointer_id_.value()) != ++ delegated_ink_points_.end()) { ++ // Since we remove all DelegatedInkPoints with timestamp before ++ // |metadata_|'s before calling GetPointerIdForMetadata(), we know we can ++ // just grab the first DelegatedInkPoint matching |pointer_id_|. ++ const gfx::DelegatedInkPoint& point_matching_metadata = ++ delegated_ink_points_[pointer_id_.value()].begin()->first; ++ if (point_matching_metadata.MatchesDelegatedInkMetadata(metadata_.get())) { ++ return pointer_id_; ++ } ++ } ++ ++ pointer_id_ = std::nullopt; ++ ++ for (auto token_map_it = delegated_ink_points_.begin(); ++ token_map_it != delegated_ink_points_.end() && !pointer_id_; ++ ++token_map_it) { ++ int32_t potential_pointer_id = token_map_it->first; ++ const DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ token_map_it->second; ++ DCHECK(!token_map.empty()); ++ if (token_map.begin()->first.MatchesDelegatedInkMetadata(metadata_.get())) { ++ DCHECK(!pointer_id_); ++ pointer_id_ = potential_pointer_id; ++ } ++ } ++ ++ return pointer_id_; ++} ++ ++void DelegatedInkPointRendererGpu::DrawSavedTrailPoints() { ++ DCHECK(metadata_); ++ TRACE_EVENT0("delegated_ink_trails", "DrawSavedTrailPoints"); ++ ++ // Remove all points that have a timestamp earlier than |metadata_|'s, since ++ // we know that we won't need to draw them. This is subtly different than ++ // the erasing done in SetDelegatedInkTrailStartPoint() - there the point ++ // matching the metadata is removed, here it is not. The reason for this ++ // difference is because there we know that it matches |metadata_| and ++ // therefore it cannot possibly be drawn again, so it is safe to remove. ++ // Here however, we are erasing all points up to, but not including, the ++ // first point with a timestamp equal to or greater than |metadata_|'s so ++ // that we can then check that point to confirm that it matches |metadata_| ++ // before deciding to draw an ink trail. The point could then be erased ++ // after it is successfully checked against |metadata_| and drawn, it just ++ // isn't for simplicity's sake. ++ for (auto& it : delegated_ink_points_) { ++ DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ it.second; ++ token_map.erase(token_map.begin(), ++ token_map.lower_bound(gfx::DelegatedInkPoint( ++ metadata_->point(), metadata_->timestamp()))); ++ } ++ ++ EraseExcessPointerIds(); ++ ++ std::optional pointer_id = GetPointerIdForMetadata(); ++ ++ // Now, the very first point must match |metadata_|, and as long as it does ++ // we can continue to draw everything else. If at any point something can't ++ // or fails to draw though, don't attempt to draw anything after it so that ++ // the trail can match the user's actual stroke. ++ if (pointer_id && delegated_ink_points_.find(pointer_id.value()) != ++ delegated_ink_points_.end()) { ++ DelegatedInkPointRendererGpu::DelegatedInkPointTokenMap& token_map = ++ delegated_ink_points_[pointer_id.value()]; ++ if (!token_map.empty() && ++ token_map.begin()->first.MatchesDelegatedInkMetadata(metadata_.get())) { ++ for (const auto& it : token_map) { ++ if (!DrawDelegatedInkPoint(it.first)) { ++ break; ++ } ++ } ++ } ++ } else { ++ TRACE_EVENT_INSTANT0("delegated_ink_trails", ++ "DrawSavedTrailPoints failed - no pointer id", ++ TRACE_EVENT_SCOPE_THREAD); ++ } ++} ++ ++std::optional ++DelegatedInkPointRendererGpu::MakeDelegatedInkOverlay( ++ IDCompositionDevice2* dcomp_device2, ++ IDXGISwapChain1* root_swap_chain, ++ std::unique_ptr metadata) { ++ if (!Initialize(dcomp_device2, root_swap_chain)) { ++ return std::nullopt; ++ } ++ DCLayerOverlayParams ink_layer; ++ // Ink trail should be rendered on top of all content. ++ ink_layer.z_order = INT_MAX; ++ const gfx::Rect presentation_rect = ++ gfx::ToEnclosedRect(metadata->presentation_area()); ++ const gfx::Size presentation_area_enclosed_size = ++ gfx::Size(presentation_rect.width(), presentation_rect.height()); ++ ink_layer.quad_rect = gfx::Rect(presentation_area_enclosed_size); ++ ink_layer.content_rect = gfx::RectF(presentation_area_enclosed_size); ++ // If (0,0) of a visual is clipped out, it can result in delegated ink not ++ // being drawn at all. This is more common when DComp Surfaces are enabled, ++ // but doesn't negatively impact things when the swapchain is used, so just ++ // offset the visual instead of clipping the top left corner in all cases. ++ ink_layer.clip_rect = std::make_optional( ++ 0, 0, presentation_rect.right(), presentation_rect.bottom()); ++ ink_layer.transform = gfx::Transform::MakeTranslation( ++ metadata->presentation_area().OffsetFromOrigin()); ++#if !defined(COMPILER_GCC) ++ ink_layer.overlay_image = DCLayerOverlayImage(presentation_area_enclosed_size, ++ delegated_ink_trail_); ++#endif ++ ink_layer.layer_id = gfx::OverlayLayerId::MakeVizInternal( ++ gfx::OverlayLayerId::VizInternalId::kDelegatedInkTrail); ++ SetDelegatedInkTrailStartPoint(std::move(metadata)); ++ return ink_layer; ++} ++ ++bool DelegatedInkPointRendererGpu::DrawDelegatedInkPoint( ++ const gfx::DelegatedInkPoint& point) { ++ // Always wait for a new trail to be started before attempting to draw ++ // anything, even if |metadata_| exists. ++ if (wait_for_new_trail_to_draw_) { ++ return false; ++ } ++ ++ DCHECK(metadata_); ++ if (!metadata_->presentation_area().Contains(point.point())) { ++ return false; ++ } ++ ++ DCHECK(delegated_ink_trail_); ++ ++ DCompositionInkTrailPoint ink_point; ++ ink_point.radius = metadata_->diameter() / 2.f; ++ // In order to account for the visual offset, the point must be offset in ++ // the opposite direction. ++ ink_point.x = point.point().x() - metadata_->presentation_area().x(); ++ ink_point.y = point.point().y() - metadata_->presentation_area().y(); ++ unsigned int token; ++ ++ // AddTrailPoints() can accept and draw more than one InkTrailPoint per ++ // call. However, all the points get lumped together in the one token then, ++ // which means that they can only be removed all together. This may be fine ++ // in some scenarios, but in the vast majority of cases we will need to ++ // remove one point at a time, so we choose to only add one InkTrailPoint at ++ // a time. ++ if (TraceEventOnFailure( ++ delegated_ink_trail_->AddTrailPoints(&ink_point, ++ /*inkPointsCount*/ 1, &token), ++ "DelegatedInkPointRendererGpu::DrawDelegatedInkPoint - Failed to " ++ "add trail point")) { ++ // TODO(crbug.com/40118757): Start predicting points. ++ return false; ++ } ++ ++ TRACE_EVENT_WITH_FLOW1("delegated_ink_trails", ++ "DelegatedInkPointRendererGpu::DrawDelegatedInkPoint " ++ "- Point added to trail", ++ TRACE_ID_GLOBAL(point.trace_id()), ++ TRACE_EVENT_FLAG_FLOW_IN, "point", point.ToString()); ++ ++ if (point.timestamp().IsHighResolution() && ++ point.timestamp().IsConsistentAcrossProcesses()) { ++ points_to_be_drawn_.push_back(point); ++ } ++ delegated_ink_points_[point.pointer_id()][point] = token; ++ return true; ++} ++ ++void DelegatedInkPointRendererGpu::InitializeForTesting( ++ IDCompositionDevice2* dcomp_device2) { ++ CHECK_IS_TEST(); ++ Initialize(dcomp_device2, nullptr); ++} ++ ++} // namespace gl +diff --git a/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.cc b/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.cc +--- a/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/gl/vsync_provider_win_dcomp.cc 2026-06-16 10:06:04.964496200 +0200 +@@ -1,70 +1,74 @@ +-// Copyright 2024 The Chromium Authors +-// Use of this source code is governed by a BSD-style license that can be +-// found in the LICENSE file. +- +-#include "ui/gl/vsync_provider_win_dcomp.h" +- +-#include "base/trace_event/typed_macros.h" +- +-namespace gl { +- +-VSyncProviderWinDComp::VSyncProviderWinDComp() = default; +- +-VSyncProviderWinDComp::~VSyncProviderWinDComp() = default; +- +-void VSyncProviderWinDComp::GetVSyncParameters(UpdateVSyncCallback callback) { +- base::TimeTicks timebase; +- base::TimeDelta interval; +- if (GetVSyncParametersIfAvailable(&timebase, &interval)) { +- std::move(callback).Run(timebase, interval); +- } +-} +- +-// Use the compositor clock to determine vsync interval (as opposed +-// to algining with primary monitor) to more optimally align vsync +-// interval to video FPS in multi-display mixed refresh rate or VRR configs. +-bool VSyncProviderWinDComp::GetVSyncParametersIfAvailable( +- base::TimeTicks* out_timebase, +- base::TimeDelta* out_interval) { +- TRACE_EVENT0("gpu", "VSyncProviderWinDComp::GetVSyncParametersIfAvailable"); +- HRESULT hr = S_OK; +- +- COMPOSITION_FRAME_ID frame_id; +- hr = gl::DCompositionGetFrameId(COMPOSITION_FRAME_ID_COMPLETED, &frame_id); +- CHECK_EQ(S_OK, hr); +- +- // DCompositionGetStatistics may fail in situations such as switching +- // to a remote session. Cache the previous frame stats in case of failure. +- COMPOSITION_FRAME_STATS stats; +- hr = gl::DCompositionGetStatistics(frame_id, &stats, 0, nullptr, nullptr); +- if (FAILED(hr)) { +- DLOG(ERROR) << "DCompositionGetStatistics failed: " +- << logging::SystemErrorCodeToString(hr); +- if (prev_frame_stats_.has_value()) { +- stats = prev_frame_stats_.value(); +- *out_interval = base::TimeDelta::FromQPCValue(stats.framePeriod); +- *out_timebase = +- base::TimeTicks::Now().SnappedToNextTick( +- base::TimeTicks::FromQPCValue(stats.startTime), *out_interval) - +- *out_interval; +- return true; +- } +- return false; +- } +- +- prev_frame_stats_ = stats; +- +- *out_timebase = base::TimeTicks::FromQPCValue(stats.startTime); +- *out_interval = base::TimeDelta::FromQPCValue(stats.framePeriod); +- return true; +-} +- +-bool VSyncProviderWinDComp::SupportGetVSyncParametersIfAvailable() const { +- return true; +-} +- +-bool VSyncProviderWinDComp::IsHWClock() const { +- return true; +-} +- +-} // namespace gl ++// Copyright 2024 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "ui/gl/vsync_provider_win_dcomp.h" ++ ++#include "base/trace_event/typed_macros.h" ++ ++namespace gl { ++ ++VSyncProviderWinDComp::VSyncProviderWinDComp() = default; ++ ++VSyncProviderWinDComp::~VSyncProviderWinDComp() = default; ++ ++void VSyncProviderWinDComp::GetVSyncParameters(UpdateVSyncCallback callback) { ++ base::TimeTicks timebase; ++ base::TimeDelta interval; ++ if (GetVSyncParametersIfAvailable(&timebase, &interval)) { ++ std::move(callback).Run(timebase, interval); ++ } ++} ++ ++// Use the compositor clock to determine vsync interval (as opposed ++// to algining with primary monitor) to more optimally align vsync ++// interval to video FPS in multi-display mixed refresh rate or VRR configs. ++bool VSyncProviderWinDComp::GetVSyncParametersIfAvailable( ++ base::TimeTicks* out_timebase, ++ base::TimeDelta* out_interval) { ++#if !defined(COMPILER_GCC) ++ TRACE_EVENT0("gpu", "VSyncProviderWinDComp::GetVSyncParametersIfAvailable"); ++ HRESULT hr = S_OK; ++ ++ COMPOSITION_FRAME_ID frame_id; ++ hr = gl::DCompositionGetFrameId(COMPOSITION_FRAME_ID_COMPLETED, &frame_id); ++ CHECK_EQ(S_OK, hr); ++ ++ // DCompositionGetStatistics may fail in situations such as switching ++ // to a remote session. Cache the previous frame stats in case of failure. ++ COMPOSITION_FRAME_STATS stats; ++ hr = gl::DCompositionGetStatistics(frame_id, &stats, 0, nullptr, nullptr); ++ if (FAILED(hr)) { ++ DLOG(ERROR) << "DCompositionGetStatistics failed: " ++ << logging::SystemErrorCodeToString(hr); ++ if (prev_frame_stats_.has_value()) { ++ stats = prev_frame_stats_.value(); ++ *out_interval = base::TimeDelta::FromQPCValue(stats.framePeriod); ++ *out_timebase = ++ base::TimeTicks::Now().SnappedToNextTick( ++ base::TimeTicks::FromQPCValue(stats.startTime), *out_interval) - ++ *out_interval; ++ return true; ++ } ++ return false; ++ } ++ ++ prev_frame_stats_ = stats; ++ ++ *out_timebase = base::TimeTicks::FromQPCValue(stats.startTime); ++ *out_interval = base::TimeDelta::FromQPCValue(stats.framePeriod); ++ return true; ++#else ++ return false; ++#endif ++} ++ ++bool VSyncProviderWinDComp::SupportGetVSyncParametersIfAvailable() const { ++ return true; ++} ++ ++bool VSyncProviderWinDComp::IsHWClock() const { ++ return true; ++} ++ ++} // namespace gl +diff --git a/src/3rdparty/chromium/ui/webui/examples/renderer/render_frame_observer.cc b/src/3rdparty/chromium/ui/webui/examples/renderer/render_frame_observer.cc +--- a/src/3rdparty/chromium/ui/webui/examples/renderer/render_frame_observer.cc 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/3rdparty/chromium/ui/webui/examples/renderer/render_frame_observer.cc 2026-06-16 10:06:51.352901600 +0200 +@@ -18,13 +18,13 @@ + #include "third_party/blink/public/web/web_custom_element.h" + #include "third_party/blink/public/web/web_document.h" + #include "third_party/blink/public/web/web_local_frame.h" +-#include "v8/include/v8-context.h" +-#include "v8/include/v8-external.h" +-#include "v8/include/v8-function-callback.h" +-#include "v8/include/v8-function.h" +-#include "v8/include/v8-isolate.h" +-#include "v8/include/v8-local-handle.h" +-#include "v8/include/v8-primitive.h" ++#include "v8-context.h" ++#include "v8-external.h" ++#include "v8-function-callback.h" ++#include "v8-function.h" ++#include "v8-isolate.h" ++#include "v8-local-handle.h" ++#include "v8-primitive.h" + + namespace webui_examples { + +diff --git a/src/core/api/qtwebenginecoreglobal_p.h b/src/core/api/qtwebenginecoreglobal_p.h +--- a/src/core/api/qtwebenginecoreglobal_p.h 2026-03-16 12:40:07.000000000 +0100 ++++ b/src/core/api/qtwebenginecoreglobal_p.h 2026-06-16 10:06:05.261733100 +0200 +@@ -1,56 +1,56 @@ +-// Copyright (C) 2016 The Qt Company Ltd. +-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +-// Qt-Security score:significant reason:default +- +-#ifndef QTWEBENGINECOREGLOBAL_P_H +-#define QTWEBENGINECOREGLOBAL_P_H +- +-// +-// W A R N I N G +-// ------------- +-// +-// This file is not part of the Qt API. It exists purely as an +-// implementation detail. This header file may change from version to +-// version without notice, or even be removed. +-// +-// We mean it. +-// +- +-#include +-#include +-#include +-#include +- +-#ifdef QT_WEBENGINE_LOGGING +-#define QT_NOT_YET_IMPLEMENTED fprintf(stderr, "function %s not implemented! - %s:%d\n", __func__, __FILE__, __LINE__); +-#define QT_NOT_USED fprintf(stderr, "# function %s should not be used! - %s:%d\n", __func__, __FILE__, __LINE__); Q_UNREACHABLE(); +-#else +-#define QT_NOT_YET_IMPLEMENTED qt_noop(); +-#define QT_NOT_USED Q_UNREACHABLE(); // This will assert in debug. +-#endif +- +-// The Q_WEBENGINE_LOGGING_CATEGORY macro is a stopgap fix for the deprecation warnings +-// introduced alongside the new logging category macros in Qt 6.9. Since we need to support +-// building with older versions up to and including the last LTS release (6.8), we can't simply +-// switch to using Q_STATIC_LOGGING_CATEGORY. This file and the macro definition within +-// are intended to be removed in the next Qt 6 LTS+1 release. +-#if defined(Q_STATIC_LOGGING_CATEGORY) +-#define Q_WEBENGINE_LOGGING_CATEGORY(name, ...) Q_STATIC_LOGGING_CATEGORY(name, __VA_ARGS__) +-#else +-#define Q_WEBENGINE_LOGGING_CATEGORY(name, ...) Q_LOGGING_CATEGORY(name, __VA_ARGS__) +-#endif +- +-namespace QtWebEngineCore { +-Q_WEBENGINECORE_EXPORT int processMain(int argc, const char **argv); +-Q_WEBENGINECORE_EXPORT bool closingDown(); +-} // namespace +-#if defined(Q_OS_WIN) +-namespace sandbox { +-struct SandboxInterfaceInfo; +-} +-namespace QtWebEngineSandbox { +-Q_WEBENGINECORE_EXPORT sandbox::SandboxInterfaceInfo *staticSandboxInterfaceInfo(sandbox::SandboxInterfaceInfo *info = nullptr); +-void initializeStaticCopy(int argc, const char **argv); +-} +-#endif +-#endif // QTWEBENGINECOREGLOBAL_P_H ++// Copyright (C) 2016 The Qt Company Ltd. ++// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only ++// Qt-Security score:significant reason:default ++ ++#ifndef QTWEBENGINECOREGLOBAL_P_H ++#define QTWEBENGINECOREGLOBAL_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++#include ++#include ++ ++#ifdef QT_WEBENGINE_LOGGING ++#define QT_NOT_YET_IMPLEMENTED fprintf(stderr, "function %s not implemented! - %s:%d\n", __func__, __FILE__, __LINE__); ++#define QT_NOT_USED fprintf(stderr, "# function %s should not be used! - %s:%d\n", __func__, __FILE__, __LINE__); Q_UNREACHABLE(); ++#else ++#define QT_NOT_YET_IMPLEMENTED qt_noop(); ++#define QT_NOT_USED Q_UNREACHABLE(); // This will assert in debug. ++#endif ++ ++// The Q_WEBENGINE_LOGGING_CATEGORY macro is a stopgap fix for the deprecation warnings ++// introduced alongside the new logging category macros in Qt 6.9. Since we need to support ++// building with older versions up to and including the last LTS release (6.8), we can't simply ++// switch to using Q_STATIC_LOGGING_CATEGORY. This file and the macro definition within ++// are intended to be removed in the next Qt 6 LTS+1 release. ++#if defined(Q_STATIC_LOGGING_CATEGORY) ++#define Q_WEBENGINE_LOGGING_CATEGORY(name, ...) Q_STATIC_LOGGING_CATEGORY(name, __VA_ARGS__) ++#else ++#define Q_WEBENGINE_LOGGING_CATEGORY(name, ...) Q_LOGGING_CATEGORY(name, __VA_ARGS__) ++#endif ++ ++namespace QtWebEngineCore { ++Q_WEBENGINECORE_EXPORT int processMain(int argc, const char **argv); ++Q_WEBENGINECORE_EXPORT bool closingDown(); ++} // namespace ++#if defined(Q_OS_WIN) ++namespace sandbox { ++struct SandboxInterfaceInfo; ++} ++namespace QtWebEngineSandbox { ++Q_WEBENGINECORE_EXPORT sandbox::SandboxInterfaceInfo *staticSandboxInterfaceInfo(sandbox::SandboxInterfaceInfo *info = nullptr); ++void initializeStaticCopy(int argc, const char **argv); ++} ++#endif ++#endif // QTWEBENGINECOREGLOBAL_P_H +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -379,7 +379,7 @@ + dawn_use_swiftshader=false + enable_vr=false + enable_web_speech=false +- enable_widevine=true ++ enable_widevine=false + enable_bound_session_credentials=false + fatal_linker_warnings=false + has_native_accessibility=false +@@ -606,10 +606,29 @@ + endif() + + if(MINGW) ++ set(QTWEBENGINE_PRIVATE_CHROMIUM_INCLUDE_DIR "" CACHE PATH ++ "Private Chromium source/header directory for split QtWebEngine builds" ++ ) ++ set(QTWEBENGINE_PRIVATE_TOOL_DIR "" CACHE PATH ++ "Private Chromium tool directory for split QtWebEngine builds" ++ ) ++ if(QTWEBENGINE_PRIVATE_CHROMIUM_INCLUDE_DIR) ++ file(TO_CMAKE_PATH "${QTWEBENGINE_PRIVATE_CHROMIUM_INCLUDE_DIR}" ++ qtwebengine_private_chromium_include_dir ++ ) ++ list(APPEND gnArgArg ++ qtwebengine_private_chromium_include_dir="${qtwebengine_private_chromium_include_dir}" ++ ) ++ endif() ++ if(QTWEBENGINE_PRIVATE_TOOL_DIR) ++ file(TO_CMAKE_PATH "${QTWEBENGINE_PRIVATE_TOOL_DIR}" qtwebengine_private_tool_dir) ++ list(APPEND gnArgArg qtwebengine_private_tool_dir="${qtwebengine_private_tool_dir}") ++ endif() ++ + list(APPEND gnArgArg + angle_enable_vulkan=false + angle_shared_libvulkan=false +- devtools_dcheck_always_on=true ++ devtools_dcheck_always_on=false + icu_use_data_file=false + use_gio=false + use_glib=false diff --git a/mingw-w64-qt6-webengine-thirdparty/0114-chromium-abseil-policy-functions-mingw.patch b/mingw-w64-qt6-webengine-thirdparty/0114-chromium-abseil-policy-functions-mingw.patch new file mode 100644 index 0000000000000..58093b99de67a --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0114-chromium-abseil-policy-functions-mingw.patch @@ -0,0 +1,30 @@ +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h b/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +index 70632095526..6de0dcc7e6d 100644 +--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +@@ -3570,7 +3570,7 @@ class raw_hash_set { + } + } + +- static const PolicyFunctions& GetPolicyFunctions() { ++ static PolicyFunctions GetPolicyFunctions() { + static_assert(sizeof(slot_type) <= (std::numeric_limits::max)(), + "Slot size is too large. Use std::unique_ptr for value type " + "or use absl::node_hash_{map,set}."); +@@ -3581,7 +3581,7 @@ class raw_hash_set { + size_t{(std::numeric_limits::max)()}); + static constexpr size_t kBackingArrayAlignment = + BackingArrayAlignment(alignof(slot_type)); +- static const PolicyFunctions value = { ++ return { + static_cast(sizeof(key_type)), + static_cast(sizeof(value_type)), + static_cast(sizeof(slot_type)), +@@ -3600,7 +3600,6 @@ class raw_hash_set { + &AllocateBackingArray, + &DeallocateBackingArray, + &raw_hash_set::transfer_unprobed_elements_to_next_capacity_fn}; +- return value; + } + + // Bundle together CommonFields plus other objects which might be empty. diff --git a/mingw-w64-qt6-webengine-thirdparty/0115-chromium-crashpad-mingw-arm64-object.patch b/mingw-w64-qt6-webengine-thirdparty/0115-chromium-crashpad-mingw-arm64-object.patch new file mode 100644 index 0000000000000..25d40610a4825 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0115-chromium-crashpad-mingw-arm64-object.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn +index 5a9a4060000..c2372860000 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn +@@ -553,7 +553,7 @@ crashpad_static_library("util") { + "misc/capture_context_win.asm", + "win/safe_terminate_process.asm", + ] +- } else { ++ } else if (!is_mingw) { + # When building with clang, clang-cl is used as the assembler. Since + # clang-cl recognizes a different assembly dialect than Microsoft’s + # armasm64 macro assembler, the same .asm file can’t be used for each. As diff --git a/mingw-w64-qt6-webengine-thirdparty/0116-chromium-delegated-ink-mingw.patch b/mingw-w64-qt6-webengine-thirdparty/0116-chromium-delegated-ink-mingw.patch new file mode 100644 index 0000000000000..92775a2378605 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0116-chromium-delegated-ink-mingw.patch @@ -0,0 +1,22 @@ +diff --git a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc +index 9e92226a42f..29af0238df5 100644 +--- a/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc ++++ b/src/3rdparty/chromium/ui/gl/delegated_ink_point_renderer_gpu.cc +@@ -507,6 +507,9 @@ bool DelegatedInkPointRendererGpu::DrawDelegatedInkPoint( + return false; + } + ++#if defined(COMPILER_GCC) ++ return false; ++#else + DCHECK(delegated_ink_trail_); + + DCompositionInkTrailPoint ink_point; +@@ -543,6 +547,7 @@ bool DelegatedInkPointRendererGpu::DrawDelegatedInkPoint( + } + delegated_ink_points_[point.pointer_id()][point] = token; + return true; ++#endif + } + + void DelegatedInkPointRendererGpu::InitializeForTesting( diff --git a/mingw-w64-qt6-webengine-thirdparty/0117-chromium-thirdparty-build-fixes.patch b/mingw-w64-qt6-webengine-thirdparty/0117-chromium-thirdparty-build-fixes.patch new file mode 100644 index 0000000000000..dc3a0240784b9 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0117-chromium-thirdparty-build-fixes.patch @@ -0,0 +1,49 @@ +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn b/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn +index 96a14e59681..0ba821df123 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/BUILD.gn +@@ -55,7 +55,7 @@ config("tint_common_config") { + # Some versions of MSVC ignores the [[noreturn]] on ~InternalCompilerError(), + # triggering a warning if it is the last statement on a function that has a + # return value. +- if (!is_clang && is_win) { ++ if (!is_clang && is_msvc) { + cflags = [ "/wd4715" ] + } + } +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h +index 2393b4dfde..fb17a8f2c9 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/type_traits.h +@@ -33 +33 @@ +-#include "cppgc/type-traits.h" // nogncheck ++#include "v8/include/cppgc/type-traits.h" // nogncheck +diff --git a/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc b/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc +index 7847907bf2..c97c0ccca5 100644 +--- a/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc ++++ b/src/3rdparty/chromium/media/gpu/windows/supported_profile_helpers.cc +@@ -449,11 +449,15 @@ SupportedResolutionRangeMap GetSupportedD3D12VideoDecoderResolutions( + ComD3D12Device device, + const gpu::GpuDriverBugWorkarounds& workarounds) { + ComD3D12VideoDevice video_device; ++#if BUILDFLAG(IS_MINGW) ++ std::unique_ptr video_device_wrapper; ++#else + std::unique_ptr video_device_wrapper; + if (device && SUCCEEDED(device.As(&video_device))) { + video_device_wrapper = + std::make_unique(video_device); + } ++#endif + return GetSupportedD3DVideoDecoderResolutions(video_device_wrapper.get(), + workarounds); + } +diff --git a/src/3rdparty/chromium/tools/metrics/histograms/generate_allowlist_from_histograms_file.py b/src/3rdparty/chromium/tools/metrics/histograms/generate_allowlist_from_histograms_file.py +index 456c04dfdc..e2013a72e1 100755 +--- a/src/3rdparty/chromium/tools/metrics/histograms/generate_allowlist_from_histograms_file.py ++++ b/src/3rdparty/chromium/tools/metrics/histograms/generate_allowlist_from_histograms_file.py +@@ -7,2 +7,4 @@ import argparse + import os + import sys ++ ++sys.path.insert(0, os.path.dirname(__file__)) diff --git a/mingw-w64-qt6-webengine-thirdparty/0121-chromium-nasm-native-paths.patch b/mingw-w64-qt6-webengine-thirdparty/0121-chromium-nasm-native-paths.patch new file mode 100644 index 0000000000000..52d712c99a297 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0121-chromium-nasm-native-paths.patch @@ -0,0 +1,30 @@ +diff --git a/src/3rdparty/chromium/build/gn_run_binary.py b/src/3rdparty/chromium/build/gn_run_binary.py +index 2644c6f4022..67f41abf654 100755 +--- a/src/3rdparty/chromium/build/gn_run_binary.py ++++ b/src/3rdparty/chromium/build/gn_run_binary.py +@@ -19,8 +19,24 @@ path = sys.argv[1] + if not os.path.isabs(path): + path = './' + path + ++def _NormalizeNasmPathArg(arg): ++ if arg.startswith('-I') and len(arg) > 2: ++ include = arg[2:] ++ trailing_slash = '/' if include.endswith(('/', '\\')) else '' ++ include = include.rstrip('/\\') ++ if include and not os.path.isabs(include): ++ include = os.path.abspath(include) ++ return '-I' + include.replace('\\', '/') + trailing_slash ++ ++ if arg.endswith('.asm') and not os.path.isabs(arg): ++ return os.path.abspath(arg).replace('\\', '/') ++ ++ return arg ++ + # The rest of the arguments are passed directly to the executable. +-args = [path] + sys.argv[2:] ++args = [path] + sys.argv[2:] ++if os.path.basename(path).lower() == 'nasm.exe': ++ args = [path] + [_NormalizeNasmPathArg(arg) for arg in sys.argv[2:]] + + ret = subprocess.call(args) + if ret != 0: diff --git a/mingw-w64-qt6-webengine-thirdparty/0122-chromium-shim-headers-subst-root.patch b/mingw-w64-qt6-webengine-thirdparty/0122-chromium-shim-headers-subst-root.patch new file mode 100644 index 0000000000000..ccfeae7c065f1 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0122-chromium-shim-headers-subst-root.patch @@ -0,0 +1,21 @@ +diff --git a/src/3rdparty/chromium/tools/generate_shim_headers/generate_shim_headers.py b/src/3rdparty/chromium/tools/generate_shim_headers/generate_shim_headers.py +index 0fd047efaf184..e259e53c69dc8 100755 +--- a/src/3rdparty/chromium/tools/generate_shim_headers/generate_shim_headers.py ++++ b/src/3rdparty/chromium/tools/generate_shim_headers/generate_shim_headers.py +@@ -10,6 +10,7 @@ to our source code. + """ + + ++import os + import optparse + import os.path + import sys +@@ -44,6 +45,8 @@ def GeneratorMain(argv): + + source_tree_root = os.path.abspath( + os.path.join(os.path.dirname(__file__), '..', '..')) ++ source_tree_root = os.environ.get('CHROMIUM_SOURCE_TREE_ROOT', ++ source_tree_root) + + for root in options.headers_root: + target_directory = os.path.join( diff --git a/mingw-w64-qt6-webengine-thirdparty/0123-chromium-xnnpack-long-targets.patch b/mingw-w64-qt6-webengine-thirdparty/0123-chromium-xnnpack-long-targets.patch new file mode 100644 index 0000000000000..7fbfcd9a74b0e --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0123-chromium-xnnpack-long-targets.patch @@ -0,0 +1,107 @@ +diff --git a/src/3rdparty/chromium/third_party/xnnpack/BUILD.gn b/src/3rdparty/chromium/third_party/xnnpack/BUILD.gn +@@ -281,12 +281,10 @@ + ":qd8-f16-qc8w-gemm_f16c-fma-avx2", + ":qd8-f16-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qd8-f16-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +- ":qd8-f16-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qd8-f16-qc8w-igemm_avx2-avxvnni-f16c-fma", + ":qd8-f16-qc8w-igemm_f16c-fma-avx2", + ":qd8-f16-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qd8-f16-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +- ":qd8-f16-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qd8-f32-qb4w-gemm_avx-no-avx2-no-f16c-no-fma", + ":qd8-f32-qb4w-gemm_f16c-fma-avx2", + ":qd8-f32-qb4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +@@ -299,7 +297,6 @@ + ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", + ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni", +- ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qd8-f32-qc4w-gemm_sse2-no-sse3", + ":qd8-f32-qc4w-gemm_ssse3-no-sse4.1", + ":qd8-f32-qc4w-gemm_x64", +@@ -307,7 +304,6 @@ + ":qd8-f32-qc8w-gemm_f16c-fma-avx2", + ":qd8-f32-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qd8-f32-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +- ":qd8-f32-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qd8-f32-qc8w-gemm_sse2-no-sse3", + ":qd8-f32-qc8w-gemm_sse4.1-no-sse4.2", + ":qd8-f32-qc8w-gemm_x64", +@@ -315,7 +311,6 @@ + ":qd8-f32-qc8w-igemm_f16c-fma-avx2", + ":qd8-f32-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qd8-f32-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +- ":qd8-f32-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qd8-f32-qc8w-igemm_sse2-no-sse3", + ":qd8-f32-qc8w-igemm_sse4.1-no-sse4.2", + ":qd8-f32-qc8w-igemm_x64", +@@ -352,7 +347,6 @@ + ":qs8-qc8w-gemm_f16c-fma-avx2", + ":qs8-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qs8-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +- ":qs8-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qs8-qc8w-gemm_sse2-no-sse3", + ":qs8-qc8w-gemm_sse4.1-no-sse4.2", + ":qs8-qc8w-gemm_x64", +@@ -362,7 +356,6 @@ + ":qs8-qc8w-igemm_f16c-fma-avx2", + ":qs8-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl", + ":qs8-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni", +- ":qs8-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8", + ":qs8-qc8w-igemm_sse2-no-sse3", + ":qs8-qc8w-igemm_sse4.1-no-sse4.2", + ":qs8-qc8w-igemm_x64", +@@ -784,12 +777,10 @@ + ":qd8-f16-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qd8-f16-qc8w-gemm_avx2-avxvnni-f16c-fma_standalone", + ":qd8-f16-qc8w-gemm_f16c-fma-avx2_standalone", +- ":qd8-f16-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qd8-f16-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qd8-f16-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qd8-f16-qc8w-igemm_avx2-avxvnni-f16c-fma_standalone", + ":qd8-f16-qc8w-igemm_f16c-fma-avx2_standalone", +- ":qd8-f16-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qd8-f16-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qd8-f16-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qd8-f32-qb4w-gemm_avx-no-avx2-no-f16c-no-fma_standalone", +@@ -801,7 +792,6 @@ + ":qd8-f32-qb4w-gemm_x64_standalone", + ":qd8-f32-qc4w-gemm_avx2-avxvnni-f16c-fma_standalone", + ":qd8-f32-qc4w-gemm_f16c-fma-avx2_standalone", +- ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni_standalone", + ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qd8-f32-qc4w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", +@@ -810,7 +800,6 @@ + ":qd8-f32-qc4w-gemm_x64_standalone", + ":qd8-f32-qc8w-gemm_avx2-avxvnni-f16c-fma_standalone", + ":qd8-f32-qc8w-gemm_f16c-fma-avx2_standalone", +- ":qd8-f32-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qd8-f32-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qd8-f32-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qd8-f32-qc8w-gemm_sse2-no-sse3_standalone", +@@ -818,7 +807,6 @@ + ":qd8-f32-qc8w-gemm_x64_standalone", + ":qd8-f32-qc8w-igemm_avx2-avxvnni-f16c-fma_standalone", + ":qd8-f32-qc8w-igemm_f16c-fma-avx2_standalone", +- ":qd8-f32-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qd8-f32-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qd8-f32-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qd8-f32-qc8w-igemm_sse2-no-sse3_standalone", +@@ -855,7 +843,6 @@ + ":qs8-qc8w-gemm_avx2-avxvnni-f16c-fma_standalone", + ":qs8-qc8w-gemm_avx2-avxvnniint8-f16c-fma_standalone", + ":qs8-qc8w-gemm_f16c-fma-avx2_standalone", +- ":qs8-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qs8-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qs8-qc8w-gemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qs8-qc8w-gemm_sse2-no-sse3_standalone", +@@ -865,7 +852,6 @@ + ":qs8-qc8w-igemm_avx2-avxvnni-f16c-fma_standalone", + ":qs8-qc8w-igemm_avx2-avxvnniint8-f16c-fma_standalone", + ":qs8-qc8w-igemm_f16c-fma-avx2_standalone", +- ":qs8-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni-gfni-amx-tile-amx-int8_standalone", + ":qs8-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl-avx512vnni_standalone", + ":qs8-qc8w-igemm_f16c-fma-avx512f-avx512cd-avx512bw-avx512dq-avx512vl_standalone", + ":qs8-qc8w-igemm_sse2-no-sse3_standalone", diff --git a/mingw-w64-qt6-webengine-thirdparty/0201-gn-mingw-fixes.patch b/mingw-w64-qt6-webengine-thirdparty/0201-gn-mingw-fixes.patch new file mode 100644 index 0000000000000..152a1e9862d06 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0201-gn-mingw-fixes.patch @@ -0,0 +1,78 @@ +diff --git a/src/3rdparty/gn/build/build_mingw.ninja.template b/src/3rdparty/gn/build/build_mingw.ninja.template +index b1bf9ff..27339a7 100644 +--- a/src/3rdparty/gn/build/build_mingw.ninja.template ++++ b/src/3rdparty/gn/build/build_mingw.ninja.template +@@ -5,7 +5,7 @@ rule cxx + deps = gcc + + rule alink_thin +- command = cmd /c del $out && $ar rcsT $out $in ++ command = $ar rcsT $out $in + description = AR $out + + rule link +diff --git a/src/3rdparty/gn/build/gen.py b/src/3rdparty/gn/build/gen.py +index 5d07c8b..f00241d 100755 +--- a/src/3rdparty/gn/build/gen.py ++++ b/src/3rdparty/gn/build/gen.py +@@ -40,7 +40,10 @@ class Platform(object): + elif self._platform.startswith('msys'): + self._platform = 'msys' + elif self._platform.startswith('win'): +- self._platform = 'msvc' ++ if 'MSC' in sys.version: ++ self._platform = 'msvc' ++ else: ++ self._platform = 'mingw' + elif self._platform.startswith('aix'): + self._platform = 'aix' + elif self._platform.startswith('fuchsia'): +@@ -453,6 +456,9 @@ def WriteGNNinja(path, platform, host, options, args_list): + ld = options.ld + ar = options.ar + ++ if platform.is_mingw(): ++ ld = options.cxx ++ + if not ar: + if platform.is_msvc(): + ar = os.environ.get('AR', 'lib.exe') +@@ -494,7 +500,8 @@ def WriteGNNinja(path, platform, host, options, args_list): + # or data item into its own section so --gc-sections can eliminate any + # unused functions and data items. + cflags.extend(['-fdata-sections', '-ffunction-sections']) +- ldflags.extend(['-fdata-sections', '-ffunction-sections']) ++ if not platform.is_mingw(): ++ ldflags.extend(['-fdata-sections', '-ffunction-sections']) + if platform.is_darwin(): + ldflags.append('-Wl,-dead_strip') + elif not platform.is_aix() and not platform.is_solaris() and not platform.is_zos(): +diff --git a/src/3rdparty/gn/src/gn/ninja_binary_target_writer.cc b/src/3rdparty/gn/src/gn/ninja_binary_target_writer.cc +index 0d23087..cd20d15 100644 +--- a/src/3rdparty/gn/src/gn/ninja_binary_target_writer.cc ++++ b/src/3rdparty/gn/src/gn/ninja_binary_target_writer.cc +@@ -379,7 +379,11 @@ void NinjaBinaryTargetWriter::WriteLinkerFlags( + WriteLibrarySearchPath(out, tool); + + if (optional_def_file) { ++#ifdef _MSC_VER + out_ << " /DEF:"; ++#else ++ out_ << " "; ++#endif + path_output_.WriteFile(out, *optional_def_file); + } + } +diff --git a/src/3rdparty/gn/src/gn/pool.h b/src/3rdparty/gn/src/gn/pool.h +index 30224b3..a581cb2 100644 +--- a/src/3rdparty/gn/src/gn/pool.h ++++ b/src/3rdparty/gn/src/gn/pool.h +@@ -5,6 +5,8 @@ + #ifndef TOOLS_GN_POOL_H_ + #define TOOLS_GN_POOL_H_ + ++#include ++ + #include "gn/item.h" + + // Represents a named pool (which is used by ninja to limit concurrency of diff --git a/mingw-w64-qt6-webengine-thirdparty/0202-gn-short-long-target-ninja-paths.patch b/mingw-w64-qt6-webengine-thirdparty/0202-gn-short-long-target-ninja-paths.patch new file mode 100644 index 0000000000000..992ef0ae347ba --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/0202-gn-short-long-target-ninja-paths.patch @@ -0,0 +1,42 @@ +diff --git a/src/3rdparty/gn/src/gn/ninja_utils.cc b/src/3rdparty/gn/src/gn/ninja_utils.cc +@@ -4,14 +4,39 @@ + + #include "gn/ninja_utils.h" + ++#include ++ + #include "gn/filesystem_utils.h" + #include "gn/settings.h" + #include "gn/target.h" + ++namespace { ++ ++std::string ShortenNinjaFileNameIfNeeded(const std::string& name) { ++ constexpr size_t kMaxNinjaFileNameLength = 80; ++ if (name.size() <= kMaxNinjaFileNameLength) ++ return name; ++ ++ uint64_t hash = 14695981039346656037ull; ++ for (unsigned char c : name) { ++ hash ^= c; ++ hash *= 1099511628211ull; ++ } ++ ++ static constexpr char kHex[] = "0123456789abcdef"; ++ std::string result = name.substr(0, 48); ++ result.push_back('_'); ++ for (int shift = 60; shift >= 0; shift -= 4) ++ result.push_back(kHex[(hash >> shift) & 0xf]); ++ return result; ++} ++ ++} // namespace ++ + SourceFile GetNinjaFileForTarget(const Target* target) { + return SourceFile( + GetBuildDirForTargetAsSourceDir(target, BuildDirType::OBJ).value() + +- target->label().name() + ".ninja"); ++ ShortenNinjaFileNameIfNeeded(target->label().name()) + ".ninja"); + } + + SourceFile GetNinjaFileForToolchain(const Settings* settings) { diff --git a/mingw-w64-qt6-webengine-thirdparty/PKGBUILD b/mingw-w64-qt6-webengine-thirdparty/PKGBUILD new file mode 100644 index 0000000000000..9479b19dde574 --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/PKGBUILD @@ -0,0 +1,563 @@ +# Contributor: Raed Rizqie + +_realname=qt6-webengine +pkgbase=mingw-w64-${_realname}-thirdparty +pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-thirdparty") +pkgver=6.11.0 +pkgrel=1 +pkgdesc='Private third-party static archives for Qt6 WebEngine (mingw-w64)' +arch=(any) +mingw_arch=('ucrt64' 'clang64' 'mingw64') #('mingw64' 'ucrt64' 'clang64' 'clangarm64') +options=('!strip') +url='https://www.qt.io' +msys2_repository_url="https://code.qt.io/cgit/qt/qtwebengine.git" +msys2_references=( + 'archlinux: qt6-webengine' + "cpe: cpe:/a:qt:qt" +) +license=('spdx:BSD-3-Clause AND GFDL-1.3-no-invariants-only AND GPL-2.0-only AND GPL-3.0-only AND LGPL-3.0-only' 'custom') +depends=("${MINGW_PACKAGE_PREFIX}-ffmpeg" + "${MINGW_PACKAGE_PREFIX}-freetype" + "${MINGW_PACKAGE_PREFIX}-harfbuzz" + "${MINGW_PACKAGE_PREFIX}-icu" + "${MINGW_PACKAGE_PREFIX}-lcms2" + "${MINGW_PACKAGE_PREFIX}-libjpeg-turbo" + "${MINGW_PACKAGE_PREFIX}-libpng" + "${MINGW_PACKAGE_PREFIX}-libtiff" + "${MINGW_PACKAGE_PREFIX}-libvpx" + "${MINGW_PACKAGE_PREFIX}-libwebp" + "${MINGW_PACKAGE_PREFIX}-libxml2" + "${MINGW_PACKAGE_PREFIX}-libxslt" + "${MINGW_PACKAGE_PREFIX}-minizip" + "${MINGW_PACKAGE_PREFIX}-nss" + "${MINGW_PACKAGE_PREFIX}-openh264" + "${MINGW_PACKAGE_PREFIX}-openjpeg2" + "${MINGW_PACKAGE_PREFIX}-opus" + "${MINGW_PACKAGE_PREFIX}-re2" + "${MINGW_PACKAGE_PREFIX}-snappy" + "${MINGW_PACKAGE_PREFIX}-zlib") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-directx-headers" + "${MINGW_PACKAGE_PREFIX}-flatbuffers" + "${MINGW_PACKAGE_PREFIX}-gperf" + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-nodejs" + "${MINGW_PACKAGE_PREFIX}-pkgconf" + "${MINGW_PACKAGE_PREFIX}-python" + "${MINGW_PACKAGE_PREFIX}-python-html5lib" + "${MINGW_PACKAGE_PREFIX}-qt6-base" + "${MINGW_PACKAGE_PREFIX}-qt6-declarative" + "${MINGW_PACKAGE_PREFIX}-qt6-httpserver" + "${MINGW_PACKAGE_PREFIX}-qt6-positioning" + "${MINGW_PACKAGE_PREFIX}-qt6-tools" + "${MINGW_PACKAGE_PREFIX}-qt6-webchannel" + "bison" + "flex" + "rsync") +_pkgfn="${_realname/6-/}-everywhere-src-${pkgver}" +source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${pkgver}/submodules/${_pkgfn}.tar.xz" + 0001-cmake-configure-fixes.patch + 0002-chromium-add-mingw-toolchain.patch + 0003-chromium-base.patch + 0004-chromium-chrome.patch + 0005-chromium-components.patch + 0006-chromium-content.patch + 0007-chromium-device.patch + 0008-chromium-gpu.patch + 0009-chromium-media.patch + 0010-chromium-net.patch + 0011-chromium-sandbox.patch + 0012-chromium-services.patch + 0013-chromium-tools.patch + 0014-chromium-ui.patch + 0015-chromium-v8.patch + 0016-chromium-others.patch + 0101-chromium-third-party-angle.patch + 0102-chromium-third-party-blink.patch + 0103-chromium-third-party-breakpad.patch + 0104-chromium-third-party-crashpad.patch + 0105-chromium-third-party-ffmpeg.patch + 0106-chromium-third-party-pdfium.patch + 0107-chromium-third-party-perfetto.patch + 0108-chromium-third-party-skia.patch + 0109-chromium-third-party-vulkan.patch + 0110-chromium-third-party-webrtc.patch + 0111-chromium-third-party-others.patch + 0201-gn-mingw-fixes.patch + 0202-gn-short-long-target-ninja-paths.patch + 0113-chromium-mingw-followup.patch + 0114-chromium-abseil-policy-functions-mingw.patch + 0115-chromium-crashpad-mingw-arm64-object.patch + 0116-chromium-delegated-ink-mingw.patch + 0117-chromium-thirdparty-build-fixes.patch + 0121-chromium-nasm-native-paths.patch + 0122-chromium-shim-headers-subst-root.patch + 0123-chromium-xnnpack-long-targets.patch + thirdparty-extra-targets.list) +sha256sums=('63b921c8b2dd59152ced9a796676010166df044588ee00ef9429dc2fd2146736' + '654e22aa707cf5b0738201cbb189865c1b243817ba3b7e31bdc1808b3b2dde5a' + '16221ed5a9414f5c965cd8a5efa6d9ccd2aec88b3d5ef5f8e811546ae7a39927' + 'c9e9ff822ba4c7e76624b655e78a3018989fef9b667b2cc246fe34e1f594976b' + '3308eb7d4245ada89f7a996d8345301028d8a399ef1e4a4524aac0d9f7081b2a' + 'ba11e35584159acce6dd8c78a4c81c77d30b71185e8a30bf1cef4bd22b1d42ca' + 'a8e3842a4331ed419beb5a8f2e2ab291579c0ef30fc73acc69e5a08aa19ef4f7' + '37d24381a5ae4ab252d1488f1197588214dbb921fe3fbf023cf18aacae9018ff' + '07a16968a106e9ddcdee7631049240c545632c985dc7f95a66e14c6cf242e6e1' + '0e495d6080ad873a4d483f95a64f97932694290cab06a2ab44a9fcf79508d370' + '15c5f7432086052c12ad3fa72bcb04d31825e54147efaa330f7869bbcdca7d12' + '3db927f47a56976e438fb37086406f1a4e2225f347384936ab06aafa57c11356' + '478c1c99a02f075ead86ab93b02e34220b1e4b7a48965aab7ecc21b5b62a6199' + 'bdea737aab8ae9a5de35a09b625bd5cd7916e48634407f14a81c44f8f311c4ea' + 'f9317cb7e0563e84d2d949ad2145e5919a2198cae478a6e23f64522fe74dd6cb' + '710e337227b8c94bb14896b85156e9f39e3611aae4c9cb72528d78e5b8df6302' + '4c374d67ee2bea7ab695282a8dd124fe87b0e6436da155e07278cc291c2bbb96' + '0f5e7b7550b7c01df1e19691cc97631e4823902391eb052a7bd26ac11c69496b' + '1bacf19c987285dd103603ed701f574ea7f1aead9e842e75891801dddad181c9' + 'a022dbb4aae6a23ca8303c1eb9f1468c57825d5958aa1cd44e29e3353f4f9965' + 'c3b79ed05920456d5a8cb54e7221809dcad3b0c67527b2f9c4506327b44b7af4' + '388cfdffa78f6227f3fb0155b52549bc961156c8e88cce4c8a54c2165595c419' + 'ddcf8ff6b3ae6f2ddc1fe2c2398f2c31e45d80a76a36784282fb4319b951fd57' + '4d6167c67dcefa8156309987f74c21afe1dd92b2b463b9e2a5cd620f2811cd13' + '9980139c74556c7145b3b7e92a8fcd8adaec5ec4bc4b8915f55b1527f5849fcc' + '511c6b3e059ae086e18c43885793119be5e5d14d6037464c8bcd22f46d63c281' + '263759790b3c3d7a6fcd2332b38226d7b244dff8ab8410fd471a3f5f7b096db3' + '2476e5b9605e576370d1e278a5a4bd076f6d6ade26e9aac81a4568b6e99c2810' + '2b346ec92699b20458f3df5733f8792ef75ea824d24782ded211c0ac0258a249' + 'a05bb6488f02e89899a55873f6982c3cfc8e9ecbf9154ab722738d55cd5c8acb' + '05436f523d05fa78d6aa05482b9746f99f054fd4923910d0f7b8c7f1719bd718' + '58b53bb8e67a42b25c4dc906e3bd7a03384cc9622b65b804c07ead8e6460462a' + 'a75c7fe64a861a71ea8c21aa41c6fa89c4e393cebc2af8cc3716f357a6ff794c' + '098583d991c892281c285cc1f2437595b8f0746bd92f0ecd34e91d3da3e708d9' + 'bd44e169719d2ddeef712712d8210c5d27a12fbb0aab44b3a43bc6c5060c9cbf' + 'a22ba841a451f6bf31c0018228987d439eda4028de36571a66cda74c0e9fe3c3' + 'cc3baeafa575be49127df49ffb331119f3475c638ff209f435be2f554aa992f1' + 'ac9b5459e253ed3ae1682eadd724d0e97245780a2b6e221c6df7971b249800eb' + 'c952625c63c69abf16376ccd322109f46b7b3882b26080133fde337874aea960') + + +apply_patch_with_msg() { + for _patch in "$@" + do + msg2 "Applying ${_patch}" + patch -Np1 -i "${srcdir}/${_patch}" + done +} + +response_file_to_lines() { + tr ' ' '\n' < "$1" | sed -e 's/^"//' -e 's/"$//' +} + +build_ninja_targets_from_list() { + local _ninja_dir="$1" + local _target_list="$2" + local _targets=() + local _target + + while IFS= read -r _target; do + [[ -n "${_target}" ]] || continue + _targets+=("${_target}") + if (( ${#_targets[@]} >= 64 )); then + ninja -C "${_ninja_dir}" "${_targets[@]}" + _targets=() + fi + done < "${_target_list}" + + if (( ${#_targets[@]} > 0 )); then + ninja -C "${_ninja_dir}" "${_targets[@]}" + fi +} + +prepare() { + cd ${_pkgfn} + + apply_patch_with_msg \ + 0001-cmake-configure-fixes.patch \ + 0002-chromium-add-mingw-toolchain.patch \ + 0003-chromium-base.patch \ + 0004-chromium-chrome.patch \ + 0005-chromium-components.patch \ + 0006-chromium-content.patch \ + 0007-chromium-device.patch \ + 0008-chromium-gpu.patch \ + 0009-chromium-media.patch \ + 0010-chromium-net.patch \ + 0011-chromium-sandbox.patch \ + 0012-chromium-services.patch \ + 0013-chromium-tools.patch \ + 0014-chromium-ui.patch \ + 0015-chromium-v8.patch \ + 0016-chromium-others.patch \ + 0101-chromium-third-party-angle.patch \ + 0102-chromium-third-party-blink.patch \ + 0103-chromium-third-party-breakpad.patch \ + 0104-chromium-third-party-crashpad.patch \ + 0105-chromium-third-party-ffmpeg.patch \ + 0106-chromium-third-party-pdfium.patch \ + 0107-chromium-third-party-perfetto.patch \ + 0108-chromium-third-party-skia.patch \ + 0109-chromium-third-party-vulkan.patch \ + 0110-chromium-third-party-webrtc.patch \ + 0111-chromium-third-party-others.patch \ + 0201-gn-mingw-fixes.patch \ + 0202-gn-short-long-target-ninja-paths.patch \ + 0113-chromium-mingw-followup.patch \ + 0114-chromium-abseil-policy-functions-mingw.patch \ + 0115-chromium-crashpad-mingw-arm64-object.patch \ + 0116-chromium-delegated-ink-mingw.patch \ + 0117-chromium-thirdparty-build-fixes.patch \ + 0121-chromium-nasm-native-paths.patch \ + 0122-chromium-shim-headers-subst-root.patch \ + 0123-chromium-xnnpack-long-targets.patch +} + +build() { + local _build_tmp="${srcdir}/build-tmp-${MSYSTEM}" + rm -rf "${_build_tmp}" + install -d "${_build_tmp}" + export TMPDIR="${_build_tmp}" + export TMP="${_build_tmp}" + export TEMP="${_build_tmp}" + export NODEJS_EXECUTABLE="${MINGW_PREFIX}/bin/node.exe" + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + cmake -Wno-dev \ + -GNinja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python \ + -DQT_FEATURE_qtpdf_build=OFF \ + -DQT_FEATURE_qtwebengine_widgets_build=OFF \ + -DQT_FEATURE_qtwebengine_quick_build=OFF \ + -DQT_FEATURE_webengine_geolocation=ON \ + -DQT_FEATURE_webengine_kerberos=ON \ + -DQT_FEATURE_webengine_printing_and_pdf=ON \ + -DQT_FEATURE_webengine_spellchecker=ON \ + -DQT_FEATURE_webengine_vulkan=ON \ + -DQT_FEATURE_webengine_v8_context_snapshot=ON \ + -DQT_FEATURE_webengine_webchannel=ON \ + -DQT_FEATURE_webengine_webrtc=OFF \ + -DQT_FEATURE_webenginedriver=OFF \ + -DQT_FEATURE_webengine_system_ffmpeg=ON \ + -DQT_FEATURE_webengine_system_freetype=ON \ + -DQT_FEATURE_webengine_system_harfbuzz=ON \ + -DQT_FEATURE_webengine_system_icu=ON \ + -DQT_FEATURE_webengine_system_lcms2=ON \ + -DQT_FEATURE_webengine_system_libjpeg=ON \ + -DQT_FEATURE_webengine_system_libopenjpeg2=ON \ + -DQT_FEATURE_webengine_system_libpng=ON \ + -DQT_FEATURE_webengine_system_libtiff=ON \ + -DQT_FEATURE_webengine_system_libvpx=ON \ + -DQT_FEATURE_webengine_system_libwebp=ON \ + -DQT_FEATURE_webengine_system_libxml=ON \ + -DQT_FEATURE_webengine_system_minizip=ON \ + -DQT_FEATURE_webengine_system_openh264=ON \ + -DQT_FEATURE_webengine_system_opus=ON \ + -DQT_FEATURE_webengine_system_re2=ON \ + -DQT_FEATURE_webengine_system_snappy=ON \ + -DQT_FEATURE_webengine_system_zlib=ON \ + -DQT_SHOW_EXTRA_IDE_SOURCES=OFF \ + -S ${_pkgfn} \ + -B build-${MSYSTEM} + + cmake --build build-${MSYSTEM} --target src/core/run_core_NinjaReady --parallel "${NUMBER_OF_PROCESSORS:-2}" + cmake --build build-${MSYSTEM} --target WebEngineCore_sync_headers --parallel "${NUMBER_OF_PROCESSORS:-2}" + + local _subst_drive="Q:" + local _subst_src="/q" + cmd //c subst ${_subst_drive} //D > /dev/null 2>&1 || true + cmd //c subst ${_subst_drive} "$(cygpath -w "${srcdir}")" + trap 'cmd //c subst Q: //D > /dev/null 2>&1 || true' RETURN + + local _ninja_dir_real="${srcdir}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64" + local _ninja_dir="${_subst_src}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64" + local _ninja_dir_mixed="$(cygpath -m "${_ninja_dir_real}")" + export CHROMIUM_SOURCE_TREE_ROOT="$(cygpath -m "${srcdir}/${_pkgfn}/src/3rdparty/chromium")" + [[ -f "${_ninja_dir}/QtWebEngineCore_archives.rsp" ]] + local _private_dir="${srcdir}/qtwebengine-thirdparty-private" + local _private_bin="${_private_dir}/bin" + local _ar="${AR:-ar}" + + rm -rf "${_private_dir}" + install -d "${_private_dir}/obj" "${_private_dir}/lib" "${_private_bin}" + + local _private_obj_re='/obj/(.*third_party|net/third_party|skia)/' + + response_file_to_lines "${_ninja_dir}/QtWebEngineCore_archives.rsp" \ + | grep -E "${_private_obj_re}.*\.a$" \ + | sort -u \ + > "${_private_dir}/thirdparty-archives.list" + sed "s#^${_ninja_dir_mixed}/##" \ + "${_private_dir}/thirdparty-archives.list" \ + > "${_private_dir}/thirdparty-archive-targets.list" + + response_file_to_lines "${_ninja_dir}/QtWebEngineCore_objects.rsp" \ + | grep -E "${_private_obj_re}.*\.o$" \ + | sort -u \ + > "${_private_dir}/thirdparty-objects.rsp" + sed "s#^${_ninja_dir_mixed}/##" \ + "${_private_dir}/thirdparty-objects.rsp" \ + > "${_private_dir}/thirdparty-object-targets.list" + + install -Dm644 "${srcdir}/thirdparty-extra-targets.list" \ + "${_private_dir}/thirdparty-extra-targets.list" + + ninja -C "${_ninja_dir}" obj/base/base/precompile.h-cc.gch + ninja -C "${_ninja_dir}" -t targets all \ + | sed -n 's/: cxx$//p' \ + | grep -E 'precompile\.h-cc\.gch$' \ + > "${_private_dir}/thirdparty-pch-targets.list" + while IFS= read -r _pch_target; do + install -Dm644 "${_pkgfn}/src/3rdparty/chromium/build/precompile.h" \ + "${_ninja_dir}/${_pch_target%.gch}" + done < "${_private_dir}/thirdparty-pch-targets.list" + + build_ninja_targets_from_list "${_ninja_dir}" \ + "${_private_dir}/thirdparty-extra-targets.list" + build_ninja_targets_from_list "${_ninja_dir}" \ + "${_private_dir}/thirdparty-archive-targets.list" + build_ninja_targets_from_list "${_ninja_dir}" \ + "${_private_dir}/thirdparty-object-targets.list" + ninja -C "${_ninja_dir}" QtWebEngineCoreSandbox + + awk 'system("[ -f \"" $0 "\" ]") == 0' \ + "${_private_dir}/thirdparty-objects.rsp" \ + > "${_private_dir}/thirdparty-built-objects.rsp" + mv "${_private_dir}/thirdparty-built-objects.rsp" \ + "${_private_dir}/thirdparty-objects.rsp" + + local _perfetto_object_lists=( + "tracing:src/tracing/client_api_without_backends" + "protozero:src/protozero/protozero" + "dataframe:src/trace_processor/dataframe/dataframe" + ) + for _entry in "${_perfetto_object_lists[@]}"; do + local _name="${_entry%%:*}" + local _path="${_entry#*:}" + : > "${_private_dir}/thirdparty-perfetto-${_name}-objects.rsp" + for _object in "${_ninja_dir_mixed}/obj/third_party/perfetto/${_path}"/*.o; do + [[ -e "${_object}" ]] && printf '%s\n' "${_object}" + done >> "${_private_dir}/thirdparty-perfetto-${_name}-objects.rsp" + done + cat "${_private_dir}"/thirdparty-perfetto-*-objects.rsp \ + >> "${_private_dir}/thirdparty-objects.rsp" + shopt -s nullglob globstar + for _object in "${_ninja_dir_mixed}"/obj/third_party/pdfium/**/*.o; do + printf '%s\n' "${_object}" + done >> "${_private_dir}/thirdparty-objects.rsp" + shopt -u globstar nullglob + sort -u -o "${_private_dir}/thirdparty-objects.rsp" "${_private_dir}/thirdparty-objects.rsp" + for _object_list in "${_private_dir}"/thirdparty-perfetto-*-objects.rsp; do + sort -u -o "${_object_list}" "${_object_list}" + done + + while IFS= read -r _archive; do + install -Dm644 "${_archive}" "${_private_dir}/obj/${_archive#${_ninja_dir_mixed}/obj/}" + done < "${_private_dir}/thirdparty-archives.list" + + local _private_archives=( + "thirdparty-objects.rsp:libQt6WebEngineThirdPartyObjects.a" + "thirdparty-perfetto-tracing-objects.rsp:libQt6WebEngineThirdPartyPerfettoTracing.a" + "thirdparty-perfetto-protozero-objects.rsp:libQt6WebEngineThirdPartyPerfettoProtozero.a" + "thirdparty-perfetto-dataframe-objects.rsp:libQt6WebEngineThirdPartyPerfettoColumn.a" + ) + for _entry in "${_private_archives[@]}"; do + local _object_list="${_private_dir}/${_entry%%:*}" + local _relative_object_list="${_object_list%.rsp}-relative.rsp" + sed "s#^${_ninja_dir_mixed}/##" "${_object_list}" \ + | while IFS= read -r _object; do + [[ -f "${_ninja_dir}/${_object}" ]] && printf '%s\n' "${_object}" + done > "${_relative_object_list}" + rm -f "${_private_dir}/lib/${_entry#*:}" + ( cd "${_ninja_dir}" && xargs -a "${_relative_object_list}" \ + "${_ar}" crs "${_private_dir}/lib/${_entry#*:}" ) + done + install -Dm644 "${_ninja_dir}/libQtWebEngineCoreSandbox.a" \ + "${_private_dir}/lib/libQtWebEngineCoreSandbox.a" + + sed "s#^${_ninja_dir_mixed}/#${MINGW_PREFIX}/lib/qt6-webengine-private/#" \ + "${_private_dir}/thirdparty-archives.list" \ + > "${_private_dir}/qtwebengine-thirdparty-archives.rsp" + + local _private_tools=( + protoc.exe + protozero_plugin.exe + cppgen_plugin.exe + brotli.exe + character_data_generator.exe + root_store_tool.exe + top_domain_generator.exe + torque.exe + transport_security_state_generator.exe + convert_dict.exe + ) + ninja -C "${_ninja_dir}" \ + gen/net/http/transport_security_state_static.h \ + gen/v8/builtins-generated/bytecodes-builtins-list.h \ + gen/third_party/metrics_proto/chrome_user_metrics_extension.pb.h \ + "${_private_tools[@]}" + for _tool in "${_private_tools[@]}"; do + install -Dm755 "${_ninja_dir}/${_tool}" "${_private_bin}/${_tool}" + done +} + +package_qt6-webengine-thirdparty() { + depends+=("${MINGW_PACKAGE_PREFIX}-qt6-base" + "${MINGW_PACKAGE_PREFIX}-qt6-httpserver") + groups=("${MINGW_PACKAGE_PREFIX}-qt6") + pkgdesc='Private third-party static archives for Qt6 WebEngine (mingw-w64)' + + install -d "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}" + install -Dm644 ${_pkgfn}/LICENSES/* -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}" + + install -d "${pkgdir}${MINGW_PREFIX}/lib/qt6-webengine-private" + cp -a "${srcdir}/qtwebengine-thirdparty-private/obj" \ + "${pkgdir}${MINGW_PREFIX}/lib/qt6-webengine-private/" + cp -a "${srcdir}/qtwebengine-thirdparty-private/bin" \ + "${pkgdir}${MINGW_PREFIX}/lib/qt6-webengine-private/" + for _archive in "${srcdir}"/qtwebengine-thirdparty-private/lib/*.a; do + install -Dm644 "${_archive}" \ + "${pkgdir}${MINGW_PREFIX}/lib/qt6-webengine-private/${_archive##*/}" + done + install -Dm644 "${srcdir}/qtwebengine-thirdparty-private/qtwebengine-thirdparty-archives.rsp" \ + "${pkgdir}${MINGW_PREFIX}/lib/qt6-webengine-private/qtwebengine-thirdparty-archives.rsp" + + local _private_chromium_src="${srcdir}/${_pkgfn}/src/3rdparty/chromium" + local _private_chromium_dst="${pkgdir}${MINGW_PREFIX}/share/qt6-webengine-private/chromium" + install -d "${_private_chromium_dst}" + install -Dm644 "${_private_chromium_src}/build/config/qtwebengine_private_paths.gni" \ + "${_private_chromium_dst}/build/config/qtwebengine_private_paths.gni" + rsync -a --include='*/' --include='*.h' --exclude='*' \ + "${srcdir}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64/gen/" \ + "${_private_chromium_dst}/gen/" + install -Dm644 "${srcdir}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64/gen/net/http/transport_security_state_static.h" \ + "${_private_chromium_dst}/net/http/transport_security_state_static.h" + install -Dm644 "${srcdir}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64/gen/v8/builtins-generated/bytecodes-builtins-list.h" \ + "${_private_chromium_dst}/v8/gen/v8/builtins-generated/bytecodes-builtins-list.h" + cp -a "${_private_chromium_src}/v8/include" \ + "${_private_chromium_dst}/v8/" + install -Dm644 "${srcdir}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64/gen/third_party/blink/public/strings/grit/blink_strings.h" \ + "${_private_chromium_dst}/third_party/blink/public/strings/grit/blink_strings.h" + rsync -a --prune-empty-dirs \ + --include='*/' \ + --include='*.pb.h' \ + --exclude='*' \ + "${srcdir}/build-${MSYSTEM}/src/core/RelWithDebInfo/AMD64/gen/third_party/metrics_proto" \ + "${_private_chromium_dst}/third_party/" + rsync -a --prune-empty-dirs \ + --exclude='icu/***' \ + --include='*/' \ + --include='*.gn' --include='*.gni' \ + --include='*.h' --include='*.hh' --include='*.hxx' --include='*.hpp' --include='*.inc' \ + --include='*.py' --include='*.pydeps' \ + --include='*.json' --include='*.json5' --include='*.csv' --include='*.gperf' --include='*.mojom' --include='*.pdl' --include='*.pidl' --include='*.proto' \ + --include='*.css' --include='*.html' --include='*.js' --include='*.flac' --include='*.wav' \ + --include='*.grd' --include='*.grdp' --include='*.pak' \ + --include='*.xtb' --include='*.png' --include='*.webp' --include='*.svg' \ + --include='*.gif' --include='*.jpg' \ + --include='*.idl' --include='*.jinja2' --include='*.tmpl' --include='*.template' \ + --include='*.ids' \ + --include='*.txt' --include='*.cfg' --include='*.typemap' --include='*.sha1' \ + --include='BSD_LICENSE' \ + --exclude='*' \ + "${_private_chromium_src}/third_party" \ + "${_private_chromium_dst}/" + rsync -a --prune-empty-dirs \ + --include='*/' \ + --include='generate_about_tracing_contents' \ + --include='*.html' --include='*.css' --include='*.js' \ + --include='*.gif' --include='*.jpg' --include='*.png' --include='*.svg' \ + --exclude='*' \ + "${_private_chromium_src}/third_party/catapult" \ + "${_private_chromium_dst}/third_party/" + rsync -a --prune-empty-dirs \ + --include='*/' \ + --include='rollup' \ + --include='tsc' --include='tsserver' \ + --include='*.avif' --include='*.cjs' --include='*.css' --include='*.cts' \ + --include='*.gif' --include='*.html' --include='*.ico' --include='*.js' \ + --include='*.json' --include='*.map' --include='*.md' --include='*.mjs' --include='*.png' --include='*.svg' \ + --include='*.ts' --include='*.mts' --include='*.wasm' --include='*.webp' \ + --exclude='*' \ + "${_private_chromium_src}/third_party/devtools-frontend" \ + "${_private_chromium_dst}/third_party/" + cp -a "${_private_chromium_src}/third_party/dawn/generator/templates" \ + "${_private_chromium_dst}/third_party/dawn/generator/" + install -Dm644 "${_private_chromium_src}/third_party/icu/BUILD.gn" \ + "${_private_chromium_dst}/third_party/icu/BUILD.gn" + install -Dm644 "${_private_chromium_src}/third_party/icu/config.gni" \ + "${_private_chromium_dst}/third_party/icu/config.gni" + install -Dm644 "${_private_chromium_src}/third_party/icu/sources.gni" \ + "${_private_chromium_dst}/third_party/icu/sources.gni" + install -Dm644 "${_private_chromium_src}/third_party/icu/version.gni" \ + "${_private_chromium_dst}/third_party/icu/version.gni" + install -d "${_private_chromium_dst}/third_party/icu/source/common" \ + "${_private_chromium_dst}/third_party/icu/source/i18n" + cp -a "${MINGW_PREFIX}/include/unicode" \ + "${_private_chromium_dst}/third_party/icu/source/common/" + cp -a "${MINGW_PREFIX}/include/unicode" \ + "${_private_chromium_dst}/third_party/icu/source/i18n/" + + install -Dm644 "${_private_chromium_src}/third_party/d3/src/d3.min.js" \ + "${_private_chromium_dst}/third_party/d3/src/d3.min.js" + install -Dm644 "${_private_chromium_src}/third_party/d3/src/d3.d.ts" \ + "${_private_chromium_dst}/third_party/d3/src/d3.d.ts" + rm -rf "${_private_chromium_dst}/third_party/flatbuffers/src/include/flatbuffers" + install -d "${_private_chromium_dst}/third_party/flatbuffers/src/include" + cp -a "${MINGW_PREFIX}/include/flatbuffers" \ + "${_private_chromium_dst}/third_party/flatbuffers/src/include/" + cp -a "${_private_chromium_src}/third_party/polymer/v3_0" \ + "${_private_chromium_dst}/third_party/polymer/" + cp -a "${_private_chromium_src}/third_party/lit/v3_0" \ + "${_private_chromium_dst}/third_party/lit/" + install -d "${_private_chromium_dst}/third_party/node/node_modules" + cp -a "${_private_chromium_src}/third_party/node/node_modules/@lit" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + cp -a "${_private_chromium_src}/third_party/node/node_modules/lit" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + cp -a "${_private_chromium_src}/third_party/node/node_modules/lit-element" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + cp -a "${_private_chromium_src}/third_party/node/node_modules/lit-html" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + cp -a "${_private_chromium_src}/third_party/node/node_modules/typescript" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + install -d "${_private_chromium_dst}/third_party/node/node_modules/@rollup/wasm-node" + cp -a "${_private_chromium_src}/third_party/node/node_modules/@rollup/wasm-node/dist" \ + "${_private_chromium_dst}/third_party/node/node_modules/@rollup/wasm-node/" + install -d "${_private_chromium_dst}/third_party/node/node_modules/@types" + cp -a "${_private_chromium_src}/third_party/node/node_modules/@types/trusted-types" \ + "${_private_chromium_dst}/third_party/node/node_modules/@types/" + cp -a "${_private_chromium_src}/third_party/node/node_modules/commander" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + install -d "${_private_chromium_dst}/third_party/node/node_modules/@jridgewell" + for _jridgewell_module in gen-mapping resolve-uri set-array source-map sourcemap-codec trace-mapping; do + cp -a "${_private_chromium_src}/third_party/node/node_modules/@jridgewell/${_jridgewell_module}" \ + "${_private_chromium_dst}/third_party/node/node_modules/@jridgewell/" + done + cp -a "${_private_chromium_src}/third_party/node/node_modules/terser" \ + "${_private_chromium_dst}/third_party/node/node_modules/" + + install -d "${pkgdir}${MINGW_PREFIX}/include" + rsync -a --prune-empty-dirs \ + --exclude='icu/***' \ + --include='*/' \ + --include='*.h' --include='*.hh' --include='*.hxx' --include='*.hpp' --include='*.inc' \ + --exclude='*' \ + "${srcdir}/${_pkgfn}/src/3rdparty/chromium/third_party" \ + "${pkgdir}${MINGW_PREFIX}/include/" + + grep -R -l -Z -E 'third_party/icu/source/(common|i18n)/unicode/' \ + --include='*.h' --include='*.hh' --include='*.hpp' --include='*.inc' \ + "${_private_chromium_dst}" "${pkgdir}${MINGW_PREFIX}/include" \ + | xargs -0 -r sed -E -i 's@#include "third_party/icu/source/(common|i18n)/unicode/([^"]+)"@#include "unicode/\2"@g' +} + +# template start; name=mingw-w64-splitpkg-wrappers; version=1.0; +# vim: set ft=bash : + +# generate wrappers +for _name in "${pkgname[@]}"; do + _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}" + _func="$(declare -f "${_short}")" + eval "${_func/#${_short}/package_${_name}}" +done +# template end; diff --git a/mingw-w64-qt6-webengine-thirdparty/thirdparty-extra-targets.list b/mingw-w64-qt6-webengine-thirdparty/thirdparty-extra-targets.list new file mode 100644 index 0000000000000..8c73a0d74c19b --- /dev/null +++ b/mingw-w64-qt6-webengine-thirdparty/thirdparty-extra-targets.list @@ -0,0 +1,730 @@ +obj/base/base/precompile.h-cc.gch +gen/base/i18n/transliterator_buildflags.h +gen/base/version_info/version_info_values.h +gen/build/android_buildflags.h +gen/build/robolectric_buildflags.h +gen/google_apis/gcm/protocol/android_checkin.pb.h +gen/google_apis/gcm/protocol/checkin.pb.h +gen/google_apis/gcm/protocol/mcs.pb.h +gen/ipc/constants.mojom.h +gen/ipc/constants.mojom-features.h +gen/printing/buildflags/buildflags.h +gen/sql/sql_name_variants.h +gen/components/compose/buildflags.h +gen/components/crash/core/common/crash_buildflags.h +gen/components/cdm/common/buildflags.h +gen/components/gcm_driver/gcm_buildflags.h +gen/components/keyed_service/core/features_buildflags.h +gen/components/network_hints/common/network_hints.mojom-features.h +gen/components/network_hints/common/network_hints.mojom-forward.h +gen/components/network_hints/common/network_hints.mojom-shared-internal.h +gen/components/network_hints/common/network_hints.mojom-shared.h +gen/components/network_hints/common/network_hints.mojom.h +gen/components/signin/public/base/hybrid_encryption_key.pb.h +gen/components/spellcheck/spellcheck_buildflags.h +gen/components/visitedlink/common/visitedlink.mojom-features.h +gen/components/visitedlink/common/visitedlink.mojom-forward.h +gen/components/visitedlink/common/visitedlink.mojom-shared-internal.h +gen/components/visitedlink/common/visitedlink.mojom-shared.h +gen/components/visitedlink/common/visitedlink.mojom.h +gen/components/variations/proto/study.pb.h +gen/components/web_cache/public/mojom/web_cache.mojom-features.h +gen/components/web_cache/public/mojom/web_cache.mojom-forward.h +gen/components/web_cache/public/mojom/web_cache.mojom-shared-internal.h +gen/components/web_cache/public/mojom/web_cache.mojom-shared.h +gen/components/web_cache/public/mojom/web_cache.mojom.h +gen/components/strings/grit/components_branded_strings.h +gen/components/strings/grit/components_strings.h +gen/crypto/crypto_buildflags.h +gen/components/content_settings/core/common/content_settings.mojom-shared-internal.h +gen/components/content_settings/core/common/content_settings.mojom.h +gen/components/content_settings/core/common/content_settings_enums.mojom-forward.h +gen/components/content_settings/core/common/content_settings_enums.mojom-shared-internal.h +gen/components/content_settings/core/common/content_settings_types.mojom-shared-internal.h +gen/components/content_settings/core/common/content_settings_types.mojom.h +gen/components/autofill/core/browser/form_parsing/buildflags.h +gen/components/autofill/content/browser/risk/proto/fingerprint.pb.h +gen/components/autofill/core/browser/proto/api_v1.pb.h +gen/components/autofill/core/common/mojom/autofill_types.mojom.h +gen/components/autofill/core/common/mojom/autofill_types.mojom-shared.h +gen/components/autofill/content/common/mojom/autofill_driver.mojom.h +gen/components/autofill/content/common/mojom/autofill_driver.mojom-features.h +gen/components/attribution_reporting/data_host.mojom-features.h +gen/components/attribution_reporting/data_host.mojom-forward.h +gen/components/attribution_reporting/data_host.mojom-shared-internal.h +gen/components/attribution_reporting/data_host.mojom-shared.h +gen/components/attribution_reporting/data_host.mojom.h +gen/components/attribution_reporting/debug_types.mojom-features.h +gen/components/attribution_reporting/debug_types.mojom-forward.h +gen/components/attribution_reporting/debug_types.mojom-shared-internal.h +gen/components/attribution_reporting/debug_types.mojom-shared.h +gen/components/attribution_reporting/debug_types.mojom.h +gen/components/attribution_reporting/registration.mojom-features.h +gen/components/attribution_reporting/registration.mojom-forward.h +gen/components/attribution_reporting/registration.mojom-shared-internal.h +gen/components/attribution_reporting/registration.mojom-shared.h +gen/components/attribution_reporting/registration.mojom.h +gen/components/attribution_reporting/registration_eligibility.mojom-features.h +gen/components/attribution_reporting/registration_eligibility.mojom-forward.h +gen/components/attribution_reporting/registration_eligibility.mojom-shared-internal.h +gen/components/attribution_reporting/registration_eligibility.mojom-shared.h +gen/components/attribution_reporting/registration_eligibility.mojom.h +gen/components/attribution_reporting/registration_header_error.mojom-features.h +gen/components/attribution_reporting/registration_header_error.mojom-forward.h +gen/components/attribution_reporting/registration_header_error.mojom-shared-internal.h +gen/components/attribution_reporting/registration_header_error.mojom-shared.h +gen/components/attribution_reporting/registration_header_error.mojom.h +gen/components/attribution_reporting/source_registration_time_config.mojom-features.h +gen/components/attribution_reporting/source_registration_time_config.mojom-forward.h +gen/components/attribution_reporting/source_registration_time_config.mojom-shared-internal.h +gen/components/attribution_reporting/source_registration_time_config.mojom-shared.h +gen/components/attribution_reporting/source_registration_time_config.mojom.h +gen/components/attribution_reporting/trigger_data_matching.mojom-features.h +gen/components/attribution_reporting/trigger_data_matching.mojom-forward.h +gen/components/attribution_reporting/trigger_data_matching.mojom-shared-internal.h +gen/components/attribution_reporting/trigger_data_matching.mojom-shared.h +gen/components/attribution_reporting/trigger_data_matching.mojom.h +gen/content/common/buildflags.h +gen/content/public/common/buildflags.h +gen/content/public/common/extra_mojo_js_features.mojom.h +gen/content/public/common/extra_mojo_js_features.mojom-features.h +gen/device/bluetooth/public/mojom/uuid.mojom-features.h +gen/device/bluetooth/public/mojom/uuid.mojom-forward.h +gen/device/bluetooth/public/mojom/uuid.mojom-shared-internal.h +gen/device/bluetooth/public/mojom/uuid.mojom-shared.h +gen/device/bluetooth/public/mojom/uuid.mojom.h +gen/gpu/vulkan/buildflags.h +gen/media/media_buildflags.h +gen/media/mojo/mojom/video_decode_perf_history.mojom-forward.h +gen/media/mojo/mojom/video_decode_perf_history.mojom-features.h +gen/media/mojo/mojom/video_decode_perf_history.mojom-shared-internal.h +gen/media/mojo/mojom/video_decode_perf_history.mojom.h +gen/mojo/public/interfaces/bindings/native_struct.mojom-forward.h +gen/mojo/public/interfaces/bindings/native_struct.mojom-shared-internal.h +gen/mojo/public/mojom/base/int128.mojom-features.h +gen/mojo/public/mojom/base/int128.mojom-forward.h +gen/mojo/public/mojom/base/int128.mojom-shared-internal.h +gen/mojo/public/mojom/base/int128.mojom-shared.h +gen/mojo/public/mojom/base/int128.mojom.h +gen/mojo/public/mojom/base/time.mojom-features.h +gen/mojo/public/mojom/base/time.mojom-forward.h +gen/mojo/public/mojom/base/time.mojom-shared-internal.h +gen/mojo/public/mojom/base/time.mojom-shared.h +gen/mojo/public/mojom/base/time.mojom.h +gen/mojo/public/mojom/base/unguessable_token.mojom.h +gen/sandbox/policy/mojom/context.mojom-shared-internal.h +gen/sandbox/policy/mojom/sandbox.mojom-shared-internal.h +gen/ui/base/ozone_buildflags.h +gen/ui/gl/buildflags.h +gen/services/device/public/mojom/device_service.mojom-features.h +gen/services/device/public/mojom/device_service.mojom-forward.h +gen/services/device/public/mojom/device_service.mojom-shared-internal.h +gen/services/device/public/mojom/device_service.mojom-shared.h +gen/services/device/public/mojom/device_service.mojom.h +gen/services/device/public/mojom/battery_monitor.mojom-forward.h +gen/services/device/public/mojom/battery_monitor.mojom-shared-internal.h +gen/services/device/public/mojom/fingerprint.mojom-forward.h +gen/services/device/public/mojom/fingerprint.mojom-shared-internal.h +gen/services/device/public/mojom/geolocation_context.mojom-forward.h +gen/services/device/public/mojom/geolocation_context.mojom-shared-internal.h +gen/services/device/public/mojom/geolocation_control.mojom-forward.h +gen/services/device/public/mojom/geolocation_control.mojom-shared-internal.h +gen/services/device/public/mojom/geolocation.mojom-forward.h +gen/services/device/public/mojom/geolocation.mojom-shared-internal.h +gen/services/device/public/mojom/geolocation_client_id.mojom-forward.h +gen/services/device/public/mojom/geolocation_client_id.mojom-shared-internal.h +gen/services/device/public/mojom/geolocation_internals.mojom-forward.h +gen/services/device/public/mojom/geolocation_internals.mojom-shared-internal.h +gen/services/device/public/mojom/geoposition.mojom-forward.h +gen/services/device/public/mojom/geoposition.mojom-shared-internal.h +gen/services/device/public/mojom/hid.mojom-forward.h +gen/services/device/public/mojom/hid.mojom-shared-internal.h +gen/services/device/public/mojom/power_monitor.mojom-forward.h +gen/services/device/public/mojom/power_monitor.mojom-shared-internal.h +gen/services/device/public/mojom/pressure_manager.mojom-forward.h +gen/services/device/public/mojom/pressure_manager.mojom-shared-internal.h +gen/services/device/public/mojom/public_ip_address_geolocation_provider.mojom-forward.h +gen/services/device/public/mojom/public_ip_address_geolocation_provider.mojom-shared-internal.h +gen/services/device/public/mojom/screen_orientation.mojom-forward.h +gen/services/device/public/mojom/screen_orientation.mojom-shared-internal.h +gen/services/device/public/mojom/sensor_provider.mojom-forward.h +gen/services/device/public/mojom/sensor_provider.mojom-shared-internal.h +gen/services/device/public/mojom/serial.mojom-forward.h +gen/services/device/public/mojom/serial.mojom-shared-internal.h +gen/services/device/public/mojom/time_zone_monitor.mojom-forward.h +gen/services/device/public/mojom/time_zone_monitor.mojom-shared-internal.h +gen/services/device/public/mojom/usb_manager.mojom-forward.h +gen/services/device/public/mojom/usb_manager.mojom-shared-internal.h +gen/services/device/public/mojom/usb_manager_test.mojom-forward.h +gen/services/device/public/mojom/usb_manager_test.mojom-shared-internal.h +gen/services/device/public/mojom/vibration_manager.mojom-forward.h +gen/services/device/public/mojom/vibration_manager.mojom-shared-internal.h +gen/services/device/public/mojom/wake_lock_provider.mojom-forward.h +gen/services/device/public/mojom/wake_lock_provider.mojom-shared-internal.h +gen/ui/accessibility/ax_enums.mojom-forward.h +gen/ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h +gen/ui/base/dragdrop/mojom/drag_drop_types.mojom-features.h +gen/ui/base/dragdrop/mojom/drag_drop_types.mojom-shared-internal.h +gen/ui/base/dragdrop/mojom/drag_drop_types.mojom.h +gen/ui/base/mojom/menu_source_type.mojom-forward.h +gen/ui/base/mojom/menu_source_type.mojom-features.h +gen/ui/base/mojom/menu_source_type.mojom-shared-internal.h +gen/ui/base/mojom/menu_source_type.mojom.h +gen/ui/display/mojom/screen_orientation.mojom-forward.h +gen/ui/display/mojom/screen_orientation.mojom-features.h +gen/ui/display/mojom/screen_orientation.mojom-shared-internal.h +gen/ui/display/mojom/screen_orientation.mojom-shared.h +gen/ui/display/mojom/screen_orientation.mojom.h +gen/ui/gfx/geometry/mojom/geometry.mojom-features.h +gen/ui/gfx/geometry/mojom/geometry.mojom-forward.h +gen/ui/gfx/geometry/mojom/geometry.mojom-shared-internal.h +gen/ui/gfx/geometry/mojom/geometry.mojom-shared.h +gen/ui/gfx/geometry/mojom/geometry.mojom.h +gen/ui/gfx/mojom/transform.mojom-features.h +gen/ui/gfx/mojom/transform.mojom-forward.h +gen/ui/gfx/mojom/transform.mojom-shared-internal.h +gen/ui/gfx/mojom/transform.mojom-shared.h +gen/ui/gfx/mojom/transform.mojom.h +gen/gpu/ipc/common/exported_shared_image.mojom-features.h +gen/gpu/ipc/common/exported_shared_image.mojom-forward.h +gen/gpu/ipc/common/exported_shared_image.mojom-shared-internal.h +gen/gpu/ipc/common/exported_shared_image.mojom-shared.h +gen/gpu/ipc/common/exported_shared_image.mojom.h +gen/gpu/ipc/common/mailbox.mojom-features.h +gen/gpu/ipc/common/mailbox.mojom-forward.h +gen/gpu/ipc/common/mailbox.mojom-shared-internal.h +gen/gpu/ipc/common/mailbox.mojom-shared.h +gen/gpu/ipc/common/mailbox.mojom.h +gen/gpu/ipc/common/shared_image_metadata.mojom-shared-internal.h +gen/gpu/ipc/common/shared_image_pool_client_interface.mojom-features.h +gen/gpu/ipc/common/shared_image_pool_client_interface.mojom-forward.h +gen/gpu/ipc/common/shared_image_pool_client_interface.mojom-shared-internal.h +gen/gpu/ipc/common/shared_image_pool_client_interface.mojom-shared.h +gen/gpu/ipc/common/shared_image_pool_client_interface.mojom.h +gen/gpu/ipc/common/sync_token.mojom-features.h +gen/gpu/ipc/common/sync_token.mojom-forward.h +gen/gpu/ipc/common/sync_token.mojom-shared-internal.h +gen/gpu/ipc/common/sync_token.mojom-shared.h +gen/gpu/ipc/common/sync_token.mojom.h +gen/gpu/ipc/common/vulkan_ycbcr_info.mojom-features.h +gen/gpu/ipc/common/vulkan_ycbcr_info.mojom-forward.h +gen/gpu/ipc/common/vulkan_ycbcr_info.mojom-shared-internal.h +gen/gpu/ipc/common/vulkan_ycbcr_info.mojom-shared.h +gen/gpu/ipc/common/vulkan_ycbcr_info.mojom.h +gen/media/mojo/mojom/audio_data.mojom-features.h +gen/media/mojo/mojom/audio_data.mojom-forward.h +gen/media/mojo/mojom/audio_data.mojom-shared-internal.h +gen/media/mojo/mojom/audio_data.mojom-shared.h +gen/media/mojo/mojom/audio_data.mojom.h +gen/media/mojo/mojom/audio_data_pipe.mojom-shared-internal.h +gen/media/mojo/mojom/audio_input_stream.mojom-shared-internal.h +gen/media/mojo/mojom/audio_parameters.mojom-shared-internal.h +gen/media/mojo/mojom/audio_processing.mojom-shared-internal.h +gen/media/mojo/mojom/encryption_pattern.mojom-features.h +gen/media/mojo/mojom/encryption_pattern.mojom-forward.h +gen/media/mojo/mojom/encryption_pattern.mojom-shared-internal.h +gen/media/mojo/mojom/encryption_pattern.mojom-shared.h +gen/media/mojo/mojom/encryption_pattern.mojom.h +gen/media/mojo/mojom/media_types.mojom-shared-internal.h +gen/media/gpu/buildflags.h +gen/mojo/buildflags.h +gen/mojo/public/cpp/bindings/mojo_buildflags.h +gen/mojo/public/interfaces/bindings/interface_control_messages.mojom-features.h +gen/mojo/public/interfaces/bindings/interface_control_messages.mojom-forward.h +gen/mojo/public/interfaces/bindings/interface_control_messages.mojom-shared-internal.h +gen/mojo/public/interfaces/bindings/interface_control_messages.mojom-shared-message-ids.h +gen/mojo/public/interfaces/bindings/interface_control_messages.mojom-shared.h +gen/mojo/public/interfaces/bindings/interface_control_messages.mojom.h +gen/net/base/cronet_buildflags.h +gen/net/base/registry_controlled_domains/effective_tld_names-inc.cc +gen/net/base/registry_controlled_domains/effective_tld_names-reversed-inc.cc +gen/net/base/isolation_info.pb.h +gen/net/cert/root_store_proto_lite/root_store.pb.h +gen/net/disk_cache/buildflags.h +gen/net/data/ssl/chrome_root_store/chrome-ev-roots-inc.cc +gen/net/device_bound_sessions/proto/storage.pb.h +gen/net/net_buildflags.h +gen/net/grit/net_resources.h +gen/net/nqe/proto/network_id_proto.pb.h +gen/net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.h +gen/services/network/public/mojom/accept_ch_frame_observer.mojom-shared-internal.h +gen/services/network/public/mojom/ad_auction.mojom-shared-internal.h +gen/services/network/public/mojom/blocked_by_response_reason.mojom-shared-internal.h +gen/services/network/public/mojom/alternate_protocol_usage.mojom-shared-internal.h +gen/services/network/public/mojom/alternate_protocol_usage.mojom.h +gen/services/network/public/mojom/attribution.mojom-features.h +gen/services/network/public/mojom/attribution.mojom-forward.h +gen/services/network/public/mojom/attribution.mojom-shared-internal.h +gen/services/network/public/mojom/attribution.mojom-shared.h +gen/services/network/public/mojom/attribution.mojom.h +gen/services/network/public/mojom/chunked_data_pipe_getter.mojom-shared-internal.h +gen/services/network/public/mojom/client_security_state.mojom-shared-internal.h +gen/services/network/public/mojom/cors.mojom-shared-internal.h +gen/services/network/public/mojom/cookie_access_observer.mojom-shared-internal.h +gen/services/network/public/mojom/cookie_manager.mojom-shared-internal.h +gen/services/network/public/mojom/cookie_partition_key.mojom-shared-internal.h +gen/services/network/public/mojom/cookie_manager.mojom-forward.h +gen/services/network/public/mojom/content_security_policy.mojom.h +gen/services/network/public/mojom/content_security_policy.mojom-features.h +gen/services/network/public/mojom/cross_origin_embedder_policy.mojom-forward.h +gen/services/network/public/mojom/cross_origin_embedder_policy.mojom-shared.h +gen/services/network/public/mojom/cross_origin_embedder_policy.mojom.h +gen/services/network/public/mojom/cross_origin_opener_policy.mojom.h +gen/services/network/public/mojom/data_pipe_getter.mojom-shared-internal.h +gen/services/network/public/mojom/device_bound_sessions.mojom-shared-internal.h +gen/services/network/public/mojom/devtools_observer.mojom-shared-internal.h +gen/services/network/public/mojom/document_isolation_policy.mojom-forward.h +gen/services/network/public/mojom/document_isolation_policy.mojom.h +gen/services/network/public/mojom/encoded_body_length.mojom-shared-internal.h +gen/services/network/public/mojom/encoded_body_length.mojom.h +gen/services/network/public/mojom/ip_endpoint.mojom.h +gen/services/network/public/mojom/load_timing_info.mojom.h +gen/services/network/public/mojom/load_timing_internal_info.mojom.h +gen/services/network/public/mojom/network_types.mojom.h +gen/services/network/public/mojom/no_vary_search.mojom.h +gen/services/network/public/mojom/parsed_headers.mojom.h +gen/services/network/public/mojom/parsed_request_cookie.mojom.h +gen/services/network/public/mojom/service_worker_router_info.mojom.h +gen/services/network/public/mojom/source_type.mojom.h +gen/services/network/public/mojom/timing_allow_origin.mojom.h +gen/services/network/public/mojom/unencoded_digest.mojom.h +gen/services/network/public/mojom/integrity_algorithm.mojom-forward.h +gen/services/network/public/mojom/integrity_algorithm.mojom-shared-internal.h +gen/services/network/public/mojom/integrity_metadata.mojom-forward.h +gen/services/network/public/mojom/integrity_metadata.mojom-shared-internal.h +gen/services/network/public/mojom/integrity_policy.mojom-shared-internal.h +gen/services/network/public/mojom/integrity_policy.mojom.h +gen/services/network/public/mojom/link_header.mojom.h +gen/services/network/public/mojom/mutable_network_traffic_annotation_tag.mojom.h +gen/services/network/public/mojom/mutable_network_traffic_annotation_tag.mojom-shared-internal.h +gen/services/network/public/mojom/network_param.mojom-shared-internal.h +gen/services/network/public/mojom/network_param.mojom.h +gen/services/network/public/mojom/permissions_policy/permissions_policy_feature.mojom-forward.h +gen/services/network/public/mojom/permissions_policy/permissions_policy.mojom-shared.h +gen/services/network/public/mojom/permissions_policy/permissions_policy.mojom-shared-internal.h +gen/services/network/public/mojom/cookie_manager.mojom-features.h +gen/services/network/public/mojom/fetch_api.mojom-forward.h +gen/services/network/public/mojom/fetch_api.mojom-shared-internal.h +gen/services/network/public/mojom/fetch_retry_options.mojom-shared-internal.h +gen/services/network/public/mojom/first_party_sets.mojom-forward.h +gen/services/network/public/mojom/first_party_sets.mojom-shared-internal.h +gen/services/network/public/mojom/http_raw_headers.mojom-shared-internal.h +gen/services/network/public/mojom/http_request_headers.mojom-shared-internal.h +gen/services/network/public/mojom/ip_address.mojom-shared-internal.h +gen/services/network/public/mojom/ip_address_space.mojom-shared-internal.h +gen/services/network/public/mojom/ip_endpoint.mojom-shared-internal.h +gen/services/network/public/mojom/isolation_info.mojom-shared-internal.h +gen/services/network/public/mojom/load_timing_info.mojom-shared-internal.h +gen/services/network/public/mojom/load_timing_internal_info.mojom-shared-internal.h +gen/services/network/public/mojom/schemeful_site.mojom-features.h +gen/services/network/public/mojom/schemeful_site.mojom-forward.h +gen/services/network/public/mojom/schemeful_site.mojom-shared-internal.h +gen/services/network/public/mojom/schemeful_site.mojom-shared.h +gen/services/network/public/mojom/schemeful_site.mojom.h +gen/services/network/public/mojom/network_anonymization_key.mojom-features.h +gen/services/network/public/mojom/network_anonymization_key.mojom-forward.h +gen/services/network/public/mojom/network_anonymization_key.mojom-shared-internal.h +gen/services/network/public/mojom/network_anonymization_key.mojom-shared.h +gen/services/network/public/mojom/network_anonymization_key.mojom.h +gen/services/network/public/mojom/network_context.mojom-forward.h +gen/services/network/public/mojom/network_isolation_partition.mojom-features.h +gen/services/network/public/mojom/network_isolation_partition.mojom-forward.h +gen/services/network/public/mojom/network_isolation_partition.mojom-shared-internal.h +gen/services/network/public/mojom/network_isolation_partition.mojom-shared.h +gen/services/network/public/mojom/network_isolation_partition.mojom.h +gen/services/network/public/mojom/network_types.mojom-shared-internal.h +gen/services/network/public/mojom/parsed_headers.mojom-shared-internal.h +gen/services/network/public/mojom/parsed_request_cookie.mojom-shared-internal.h +gen/services/network/public/mojom/referrer_policy.mojom-shared-internal.h +gen/services/network/public/mojom/request_priority.mojom-shared-internal.h +gen/services/network/public/mojom/restricted_cookie_manager.mojom-forward.h +gen/services/network/public/mojom/service_worker_router_info.mojom-shared-internal.h +gen/services/network/public/mojom/shared_dictionary_access_observer.mojom-shared-internal.h +gen/services/network/public/mojom/shared_dictionary_error.mojom-shared-internal.h +gen/services/network/public/mojom/shared_storage.mojom-shared-internal.h +gen/services/network/public/mojom/site_for_cookies.mojom-shared-internal.h +gen/services/network/public/mojom/source_location.mojom-forward.h +gen/services/network/public/mojom/source_location.mojom-shared-internal.h +gen/services/network/public/mojom/source_type.mojom-shared-internal.h +gen/services/network/public/mojom/ssl_config.mojom-forward.h +gen/services/network/public/mojom/sri_message_signature.mojom-shared-internal.h +gen/services/network/public/mojom/storage_access_api.mojom-shared-internal.h +gen/services/network/public/mojom/tcp_socket.mojom-forward.h +gen/services/network/public/mojom/tls_socket.mojom-forward.h +gen/services/network/public/mojom/trust_token_access_observer.mojom-shared-internal.h +gen/services/network/public/mojom/trust_tokens.mojom-shared-internal.h +gen/services/network/public/mojom/unencoded_digest.mojom-shared-internal.h +gen/services/network/public/mojom/url_loader_completion_status.mojom-shared-internal.h +gen/services/network/public/mojom/url_loader.mojom-forward.h +gen/services/network/public/mojom/url_loader_factory.mojom-features.h +gen/services/network/public/mojom/url_loader_factory.mojom-forward.h +gen/services/network/public/mojom/url_loader_factory.mojom.h +gen/services/network/public/mojom/url_loader_network_service_observer.mojom-shared-internal.h +gen/services/network/public/mojom/url_request.mojom-forward.h +gen/services/network/public/mojom/url_request.mojom-shared-internal.h +gen/services/network/public/mojom/url_response_head.mojom-shared-internal.h +gen/services/network/public/mojom/web_bundle_handle.mojom-shared-internal.h +gen/services/network/public/mojom/web_sandbox_flags.mojom-forward.h +gen/services/network/public/mojom/web_sandbox_flags.mojom-shared-internal.h +gen/services/network/public/mojom/web_client_hints_types.mojom-shared-internal.h +gen/services/metrics/public/mojom/ukm_interface.mojom-features.h +gen/services/metrics/public/mojom/ukm_interface.mojom-forward.h +gen/services/metrics/public/mojom/ukm_interface.mojom-shared-internal.h +gen/services/metrics/public/mojom/ukm_interface.mojom-shared.h +gen/services/metrics/public/mojom/ukm_interface.mojom.h +gen/third_party/blink/public/mojom/background_sync/background_sync.mojom.h +gen/third_party/blink/public/mojom/buckets/bucket_manager_host.mojom-forward.h +gen/third_party/blink/public/mojom/cache_storage/cache_storage.mojom-forward.h +gen/third_party/blink/public/mojom/webauthn/authenticator.mojom-forward.h +gen/third_party/blink/public/mojom/webauthn/authenticator.mojom-features.h +gen/third_party/blink/public/mojom/devtools/console_message.mojom-forward.h +gen/third_party/blink/public/mojom/file_system_access/file_system_access_manager.mojom.h +gen/third_party/blink/public/mojom/filesystem/file_system.mojom-forward.h +gen/third_party/blink/public/mojom/frame/frame.mojom-forward.h +gen/third_party/blink/public/mojom/frame/lifecycle.mojom-features.h +gen/third_party/blink/public/mojom/indexeddb/indexeddb.mojom-forward.h +gen/third_party/blink/public/mojom/input/input_event.mojom-shared.h +gen/third_party/blink/public/mojom/locks/lock_manager.mojom-forward.h +gen/third_party/blink/public/mojom/notifications/notification_service.mojom-forward.h +gen/third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-features.h +gen/third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-forward.h +gen/third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-shared-internal.h +gen/third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-shared.h +gen/third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom.h +gen/third_party/blink/public/mojom/payments/payment_app.mojom-forward.h +gen/third_party/blink/public/mojom/permissions/permission.mojom-forward.h +gen/third_party/blink/public/mojom/quota/quota_manager_host.mojom-forward.h +gen/third_party/blink/public/mojom/runtime_feature_state/runtime_feature.mojom-features.h +gen/third_party/blink/public/mojom/runtime_feature_state/runtime_feature.mojom-forward.h +gen/third_party/blink/public/mojom/runtime_feature_state/runtime_feature.mojom-shared-internal.h +gen/third_party/blink/public/mojom/runtime_feature_state/runtime_feature.mojom-shared.h +gen/third_party/blink/public/mojom/runtime_feature_state/runtime_feature.mojom.h +gen/third_party/blink/public/mojom/script/script_evaluation_params.mojom-features.h +gen/third_party/blink/public/mojom/script/script_evaluation_params.mojom-forward.h +gen/third_party/blink/public/mojom/script/script_evaluation_params.mojom-shared-internal.h +gen/third_party/blink/public/mojom/script/script_evaluation_params.mojom-shared.h +gen/third_party/blink/public/mojom/script/script_evaluation_params.mojom.h +gen/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-features.h +gen/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-forward.h +gen/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-shared-internal.h +gen/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-shared.h +gen/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom.h +gen/mojo/public/mojom/base/byte_string.mojom-features.h +gen/mojo/public/mojom/base/byte_string.mojom-forward.h +gen/mojo/public/mojom/base/byte_string.mojom-shared-internal.h +gen/mojo/public/mojom/base/byte_string.mojom-shared.h +gen/mojo/public/mojom/base/byte_string.mojom.h +gen/mojo/public/mojom/base/unguessable_token.mojom-features.h +gen/mojo/public/mojom/base/unguessable_token.mojom-forward.h +gen/mojo/public/mojom/base/unguessable_token.mojom-shared-internal.h +gen/mojo/public/mojom/base/unguessable_token.mojom-shared.h +gen/mojo/public/mojom/base/values.mojom-features.h +gen/mojo/public/mojom/base/values.mojom-forward.h +gen/mojo/public/mojom/base/values.mojom-shared-internal.h +gen/mojo/public/mojom/base/values.mojom-shared.h +gen/mojo/public/mojom/base/values.mojom.h +gen/services/network/public/mojom/content_security_policy.mojom-shared-internal.h +gen/services/network/public/mojom/url_loader.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/local_surface_id.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/view_transition_element_resource_id.mojom-features.h +gen/services/viz/public/mojom/compositing/view_transition_element_resource_id.mojom-forward.h +gen/services/viz/public/mojom/compositing/view_transition_element_resource_id.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/view_transition_element_resource_id.mojom-shared.h +gen/services/viz/public/mojom/compositing/view_transition_element_resource_id.mojom.h +gen/services/viz/public/mojom/compositing/shared_image_format.mojom-features.h +gen/services/viz/public/mojom/compositing/shared_image_format.mojom-forward.h +gen/services/viz/public/mojom/compositing/shared_image_format.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/shared_image_format.mojom-shared.h +gen/services/viz/public/mojom/compositing/shared_image_format.mojom.h +gen/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom-features.h +gen/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom-forward.h +gen/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom-shared.h +gen/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom.h +gen/services/service_manager/public/mojom/interface_provider.mojom-features.h +gen/services/service_manager/public/mojom/interface_provider.mojom-forward.h +gen/services/service_manager/public/mojom/interface_provider.mojom-shared-internal.h +gen/services/service_manager/public/mojom/interface_provider.mojom-shared.h +gen/services/service_manager/public/mojom/interface_provider.mojom.h +gen/skia/public/mojom/skcolor.mojom-shared-internal.h +gen/skia/public/mojom/bitmap.mojom-shared-internal.h +gen/skia/public/mojom/image_info.mojom-features.h +gen/skia/public/mojom/image_info.mojom-forward.h +gen/skia/public/mojom/image_info.mojom-shared-internal.h +gen/skia/public/mojom/image_info.mojom-shared.h +gen/skia/public/mojom/image_info.mojom.h +gen/skia/public/mojom/surface_origin.mojom-features.h +gen/skia/public/mojom/surface_origin.mojom-forward.h +gen/skia/public/mojom/surface_origin.mojom-shared-internal.h +gen/skia/public/mojom/surface_origin.mojom-shared.h +gen/skia/public/mojom/surface_origin.mojom.h +gen/third_party/blink/public/mojom/back_forward_cache_not_restored_reasons.mojom-shared-internal.h +gen/third_party/blink/public/mojom/array_buffer/array_buffer_contents.mojom-shared-internal.h +gen/third_party/blink/public/mojom/conversions/conversions.mojom-shared-internal.h +gen/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom-shared-internal.h +gen/third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/frame_policy.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/frame_replication_state.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/remote_frame.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/view_transition_state.mojom-shared-internal.h +gen/third_party/blink/public/mojom/lcp_critical_path_predictor/lcp_critical_path_predictor.mojom-shared-internal.h +gen/third_party/blink/public/mojom/loader/mixed_content.mojom-shared-internal.h +gen/third_party/blink/public/mojom/loader/referrer.mojom-shared-internal.h +gen/third_party/blink/public/mojom/loader/mhtml_load_result.mojom-features.h +gen/third_party/blink/public/mojom/loader/mhtml_load_result.mojom-forward.h +gen/third_party/blink/public/mojom/loader/mhtml_load_result.mojom-shared-internal.h +gen/third_party/blink/public/mojom/loader/mhtml_load_result.mojom-shared.h +gen/third_party/blink/public/mojom/loader/mhtml_load_result.mojom.h +gen/third_party/blink/public/mojom/messaging/task_attribution_id.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/navigation_api_history_entry_arrays.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/navigation_initiator_activation_and_ad_status.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/navigation_policy.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/prefetched_signed_exchange_info.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/renderer_content_settings.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/system_entropy.mojom-shared-internal.h +gen/third_party/blink/public/mojom/navigation/was_activated_option.mojom-shared-internal.h +gen/third_party/blink/public/mojom/page/page.mojom-shared-internal.h +gen/third_party/blink/public/mojom/page/page_visibility_state.mojom-shared-internal.h +gen/third_party/blink/public/mojom/permissions/permission.mojom-shared-internal.h +gen/third_party/blink/public/mojom/permissions/permission_status.mojom-shared-internal.h +gen/third_party/blink/public/mojom/renderer_preferences.mojom-shared-internal.h +gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom-features.h +gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom-forward.h +gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom-shared-internal.h +gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom-shared.h +gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom.h +gen/third_party/blink/public/mojom/storage_key/storage_key.mojom-shared-internal.h +gen/third_party/blink/public/mojom/tokens/tokens.mojom-features.h +gen/third_party/blink/public/mojom/tokens/tokens.mojom-forward.h +gen/third_party/blink/public/mojom/tokens/tokens.mojom-shared-internal.h +gen/third_party/blink/public/mojom/tokens/tokens.mojom-shared.h +gen/third_party/blink/public/mojom/tokens/tokens.mojom.h +gen/third_party/blink/public/mojom/webpreferences/web_preferences.mojom-shared-internal.h +gen/ui/color/color_id.mojom-shared-internal.h +gen/cc/mojom/render_frame_metadata.mojom-shared-internal.h +gen/cc/mojom/browser_controls_params.mojom-shared-internal.h +gen/cc/mojom/browser_controls_offset_tag_modifications.mojom-shared-internal.h +gen/cc/mojom/browser_controls_state.mojom-shared-internal.h +gen/cc/mojom/overscroll_behavior.mojom-shared-internal.h +gen/cc/mojom/paint_flags.mojom-shared-internal.h +gen/cc/mojom/touch_action.mojom-shared-internal.h +gen/mojo/public/mojom/base/string16.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/frame_sink_id.mojom-shared-internal.h +gen/third_party/blink/public/mojom/blob/blob_url_store.mojom-shared-internal.h +gen/third_party/blink/public/mojom/css/preferred_color_scheme.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/color_scheme.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/frame_owner_properties.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/frame_visual_properties.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/fullscreen.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/lifecycle.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/policy_container.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/text_autosizer_page_info.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/tree_scope_type.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/triggering_event_info.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/user_activation_update_types.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/viewport_intersection_state.mojom-shared-internal.h +gen/services/network/public/mojom/cross_origin_opener_policy.mojom-shared-internal.h +gen/third_party/blink/public/mojom/blob/blob.mojom-shared-internal.h +gen/third_party/blink/public/mojom/choosers/popup_menu.mojom-shared-internal.h +gen/third_party/blink/public/mojom/close_watcher/close_listener.mojom-shared-internal.h +gen/third_party/blink/public/mojom/confidence_level.mojom-shared-internal.h +gen/third_party/blink/public/mojom/context_menu/context_menu.mojom-shared-internal.h +gen/third_party/blink/public/mojom/devtools/console_message.mojom-shared-internal.h +gen/third_party/blink/public/mojom/devtools/devtools_agent.mojom-shared-internal.h +gen/third_party/blink/public/mojom/devtools/inspector_issue.mojom-shared-internal.h +gen/third_party/blink/public/mojom/dom_storage/storage_area.mojom-shared-internal.h +gen/third_party/blink/public/mojom/favicon/favicon_url.mojom-shared-internal.h +gen/third_party/blink/public/mojom/fenced_frame/fenced_frame.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/blocked_navigation_types.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/media_player_action.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/reporting_observer.mojom-shared-internal.h +gen/third_party/blink/public/mojom/frame/sudden_termination_disabler_type.mojom-shared-internal.h +gen/third_party/blink/public/mojom/loader/keep_alive_handle_factory.mojom-shared-internal.h +gen/third_party/blink/public/mojom/loader/fetch_client_settings_object.mojom-shared-internal.h +gen/third_party/blink/public/mojom/opengraph/metadata.mojom-shared-internal.h +gen/third_party/blink/public/mojom/page/draggable_region.mojom-shared-internal.h +gen/third_party/blink/public/mojom/page/widget.mojom-shared-internal.h +gen/third_party/blink/public/mojom/service_worker/navigation_preload_state.mojom-shared-internal.h +gen/third_party/blink/public/mojom/service_worker/service_worker_database.mojom-shared-internal.h +gen/third_party/blink/public/mojom/service_worker/service_worker_error_type.mojom-shared-internal.h +gen/third_party/blink/public/mojom/service_worker/service_worker_object.mojom-shared-internal.h +gen/third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom-shared-internal.h +gen/third_party/blink/public/mojom/window_features/window_features.mojom-shared-internal.h +gen/ui/gfx/image/mojom/image.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/focus_type.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/scroll_direction.mojom-shared-internal.h +gen/third_party/blink/public/mojom/messaging/transferable_message.mojom-shared-internal.h +gen/third_party/blink/public/mojom/blob/serialized_blob.mojom-shared-internal.h +gen/third_party/blink/public/mojom/messaging/cloneable_message.mojom-shared-internal.h +gen/third_party/blink/public/mojom/messaging/delegated_capability.mojom-shared-internal.h +gen/third_party/blink/public/mojom/messaging/message_port_descriptor.mojom-shared-internal.h +gen/third_party/blink/public/mojom/messaging/static_bitmap_image.mojom-shared-internal.h +gen/third_party/blink/public/mojom/messaging/user_activation_snapshot.mojom-shared-internal.h +gen/third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom-shared-internal.h +gen/third_party/blink/public/mojom/scroll/scrollbar_mode.mojom-shared-internal.h +gen/third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared-internal.h +gen/third_party/blink/public/mojom/timing/resource_timing.mojom-shared-internal.h +gen/ui/base/mojom/window_open_disposition.mojom-shared-internal.h +gen/ui/display/mojom/screen_info.mojom-shared-internal.h +gen/ui/display/mojom/screen_infos.mojom-shared-internal.h +gen/ui/events/mojom/scroll_granularity.mojom-shared-internal.h +gen/skia/public/mojom/skcolorspace_primaries.mojom-shared-internal.h +gen/ui/gfx/mojom/buffer_types.mojom-features.h +gen/ui/gfx/mojom/buffer_types.mojom-forward.h +gen/ui/gfx/mojom/buffer_types.mojom-shared-internal.h +gen/ui/gfx/mojom/buffer_types.mojom-shared.h +gen/ui/gfx/mojom/buffer_types.mojom.h +gen/ui/gfx/mojom/color_space.mojom-features.h +gen/ui/gfx/mojom/color_space.mojom-forward.h +gen/ui/gfx/mojom/color_space.mojom-shared-internal.h +gen/ui/gfx/mojom/color_space.mojom-shared.h +gen/ui/gfx/mojom/color_space.mojom.h +gen/ui/gfx/mojom/display_color_spaces.mojom-shared-internal.h +gen/ui/gfx/mojom/hdr_metadata.mojom-features.h +gen/ui/gfx/mojom/hdr_metadata.mojom-forward.h +gen/ui/gfx/mojom/hdr_metadata.mojom-shared.h +gen/ui/gfx/mojom/hdr_metadata.mojom.h +gen/ui/gfx/mojom/hdr_static_metadata.mojom-shared-internal.h +gen/ui/gfx/mojom/native_handle_types.mojom-features.h +gen/ui/gfx/mojom/native_handle_types.mojom-forward.h +gen/ui/gfx/mojom/native_handle_types.mojom-shared-internal.h +gen/ui/gfx/mojom/native_handle_types.mojom-shared.h +gen/ui/gfx/mojom/native_handle_types.mojom.h +gen/third_party/blink/public/mojom/websockets/websocket_connector.mojom-forward.h +gen/third_party/dawn/include/dawn/webgpu.h +gen/third_party/dawn/include/dawn/webgpu_cpp.h +gen/third_party/dawn/include/dawn/webgpu_cpp_print.h +gen/third_party/dawn/include/dawn/wire/client/webgpu.h +gen/mojo/public/mojom/base/text_direction.mojom-shared-internal.h +gen/mojo/public/mojom/base/shared_memory.mojom-features.h +gen/mojo/public/mojom/base/shared_memory.mojom-forward.h +gen/mojo/public/mojom/base/shared_memory.mojom-shared-internal.h +gen/mojo/public/mojom/base/shared_memory.mojom-shared.h +gen/mojo/public/mojom/base/shared_memory.mojom.h +gen/services/viz/public/mojom/compositing/begin_frame_args.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/compositor_frame.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/compositor_frame_metadata.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/compositor_frame_sink.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/compositor_frame_transition_directive.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/compositor_render_pass_id.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/compositor_render_pass.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/copy_output_request.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/filter_operations.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/frame_deadline.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/frame_interval_inputs.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/frame_timing_details.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/layer_context.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/offset_tag.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/quads.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/region_capture_bounds.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/resource_id.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/returned_resource.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/selection.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/shared_quad_state.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/subtree_capture_id.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/surface_id.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/surface_range.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/thread.mojom-shared-internal.h +gen/services/viz/public/mojom/compositing/transferable_resource.mojom-shared-internal.h +gen/services/viz/public/mojom/hit_test/hit_test_region_list.mojom-shared-internal.h +gen/services/viz/public/mojom/hit_test/input_target_client.mojom-shared-internal.h +gen/skia/public/mojom/skcolor4f.mojom-shared-internal.h +gen/skia/public/mojom/skpath.mojom-shared-internal.h +gen/third_party/blink/public/mojom/drag/drag.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/ime_host.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/input_handler.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/gesture_event.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/handwriting_gesture_result.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/input_event_result.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/input_event.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/pointer_lock_context.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/pointer_lock_result.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/stylus_writing_gesture.mojom-shared-internal.h +gen/third_party/blink/public/mojom/input/touch_event.mojom-shared-internal.h +gen/third_party/blink/public/mojom/selection_menu/selection_menu_behavior.mojom-shared-internal.h +gen/third_party/blink/public/mojom/widget/device_emulation_params.mojom-shared-internal.h +gen/third_party/blink/public/mojom/widget/platform_widget.mojom-shared-internal.h +gen/third_party/blink/public/mojom/widget/record_content_to_visible_time_request.mojom-shared-internal.h +gen/third_party/blink/public/mojom/widget/visual_properties.mojom-shared-internal.h +gen/third_party/widevine/cdm/buildflags.h +gen/ui/base/cursor/mojom/cursor.mojom-shared-internal.h +gen/ui/base/cursor/mojom/cursor_type.mojom-shared-internal.h +gen/ui/base/ime/mojom/text_input_state.mojom-shared-internal.h +gen/ui/base/ime/mojom/ime_types.mojom-shared-internal.h +gen/ui/base/mojom/ui_base_types.mojom-shared-internal.h +gen/ui/events/mojom/event_constants.mojom-shared-internal.h +gen/ui/events/mojom/event_latency_metadata.mojom-shared-internal.h +gen/ui/events/mojom/event.mojom-shared-internal.h +gen/ui/gfx/mojom/delegated_ink_metadata.mojom-shared-internal.h +gen/ui/gfx/mojom/dxgi_info.mojom-features.h +gen/ui/gfx/mojom/dxgi_info.mojom-forward.h +gen/ui/gfx/mojom/dxgi_info.mojom-shared-internal.h +gen/ui/gfx/mojom/dxgi_info.mojom-shared.h +gen/ui/gfx/mojom/dxgi_info.mojom.h +gen/ui/gfx/mojom/hdr_metadata.mojom-shared-internal.h +gen/ui/gfx/mojom/overlay_transform.mojom-shared-internal.h +gen/ui/gfx/range/mojom/range.mojom-shared-internal.h +gen/ui/latency/mojom/latency_info.mojom-shared-internal.h +gen/ui/accessibility/ax_enums.mojom-features.h +gen/ui/accessibility/ax_enums.mojom-shared-internal.h +gen/ui/accessibility/ax_enums.mojom-shared.h +gen/ui/accessibility/ax_enums.mojom.h +gen/ui/accessibility/ax_constants.mojom-features.h +gen/ui/accessibility/ax_constants.mojom-forward.h +gen/ui/accessibility/ax_constants.mojom-shared-internal.h +gen/ui/accessibility/ax_constants.mojom-shared.h +gen/ui/accessibility/ax_constants.mojom.h +gen/third_party/blink/renderer/platform/heap/heap_buildflags.h +gen/third_party/blink/public/common/runtime_feature_state/runtime_feature_state_context.h +gen/third_party/blink/public/common/runtime_feature_state/runtime_feature_state_read_context.h +gen/components/signin/public/base/signin_buildflags.h +gen/components/safe_browsing/buildflags.h +gen/components/optimization_guide/machine_learning_tflite_buildflags.h +gen/components/optimization_guide/proto/features/model_prototyping.pb.h +gen/components/grit/components_scaled_resources.h +gen/device/vr/buildflags/buildflags.h +gen/ui/base/ime/mojom/virtual_keyboard_types.mojom-features.h +gen/ui/base/ime/mojom/virtual_keyboard_types.mojom-forward.h +gen/ui/base/ime/mojom/virtual_keyboard_types.mojom-shared-internal.h +gen/ui/base/ime/mojom/virtual_keyboard_types.mojom-shared.h +gen/ui/base/ime/mojom/virtual_keyboard_types.mojom.h +gen/services/proxy_resolver/public/mojom/proxy_resolver.mojom-features.h +gen/services/proxy_resolver/public/mojom/proxy_resolver.mojom-forward.h +gen/services/proxy_resolver/public/mojom/proxy_resolver.mojom-shared-internal.h +gen/services/proxy_resolver/public/mojom/proxy_resolver.mojom-shared.h +gen/services/proxy_resolver/public/mojom/proxy_resolver.mojom.h +gen/third_party/blink/public/common/buildflags.h +gen/third_party/blink/public/common/features_generated.h +gen/url/mojom/origin.mojom-features.h +gen/url/mojom/origin.mojom-forward.h +gen/url/mojom/origin.mojom-shared-internal.h +gen/url/mojom/origin.mojom-shared.h +gen/url/mojom/origin.mojom.h +gen/url/mojom/scheme_host_port.mojom-features.h +gen/url/mojom/scheme_host_port.mojom-forward.h +gen/url/mojom/scheme_host_port.mojom-shared-internal.h +gen/url/mojom/scheme_host_port.mojom-shared.h +gen/url/mojom/scheme_host_port.mojom.h +gen/url/mojom/url.mojom-features.h +gen/url/mojom/url.mojom-forward.h +gen/url/mojom/url.mojom-shared-internal.h +gen/url/mojom/url.mojom-shared.h +gen/url/mojom/url.mojom.h +phony/chrome/browser/ui/webui/usb_internals/mojo_bindings_headers +phony/components/content_settings/common/mojom__generator +phony/components/content_settings/common/mojom_shared__generator +phony/components/spellcheck/common/interfaces__generator +phony/components/spellcheck/common/interfaces_shared__generator +phony/qtwebengine/browser/interfaces__generator +phony/qtwebengine/browser/interfaces_shared__generator +phony/qtwebengine/browser/qt_webengine_resources_grit +phony/qtwebengine/browser/extensions/webui/mojo_bindings__generator +phony/qtwebengine/browser/extensions/webui/mojo_bindings_shared__generator +phony/qtwebengine/userscript/interfaces__generator +phony/qtwebengine/userscript/interfaces_shared__generator +phony/third_party/perfetto/src/tracing/client_api_without_backends +phony/third_party/perfetto/src/protozero/protozero +phony/third_party/perfetto/src/trace_processor/dataframe/dataframe +phony/third_party/pdfium/pdfium