diff --git a/infra/THORIUM_DEV_BOOKMARKS.html b/infra/THORIUM_DEV_BOOKMARKS.html index 834f4c89..2a6e1b16 100644 --- a/infra/THORIUM_DEV_BOOKMARKS.html +++ b/infra/THORIUM_DEV_BOOKMARKS.html @@ -43,7 +43,6 @@
mini_installer_constants.cc - Chromium Code Search
mini_installer_exe_main.cc - Chromium Code Search
mini_installer_exe_version.rc.version - Chromium Code Search -
shell_util.cc - Chromium Code Search
util_constants.cc - Chromium Code Search
download_features.cc - Chromium Code Search
prepopulated_engines.json - Chromium Code Search diff --git a/src/BUILD.gn b/src/BUILD.gn index f6fd0d35..156bc7f0 100644 --- a/src/BUILD.gn +++ b/src/BUILD.gn @@ -202,6 +202,12 @@ group("gn_all") { "//url:url_unittests", ] + if (current_cpu == "arm64" && is_android && host_os == "linux") { + deps += [ + "//components/allocation_recorder/tools:dump_allocation_recorder_data", + ] + } + if (!is_component_build) { deps += [ "//third_party/abseil-cpp:absl_tests" ] } @@ -631,10 +637,6 @@ group("gn_all") { if (!is_android && !is_ios) { deps += [ - "//courgette:courgette", - "//courgette:courgette_fuzz", - "//courgette:courgette_minimal_tool", - "//courgette:courgette_unittests", "//net:crash_cache", "//net:net_watcher", # TODO(GYP): This should be conditional on # use_v8_in_net @@ -1041,23 +1043,17 @@ if (is_win) { deps = [ "//chrome/common/win:eventlog_provider", "//chrome/credential_provider", + "//chrome/enterprise_companion:enterprise_companion_zip", "//chrome/installer/gcapi", "//chrome/installer/mini_installer", "//chrome/updater/win:updater_zip", "//components/policy:pack_policy_templates", "//components/zucchini", "//components/zucchini:zucchini64", - "//courgette", "//third_party/hyphenation-patterns", "//tools/metrics:metrics_metadata", ] - if (target_cpu == "x86") { - deps += [ - "//courgette:copy_courgette_binaries", - "//courgette(//build/toolchain/win:win_clang_x64)", - ] - } if (is_chrome_branded) { deps += [ "//remoting/host:remoting_host_installation" ] } @@ -1081,7 +1077,6 @@ if (is_win) { "//media:media_unittests", "//media/midi:midi_unittests", "//net:net_unittests", - "//printing:printing_unittests", "//sql:sql_unittests", "//third_party/breakpad:symupload", "//ui/base:ui_base_unittests", @@ -1090,6 +1085,10 @@ if (is_win) { "//ui/views:views_unittests", "//url:url_unittests", ] + + if (enable_printing || enable_printing_tests) { + deps += [ "//printing:printing_unittests" ] + } } } @@ -1194,33 +1193,66 @@ if (use_blink && !is_cronet_build) { ] } - # Web tests runner - # third_party/blink/tools/run_web_tests.py - group("run_web_tests") { - testonly = true - deps = [ - ":blink_web_tests", - ":blink_wpt_tests", + # Options shared by all script test targets that call `run_web_tests.py` or + # `run_wpt_tests.py`. + _common_web_test_options = [ + "--no-show-results", + "--zero-tests-executed-ok", + ] + if (is_debug) { + _common_web_test_options += [ "--debug" ] + } else { + _common_web_test_options += [ "--release" ] + } + if (is_asan) { + _common_web_test_options += [ + "--enable-sanitizer", + "--additional-expectations", + "@WrappedPath(" + + rebase_path("//third_party/blink/web_tests/ASANExpectations", + root_out_dir) + ")", + ] + } + if (is_msan) { + _common_web_test_options += [ + "--enable-sanitizer", + "--additional-expectations", + "@WrappedPath(" + + rebase_path("//third_party/blink/web_tests/MSANExpectations", + root_out_dir) + ")", + ] + } + if (is_fuchsia) { + _common_web_test_options += [ + "--out-dir", + "@WrappedPath(.)", + ] + } else { + base_out_dir = rebase_path(get_path_info(root_build_dir, "dir"), ".") + out_dir = get_path_info(root_build_dir, "name") + _common_web_test_options += [ + "--build-directory", + base_out_dir, + "--target", + out_dir, ] } if (!is_chromeos_ash && !is_ios && !is_fuchsia && !is_android && !is_castos) { script_test("chrome_wpt_tests") { script = "//third_party/blink/tools/run_wpt_tests.py" - args = [ - "--product=chrome", - "--no-show-results", - "--zero-tests-executed-ok", - ] + args = _common_web_test_options + [ "--product=chrome" ] if (dcheck_always_on) { args += [ "--timeout-multiplier=2" ] } else { args += [ "--timeout-multiplier=1" ] } - data = [ - "//third_party/blink/web_tests/platform/linux-chrome/", - "//third_party/blink/web_tests/ChromeTestExpectations", - ] + if (is_chrome_branded) { + args += [ + "--driver-name", + "Google Chrome", + ] + } data_deps = [ ":blink_web_tests_expectations", ":blink_web_tests_support_data", @@ -1231,12 +1263,10 @@ if (use_blink && !is_cronet_build) { } script_test("headless_shell_wpt") { script = "//third_party/blink/tools/run_wpt_tests.py" - args = [ - "--product=headless_shell", - "--no-wpt-internal", - "--no-show-results", - "--zero-tests-executed-ok", - ] + args = _common_web_test_options + [ + "--product=headless_shell", + "--no-wpt-internal", + ] data_deps = [ ":blink_web_tests_expectations", ":blink_web_tests_support_data", @@ -1272,13 +1302,13 @@ if (use_blink && !is_cronet_build) { "//services/shape_detection/public/mojom:mojom_js_data_deps", "//skia/public/mojom:mojom_js_data_deps", "//testing/buildbot/filters:blink_web_tests_filter", + "//third_party/angle:includes", "//third_party/blink/public:blink_devtools_frontend_resources_files", "//third_party/blink/public:blink_devtools_inspector_resources", "//third_party/blink/public/mojom:mojom_platform_js_data_deps", "//third_party/blink/renderer/core:gen_files_for_web_tests", "//third_party/catapult/third_party/typ", "//third_party/hyphenation-patterns:test_data", - "//third_party/mesa_headers", "//tools/imagediff", "//ui/base:goldctl", ] @@ -1380,26 +1410,19 @@ if (use_blink && !is_cronet_build) { "@WrappedPath(" + rebase_path("//build/fuchsia/test/run_test.py", root_build_dir) + ")", "blink", - "--out-dir", - "@WrappedPath(.)", + "--platform", + "fuchsia", + "--jobs", + "1", ] } else { - base_out_dir = rebase_path(get_path_info(root_build_dir, "dir"), ".") - out_dir = get_path_info(root_build_dir, "name") - _common_web_test_args = [ - "@WrappedPath(" + - rebase_path("//third_party/blink/tools/run_web_tests.py", - root_build_dir) + ")", - "--build-directory", - base_out_dir, - "--target", - out_dir, - ] + _common_web_test_args = [ "@WrappedPath(" + rebase_path( + "//third_party/blink/tools/run_web_tests.py", + root_build_dir) + ")" ] } - if (is_debug) { - _common_web_test_args += [ "--debug" ] - } else { - _common_web_test_args += [ "--release" ] + _common_web_test_args += _common_web_test_options + + if (!is_debug) { if (dcheck_always_on) { _common_web_test_args += [ "--timeout-ms=12000" ] } else if (v8_enable_debugging_features) { @@ -1419,21 +1442,10 @@ if (use_blink && !is_cronet_build) { ] } - if (is_fuchsia) { - _common_web_test_args += [ - "--platform", - "fuchsia", - "--jobs", - "1", - ] - } - _common_web_test_args += [ "--seed", "4", "--debug-rwt-logging", - "--no-show-results", - "--zero-tests-executed-ok", "--clobber-old-results", ] @@ -1511,7 +1523,6 @@ if (use_blink && !is_cronet_build) { "//third_party/blink/web_tests/rootscroller/", "//third_party/blink/web_tests/screen_orientation/", "//third_party/blink/web_tests/scrollbars/", - "//third_party/blink/web_tests/scrollingcoordinator/", "//third_party/blink/web_tests/security/", "//third_party/blink/web_tests/handwriting/", "//third_party/blink/web_tests/shadow-dom/", @@ -1549,15 +1560,20 @@ if (use_blink && !is_cronet_build) { "//third_party/blink/web_tests/virtual/", # List all test expectations here - "//third_party/blink/web_tests/ASANExpectations", "//third_party/blink/web_tests/LeakExpectations", - "//third_party/blink/web_tests/MSANExpectations", "//third_party/blink/web_tests/NeverFixTests", "//third_party/blink/web_tests/SlowTests", "//third_party/blink/web_tests/StaleTestExpectations", "//third_party/blink/web_tests/TestExpectations", ] + if (is_asan) { + data += [ "//third_party/blink/web_tests/ASANExpectations" ] + } + if (is_msan) { + data += [ "//third_party/blink/web_tests/MSANExpectations" ] + } + if (is_win || is_linux || is_fuchsia) { data += [ "//third_party/blink/web_tests/platform/win/", @@ -1576,14 +1592,15 @@ if (use_blink && !is_cronet_build) { } else if (is_mac) { data += [ "//third_party/blink/web_tests/platform/mac/", - "//third_party/blink/web_tests/platform/mac-mac10.15/", "//third_party/blink/web_tests/platform/mac-mac11/", "//third_party/blink/web_tests/platform/mac-mac11-arm64/", "//third_party/blink/web_tests/platform/mac-mac12/", "//third_party/blink/web_tests/platform/mac-mac12-arm64/", "//third_party/blink/web_tests/platform/mac-mac13/", "//third_party/blink/web_tests/platform/mac-mac13-arm64/", + "//third_party/blink/web_tests/platform/mac-mac14/", "//third_party/blink/web_tests/platform/mac-mac14-arm64/", + "//third_party/blink/web_tests/platform/mac-mac15-arm64/", ] } @@ -1603,7 +1620,17 @@ if (use_blink && !is_cronet_build) { args = _common_web_test_args # Use --wpt-only to skip tests under web_tests/virtual/ - args += [ "--wpt-only" ] + args += [ + "--wpt-only", + "--inverted-test-launcher-filter-file", + "@WrappedPath(" + + rebase_path("//third_party/blink/web_tests/TestLists/chrome.filter", + root_out_dir) + ")", + "--inverted-test-launcher-filter-file", + "@WrappedPath(" + rebase_path( + "//third_party/blink/web_tests/TestLists/headless_shell.filter", + root_out_dir) + ")", + ] data_deps = [ ":blink_web_tests_expectations", diff --git a/src/build/install-build-deps.py b/src/build/install-build-deps.py index 4b98ba4a..b730302a 100755 --- a/src/build/install-build-deps.py +++ b/src/build/install-build-deps.py @@ -239,6 +239,7 @@ def dev_list(): "libssl-dev", "libsystemd-dev", "libudev-dev", + "libudev1", "libva-dev", "libwww-perl", "libxshmfence-dev", @@ -283,11 +284,6 @@ def dev_list(): else: packages.append("libjpeg62-dev") - if package_exists("libudev1"): - packages.append("libudev1") - else: - packages.append("libudev0") - if package_exists("libbrlapi0.8"): packages.append("libbrlapi0.8") elif package_exists("libbrlapi0.7"): @@ -407,8 +403,7 @@ def lib_list(): elif package_exists("libffi6"): packages.append("libffi6") - # Workaround for dependency On Ubuntu 24.04 LTS (noble) - if distro_codename() == "noble": + if package_exists("libpng16-16t64"): packages.append("libpng16-16t64") elif package_exists("libpng16-16"): packages.append("libpng16-16") @@ -431,12 +426,14 @@ def lib_list(): if package_exists("libinput10"): packages.append("libinput10") - # Work around for dependency On Ubuntu 24.04 LTS (noble) - if distro_codename() == "noble": + if package_exists("libncurses6"): packages.append("libncurses6") - packages.append("libasound2t64") else: packages.append("libncurses5") + + if package_exists("libasound2t64"): + packages.append("libasound2t64") + else: packages.append("libasound2") return packages @@ -493,8 +490,7 @@ def lib32_list(options): pattern = re.compile(r"g\+\+-[0-9.]+-multilib") packages += re.findall(pattern, lines) - # Work around for 32-bit dependency On Ubuntu 24.04 LTS (noble) - if distro_codename() == "noble": + if package_exists("libncurses6:i386"): packages.append("libncurses6:i386") else: packages.append("libncurses5:i386") @@ -658,8 +654,6 @@ def nacl_list(options): print("Skipping NaCl, NaCl toolchain, NaCl ports dependencies.", file=sys.stderr) return [] - print("Including NaCl, NaCl toolchain, NaCl ports dependencies.", - file=sys.stderr) packages = [ "g++-mingw-w64-i686", @@ -670,12 +664,14 @@ def nacl_list(options): "libfontconfig1:i386", "libglib2.0-0:i386", "libgpm2:i386", + "libncurses5:i386", "libnss3:i386", "libpango-1.0-0:i386", "libssl-dev:i386", "libtinfo-dev", "libtinfo-dev:i386", "libtool", + "libudev1:i386", "libuuid1:i386", "libxcomposite1:i386", "libxcursor1:i386", @@ -693,35 +689,28 @@ def nacl_list(options): "cmake", "gawk", "intltool", + "libtinfo5", "xutils-dev", "xsltproc", ] - # Some package names have changed over time - if package_exists("libssl-dev"): - packages.append("libssl-dev:i386") - elif package_exists("libssl1.1"): - packages.append("libssl1.1:i386") - elif package_exists("libssl1.0.2"): - packages.append("libssl1.0.2:i386") - else: - packages.append("libssl1.0.0:i386") + for package in packages: + if not package_exists(package): + print("Skipping NaCl, NaCl toolchain, NaCl ports dependencies because %s " + "is not available" % package, + file=sys.stderr) + return [] - if package_exists("libtinfo5"): - packages.append("libtinfo5") + print("Including NaCl, NaCl toolchain, NaCl ports dependencies.", + file=sys.stderr) - if package_exists("libudev1"): - packages.append("libudev1:i386") - else: - packages.append("libudev0:i386") - - # Work around for nacl dependency On Ubuntu 24.04 LTS (noble) - if distro_codename() == "noble": - packages.append("libncurses6:i386") - packages.append("lib32ncurses-dev") - else: - packages.append("libncurses5:i386") + # Prefer lib32ncurses5-dev to match libncurses5:i386 if it exists. + # In some Ubuntu releases, lib32ncurses5-dev is a transition package to + # lib32ncurses-dev, so use that as a fallback. + if package_exists("lib32ncurses5-dev"): packages.append("lib32ncurses5-dev") + else: + packages.append("lib32ncurses-dev") return packages @@ -876,7 +865,6 @@ def install_packages(options): # An apt-get exit status of 100 indicates that a real error has occurred. print("`apt-get --just-print install ...` failed", file=sys.stderr) print("It produced the following output:", file=sys.stderr) - print(e.output.decode(), file=sys.stderr) print(file=sys.stderr) print("You will have to install the above packages yourself.", file=sys.stderr) diff --git a/src/chrome/browser/shell_integration_linux.cc b/src/chrome/browser/shell_integration_linux.cc index 3a9bc008..5256e32a 100644 --- a/src/chrome/browser/shell_integration_linux.cc +++ b/src/chrome/browser/shell_integration_linux.cc @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifdef UNSAFE_BUFFERS_BUILD +// TODO(crbug.com/40285824): Remove this and convert code to safer constructs. +#pragma allow_unsafe_buffers +#endif + #include "chrome/browser/shell_integration_linux.h" #include @@ -754,7 +759,7 @@ std::string GetDesktopFileContentsForUrlShortcut( g_key_file_free(key_file); return output_buffer; #else - NOTREACHED_NORETURN(); + NOTREACHED(); return std::string(); #endif } diff --git a/src/chrome/browser/ui/webui/about/about_ui.cc b/src/chrome/browser/ui/webui/about/about_ui.cc index ef2618e4..cde3f992 100644 --- a/src/chrome/browser/ui/webui/about/about_ui.cc +++ b/src/chrome/browser/ui/webui/about/about_ui.cc @@ -617,6 +617,36 @@ std::string AboutLinuxProxyConfig() { } // namespace +AboutUIConfigBase::AboutUIConfigBase(std::string_view host) + : DefaultWebUIConfig(content::kChromeUIScheme, host) {} + +ChromeURLsUIConfig::ChromeURLsUIConfig() + : AboutUIConfigBase(chrome::kChromeUIChromeURLsHost) {} + +CreditsUIConfig::CreditsUIConfig() + : AboutUIConfigBase(chrome::kChromeUICreditsHost) {} + +#if !BUILDFLAG(IS_ANDROID) +TermsUIConfig::TermsUIConfig() + : AboutUIConfigBase(chrome::kChromeUITermsHost) {} +#endif + +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD) +LinuxProxyConfigUI::LinuxProxyConfigUI() + : AboutUIConfigBase(chrome::kChromeUILinuxProxyConfigHost) {} +#endif + +#if BUILDFLAG(IS_CHROMEOS_ASH) +OSCreditsUI::OSCreditsUI() + : AboutUIConfigBase(chrome::kChromeUIOSCreditsHost) {} + +BorealisCreditsUI::BorealisCreditsUI() + : AboutUIConfigBase(chrome::kChromeUIBorealisCreditsHost) {} + +CrostiniCreditsUI::CrostiniCreditsUI() + : AboutUIConfigBase(chrome::kChromeUICrostiniCreditsHost) {} +#endif + // AboutUIHTMLSource ---------------------------------------------------------- AboutUIHTMLSource::AboutUIHTMLSource(const std::string& source_name, @@ -734,7 +764,7 @@ std::string AboutUIHTMLSource::GetAccessControlAllowOriginForOrigin( return content::URLDataSource::GetAccessControlAllowOriginForOrigin(origin); } -AboutUI::AboutUI(content::WebUI* web_ui, const std::string& host) +AboutUI::AboutUI(content::WebUI* web_ui, const GURL& url) : WebUIController(web_ui) { Profile* profile = Profile::FromWebUI(web_ui); @@ -744,7 +774,7 @@ AboutUI::AboutUI(content::WebUI* web_ui, const std::string& host) #endif content::URLDataSource::Add( - profile, std::make_unique(host, profile)); + profile, std::make_unique(url.host(), profile)); } #if BUILDFLAG(IS_CHROMEOS) diff --git a/src/chrome/common/channel_info_posix.cc b/src/chrome/common/channel_info_posix.cc index 61ce4a89..63c0b74c 100644 --- a/src/chrome/common/channel_info_posix.cc +++ b/src/chrome/common/channel_info_posix.cc @@ -86,6 +86,8 @@ std::string GetChannelSuffixForDataDir() { return "-beta"; case version_info::Channel::DEV: return "-unstable"; + case version_info::Channel::CANARY: + return "-canary"; default: // Stable, extended stable, and unknown (e.g. in unbranded builds) don't // get a suffix. @@ -133,6 +135,8 @@ std::string GetDesktopName(base::Environment* env) { return "google-chrome.desktop"; version_info::Channel product_channel(GetChannel()); switch (product_channel) { + case version_info::Channel::CANARY: + return "google-chrome-canary.desktop"; case version_info::Channel::DEV: return "google-chrome-unstable.desktop"; case version_info::Channel::BETA: diff --git a/src/chrome/installer/mini_installer/BUILD.gn b/src/chrome/installer/mini_installer/BUILD.gn index 52a1b2ad..cc82bde2 100644 --- a/src/chrome/installer/mini_installer/BUILD.gn +++ b/src/chrome/installer/mini_installer/BUILD.gn @@ -180,7 +180,7 @@ action("mini_installer_archive") { # Optional arguments to generate diff installer. #'--last_chrome_installer=C:/src/chromium/src/out/thorium', #'--setup_exe_format=DIFF', - #'--diff_algorithm=COURGETTE', + #'--diff_algorithm=ZUCCHINI', # Optional argument for verbose archiving output. "--verbose", @@ -194,7 +194,6 @@ action("mini_installer_archive") { "//chrome/browser/extensions/default_extensions", "//chrome/common/win:eventlog_provider", "//chrome/installer/setup", - "//mojo/core:shared_library", "//third_party/icu:icudata", ] diff --git a/src/chrome/installer/util/util_constants.cc b/src/chrome/installer/util/util_constants.cc index f2aec2b7..251d8688 100644 --- a/src/chrome/installer/util/util_constants.cc +++ b/src/chrome/installer/util/util_constants.cc @@ -76,9 +76,6 @@ const char kForceConfigureUserSettings[] = "force-configure-user-settings"; // confirmation from user. const char kForceUninstall[] = "force-uninstall"; -// See description for kPatch. -const char kInputFile[] = "input-file"; - // Specify the path to the compressed Chrome archive for install. If not // specified, chrome.packed.7z or chrome.7z in the same directory as setup.exe // is used (the packed file is preferred; see kUncompressedArchive to force use @@ -119,14 +116,6 @@ const char kNonce[] = "nonce"; // Notify the installer that the OS has been upgraded. const char kOnOsUpgrade[] = "on-os-upgrade"; -// Applies a binary patch to a file. The input, patch, and the output file are -// specified as command line arguments following the --patch switch. -// Ex: --patch=zucchini --input_file='input' --patch_file='patch' -// --output_file='output' -const char kOutputFile[] = "output-file"; -const char kPatch[] = "patch"; -const char kPatchFile[] = "patch-file"; - // Provide the previous version that patch is for. const char kPreviousVersion[] = "previous-version"; diff --git a/src/components/flags_ui/flags_state.cc b/src/components/flags_ui/flags_state.cc index d0690940..b83cc974 100644 --- a/src/components/flags_ui/flags_state.cc +++ b/src/components/flags_ui/flags_state.cc @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifdef UNSAFE_BUFFERS_BUILD +// TODO(crbug.com/40285824): Remove this and convert code to safer constructs. +#pragma allow_unsafe_buffers +#endif + #include "components/flags_ui/flags_state.h" #include diff --git a/src/content/browser/launch_as_mojo_client_browsertest.cc b/src/content/browser/launch_as_mojo_client_browsertest.cc index 1b8c5d98..b4996a63 100644 --- a/src/content/browser/launch_as_mojo_client_browsertest.cc +++ b/src/content/browser/launch_as_mojo_client_browsertest.cc @@ -41,7 +41,6 @@ namespace { const char kShellExecutableName[] = "thorium_shell.exe"; #else const char kShellExecutableName[] = "thorium_shell"; -const char kMojoCoreLibraryName[] = "libmojo_core.so"; #endif base::FilePath GetCurrentDirectory() { @@ -82,6 +81,7 @@ class LaunchAsMojoClientBrowserTest : public ContentBrowserTest { gl::kGLImplementationANGLEName); command_line.AppendSwitchASCII(switches::kUseANGLE, gl::kANGLEImplementationSwiftShaderName); + command_line.AppendSwitch(switches::kEnableUnsafeSwiftShader); #endif #if defined(MEMORY_SANITIZER) @@ -136,12 +136,6 @@ class LaunchAsMojoClientBrowserTest : public ContentBrowserTest { return controller; } -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) - base::FilePath GetMojoCoreLibraryPath() { - return GetFilePathNextToCurrentExecutable(kMojoCoreLibraryName); - } -#endif - private: base::FilePath GetFilePathNextToCurrentExecutable( const std::string& filename) { @@ -195,43 +189,5 @@ IN_PROC_BROWSER_TEST_F(LaunchAsMojoClientBrowserTest, LaunchAndBindInterface) { } #endif // !BUILDFLAG(IS_CHROMEOS_LACROS) -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -// TODO(crbug.com/40057593): This test implementation fundamentally conflicts -// with a fix for the linked bug because it causes a browser process to behave -// partially as a broker and partially as a non-broker. This can be re-enabled -// when we migrate away from the current Mojo implementation. It's OK to disable -// for now because no production code relies on this feature. -IN_PROC_BROWSER_TEST_F(LaunchAsMojoClientBrowserTest, - DISABLED_WithMojoCoreLibrary) { - // Instructs a newly launched Content Shell browser to initialize Mojo Core - // dynamically from a shared library, rather than using the version linked - // into the Content Shell binary. - // - // This exercises end-to-end JS in order to cover real IPC behavior between - // the browser and a renderer. - - base::CommandLine command_line = MakeShellCommandLine(); - command_line.AppendSwitchPath(switches::kMojoCoreLibraryPath, - GetMojoCoreLibraryPath()); - mojo::Remote shell_controller = - LaunchContentShell(command_line); - - // Indisputable proof that we're evaluating JavaScript. - const std::string kExpressionToEvaluate = "'ba'+ +'a'+'as'"; - const base::Value kExpectedValue("baNaNas"); - - base::RunLoop loop; - shell_controller->ExecuteJavaScript( - base::ASCIIToUTF16(kExpressionToEvaluate), - base::BindLambdaForTesting([&](base::Value value) { - EXPECT_EQ(kExpectedValue, value); - loop.Quit(); - })); - loop.Run(); - - shell_controller->ShutDown(); -} -#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) - } // namespace } // namespace content diff --git a/src/content/shell/BUILD.gn b/src/content/shell/BUILD.gn index 6a58500d..60f78f58 100644 --- a/src/content/shell/BUILD.gn +++ b/src/content/shell/BUILD.gn @@ -33,8 +33,8 @@ if (is_android) { import("//third_party/fuchsia-gn-sdk/src/component.gni") import("//third_party/fuchsia-gn-sdk/src/package.gni") } else if (is_ios) { + import("//build/config/apple/swift_source_set.gni") import("//build/config/ios/config.gni") - import("//build/config/ios/swift_source_set.gni") import("//content/shell/app/ios/extensions.gni") } @@ -185,8 +185,6 @@ static_library("content_shell_lib") { "browser/shell_devtools_manager_delegate.h", "browser/shell_download_manager_delegate.cc", "browser/shell_download_manager_delegate.h", - "browser/shell_federated_permission_context.cc", - "browser/shell_federated_permission_context.h", "browser/shell_javascript_dialog.h", "browser/shell_javascript_dialog_manager.cc", "browser/shell_javascript_dialog_manager.h", @@ -669,6 +667,7 @@ if (is_android) { ":network_process_bundle", ] bundle_deps = [ + ":content_shell_framework+bundle", ":content_shell_framework_resources", "app/ios/resources", ] @@ -1048,6 +1047,7 @@ mojom("content_browsertests_mojom") { "common/render_frame_test_helper.mojom", ] public_deps = [ + "//mojo/public/mojom/base", "//sandbox/policy/mojom", "//third_party/blink/public/mojom/tokens", ] @@ -1058,7 +1058,7 @@ group("content_shell_crash_test") { data_deps = [ ":thorium_shell", "//testing:test_scripts_shared", - "//third_party/mesa_headers", + "//third_party/angle:includes", ] data = [ "//content/shell/tools/breakpad_integration_test.py", diff --git a/src/content/shell/browser/shell_platform_delegate_views.cc b/src/content/shell/browser/shell_platform_delegate_views.cc index ddc91b8b..5ad18732 100644 --- a/src/content/shell/browser/shell_platform_delegate_views.cc +++ b/src/content/shell/browser/shell_platform_delegate_views.cc @@ -215,6 +215,7 @@ class ShellView : public views::BoxLayoutView, .SetProperty( views::kFlexBehaviorKey, views::FlexSpecification( + views::LayoutOrientation::kHorizontal, views::MinimumFlexSizeRule::kScaleToMinimum, views::MaximumFlexSizeRule::kUnbounded)) // Left padding = 2, Right padding = 2 diff --git a/src/content/test/BUILD.gn b/src/content/test/BUILD.gn index 652622ff..7526095d 100644 --- a/src/content/test/BUILD.gn +++ b/src/content/test/BUILD.gn @@ -13,10 +13,12 @@ import("//components/viz/common/debugger/viz_debugger.gni") import("//content/common/features.gni") import("//device/vr/buildflags/buildflags.gni") import("//media/media_options.gni") +import("//mojo/features.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//net/features.gni") import("//ppapi/buildflags/buildflags.gni") import("//printing/buildflags/buildflags.gni") +import("//services/device/public/cpp/compute_pressure/buildflags.gni") import("//services/screen_ai/buildflags/features.gni") import("//testing/test.gni") import("//third_party/blink/public/public_features.gni") @@ -519,6 +521,7 @@ static_library("test_support") { "//ipc", "//media/mojo/clients", "//media/mojo/mojom", + "//mojo/public/cpp/test_support:test_utils", "//services/media_session/public/cpp/test:test_support", "//services/media_session/public/mojom", "//third_party/abseil-cpp:absl", @@ -577,7 +580,6 @@ static_library("test_support") { "//media/capture/mojom:image_capture", "//media/mojo/mojom:web_speech_recognition", "//mojo/core/embedder", - "//mojo/public/cpp/test_support:test_utils", "//net:quic_test_tools", "//net:simple_quic_tools", "//net:test_support", @@ -732,6 +734,8 @@ static_library("test_support") { "../browser/renderer_host/test_render_widget_host_view_mac_factory.h", "../browser/renderer_host/test_render_widget_host_view_mac_factory.mm", "../public/test/browser_test_utils_mac.mm", + "../public/test/system_media_controls_bridge_test_utils.cc", + "../public/test/system_media_controls_bridge_test_utils.h", "../public/test/text_input_test_utils_mac.mm", ] deps += [ @@ -1159,6 +1163,27 @@ if (is_chromeos_ash) { } } +# Test cross target mojo typemapping. +mojom("web_ui_ts_test_other_mojo_bindings") { + testonly = true + sources = [ "data/web_ui_ts_test_other_types.test-mojom" ] + webui_module_path = "/content/test/data" + + ts_typemaps = [ + { + types = [ + { + mojom = "content.mojom.MappedDict" + ts = "MappedDictType" + ts_import = "./web_ui_mojo_ts_test_other_mapped_types.js" + converter = "MappedDictConverter" + import = "web_ui_mojo_ts_test_converters.js" + }, + ] + }, + ] +} + mojom("web_ui_ts_test_mojo_bindings") { testonly = true sources = [ @@ -1167,6 +1192,35 @@ mojom("web_ui_ts_test_mojo_bindings") { ] public_deps = [ "//url/mojom:url_mojom_gurl" ] webui_module_path = "/content/test/data" + + deps = [ ":web_ui_ts_test_other_mojo_bindings" ] + + ts_typemaps = [ + { + types = [ + { + mojom = "content.mojom.SimpleMappedType" + ts = "string" + converter = "SimpleTypeConverter" + import = "web_ui_mojo_ts_test_converters.js" + }, + { + mojom = "content.mojom.NestedMappedType" + ts = "TestNode" + ts_import = "./web_ui_mojo_ts_test_mapped_types.js" + converter = "NestedTypeConverter" + import = "web_ui_mojo_ts_test_converters.js" + }, + { + mojom = "content.mojom.StringDict" + ts = "StringDictType" + ts_import = "./web_ui_mojo_ts_test_mapped_types.js" + converter = "StringDictConverter" + import = "web_ui_mojo_ts_test_converters.js" + }, + ] + }, + ] } preprocess_if_expr("preprocess_mojo_webui_test") { @@ -1174,6 +1228,9 @@ preprocess_if_expr("preprocess_mojo_webui_test") { out_folder = "$target_gen_dir/data" in_files = [ "web_ui_mojo_ts_test.ts", + "web_ui_mojo_ts_test_converters.ts", + "web_ui_mojo_ts_test_mapped_types.ts", + "web_ui_mojo_ts_test_other_mapped_types.ts", "web_ui_managed_interface_test.ts", ] } @@ -1183,7 +1240,13 @@ webui_ts_library("web_ui_mojo_test_build_ts") { out_dir = "$target_gen_dir/data/tsc" in_files = [ "web_ui_mojo_ts_test.ts", + "web_ui_mojo_ts_test_converters.ts", + "web_ui_mojo_ts_test_mapped_types.ts", + "web_ui_mojo_ts_test_other_mapped_types.ts", + "web_ui_ts_test.test-mojom-converters.ts", "web_ui_ts_test.test-mojom-webui.ts", + "web_ui_ts_test_other_types.test-mojom-converters.ts", + "web_ui_ts_test_other_types.test-mojom-webui.ts", "web_ui_ts_test_types.test-mojom-webui.ts", "web_ui_managed_interface_test.ts", "web_ui_managed_interface_test.test-mojom-webui.ts", @@ -1193,6 +1256,7 @@ webui_ts_library("web_ui_mojo_test_build_ts") { ":preprocess_mojo_webui_test", ":web_ui_managed_interface_tests_bindings_ts__generator", ":web_ui_ts_test_mojo_bindings_ts__generator", + ":web_ui_ts_test_other_mojo_bindings_ts__generator", ] } @@ -1297,7 +1361,6 @@ if (is_android) { "//content/public/android/javatests/src/org/chromium/content/browser/fakes/TestViewAndroidDelegate.java", ] deps = [ - ":content_browsertests_manifest", ":content_browsertests_resources", "//base:base_java", "//base:base_java_test_support", @@ -1421,14 +1484,20 @@ test("content_browsertests") { "../browser/file_system/file_system_url_drag_drop_browsertest.cc", "../browser/file_system/file_system_url_loader_factory_browsertest.cc", "../browser/file_system/fileapi_browsertest.cc", + "../browser/file_system_access/file_system_access_clipboard_browsertest.cc", + "../browser/file_system_access/file_system_access_drag_drop_browsertest.cc", + "../browser/file_system_access/file_system_access_file_handle_impl_browsertest.cc", "../browser/file_system_access/file_system_access_file_modification_host_impl_browsertest.cc", + "../browser/file_system_access/file_system_access_file_writer_impl_browsertest.cc", "../browser/file_system_access/file_system_access_observer_browsertest.cc", + "../browser/file_system_access/file_system_chooser_browsertest.cc", "../browser/find_request_manager_browsertest.cc", "../browser/first_party_sets/first_party_sets_handler_impl_browsertest.cc", "../browser/first_party_sets/test/first_party_sets_initialization_browsertest.cc", "../browser/font_access/font_access_manager_browsertest.cc", "../browser/font_unique_name_lookup/font_unique_name_browsertest.cc", "../browser/form_controls_browsertest.cc", + "../browser/framebusting_browsertest.cc", "../browser/generic_sensor/generic_sensor_browsertest.cc", "../browser/gpu/gpu_ipc_browsertests.cc", "../browser/gpu/in_process_gpu_thread_browsertests.cc", @@ -1546,6 +1615,7 @@ test("content_browsertests") { "../browser/renderer_host/input/wheel_event_listener_browsertest.cc", "../browser/renderer_host/input/wheel_scroll_latching_browsertest.cc", "../browser/renderer_host/isolated_web_app_throttle_browsertest.cc", + "../browser/renderer_host/jit_policy_browsertest.cc", "../browser/renderer_host/media/video_capture_browsertest.cc", "../browser/renderer_host/navigation_controller_history_intervention_browsertest.cc", "../browser/renderer_host/navigation_controller_impl_browsertest.cc", @@ -1766,6 +1836,7 @@ test("content_browsertests") { "//content/browser/attribution_reporting:mojo_bindings", "//content/browser/attribution_reporting:registration_result_mojom", "//content/browser/background_sync:background_sync_proto", + "//content/browser/tracing/trace_report:mojo_bindings", "//content/child:for_content_tests", "//content/gpu", "//content/public/browser", @@ -1827,9 +1898,9 @@ test("content_browsertests") { "//storage/browser:test_support", "//testing/gmock", "//testing/gtest", + "//third_party/angle:includes", "//third_party/blink/public:blink", "//third_party/leveldatabase", - "//third_party/mesa_headers", "//third_party/re2", "//third_party/zlib", "//third_party/zlib/google:compression_utils", @@ -1838,6 +1909,7 @@ test("content_browsertests") { "//ui/accessibility:test_support", "//ui/base:test_support", "//ui/base/clipboard", + "//ui/base/clipboard:clipboard_test_support", "//ui/base/cursor", "//ui/base/ime", "//ui/base/ime/init", @@ -1861,6 +1933,10 @@ test("content_browsertests") { "//ui/webui:test_support", ] + if (!(is_chromeos_ash && target_cpu == "arm64" && current_cpu == "arm")) { + deps += [ "//components/variations" ] + } + data_deps = [ "//content/shell:pak", "//third_party/mesa_headers", @@ -2088,6 +2164,9 @@ test("content_browsertests") { "${target_gen_dir}/content_browsertests_manifest/AndroidManifest.xml" android_manifest_dep = ":content_browsertests_manifest" use_default_launcher = false + if (!is_java_debug) { + proguard_enabled = true + } if (enable_chrome_android_internal) { data_deps += [ "//clank/build/bot/filters:content_browsertests_filters" ] @@ -2095,15 +2174,9 @@ test("content_browsertests") { } else { # Non-Android. sources += [ - "../browser/compute_pressure/pressure_service_browsertest.cc", "../browser/direct_sockets/direct_sockets_open_browsertest.cc", "../browser/direct_sockets/direct_sockets_tcp_browsertest.cc", "../browser/direct_sockets/direct_sockets_udp_browsertest.cc", - "../browser/file_system_access/file_system_access_clipboard_browsertest.cc", - "../browser/file_system_access/file_system_access_drag_drop_browsertest.cc", - "../browser/file_system_access/file_system_access_file_handle_impl_browsertest.cc", - "../browser/file_system_access/file_system_access_file_writer_impl_browsertest.cc", - "../browser/file_system_access/file_system_chooser_browsertest.cc", "../browser/font_preferences_browsertest.cc", "../browser/renderer_host/clipboard_host_impl_browsertest.cc", "../browser/serial/serial_browsertest.cc", @@ -2117,9 +2190,13 @@ test("content_browsertests") { "//components/soda:utils", "//content/public/browser:proto", "//media/mojo/mojom:web_speech_recognition", - "//ui/base/clipboard:clipboard_test_support", ] + if (enable_compute_pressure) { + sources += + [ "../browser/compute_pressure/pressure_service_browsertest.cc" ] + } + if (is_chromeos_ash) { deps += [ "//ash/constants:constants" ] } @@ -2155,7 +2232,6 @@ test("content_browsertests") { sources += [ "../app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm", "../browser/accessibility/ax_tree_formatter_mac_browsertest.mm", - "../browser/accessibility/browser_accessibility_cocoa_browsertest.mm", "../browser/accessibility/hit_testing_mac_browsertest.mm", "../browser/gpu/browser_child_process_backgrounded_bridge_browsertest.mm", "../browser/keyboard_lock_browsertest_mac.mm", @@ -2203,7 +2279,8 @@ test("content_browsertests") { deps += [ "//device/vr:vr_fakes" ] } - if ((is_win || is_chromeos || is_linux) && !is_tsan) { + if ((is_win || is_chromeos || is_linux) && !is_tsan && + mojo_support_legacy_core) { # NOTE: We don't bother to build these tests when TSan is enabled, because # they can't properly launch a child content_shell in that environment. sources += [ "../browser/launch_as_mojo_client_browsertest.cc" ] @@ -2214,10 +2291,7 @@ test("content_browsertests") { "//mojo/public/cpp/platform", "//mojo/public/mojom/base", ] - data_deps += [ - "//content/shell:thorium_shell", - "//mojo/core:shared_library", - ] + data_deps += [ "//content/shell:thorium_shell" ] if (use_ozone) { deps += [ "//ui/ozone" ] } @@ -2517,6 +2591,7 @@ test("content_unittests") { "../browser/interest_group/test_interest_group_private_aggregation_manager.cc", "../browser/interest_group/test_interest_group_private_aggregation_manager.h", "../browser/interest_group/trusted_signals_cache_impl_unittest.cc", + "../browser/interest_group/trusted_signals_fetcher_unittest.cc", "../browser/loader/cors_origin_pattern_setter_unittest.cc", "../browser/loader/file_url_loader_factory_unittest.cc", "../browser/loader/keep_alive_attribution_request_helper_unittest.cc", @@ -2558,7 +2633,6 @@ test("content_unittests") { "../browser/network/socket_broker_impl_unittest.cc", "../browser/network_context_client_base_impl_unittest.cc", "../browser/network_service_instance_impl_unittest.cc", - "../browser/notification_service_impl_unittest.cc", "../browser/notifications/blink_notification_service_impl_unittest.cc", "../browser/notifications/notification_database_conversions_unittest.cc", "../browser/notifications/notification_database_unittest.cc", @@ -2672,6 +2746,7 @@ test("content_unittests") { "../browser/renderer_host/navigation_transitions/navigation_entry_screenshot_cache_unittest.cc", "../browser/renderer_host/navigator_unittest.cc", "../browser/renderer_host/overscroll_controller_unittest.cc", + "../browser/renderer_host/partitioned_popins/partitioned_popins_policy_unittest.cc", "../browser/renderer_host/policy_container_host_unittest.cc", "../browser/renderer_host/private_network_access_util_unittest.cc", "../browser/renderer_host/recently_destroyed_hosts_unittest.cc", @@ -2862,7 +2937,6 @@ test("content_unittests") { if (is_mac) { sources += [ - "../browser/accessibility/browser_accessibility_mac_unittest.mm", "../browser/child_process_task_port_provider_mac_unittest.cc", "../browser/cocoa/system_hotkey_map_unittest.mm", "../browser/media/capture/screen_capture_kit_fullscreen_module_unittest.mm", @@ -2886,20 +2960,8 @@ test("content_unittests") { ] } - if (use_atk) { - sources += [ - "../browser/accessibility/browser_accessibility_auralinux_unittest.cc", - "../browser/accessibility/browser_accessibility_manager_auralinux_unittest.cc", - ] - configs += [ "//build/config/linux/atk" ] - } - if (is_fuchsia) { - sources += [ - "../browser/accessibility/browser_accessibility_fuchsia_unittest.cc", - "../browser/accessibility/browser_accessibility_manager_fuchsia_unittest.cc", - "../browser/renderer_host/media/fuchsia_media_codec_provider_impl_unittest.cc", - ] + sources += [ "../browser/renderer_host/media/fuchsia_media_codec_provider_impl_unittest.cc" ] additional_manifest_fragments = [ "//build/config/fuchsia/test/fonts.shard.test-cml", @@ -2929,10 +2991,12 @@ test("content_unittests") { ] } - if (!is_android) { + if (enable_compute_pressure) { sources += [ "../browser/compute_pressure/pressure_service_for_frame_unittest.cc", "../browser/compute_pressure/pressure_service_for_worker_unittest.cc", + "../browser/webid/digital_credentials/cross_device_request_dispatcher_unittest.cc", + "../browser/webid/digital_credentials/cross_device_transaction_impl_unittest.cc", ] } @@ -2954,6 +3018,10 @@ test("content_unittests") { [ "../browser/media/web_app_system_media_controls_manager_unittest.cc" ] } + if (is_win || is_mac || is_linux || is_chromeos) { + sources += [ "../browser/file_system_access/file_system_access_observer_observation_unittest.cc" ] + } + if (is_android || is_linux || is_chromeos || is_mac || is_win || is_fuchsia) { data = [ "$root_out_dir/content_shell.pak", @@ -2986,6 +3054,7 @@ test("content_unittests") { "//base/allocator:buildflags", "//base/test:proto_test_support", "//base/test:test_support", + "//build:android_buildflags", "//build:buildflag_header_h", "//build:chromecast_buildflags", "//build:chromeos_buildflags", @@ -3044,6 +3113,7 @@ test("content_unittests") { "//content/public/renderer", "//content/renderer:for_content_tests", "//content/services/auction_worklet:tests", + "//content/services/auction_worklet/public/cpp:test_support", "//content/services/auction_worklet/public/mojom:for_content_tests", "//crypto", "//device/bluetooth", @@ -3256,8 +3326,6 @@ test("content_unittests") { } if (is_win) { sources += [ - "../browser/accessibility/browser_accessibility_manager_win_unittest.cc", - "../browser/accessibility/browser_accessibility_win_unittest.cc", "../browser/device_posture/device_posture_registry_watcher_win_unittest.cc", "../browser/renderer_host/direct_manipulation_test_helper_win.cc", "../browser/renderer_host/direct_manipulation_test_helper_win.h", @@ -3277,6 +3345,7 @@ test("content_unittests") { "//third_party/blink/public/common", "//third_party/blink/public/common:font_unique_name_table_proto", "//third_party/iaccessible2", + "//third_party/microsoft_webauthn", "//ui/base", ] libs = [ @@ -3327,7 +3396,8 @@ test("content_unittests") { "../browser/android/message_payload_unittest.cc", "../browser/android/overscroll_controller_android_unittest.cc", "../browser/android/scoped_surface_request_manager_unittest.cc", - "../browser/font_unique_name_lookup/font_unique_name_lookup_unittest.cc", + "../browser/font_unique_name_lookup/font_unique_name_lookup_android_unittest.cc", + "../browser/media/key_system_support_android_unittest.cc", "../browser/renderer_host/render_widget_host_view_android_unittest.cc", "../browser/sms/sms_provider_gms_unittest.cc", "../renderer/java/gin_java_bridge_value_converter_unittest.cc", @@ -3369,6 +3439,8 @@ test("content_unittests") { ] deps += [ "//components/speech:speech", + "//device/fido:cablev2_authenticator", + "//device/fido:cablev2_test_util", "//media/mojo/mojom:web_speech_recognition", ] @@ -3516,7 +3588,10 @@ if (is_apple) { if (enable_nocompile_tests) { nocompile_source_set("content_nocompile_tests") { - sources = [ "../browser/browser_task_traits_nocompile.nc" ] + sources = [ + "../browser/browser_task_traits_nocompile.nc", + "../browser/browser_thread_nocompile.nc", + ] deps = [ "//content/public/browser" ] } @@ -3573,11 +3648,13 @@ group("gpu_pytype") { testonly = true data = [ + "//content/test/gpu/find_bad_machines.py", "//content/test/gpu/get_machine_times.py", "//content/test/gpu/run_pytype.py", "//content/test/gpu/unexpected_pass_finder.py", "//content/test/gpu/validate_tag_consistency.py", + "//content/test/gpu/bad_machine_finder/", "//content/test/gpu/gold_inexact_matching/", "//content/test/gpu/flake_suppressor/", "//content/test/gpu/machine_times/", diff --git a/src/tools/v8_context_snapshot/BUILD.gn b/src/tools/v8_context_snapshot/BUILD.gn index 72260e4c..86e133ce 100644 --- a/src/tools/v8_context_snapshot/BUILD.gn +++ b/src/tools/v8_context_snapshot/BUILD.gn @@ -52,7 +52,11 @@ if (use_v8_context_snapshot) { "--output_file=$output_path", ] - deps = [ ":v8_context_snapshot_generator" ] + sources = [ "$root_out_dir/snapshot_blob.bin" ] + deps = [ + ":v8_context_snapshot_generator", + "//v8:run_mksnapshot_default", + ] # TODO(sky): figure out why this doesn't work on android cross compile. # In the case of compiling for the snapshot `shlib_extension` is ".so"