M111 staging

This commit is contained in:
Alexander Frick 2023-03-18 13:57:39 -05:00
parent dce321ec0b
commit 0a13a053a9
57 changed files with 1269 additions and 4203 deletions

4
.gitignore vendored
View file

@ -3,3 +3,7 @@ API_KEYS.txt
*.deb
*.AppImage
*.zip
thorium_mini_installer.exe
thorium_mini_installer_SSE2.exe
thorium_mini_installer_SSE3.exe
thorium_mini_installer_AVX2.exe

File diff suppressed because it is too large Load diff

View file

@ -140,6 +140,10 @@ declare_args() {
# needs to be evaluated before enabling it there as well.
init_stack_vars = !(is_android && is_official_build)
# Zero init has favorable performance/size tradeoffs for Chrome OS
# but was not evaluated for other platforms.
init_stack_vars_zero = is_chromeos
# This argument is to control whether enabling text section splitting in the
# final binary. When enabled, the separated text sections with prefix
# '.text.hot', '.text.unlikely', '.text.startup' and '.text.exit' will not be
@ -171,6 +175,10 @@ declare_args() {
# If true, linker crashes will be rerun with `--reproduce` which causes
# a reproducer file to be saved.
save_reproducers_on_lld_crash = false
# Allow projects that wish to stay on C++17 to override Chromium's default.
# TODO(crbug.com/1402249): evaluate removing this end of 2023
use_cxx17 = false
}
declare_args() {
@ -343,7 +351,7 @@ config("compiler") {
ldflags += [ "-B$lld_path" ]
}
}
# ADDED BY ALEX313031 FOR THORIUM
if (is_clang && is_android && !is_ubsan && !is_ubsan_security) {
cflags += [ "-fwrapv" ]
@ -609,7 +617,7 @@ config("compiler") {
cflags_cc += [ "-fno-trigraphs" ]
}
} else if (is_clang) {
if (is_chromeos_device) {
if (is_chromeos_device || use_cxx17) {
# TODO(crbug.com/1392471): Support C++20 in CrOS toolchain.
cflags_cc += [ "-std=${standard_prefix}++17" ]
} else {
@ -622,7 +630,7 @@ config("compiler") {
}
} else if (is_win) {
cflags_c += [ "/std:c11" ]
if (!is_clang && defined(msvc_use_cxx17) && msvc_use_cxx17) {
if (use_cxx17 || (!is_clang && defined(msvc_use_cxx17) && msvc_use_cxx17)) {
cflags_cc += [ "/std:c++17" ]
} else {
cflags_cc += [ "/std:c++20" ]
@ -635,7 +643,7 @@ config("compiler") {
# clause, above.
cflags_c += [ "-std=c11" ]
if (is_fuchsia) {
if (is_fuchsia || use_cxx17) {
# TODO(crbug.com/fuchsia/108751): The FIDL compiler generates code that
# will not compile in C++20 mode. Switch to C++20 when this is resolved.
cflags_cc += [ "-std=c++17" ]
@ -715,7 +723,7 @@ config("compiler") {
]
} else {
ldflags +=
[]
[ "-Wl,-O3" ]
}
# ldflags += [ "-Wl,--thinlto-cache-policy=$cache_policy" ]
@ -788,6 +796,10 @@ config("compiler") {
ldflags += [ "-Wl,--undefined-version" ]
}
if (use_lld && is_apple) {
ldflags += [ "-Wl,--strict-auto-link" ]
}
# LLD does call-graph-sorted binary layout by default when profile data is
# present. On Android this increases binary size due to more thinks for long
# jumps. Turn it off by default and enable selectively for targets where it's
@ -895,14 +907,11 @@ config("compiler") {
"-Zremap-cwd-prefix=.",
# Full RUSTC optimizations.
"-Copt-level=3",
"-Copt-level=3", "-Ctarget-feature=+aes,+avx,-pclmul",
]
if (rust_abi_target != "") {
rustflags += [ "--target=$rust_abi_target" ]
}
if (use_lto_in_rustc_linking) {
rustflags += [ "-Clinker-plugin-lto" ]
}
if (!use_thin_lto || !use_chromium_rust_toolchain) {
# Don't include bitcode if it won't be used, or can't be used. When
# use_thin_lto is true, we will try to apply LTO to any objects that have
@ -916,6 +925,21 @@ config("compiler") {
}
}
# Defers LTO optimization to the linker, for use when:
# * Having the C++ toolchain do the linking against Rust staticlibs, and it
# will be using LTO.
# * Having Rust toolchain invoke the linker, and you're linking Rust and C++
# together, so this defers LTO to the linker.
#
# Otherwise, Rust does LTO during compilation.
#
# https://doc.rust-lang.org/rustc/linker-plugin-lto.html
config("rust_defer_lto_to_linker") {
if (!is_debug && use_thin_lto && is_a_target_toolchain) {
rustflags = [ "-Clinker-plugin-lto", "-Copt-level=3", ]
}
}
# The BUILDCONFIG file sets this config on targets by default, which means when
# building with ThinLTO, no optimization is performed in the link step.
config("thinlto_optimize_default") {
@ -928,6 +952,8 @@ config("thinlto_optimize_default") {
} else {
ldflags = [ "-Wl,--lto-O" + lto_opt_level ]
}
rustflags = [ "-Clto=thin" ]
}
}
@ -953,6 +979,8 @@ config("thinlto_optimize_max") {
} else {
ldflags = [ "-Wl,--lto-O" + lto_opt_level ]
}
rustflags = [ "-Clto=thin" ]
}
}
@ -1007,7 +1035,7 @@ config("compiler_cpu_abi") {
} else if (current_cpu == "arm") {
if (is_clang && !is_android && !is_nacl &&
!(is_chromeos_lacros && is_chromeos_device)) {
cflags += [ "--target=arm-linux-gnueabihf", "-O3", "-Wno-error", "-Wno-unused-command-line-argument", ]
cflags += [ "--target=arm-linux-gnueabihf", "-O3", "-Wno-unused-command-line-argument", ]
ldflags += [ "--target=arm-linux-gnueabihf", "-Wl,-O3", "-Wno-unused-command-line-argument", ]
}
if (!is_nacl) {
@ -1682,7 +1710,7 @@ config("default_warnings") {
# sizes, allocations, indices, or offsets.In cases where type conversion is not
# possible or is superfluous, use base::strict_cast<> or base::checked_cast<>
# to convert to size_t as needed.
# See also: https://docs.google.com/document/d/14yKUwDaorqqNfgdGqHY_nck2nn02XBQcB5N0ue4fax8
# See also: https://docs.google.com/document/d/1CTbQ-5cQjnjU8aCOtLiA7G6P0i5C6HpSDNlSNq6nl5E
#
# To enable in a GN target, use:
# configs += [ "//build/config/compiler:prevent_unsafe_narrowing" ]
@ -2044,6 +2072,7 @@ if (is_win) {
common_optimize_on_ldflags += [
]
if (use_polly == true) {
common_optimize_on_ldflags += [
"-mllvm:-polly",
@ -2134,7 +2163,7 @@ if (is_win) {
}
config("default_stack_frames") {
if (is_posix || is_fuchsia) {
if (!is_win) {
if (enable_frame_pointers) {
cflags = [ "-fno-omit-frame-pointer" ]
@ -2487,11 +2516,12 @@ config("symbols") {
# The gcc-based nacl compilers don't support -fdebug-compilation-dir (see
# elsewhere in this file), so they can't have build-dir-independent output.
# Moreover pnacl does not support newer flags such as -fdebug-prefix-map
# Disable symbols for nacl object files to get deterministic,
# build-directory-independent output. pnacl and nacl-clang do support that
# flag, so we can use use -g1 for pnacl and nacl-clang compiles.
# gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
if ((!is_nacl || is_clang) && current_os != "zos") {
# build-directory-independent output.
# Keeping -g2 for saigo as it's the only toolchain whose artifacts that are
# part of chromium release (other nacl toolchains are used only for tests).
if ((!is_nacl || is_nacl_saigo) && current_os != "zos") {
cflags += [ "-g2" ]
}
@ -2618,11 +2648,12 @@ config("minimal_symbols") {
# The gcc-based nacl compilers don't support -fdebug-compilation-dir (see
# elsewhere in this file), so they can't have build-dir-independent output.
# Moreover pnacl does not support newer flags such as -fdebug-prefix-map
# Disable symbols for nacl object files to get deterministic,
# build-directory-independent output. pnacl and nacl-clang do support that
# flag, so we can use use -g1 for pnacl and nacl-clang compiles.
# gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
if (!is_nacl || is_clang) {
# build-directory-independent output.
# Keeping -g1 for saigo as it's the only toolchain whose artifacts that are
# part of chromium release (other nacl toolchains are used only for tests).
if (!is_nacl || is_nacl_saigo) {
cflags += [ "-g1" ]
}
@ -2731,12 +2762,7 @@ if (is_android || (is_chromeos_ash && is_chromeos_device)) {
config("default_init_stack_vars") {
cflags = []
if (init_stack_vars && is_clang && !is_nacl && !using_sanitizer) {
if (is_chromeos && !chromeos_is_browser_only) {
# TODO(adriandole) remove chromeos_is_browser_only condition
# once lacros updates toolchain
# Zero init has favorable performance/size tradeoffs for Chrome OS
# but was not evaluated for other platforms.
if (init_stack_vars_zero) {
cflags += [ "-ftrivial-auto-var-init=zero" ]
} else {
cflags += [ "-ftrivial-auto-var-init=pattern" ]

View file

@ -23,7 +23,7 @@ Enable JPEG XL Image File Format by Default Patch
Enable Live Caption (SODA) on all builds Patch
- Made by me.
Font Rendering Patch > https://github.com/saiarcot895/chromium-ubuntu-build/blob/master/debian/patches/fix-font-rendering.patch
V8 Font Rendering Patch > https://github.com/saiarcot895/chromium-ubuntu-build/blob/master/debian/patches/fix-font-rendering.patch
- Fixes font rendering in certain instances.
VAAPI Patch > https://github.com/saiarcot895/chromium-ubuntu-build/blob/master/debian/patches/enable-vaapi-on-linux.diff
@ -101,7 +101,7 @@ Increase default key length for newly-generated RSA keys from 1024 to 2048 Patch
Enable UI Features: Side Search, Side Panel Journeys, Chrome Labs, Extensions Access Menu, Tab Hover Cards, Tab Outlines in Low Contrast Themes, More Prominent Active Tab Title in Dark Mode, WebUI Tab Strip, Drag and Drop Tabs on Wayland, Tab Groups Saving > https://github.com/Alex313031/Thorium/blob/main/chrome/browser/ui/ui_features.cc
- Made by me.
Enable Precompiling of Inline Scripts in HTML
Enable Precompiling of Inline Scripts in HTML - https://github.com/Alex313031/thorium/commit/8d237b76adff2ab4e89147b18ee1d0ab7bb29fb6
- Modified by me.
Patch Windows installer to close previous browser instance > https://github.com/Hibbiki/chromium-win64/blob/master/patch/0001-Patch-installer-to-close-previous-browser-instance-o.patch

View file

@ -64,7 +64,7 @@
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:third_party/libgav1/BUILD.gn;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">BUILD.gn - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:third_party/zlib/BUILD.gn;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">BUILD.gn - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:ui/base/x/x11_util.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">x11_util.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:v8/src/objects/js-display-names.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">js-display-names.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/_/chromium/v8/v8.git/+/1cee747760b14aa78503a22ba1a3ab97b968fa28:src/objects/js-display-names.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">js-display-names.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:third_party/widevine/cdm/widevine_cdm_version.h;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">widevine_cdm_version.h - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:chrome/common/media/cdm_registration.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">cdm_registration.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:chrome/browser/resources/components/components.css;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">components.css - Chromium Code Search</A>
@ -83,9 +83,8 @@
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:components/dom_distiller/core/css/distilledpage.css;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">distilledpage.css - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:chrome/browser/ui/views/toolbar/reload_button.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">reload_button.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:third_party/blink/common/features.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">features.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:tools/gn/bootstrap/bootstrap.py;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">bootstrap.py - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:chrome/browser/profiles/profile_shortcut_manager_win.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">profile_shortcut_manager_win.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:v8/src/parsing/parser-base.h;l=1;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">parser-base.h - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/_/chromium/v8/v8.git/+/1cee747760b14aa78503a22ba1a3ab97b968fa28:src/parsing/parser-base.h;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">parser-base.h - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:ui/chromeos/ui_chromeos_strings.grd;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">ui_chromeos_strings.grd - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:components/autofill_payments_strings.grdp;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">autofill_payments_strings.grdp - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/111.0.5563.69:components/autofill_strings.grdp;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">autofill_strings.grdp - Chromium Code Search</A>

View file

@ -701,6 +701,10 @@ Permissions you've already given to websites and apps may apply to this account.
desc="Message shown to the user on chrome://downloads page to explain that this download is blocked because it is unwanted sofware.">
This file may be dangerous, so Thorium has blocked it.
</message>
<message name="IDS_BLOCK_REASON_PROMPT_FOR_SCANNING"
desc="Message shown to the user on chrome://downloads page to explain that this download is recommended to be scanned.">
Thorium recommends scanning this file because it may be dangerous.
</message>
<!-- Abandon in-progress downloads confirmation dialog -->
<if expr="not is_macosx">
@ -996,6 +1000,15 @@ Permissions you've already given to websites and apps may apply to this account.
Thorium is using your camera.
</message>
<if expr="not is_android">
<!-- WebHID system tray icon -->
<message name="IDS_WEBHID_SYSTEM_TRAY_ICON_TOOLTIP" desc="Tooltip for the WebHID system tray icon when one or more HID devices are being accessed.">
{NUM_DEVICES, plural,
=1 {Thorium is connected to a HID device}
other {Thorium is connected to HID devices}}
</message>
</if>
<!-- ProcessSingleton -->
<if expr="is_posix">
<message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">

View file

@ -1,4 +1,4 @@
// Copyright 2021 The Chromium Authors. All rights reserved.
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -14,6 +14,7 @@
#include "content/public/common/cdm_info.h"
#include "media/cdm/cdm_capability.h"
#include "media/cdm/cdm_type.h"
#include "media/cdm/clear_key_cdm_common.h"
#include "third_party/widevine/cdm/buildflags.h"
#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
@ -260,33 +261,26 @@ void AddExternalClearKey(std::vector<content::CdmInfo>* cdms) {
if (clear_key_cdm_path.empty() || !base::PathExists(clear_key_cdm_path))
return;
// TODO(crbug.com/764480): Remove these after we have a central place for
// External Clear Key (ECK) related information.
// Normal External Clear Key key system.
const char kExternalClearKeyKeySystem[] = "org.chromium.externalclearkey";
// A variant of ECK key system that has a different CDM type.
const char kkExternalClearKeyDifferentCdmTypeTestKeySystem[] =
"org.chromium.externalclearkey.differentcdmtype";
// Supported codecs are hard-coded in ExternalClearKeyProperties.
// Supported codecs are hard-coded in ExternalClearKeySystemInfo.
media::CdmCapability capability(
{}, {}, {media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs},
{media::CdmSessionType::kTemporary,
media::CdmSessionType::kPersistentLicense});
// Register kkExternalClearKeyDifferentCdmTypeTestKeySystem first separately.
// Otherwise, it'll be treated as a sub-key-system of normal
// kExternalClearKeyKeySystem. See MultipleCdmTypes test in
// Register media::kExternalClearKeyDifferentCdmTypeTestKeySystem first
// separately. Otherwise, it'll be treated as a sub-key-system of normal
// media::kExternalClearKeyKeySystem. See MultipleCdmTypes test in
// ECKEncryptedMediaTest.
cdms->push_back(content::CdmInfo(
kkExternalClearKeyDifferentCdmTypeTestKeySystem,
media::kExternalClearKeyDifferentCdmTypeTestKeySystem,
Robustness::kSoftwareSecure, capability,
/*supports_sub_key_systems=*/false, media::kClearKeyCdmDisplayName,
media::kClearKeyCdmDifferentCdmType, base::Version("0.1.0.0"),
clear_key_cdm_path));
cdms->push_back(content::CdmInfo(
kExternalClearKeyKeySystem, Robustness::kSoftwareSecure, capability,
media::kExternalClearKeyKeySystem, Robustness::kSoftwareSecure,
capability,
/*supports_sub_key_systems=*/true, media::kClearKeyCdmDisplayName,
media::kClearKeyCdmType, base::Version("0.1.0.0"), clear_key_cdm_path));
}

View file

@ -1 +1 @@
START "" "%cd%\BIN\106.0.5237.0\thorium_shell.exe" --data-path="%~dp0%\USER_DATA\thorium_shell" --allow-outdated-plugins --disable-logging --disable-breakpad --enable-experimental-web-platform-features --new-canvas-2d-api
START "" "%cd%\BIN\111.0.5563.69\thorium_shell.exe" --data-path="%~dp0%\USER_DATA\thorium_shell" --allow-outdated-plugins --disable-logging --disable-breakpad --enable-experimental-web-platform-features --new-canvas-2d-api

View file

@ -140,6 +140,7 @@ esac
copyAndroid () {
printf "\n" &&
printf "${YEL}Copying Android (ARM64 and ARM32) build files...${c0}\n" &&
cp -r -v arm/build/config/* $HOME/chromium/src/build/config/ &&
cp -r -v arm/android/* $HOME/chromium/src/ &&
cp -r -v arm/raspi/third_party/* $HOME/chromium/src/third_party/ &&
printf "\n"

View file

@ -115,7 +115,7 @@ group("gn_all") {
deps += [ "//third_party/abseil-cpp:absl_tests" ]
}
if (enable_js_type_check) {
if (is_chromeos_ash && enable_js_type_check) {
deps += [ ":webui_closure_compile" ]
}
@ -153,10 +153,11 @@ group("gn_all") {
}
if (!is_castos) {
deps += [
"//chrome/installer",
"//chrome/updater",
]
deps += [ "//chrome/installer" ]
}
if (enable_updater) {
deps += [ "//chrome/updater" ]
}
if (enable_ppapi) {
@ -348,7 +349,6 @@ group("gn_all") {
if (is_android) {
deps += [
"//android_webview/js_sandbox/javatests:webview_js_sandbox_test_app",
"//base:base_junit_tests",
"//base/android/jni_generator:jni_generator_tests",
"//base/android/linker:chromium_android_linker",
@ -369,6 +369,7 @@ group("gn_all") {
"//services:services_junit_tests",
"//testing/android/junit:junit_unit_tests",
"//third_party/android_build_tools/lint:custom_lint_java",
"//third_party/androidx_javascriptengine",
"//third_party/catapult/devil",
"//third_party/r8:custom_d8_java",
"//tools/android:android_tools",
@ -416,15 +417,6 @@ group("gn_all") {
}
}
if (is_linux || is_chromeos) {
# This is only used by ChromeOS, but we want maximal fuzzer coverage, so
# run it under linux too.
deps += [
"//third_party/minizip:minizip_compress_fuzzer",
"//third_party/minizip:minizip_uncompress_fuzzer",
]
}
if (is_linux || is_chromeos || is_android) {
deps += [
"//third_party/breakpad:breakpad_unittests",
@ -798,7 +790,6 @@ group("gn_all") {
deps += [
"//chrome/browser/vr:vr_common_perftests",
"//chrome/browser/vr:vr_common_unittests",
"//chrome/browser/vr:vr_pixeltests",
]
if (!is_android) {
deps += [ "//tools/perf/contrib/vr_benchmarks:vr_perf_tests" ]
@ -1022,6 +1013,7 @@ if (is_chromeos_ash) {
data_deps += [
"//media/gpu/vaapi:decode_test",
"//media/gpu/vaapi:vaapi_unittest",
"//media/gpu/vaapi/test/fake_libva_driver:fake_libva_driver_unittest",
]
}
if (use_v4l2_codec) {
@ -1128,7 +1120,10 @@ if (!is_ios) {
}
script_test("wpt_tests_isolate") {
script = "//third_party/blink/tools/run_wpt_tests.py"
args = [ "--product=chrome" ]
args = [
"--product=chrome",
"--no-show-results",
]
data_deps = [
"//chrome:chrome",
"//chrome/test/chromedriver:chromedriver_server",
@ -1137,6 +1132,7 @@ if (!is_ios) {
}
script_test("wpt_tests_isolate_content_shell") {
script = "//third_party/blink/tools/run_wpt_tests.py"
args = [ "--no-show-results" ]
data_deps = [
":blink_web_tests_support_data",
"//third_party/blink/tools:wpt_tests_isolate",
@ -1402,7 +1398,6 @@ if (!is_ios) {
"//third_party/blink/web_tests/view-transition/",
"//third_party/blink/web_tests/virtual/",
"//third_party/blink/web_tests/virtualkeyboard/",
"//third_party/blink/web_tests/wake-lock/",
"//third_party/blink/web_tests/wasm/",
"//third_party/blink/web_tests/webaudio/",
"//third_party/blink/web_tests/webexposed/",
@ -1612,6 +1607,7 @@ if (!is_ios) {
"//third_party/blink/renderer/build/scripts/",
"//third_party/blink/tools/",
"//third_party/blink/web_tests/ASANExpectations",
"//third_party/blink/web_tests/FlagExpectations/",
"//third_party/blink/web_tests/LeakExpectations",
"//third_party/blink/web_tests/MSANExpectations",
"//third_party/blink/web_tests/NeverFixTests",
@ -1619,6 +1615,7 @@ if (!is_ios) {
"//third_party/blink/web_tests/StaleTestExpectations",
"//third_party/blink/web_tests/TestExpectations",
"//third_party/blink/web_tests/VirtualTestSuites",
"//third_party/blink/web_tests/W3CImportExpectations",
"//third_party/catapult/common/py_utils/",
"//third_party/catapult/devil/",
"//third_party/catapult/dependency_manager/",
@ -1752,27 +1749,16 @@ if (is_android) {
}
}
if (enable_js_type_check) {
if (is_chromeos_ash && enable_js_type_check) {
group("webui_closure_compile") {
testonly = true
if (is_ios) {
data_deps = [ "ui/webui/resources/js/ios:closure_compile" ]
} else if (is_chromeos_ash) {
data_deps = [
"ash/webui:closure_compile",
"chrome/browser/resources:closure_compile",
"chrome/test/data:closure_compile",
"mojo/public/tools/bindings/generators/js_templates/lite/test:closure_compile",
"ui/file_manager:closure_compile",
]
} else if (is_chromeos || is_android) {
data_deps = [
"chrome/browser/resources:closure_compile",
"chrome/test/data:closure_compile",
]
} else if (!is_castos) {
data_deps = [ "chrome/test/data:closure_compile" ]
}
data_deps = [
"ash/webui:closure_compile",
"chrome/browser/resources:closure_compile",
"chrome/test/data/webui:closure_compile",
"mojo/public/tools/bindings/generators/js_templates/lite/test:closure_compile",
"ui/file_manager:closure_compile",
]
}
}

View file

@ -140,6 +140,10 @@ declare_args() {
# needs to be evaluated before enabling it there as well.
init_stack_vars = !(is_android && is_official_build)
# Zero init has favorable performance/size tradeoffs for Chrome OS
# but was not evaluated for other platforms.
init_stack_vars_zero = is_chromeos
# This argument is to control whether enabling text section splitting in the
# final binary. When enabled, the separated text sections with prefix
# '.text.hot', '.text.unlikely', '.text.startup' and '.text.exit' will not be
@ -171,6 +175,10 @@ declare_args() {
# If true, linker crashes will be rerun with `--reproduce` which causes
# a reproducer file to be saved.
save_reproducers_on_lld_crash = false
# Allow projects that wish to stay on C++17 to override Chromium's default.
# TODO(crbug.com/1402249): evaluate removing this end of 2023
use_cxx17 = false
}
declare_args() {
@ -602,7 +610,7 @@ config("compiler") {
cflags_cc += [ "-fno-trigraphs" ]
}
} else if (is_clang) {
if (is_chromeos_device) {
if (is_chromeos_device || use_cxx17) {
# TODO(crbug.com/1392471): Support C++20 in CrOS toolchain.
cflags_cc += [ "-std=${standard_prefix}++17" ]
} else {
@ -615,7 +623,7 @@ config("compiler") {
}
} else if (is_win) {
cflags_c += [ "/std:c11" ]
if (!is_clang && defined(msvc_use_cxx17) && msvc_use_cxx17) {
if (use_cxx17 || (!is_clang && defined(msvc_use_cxx17) && msvc_use_cxx17)) {
cflags_cc += [ "/std:c++17" ]
} else {
cflags_cc += [ "/std:c++20" ]
@ -628,7 +636,7 @@ config("compiler") {
# clause, above.
cflags_c += [ "-std=c11" ]
if (is_fuchsia) {
if (is_fuchsia || use_cxx17) {
# TODO(crbug.com/fuchsia/108751): The FIDL compiler generates code that
# will not compile in C++20 mode. Switch to C++20 when this is resolved.
cflags_cc += [ "-std=c++17" ]
@ -708,7 +716,7 @@ config("compiler") {
]
} else {
ldflags +=
[]
[ "-Wl,-O3" ]
}
# ldflags += [ "-Wl,--thinlto-cache-policy=$cache_policy" ]
@ -772,6 +780,10 @@ config("compiler") {
ldflags += [ "-Wl,--undefined-version" ]
}
if (use_lld && is_apple) {
ldflags += [ "-Wl,--strict-auto-link" ]
}
# LLD does call-graph-sorted binary layout by default when profile data is
# present. On Android this increases binary size due to more thinks for long
# jumps. Turn it off by default and enable selectively for targets where it's
@ -884,9 +896,6 @@ config("compiler") {
if (rust_abi_target != "") {
rustflags += [ "--target=$rust_abi_target" ]
}
if (use_lto_in_rustc_linking) {
rustflags += [ "-Clinker-plugin-lto" ]
}
if (!use_thin_lto || !use_chromium_rust_toolchain) {
# Don't include bitcode if it won't be used, or can't be used. When
# use_thin_lto is true, we will try to apply LTO to any objects that have
@ -900,6 +909,21 @@ config("compiler") {
}
}
# Defers LTO optimization to the linker, for use when:
# * Having the C++ toolchain do the linking against Rust staticlibs, and it
# will be using LTO.
# * Having Rust toolchain invoke the linker, and you're linking Rust and C++
# together, so this defers LTO to the linker.
#
# Otherwise, Rust does LTO during compilation.
#
# https://doc.rust-lang.org/rustc/linker-plugin-lto.html
config("rust_defer_lto_to_linker") {
if (!is_debug && use_thin_lto && is_a_target_toolchain) {
rustflags = [ "-Clinker-plugin-lto", "-Copt-level=3", "-Ctarget-feature=+aes,+avx,-pclmul", ]
}
}
# The BUILDCONFIG file sets this config on targets by default, which means when
# building with ThinLTO, no optimization is performed in the link step.
config("thinlto_optimize_default") {
@ -912,6 +936,8 @@ config("thinlto_optimize_default") {
} else {
ldflags = [ "-Wl,--lto-O" + lto_opt_level ]
}
rustflags = [ "-Clto=thin" ]
}
}
@ -937,6 +963,8 @@ config("thinlto_optimize_max") {
} else {
ldflags = [ "-Wl,--lto-O" + lto_opt_level ]
}
rustflags = [ "-Clto=thin" ]
}
}
@ -1666,7 +1694,7 @@ config("default_warnings") {
# sizes, allocations, indices, or offsets.In cases where type conversion is not
# possible or is superfluous, use base::strict_cast<> or base::checked_cast<>
# to convert to size_t as needed.
# See also: https://docs.google.com/document/d/14yKUwDaorqqNfgdGqHY_nck2nn02XBQcB5N0ue4fax8
# See also: https://docs.google.com/document/d/1CTbQ-5cQjnjU8aCOtLiA7G6P0i5C6HpSDNlSNq6nl5E
#
# To enable in a GN target, use:
# configs += [ "//build/config/compiler:prevent_unsafe_narrowing" ]
@ -2193,7 +2221,7 @@ if (is_win) {
}
config("default_stack_frames") {
if (is_posix || is_fuchsia) {
if (!is_win) {
if (enable_frame_pointers) {
cflags = [ "-fno-omit-frame-pointer" ]
@ -2546,11 +2574,12 @@ config("symbols") {
# The gcc-based nacl compilers don't support -fdebug-compilation-dir (see
# elsewhere in this file), so they can't have build-dir-independent output.
# Moreover pnacl does not support newer flags such as -fdebug-prefix-map
# Disable symbols for nacl object files to get deterministic,
# build-directory-independent output. pnacl and nacl-clang do support that
# flag, so we can use use -g1 for pnacl and nacl-clang compiles.
# gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
if ((!is_nacl || is_clang) && current_os != "zos") {
# build-directory-independent output.
# Keeping -g2 for saigo as it's the only toolchain whose artifacts that are
# part of chromium release (other nacl toolchains are used only for tests).
if ((!is_nacl || is_nacl_saigo) && current_os != "zos") {
cflags += [ "-g2" ]
}
@ -2677,11 +2706,12 @@ config("minimal_symbols") {
# The gcc-based nacl compilers don't support -fdebug-compilation-dir (see
# elsewhere in this file), so they can't have build-dir-independent output.
# Moreover pnacl does not support newer flags such as -fdebug-prefix-map
# Disable symbols for nacl object files to get deterministic,
# build-directory-independent output. pnacl and nacl-clang do support that
# flag, so we can use use -g1 for pnacl and nacl-clang compiles.
# gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
if (!is_nacl || is_clang) {
# build-directory-independent output.
# Keeping -g1 for saigo as it's the only toolchain whose artifacts that are
# part of chromium release (other nacl toolchains are used only for tests).
if (!is_nacl || is_nacl_saigo) {
cflags += [ "-g1" ]
}
@ -2790,12 +2820,7 @@ if (is_android || (is_chromeos_ash && is_chromeos_device)) {
config("default_init_stack_vars") {
cflags = []
if (init_stack_vars && is_clang && !is_nacl && !using_sanitizer) {
if (is_chromeos && !chromeos_is_browser_only) {
# TODO(adriandole) remove chromeos_is_browser_only condition
# once lacros updates toolchain
# Zero init has favorable performance/size tradeoffs for Chrome OS
# but was not evaluated for other platforms.
if (init_stack_vars_zero) {
cflags += [ "-ftrivial-auto-var-init=zero" ]
} else {
cflags += [ "-ftrivial-auto-var-init=pattern" ]

View file

@ -1,6 +1,6 @@
#!/bin/bash -e
# Copyright 2012 The Chromium Authors
# Copyright 2023 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

View file

@ -1,10 +1,8 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# Copyright 2023 The Chromium Authors, Alex313031 and gz83
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from __future__ import print_function
import collections
import glob
import json
@ -19,7 +17,7 @@ import sys
from gn_helpers import ToGNString
# VS 2019 16.61 with 10.0.20348.0 SDK, 10.0.19041 version of Debuggers
# VS 2019 17.4.5 with 10.0.22621.0 SDK, 10.0.22621 version of Debuggers
# with ARM64 libraries and UWP support.
# See go/chromium-msvc-toolchain for instructions about how to update the
# toolchain.

View file

@ -1,5 +1,5 @@
#!/usr/bin/env python
# Copyright 2022 The Chromium Authors, Alex313031, and gz83.
#!/usr/bin/env python3
# Copyright 2023 The Chromium Authors, Alex313031, and gz83.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

View file

@ -14,6 +14,7 @@ import("//build/config/ui.gni")
import("//build/config/win/console_app.gni")
import("//build/config/win/manifest.gni")
import("//build/toolchain/toolchain.gni")
import("//chrome/browser/buildflags.gni")
import("//chrome/chrome_paks.gni")
import("//chrome/common/features.gni")
import("//chrome/process_version_rc_template.gni")
@ -160,7 +161,10 @@ if (!is_android && !is_mac) {
data_deps = []
if (is_chromeos_ash) {
data_deps += [ "//sandbox/linux:chrome_sandbox" ]
data_deps += [
"//components/variations/cros:evaluate_seed",
"//sandbox/linux:chrome_sandbox",
]
deps += [
"//components/exo/wayland:ui_controls_protocol_stub",
"//components/exo/wayland:weston_test_stub",
@ -413,7 +417,7 @@ if (is_win) {
"//components/policy:generated",
"//content/public/app",
"//crypto",
"//headless:headless_renderer",
"//headless:headless_non_renderer",
"//headless:headless_shell_browser_lib",
"//net:net_resources",
"//ppapi/buildflags",
@ -469,12 +473,16 @@ if (is_win) {
"--breakpad=0",
"--scm=1",
"--bundle_id=$chrome_mac_bundle_id",
"--privileged_helper_id=$privileged_helper_name",
]
if (is_chrome_branded) {
args += [ "--keystone=1" ]
if (current_cpu == "arm64") {
args += [ "--keystone-base-tag=arm64" ]
if (enable_updater) {
args += [ "--privileged_helper_id=$privileged_helper_name" ]
if (is_chrome_branded) {
args += [ "--keystone=1" ]
if (current_cpu == "arm64") {
args += [ "--keystone-base-tag=arm64" ]
}
} else {
args += [ "--keystone=0" ]
}
} else {
args += [ "--keystone=0" ]
@ -892,16 +900,18 @@ if (is_win) {
}
}
if (is_chrome_branded) {
sources += [ "//third_party/updater/chrome_mac_universal_prod/${updater_product_full_name}.app" ]
} else {
sources += [ "$root_out_dir/${updater_product_full_name}.app" ]
if (enable_updater) {
if (is_chrome_branded) {
sources += [ "//third_party/updater/chrome_mac_universal_prod/${updater_product_full_name}.app" ]
} else {
sources += [ "$root_out_dir/${updater_product_full_name}.app" ]
public_deps += [
"//chrome/updater/mac:browser_install_script",
"//chrome/updater/mac:updater_bundle",
"//chrome/updater/mac:updater_install_script",
]
public_deps += [
"//chrome/updater/mac:browser_install_script",
"//chrome/updater/mac:updater_bundle",
"//chrome/updater/mac:updater_install_script",
]
}
}
}
@ -1301,6 +1311,7 @@ if (is_win) {
rebase_path(get_label_info(dump_syms, "root_out_dir") + "/" +
get_label_info(dump_syms, "name"),
root_build_dir),
"-d",
"-m",
"-g",
rebase_path(

View file

@ -701,6 +701,10 @@ Permissions you've already given to websites and apps may apply to this account.
desc="Message shown to the user on chrome://downloads page to explain that this download is blocked because it is unwanted sofware.">
This file may be dangerous, so Thorium has blocked it.
</message>
<message name="IDS_BLOCK_REASON_PROMPT_FOR_SCANNING"
desc="Message shown to the user on chrome://downloads page to explain that this download is recommended to be scanned.">
Thorium recommends scanning this file because it may be dangerous.
</message>
<!-- Abandon in-progress downloads confirmation dialog -->
<if expr="not is_macosx">

View file

@ -346,19 +346,10 @@ are declared in tools/grit/grit_rule.gni.
<part file="vr_strings.grdp" />
</if>
<!-- Supervised user error page -->
<if expr="enable_supervised_users">
<part file="supervised_user_error_page_strings.grdp" />
</if>
<!-- TODO add all of your "string table" messages here. Remember to
change nontranslateable parts of the messages into placeholders (using the
<ph> element). You can also use the 'grit add' tool to help you identify
nontranslateable parts and create placeholders for them. -->
<message name="IDS_BACK_BUTTON_AUTHENTICATOR_REQUEST_DIALOG" desc="A back button for authenticator request dialog.">
Go back
</message>
<if expr="is_win">
<message name="IDS_BACKGROUND_APP_INSTALLED_BALLOON_TITLE" desc="The title of the balloon that is displayed when a background app is installed">
New background app added
@ -582,9 +573,6 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_READ_ANYTHING" desc="Context menu menuitem to open page in Read Anything view">
Open in Reader
</message>
<message name="IDS_CONTENT_CONTEXT_RUN_PDF_OCR" desc="Context menu menuitem that runs a local machine intelligence model to extract the content of the current PDF and pass it to assisstive technologies.">
Recognize P&amp;DF text
</message>
<message name="IDS_CONTENT_CONTEXT_RELOAD" desc="The name of the Reload command in the content area context menu">
&amp;Reload
</message>
@ -754,6 +742,15 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_ACCESSIBILITY_LABELS_SEND_ONCE" desc="The context-menu sub-item that asks whether to integrate the accessibility image labeling service of Google to Thorium, for a single use.">
Just once
</message>
<message name="IDS_CONTENT_CONTEXT_PDF_OCR_MENU_OPTION" desc="The context-menu item that asks whether to use the PDF OCR service to convert image to text.">
Convert image to text
</message>
<message name="IDS_CONTENT_CONTEXT_PDF_OCR_MENU_OPTION_ALWAYS" desc="The context-menu sub-item that asks whether to use the PDF OCR service to convert image to text always.">
Always
</message>
<message name="IDS_CONTENT_CONTEXT_PDF_OCR_MENU_OPTION_ONCE" desc="The context-menu sub-item that asks whether to use the PDF OCR service to convert image to text, for a single use.">
Just once
</message>
<message name="IDS_CONTENT_CONTEXT_SPELLING_ASK_GOOGLE" desc="The context-menu item that asks whether to integrate the spelling service of Google to Thorium.">
Use enhanced spell check
</message>
@ -787,6 +784,9 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_SEARCHLENSFORIMAGE" desc="The name of the Search Lens for Image command in the content area context menu">
Search image with <ph name="VISUAL_SEARCH_PROVIDER">$1<ex>Google Lens</ex></ph>
</message>
<message name="IDS_CONTENT_CONTEXT_SEARCHLENSFORIMAGE_ALT_TEXT" desc="The name of the Search Lens for Image command in the content area context menu">
Search inside image with <ph name="SEARCH_ENGINE">$1<ex>Google</ex></ph>
</message>
<message name="IDS_CONTENT_CONTEXT_LENS_REGION_SEARCH_ALT1" desc="The name of the Lens Region Search command in the content area context menu">
Search page with <ph name="VISUAL_SEARCH_PROVIDER">$1<ex>Google Lens</ex></ph>
</message>
@ -805,6 +805,9 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_OPEN_WITH_APP" desc="The label for an item in the content area context menu for opening a link with an app.">
Open with <ph name="APP">$1<ex>Hangouts</ex></ph>
</message>
<message name="IDS_CONTENT_CONTEXT_AUTOFILL_FEEDBACK" desc="The name of the Autofill Feedback command in the content area context menu">
Provide Autofill feedback
</message>
</if>
<if expr="use_titlecase">
<message name="IDS_CONTENT_CONTEXT_BACK" desc="In Title Case: The name of the Back command in the content area context menu">
@ -834,9 +837,6 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_READ_ANYTHING" desc="Context menu menuitem to open page in Read Anything view">
Open in Reader
</message>
<message name="IDS_CONTENT_CONTEXT_RUN_PDF_OCR" desc="Context menu menuitem that runs a local machine intelligence model to extract the content of the current PDF and pass it to assisstive technologies.">
Recognize P&amp;DF text
</message>
<message name="IDS_CONTENT_CONTEXT_RELOAD" desc="In Title Case: The name of the Reload command in the content area context menu">
&amp;Reload
</message>
@ -1017,6 +1017,15 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_ACCESSIBILITY_LABELS_SEND_ONCE" desc="The context-menu sub-item that asks whether to integrate the accessibility image labeling service of Google to Thorium, for a single use.">
Just Once
</message>
<message name="IDS_CONTENT_CONTEXT_PDF_OCR_MENU_OPTION" desc="The context-menu item that asks whether to use the PDF OCR service to convert image to text.">
Convert image to text
</message>
<message name="IDS_CONTENT_CONTEXT_PDF_OCR_MENU_OPTION_ALWAYS" desc="The context-menu sub-item that asks whether to use the PDF OCR service to convert image to text always.">
Always
</message>
<message name="IDS_CONTENT_CONTEXT_PDF_OCR_MENU_OPTION_ONCE" desc="The context-menu sub-item that asks whether to use the PDF OCR service to convert image to text, for a single use.">
Just once
</message>
<message name="IDS_CONTENT_CONTEXT_SPELLING_ASK_GOOGLE" desc="In Title Case: The context-menu item that asks whether to integrate the spelling service of Google to Thorium.">
Use Enhanced Spell Check
</message>
@ -1049,6 +1058,9 @@ are declared in tools/grit/grit_rule.gni.
</message>
<message name="IDS_CONTENT_CONTEXT_SEARCHLENSFORIMAGE" desc="In Title Case: The name of the Search Lens for Image command in the content area context menu">
Search Image with <ph name="VISUAL_SEARCH_PROVIDER">$1<ex>Google Lens</ex></ph>
</message>
<message name="IDS_CONTENT_CONTEXT_SEARCHLENSFORIMAGE_ALT_TEXT" desc="In Title Case: The name of the Search Lens for Image command in the content area context menu">
Search Inside Image with <ph name="SEARCH_ENGINE">$1<ex>Google</ex></ph>
</message>
<message name="IDS_CONTENT_CONTEXT_LENS_REGION_SEARCH_ALT1" desc="In Title Case: The name of the Lens Region Search command in the content area context menu">
Search Page with <ph name="VISUAL_SEARCH_PROVIDER">$1<ex>Google</ex></ph>
@ -1062,6 +1074,9 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_CONTENT_CONTEXT_GENERATEPASSWORD" desc="In Title Case: The name of the Generate Password command in the content area context menu">
Suggest Password...
</message>
<message name="IDS_CONTENT_CONTEXT_AUTOFILL_FEEDBACK" desc="The name of the Autofill Feedback command in the content area context menu">
Provide Autofill Feedback
</message>
</if>
<message name="IDS_SHARE_MENU_TITLE" desc="The label of the menu item used to share content (links, images, etc) with others.">
@ -2211,6 +2226,14 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_DOWNLOAD_TOAST_CLEARED_ALL" desc="Toast message for clearing all download entries">
Cleared all
</message>
<message name="IDS_DOWNLOAD_DEEP_SCAN"
desc="In the download view, the 'Scan' button when prompt for deep scan">
Scan
</message>
<message name="IDS_DOWNLOAD_BYPASS_DEEP_SCAN"
desc="In the download view, the 'Open' button when prompt for deep scan">
Open
</message>
<!-- Download Alerts for Accessibility -->
@ -2543,6 +2566,10 @@ are declared in tools/grit/grit_rule.gni.
desc="Footer link in the Download Bubble">
Show all downloads
</message>
<message name="IDS_DOWNLOAD_BUBBLE_FOOTER_TOOLTIP"
desc="Tooltip label for the button to open all downloads">
Show all downloads in a new tab
</message>
<message name="IDS_DOWNLOAD_BUBBLE_DOWNLOAD_STATUS_MESSAGE_WITH_SEPARATOR"
desc="The download status and message are separated by a symbol, in this case bullet •, with a white space before it and a white space after it. If the bullet • resembles another symbol in the language, please translate the bullet • as a symbol (A) that is not easily mistaken for a number or letter in the language and (B) that is typically used to separate elements.">
<ph name="STATUS">$1<ex>100/120 MB</ex></ph> • <ph name="MESSAGE">$2<ex>Opening in 10 seconds...</ex></ph>
@ -2831,6 +2858,38 @@ are declared in tools/grit/grit_rule.gni.
Back to Recent Downloads
</message>
</if>
<message name="IDS_DOWNLOAD_BUBBLE_CANCEL_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for cancel button.">
Cancel <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<message name="IDS_DOWNLOAD_BUBBLE_DELETE_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for delete button.">
Delete <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<message name="IDS_DOWNLOAD_BUBBLE_KEEP_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for keep button.">
Keep <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<message name="IDS_DOWNLOAD_BUBBLE_SCAN_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for scan button.">
Scan <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<message name="IDS_DOWNLOAD_BUBBLE_OPEN_NOW_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for open now button.">
Open <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph> now
</message>
<message name="IDS_DOWNLOAD_BUBBLE_RESUME_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for resume button.">
Resume <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<message name="IDS_DOWNLOAD_BUBBLE_REVIEW_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for review button.">
Review <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<message name="IDS_DOWNLOAD_BUBBLE_RETRY_MAIN_BUTTON_ACCESSIBILITY"
desc="Accessibility label for retry button.">
Retry <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>
</message>
<!-- Tailored Warning in Download Bubble -->
<message name="IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_COOKIE_THEFT"
@ -3971,13 +4030,22 @@ are declared in tools/grit/grit_rule.gni.
</message>
<!-- Tab casting infobar -->
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_CURRENT_TAB_LABEL" desc="Text displayed on an infobar when current tab is being casted.">
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_CURRENT_TAB_LABEL" desc="Text displayed on an infobar when current tab is being cast. The placeholder text (DEVICE_NAME) represents the name of the cast receiver.">
Casting this tab to <ph name="DEVICE_NAME">$1<ex>Living Room TV</ex></ph>
</message>
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_CURRENT_TAB_NO_DEVICE_NAME_LABEL" desc="Text displayed on an infobar when current tab is being cast.">
Casting this tab
</message>
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_ANOTHER_UNTITLED_TAB_LABEL" desc="Text displayed on an infobar when another (non-current) untitled tab is being casted.">
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_ANOTHER_UNTITLED_TAB_LABEL" desc="Text displayed on an infobar when another (non-current) untitled tab is being cast. The placeholder text (DEVICE_NAME) represents the name of the cast receiver.">
Casting a tab to <ph name="DEVICE_NAME">$1<ex>Living Room TV</ex></ph>
</message>
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_ANOTHER_UNTITLED_TAB_NO_DEVICE_NAME_LABEL" desc="Text displayed on an infobar when another (non-current) untitled tab is being cast.">
Casting a tab
</message>
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_ANOTHER_TAB_LABEL" desc="Text displayed on an infobar when another (non-current) tab is being shacastedred.">
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_ANOTHER_TAB_LABEL" desc="Text displayed on an infobar when another (non-current) tab is being cast. The placeholder text (DEVICE_NAME) represents the name of the cast receiver.">
Casting <ph name="TAB_NAME">$1<ex>youtube.com</ex></ph> to <ph name="DEVICE_NAME">$2<ex>Living Room TV</ex></ph>
</message>
<message name="IDS_TAB_CASTING_INFOBAR_CASTING_ANOTHER_TAB_NO_DEVICE_NAME_LABEL" desc="Text displayed on an infobar when another (non-current) tab is being cast.">
Casting <ph name="TAB_NAME">$1<ex>youtube.com</ex></ph>
</message>
<message name="IDS_TAB_CASTING_INFOBAR_CAST_BUTTON" desc="Text displayed on the button to cast current tab.">
@ -5165,6 +5233,9 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_MANAGE_EXTENSIONS" desc="The text of the button in the extensions toolbar menu used to open the chrome://extensions page and manage all extensions (sentence case).">
Manage extensions
</message>
<message name="IDS_VIEW_WEB_PERMISSIONS" desc="The text for the button in the extension context menu used to open the chrome://settings/content/siteDetails?site=xxx page and view the site details for a specific extension (sentence case).">
View web permissions
</message>
<message name="IDS_EXTENSION_ACTION_INSPECT_POPUP" desc="The text for the right-click menu of page and browser actions which shows the popup and opens the developer tools (sentence case).">
Inspect popup
</message>
@ -5248,6 +5319,9 @@ are declared in tools/grit/grit_rule.gni.
<message name="IDS_MANAGE_EXTENSIONS" desc="The text for the button in the extensions toolbar menu used to open the chrome://extensions page and manage all extensions (title case).">
Manage Extensions
</message>
<message name="IDS_VIEW_WEB_PERMISSIONS" desc="The text for the button in the extension context menu used to open the chrome://settings/content/siteDetails?site=xxx page and view the site details for a specific extension (title case).">
View Web Permissions
</message>
<message name="IDS_EXTENSION_ACTION_INSPECT_POPUP" desc="The text for the right-click menu of page and browser actions which shows the popup and opens the developer tools (title case).">
Inspect Popup
</message>
@ -5691,6 +5765,18 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_EXTENSIONS_MENU_EXTENSIONS_TAB_DISCOVER_MORE_TITLE" desc="Text of the button in the installed extensions tab used to open the webstore page">
Discover more extensions
</message>
<message name="IDS_EXTENSIONS_MENU_SITE_SETTINGS_TOGGLE_ON_TOOLTIP" desc="Tooltip text for the site setting toggle button when is on.">
Extensions are allowed on this site
</message>
<message name="IDS_EXTENSIONS_MENU_SITE_SETTINGS_TOGGLE_OFF_TOOLTIP" desc="Tooltip text for the site setting toggle button when is off.'">
Extensions are blocked on this site
</message>
<message name="IDS_EXTENSIONS_MENU_SITE_SETTINGS_TOGGLE_ON_ACCESSIBLE_NAME" desc="Accessibility string for the site setting toggle button when is on.">
Select to block all extensions on this site
</message>
<message name="IDS_EXTENSIONS_MENU_SITE_SETTINGS_TOGGLE_OFF_ACCESSIBLE_NAME" desc="Accessibility string for the site setting toggle button when is off.'">
Select to allow extensions on this site
</message>
<message name="IDS_EXTENSIONS_MENU_REQUESTS_ACCESS_SECTION_TITLE" desc="Title of the requests access section that lists the extensions requesting site access">
Requests access
</message>
@ -5803,6 +5889,44 @@ Keep your key file in a safe place. You will need it to create new versions of y
Title bar is now showing
</message>
<!-- App Home WebUI strings. -->
<message name="IDS_APP_HOME_TITLE" desc="Title of the new App Home page">
Apps
</message>
<message name="IDS_APP_HOME_OPEN_IN_WINDOW" desc="Label of menu entry for toggling an app to open in window from App Home context menu">
Open in window
</message>
<message name="IDS_ACCNAME_APP_HOME_OPEN_IN_WINDOW_CHECKBOX" desc="Accessibility label for the Open in window checkbox for App Home">
Enable opening app in window
</message>
<message name="IDS_APP_HOME_LAUNCH_AT_STARTUP" desc="Label of menu entry for toggling an app to run on startup from App Home context menu">
Launch at startup
</message>
<message name="IDS_ACCNAME_APP_HOME_LAUNCH_AT_STARTUP_CHECKBOX" desc="Accessibility label for the Launch at startup checkbox for App Home">
Enable launching app at startup
</message>
<message name="IDS_APP_HOME_CREATE_SHORTCUT" desc="Menu entry label for creating a shortcut for an app from context menu on App Home">
Create shortcut
</message>
<message name="IDS_APP_HOME_INSTALL_LOCALLY" desc="Menu entry label for installing the app on this device from context menu on App Home">
Install on this device
</message>
<message name="IDS_APP_HOME_UNINSTALL_APP" desc="Menu entry label for uninstalling an app from context menu on App Home">
Uninstall
</message>
<message name="IDS_APP_HOME_APP_SETTINGS" desc="Menu entry label for navigation to App Settings page for an app from context menu on App Home">
App settings
</message>
<!-- End App Home WebUI strings. -->
<message name="IDS_WEB_APP_SETTINGS_TITLE" desc="Title of web app settings page">
App Settings
</message>
@ -6031,10 +6155,10 @@ Keep your key file in a safe place. You will need it to create new versions of y
Google Password Manager <ph name="SEPARATOR">•</ph> <ph name="ACCOUNT">$1<ex>user@gmail.com</ex></ph>
</message>
<message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_SIGNED_IN_MESSAGE_DESCRIPTION_V2" desc="The description of the Google Password Manager's save password prompt when the user is signed in.">
To your Google Account, for <ph name="ACCOUNT">$1<ex>user@gmail.com</ex></ph>
To your Google Account, <ph name="ACCOUNT">$1<ex>user@gmail.com</ex></ph>
</message>
<message name="IDS_PASSWORD_MANAGER_UPDATE_PASSWORD_SIGNED_IN_MESSAGE_DESCRIPTION_V2" desc="The description of the Google Password Manager's save password prompt when the user is signed in.">
In your Google Account, for <ph name="ACCOUNT">$1<ex>user@gmail.com</ex></ph>
In your Google Account, <ph name="ACCOUNT">$1<ex>user@gmail.com</ex></ph>
</message>
<message name="IDS_PASSWORD_MANAGER_SAVE_UPDATE_PASSWORD_SIGNED_OUT_MESSAGE_DESCRIPTION_V1" desc="The description of the Google Password Manager's save password prompt when the user is signed out and passwords are only stored locally.">
Only on this device
@ -6188,23 +6312,6 @@ Keep your key file in a safe place. You will need it to create new versions of y
Choose sites to clear
</message>
<!-- Experimental Lacros Infobar-->
<message name="IDS_EXPERIMENTAL_LACROS_WARNING_MESSAGE" desc="Message shown when user launches Lacros, an experimental feature.">
Experimental (alpha-quality) browser! Some features missing or incomplete. Report issues with: Help > "Report an issue...".
</message>
<message name="IDS_EXPERIMENTAL_LACROS_WARNING_MESSAGE_PRIMARY" desc="Addendum which is sometimes added to the initial warning message.">
The standard browser can be found by typing "Thorium" into Launcher.
</message>
<message name="IDS_EXPERIMENTAL_LACROS_WARNING_MESSAGE_MANAGED" desc="Addendum which is sometimes added to the initial warning message.">
For more information, contact your administrator.
</message>
<message name="IDS_EXPERIMENTAL_LACROS_WARNING_LEARN_MORE" desc="A section of text that the user can click on to learn more about Lacros.">
Learn More
</message>
<!-- Bad Flags Infobar-->
<message name="IDS_BAD_FLAGS_WARNING_MESSAGE" desc="Message shown when an unsupported command-line flag is used. [Keep it short so it fits in the infobar.]">
You are using an unsupported command-line flag: <ph name="BAD_FLAG">$1<ex>--no-sandbox</ex></ph>. Stability and security will suffer.
@ -6670,6 +6777,9 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_NTP_CUSTOMIZE_APPEARANCE_LABEL" desc="The label for the option to edit appearance in the Customize Thorium side panel.">
Appearance
</message>
<message name="IDS_NTP_CUSTOMIZE_THEMES_HEADER" desc="The header for the page that lists theme categories in the Customize Thorium side panel.">
Themes
</message>
<message name="IDS_NTP_CUSTOMIZE_MENU_BACKGROUND_LABEL" desc="The label for the backgrounds option in the customization menu on the New Tab Page.">
Background
</message>
@ -6688,18 +6798,33 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_NTP_CUSTOMIZE_NO_BACKGROUND_LABEL" desc="The label for the 'Classic Thorium' tile in the customization menu on the New Tab Page">
Classic Thorium
</message>
<message name="IDS_NTP_CUSTOMIZE_CHROME_COLORS_LABEL" desc="The label for the 'Thorium Colors' tile in the New Tab Page customize chrome side panel, which lists themes of colored classic chrome.">
Thorium Colors
</message>
<message name="IDS_NTP_CUSTOMIZE_CHROME_CHANGE_THEME_LABEL" desc="The label for the action button for changing Thorium theme in the New Tab Page customize chrome side panel.">
Change theme
</message>
<message name="IDS_NTP_CUSTOMIZE_CHROME_RESET_TO_CLASSIC_CHROME_LABEL" desc="The label for the button for resetting theme back to classic chrome in the New Tab Page customize chrome side panel.">
Reset to Classic Thorium
</message>
<message name="IDS_NTP_CUSTOMIZE_UPLOADED_IMAGE_LABEL" desc="The label for the 'Uploaded image' tile in the customization menu on the New Tab Page side panel.">
Uploaded image
</message>
<message name="IDS_NTP_CUSTOMIZE_UPLOAD_FROM_DEVICE_LABEL" desc="The label for the 'Upload from device' tile in the customization menu on the New Tab Page">
Upload from device
</message>
<message name="IDS_NTP_CUSTOMIZE_CHROME_CURRENT_THEME_LABEL" desc="The second line of the label for the button that opens a link to a third party theme.">
Current theme you have installed.
</message>
<message name="IDS_NTP_CUSTOMIZE_HIDE_SHORTCUTS_LABEL" desc="The label for the option to hide shortcuts in the customization menu on the New Tab Page">
Hide shortcuts
</message>
<message name="IDS_NTP_CUSTOMIZE_HIDE_SHORTCUTS_DESC" desc="The description for the option to hide shortcuts in the customization menu on the New Tab Page">
Don't show shortcuts on this page
</message>
<message name="IDS_NTP_CUSTOMIZE_SHOW_CARDS_LABEL" desc="The label for the option to show cards in the customization menu on the New Tab Page">
Show cards
</message>
<message name="IDS_NTP_CUSTOMIZE_SHOW_SHORTCUTS_LABEL" desc="The label for the option to show shortcuts in the customization menu on the New Tab Page">
Show shortcuts
</message>
@ -6742,6 +6867,9 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_NTP_CUSTOMIZE_DEFAULT_LABEL" desc="The label for the Default theme in the customization menu on the New Tab Page">
Default color
</message>
<message name="IDS_NTP_CUSTOMIZE_MAIN_COLOR_LABEL" desc="The label for the main color theme in the customization menu on the New Tab Page">
Color based on theme
</message>
<message name="IDS_NTP_COLORS_WARM_GREY" desc="A color option in the customization menu on the New Tab Page.">
Warm grey
</message>
@ -7226,9 +7354,6 @@ Keep your key file in a safe place. You will need it to create new versions of y
</message>
<!-- Side panel strings -->
<message name="IDS_SIDE_PANEL_TITLE" desc="Title of the Side Panel">
Side Panel
</message>
<message name="IDS_ACCNAME_SIDE_PANEL_RESIZE" is_accessibility_with_no_ui="true" desc="Screen reader announcement when the side panel resize handle is focused.">
Side Panel Resize Handle
</message>
@ -7291,6 +7416,42 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_BOOKMARK_FOLDER_CHILD_COUNT" desc="Text description for the number of children of a bookmark folder">
{NUM_BOOKMARKS, plural, =1 {1 bookmark} other {# bookmarks}}
</message>
<message name="IDS_BOOKMARKS_EDIT_MOVE_TO_ANOTHER_FOLDER" desc="Tooltip for the button in the bookmarks side panel bulk edit mode that allows the user to move the selected bookmarks to a different folder.">
Move to another folder
</message>
<message name="IDS_BOOKMARKS_EDIT_MORE" desc="Tooltip for the menu button in the bookmarks side panel bulk edit mode that shows more actions the user can take on selected bookmarks.">
More
</message>
<message name="IDS_BOOKMARKS_EDIT_MOVE_TO" desc="Title for the bookmarks side panel edit dialog when there are multiple selected bookmarks">
Move to…
</message>
<message name="IDS_BOOKMARKS_EDIT_NEW_FOLDER" desc="Label for the button to add a new folder in the bookmarks side panel edit dialog">
New Folder
</message>
<message name="IDS_BOOKMARKS_EDIT_CANCEL" desc="Label for the button to close the bookmarks side panel edit dialog">
Cancel
</message>
<message name="IDS_BOOKMARKS_EDIT_SAVE" desc="Label for the button to save changes from the bookmarks side panel edit dialog">
Save
</message>
<message name="IDS_BOOKMARK_DELETION_COUNT" desc="Text description for the number of deleted bookmarks">
{NUM_BOOKMARKS, plural, =1 {1 bookmark deleted} other {# bookmarks deleted}}
</message>
<message name="IDS_UNDO_BOOKMARK_DELETION" desc="Label for the bookmarks side panel undo button displayed after deleting one or more bookmarks">
Undo
</message>
<message name="IDS_BOOKMARKS_MOVE_TO_BOOKMARKS_BAR" desc="Label for the move to bookmarks bar folder menu option">
Move to Bookmarks Bar folder
</message>
<message name="IDS_BOOKMARKS_MOVE_TO_ALL_BOOKMARKS" desc="Label for the move to all bookmarks menu option">
Move to All Bookmarks
</message>
<message name="IDS_BOOKMARKS_RENAME" desc="Label for the rename bookmarks menu option">
Rename
</message>
<message name="IDS_BOOKMARKS_URL_FOLDER_DESCRIPTION" desc="Description for a bookmark that includes its URL and parent folder">
<ph name="URL">$1<ex>www.google.com</ex></ph> - <ph name="FOLDER">$2<ex>Bookmarks Bar</ex></ph>
</message>
<!-- Read Anything strings -->
<!-- TODO(crbug.com/1266555): Add final strings and make them translateable. -->
@ -8541,8 +8702,8 @@ Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google
<message name="IDS_PICTURE_IN_PICTURE_RESIZE_HANDLE_TEXT" desc="Text label of the resize handle. The button appears when the user hovers over the Picture-in-Picture window.">
Resize
</message>
<message name="IDS_PICTURE_IN_PICTURE_PLAY_PAUSE_CONTROL_ACCESSIBLE_TEXT" desc="Accessible text label used for the controls button in the Picture-in-Picture window. The button toggles between play and pause controls.">
Toggle video to play or pause
<message name="IDS_PICTURE_IN_PICTURE_PLAY_PAUSE_CONTROL_ACCESSIBLE_TEXT" is_accessibility_with_no_ui="true" desc="Accessible text label used for the controls button in the Picture-in-Picture window. The button toggles between play and pause controls.">
Play or pause video
</message>
<message name="IDS_PICTURE_IN_PICTURE_NEXT_TRACK_CONTROL_ACCESSIBLE_TEXT" desc="Accessible text label used for the controls button in the Picture-in-Picture window. The button invokes next track action.">
Next track
@ -9463,10 +9624,6 @@ Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google
desc="Button text for the Screenshot dialog edit button.">
Edit
</message>
<message name="IDS_BROWSER_SHARING_SCREENSHOT_DIALOG_SEARCH_IMAGE_BUTTON_LABEL"
desc="Button text for the Screenshot dialog search image button.">
Search with Google
</message>
<message name="IDS_BROWSER_SHARING_SCREENSHOT_DIALOG_SHARE_BUTTON_LABEL"
desc="Button text for the Screenshot dialog share button.">
Share
@ -10265,9 +10422,16 @@ Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google
<message name="IDS_SYNC_CONFIRMATION_SETTINGS_INFO" desc="Information about customizing Sync settings in the sync confirmation dialog when Unity is enabled">
You can always choose what to sync in settings.
</message>
<message name="IDS_SYNC_CONFIRMATION_CONFIRM_BUTTON_LABEL" desc="Label of the confirmation button in the sync confirmation dialog of the tab modal signin flow">
Yes, I'm in
</message>
<if expr="not use_titlecase">
<message name="IDS_SYNC_CONFIRMATION_CONFIRM_BUTTON_LABEL" desc="Label of the confirmation button in the sync confirmation dialog of the tab modal signin flow">
Yes, I'm in
</message>
</if>
<if expr="use_titlecase">
<message name="IDS_SYNC_CONFIRMATION_CONFIRM_BUTTON_LABEL" desc="In Title Case: Label of the confirmation button in the sync confirmation dialog of the tab modal signin flow">
Yes, I'm In
</message>
</if>
<message name="IDS_SYNC_CONFIRMATION_SETTINGS_BUTTON_LABEL" desc="Label of the button in the sync confirmation dialog of the tab modal signin flow to open settings">
Settings
</message>
@ -10285,45 +10449,53 @@ Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google
</if>
<!-- Tangible Sync version of the Sync Confirmation page -->
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_TITLE" desc="Title of the tangible sync confirmation page">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_TITLE" desc="This string appears as a heading on a modal window that asks users if they want to turn on sync. 'Sync' is short for 'synchronization'. The tone should be informative and inviting.">
Turn on sync
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_TITLE" desc="Title in the information about sync on the tangible sync confirmation page">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_TITLE" desc="This string appears as a subheading on a screen, and it asks users if they want to turn on sync. This string explains to users that they can back up their Thorium data and use it on all their computers, phones, and other devices; a user's Thorium data includes their bookmarks, passwords, history, settings, and more. If there is no natural translation for the word 'stuff' in your language, the word can be translated as 'data' or similar. Maintain the level of formality that your language generally uses in the Thorium app. The tone should be informative and inviting.">
Back up your stuff and use it on any device
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_TITLE_SIGNIN_INTERCEPT" desc="Title in the information about sync on the tangible sync confirmation page during the Sign-in Intercept flow">
<if expr="chromeos_lacros">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_TITLE_LACROS" desc="This string appears as a subheading on a screen, and it asks users if they want to turn on sync. This string explains to users that they can back up their Thorium browser data and use it on all their computers, phones, and other devices; a user's Thorium data includes their bookmarks, passwords, history, settings, and more. If there is no natural translation for the word 'stuff' in your language, the word can be translated as 'data' or similar. Maintain the level of formality that your language generally uses in the Thorium app. The tone should be informative and inviting. Please keep translations consistent with TC 7137558043921529662 (Windows, Mac, Linux) and TC 3833960754549650885 (iOS).">
Back up your browser stuff and use it on any device
</message>
</if>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_TITLE_SIGNIN_INTERCEPT_V2" desc="This string appears as a subheading on a pop-up dialog, and it asks users if they want to turn on sync. This string explains to users that they can back up their Thorium data and use it on all their computers, phones, and other devices; a user's Thorium data includes their bookmarks, passwords, history, settings, and more. If there is no natural translation for the word 'stuff' in your language, the word can be translated as 'data' or similar. Maintain the level of formality that your language generally uses in the Thorium app. The tone should be informative and inviting.">
Turn on sync to back up your stuff and use it on any device
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_BOOKMARKS" desc="This string appears as an item in a list of sync data types on a page that asks users if they want to turn on sync. Translate 'bookmarks' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=59c31bb. Used in the tangible sync confirmation page.">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_BOOKMARKS" desc="This string appears as an item in a list of sync data types on a screen that asks users if they want to turn on sync. Translate 'bookmarks' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=59c31bb. Used in the tangible sync confirmation page.">
Bookmarks
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_AUTOFILL" desc="This string appears as an item in a list of sync data types on a page that asks users if they want to turn on sync. Translate 'autofill' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=77d3626. Used in the tangible sync confirmation page.">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_READING_LIST" desc="This string appears as an item in a list of sync data types on a screen that asks users if they want to turn on sync. Translate 'reading list' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=4de6a318. Used in the tangible sync confirmation page.">
Reading List
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_AUTOFILL" desc="This string appears as an item in a list of sync data types on a screen that asks users if they want to turn on sync. Translate 'autofill' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=77d3626. Used in the tangible sync confirmation page.">
Autofill
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_EXTENSIONS" desc="This string appears as an item in a list of sync data types on a page that asks users if they want to turn on sync. Translate 'extensions' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=62f9351. Used in the tangible sync confirmation page.">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_EXTENSIONS" desc="This string appears as an item in a list of sync data types on a screen that asks users if they want to turn on sync. Translate 'extensions' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=62f9351. Used in the tangible sync confirmation page.">
Extensions
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_HISTORY_AND_MORE" desc="This string appears as an item in a list of sync data types on a page that asks users if they want to turn on sync. Translate 'history' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=59c3162. Translate 'and more' so that it conveys that there are additional similar items that are not listed. Used in the tangible sync confirmation page.">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_HISTORY_AND_MORE" desc="This string appears as an item in a list of sync data types on a screen that asks users if they want to turn on sync. Translate 'history' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=59c3162. Translate 'and more' so that it conveys that there are additional similar items that are not listed. Used in the tangible sync confirmation page.">
History and more
</message>
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_DESC" desc="Description in the information about sync and information about customizing Sync settings on the tangible sync confirmation page">
<message name="IDS_SYNC_CONFIRMATION_TANGIBLE_SYNC_INFO_DESC" desc="This string appears in the footer on a screen that asks users if they want to turn on sync. This string informs the user that if they choose to sync, then their history may be used to personalize Search and other services. Translate 'history' according to https://localization.google.com/glossary/termset?gid=27517723&amp;tsid=59c3162">
You can always choose what to sync in settings. Google may personalize Search and other services based on your history.
</message>
<!-- Sync Confirmation section of the Signin Intercept first run experience flow -->
<message name="IDS_SYNC_CONFIRMATION_WELCOME_TITLE_SIGNIN_INTERCEPT" desc="Title of the sync confirmation dialog in the Signin Intercept flow, after the user creates a new profile through this flow.">
<message name="IDS_SYNC_CONFIRMATION_WELCOME_TITLE_SIGNIN_INTERCEPT" desc="This string appears as a heading on a pop-up dialog that shows up after users create a new profile. It welcomes users. The tone should be friendly and inviting.">
Welcome, <ph name="USERNAME">$1<ex>Bob</ex></ph>
</message>
<message name="IDS_SYNC_CONFIRMATION_SYNC_INFO_SIGNIN_INTERCEPT" desc="Information about sync on the sync confirmation dialog in the Signin Intercept flow. The second string is an exact copy of IDS_SYNC_CONFIRMATION_SYNC_INFO_DESC with a period at the end.">
Turn on sync to get your bookmarks, passwords, history, and more on this device and anywhere else you're syncing. Google may use your history to personalize Search and other Google services.
</message>
<if expr="not use_titlecase">
<message name="IDS_SYNC_CONFIRMATION_TURN_ON_SYNC_BUTTON_LABEL" desc="Label of the confirmation button in the sync confirmation dialog of the Signin Intercept flow">
<message name="IDS_SYNC_CONFIRMATION_TURN_ON_SYNC_BUTTON_LABEL" desc="This string appears as a button on a dialog that asks users if they want to turn on sync. When the user taps this button, they are opting in to the sync feature. 'Sync' is short for 'synchronization'.">
Turn on sync
</message>
</if>
<if expr="use_titlecase">
<message name="IDS_SYNC_CONFIRMATION_TURN_ON_SYNC_BUTTON_LABEL" desc="In Title Case: Label of the confirmation button in the sync confirmation dialog of the Signin Intercept flow">
<message name="IDS_SYNC_CONFIRMATION_TURN_ON_SYNC_BUTTON_LABEL" desc="In Title Case: This string appears as a button on a dialog that asks users if they want to turn on sync. When the user taps this button, they are opting in to the sync feature. 'Sync' is short for 'synchronization'.">
Turn On Sync
</message>
</if>
@ -10528,9 +10700,6 @@ Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google
<message name="IDS_SAVE_PAGE_DESC_COMPLETE" desc="In the Save Page dialog, the description of saving both the HTML and all shown resources.">
Webpage, Complete
</message>
<message name="IDS_SAVE_PAGE_DESC_WEB_BUNDLE_FILE" desc="In the Save Page dialog, the description of saving both the HTML and all shown resources into a single Web Bundle file.">
Webpage, Single File (Web Bundle)
</message>
<!-- General app failure messages -->
<message name="IDS_PROFILE_ERROR_DIALOG_TITLE" desc="The title of the dialog shown when there's an error page">
@ -11626,10 +11795,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_MIC_TURNED_OFF_IN_MACOS" desc="Title for the media status bubble that is used when a site requests microphone access, but microphone is blocked on an OS level in macOS.">
Microphone is turned off in Mac System Preferences
</message>
<message name="IDS_OPEN_PREFERENCES_LINK" desc="Title for the button that takes the user to the Security and Privacy settings in macOS, in order for the user to be able to modify the ability to access camera and microphone for Thorium. System Preferences was renamed to System Settings in macOS 13 so this string shouldn't be used past macOS 12.">
Open Preferences
</message>
<message name="IDS_OPEN_SETTINGS_LINK" desc="Title for the button that takes the user to System Settings in macOS >= 13. The translation for this string should match the translation of the System Settings app title in the macOS target locale. You can find this by selecting the locale from https://support.apple.com/guide/mac-help/mh15217/mac/localeselector. The title of the next page after that includes the desired translation. Note that, for size reasons, the English string omits 'System' and the same contraction may be suitable in other languages.">
<message name="IDS_OPEN_SETTINGS_LINK" desc="Title for the button that takes the user to the Security and Privacy settings in macOS, in order for the user to be able to modify the ability to access camera and microphone for Thorium. The translation for this string should match the translation of the System Settings app title in the macOS target locale. You can find this by selecting the locale from https://support.apple.com/guide/mac-help/mh15217/mac/localeselector. The title of the next page after that includes the desired translation. Note that, for size reasons, the English string omits 'System' and the same contraction may be suitable in other languages.">
Open Settings
</message>
<message name="IDS_CAMERA" desc="Description text for the camera.">
@ -12406,6 +12572,9 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_DEVICE_LOG_TYPE_GEOLOCATION" desc="Checkbox to enable showing events of type Geolocation">
Geolocation
</message>
<message name="IDS_DEVICE_LOG_TYPE_EXTENSIONS" desc="Checkbox to enable showing events reported by extensions">
Extensions
</message>
<message name="IDS_DEVICE_LOG_FILEINFO" desc="File info checkbox in device event log">
File Info
</message>
@ -12791,7 +12960,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
</message>
<!-- Thorium for Testing infobar main text -->
<message name="IDS_CHROME_FOR_TESTING_DISCLAIMER" desc="An infobar prompt shown whenever Thorium for Testing is launched.">
<message name="IDS_CHROME_FOR_TESTING_DISCLAIMER" desc="An infobar prompt shown whenever Thorium for Testing is launched. In Title Case: 'Thorium for Testing'.">
Thorium for Testing v<ph name="BROWSER_VERSION">
$1<ex>109.0.5369.0</ex>
</ph> is only for automated testing. For regular browsing, use a standard version of Thorium that updates automatically.
@ -13029,12 +13198,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_WEBAUTHN_CONTINUE" desc="Label of a button to continue in the dialog shown when using a security key.">
Continue
</message>
<message name="IDS_WEBAUTHN_TRANSPORT_SELECTION_TITLE" desc="Title of the dialog instructing the user to choose how they want to connect their security key with their computer, e.g. USB or Bluetooth.">
Verify your identity with <ph name="APP_NAME">$1<ex>google.com</ex></ph>
</message>
<message name="IDS_WEBAUTHN_TRANSPORT_SELECTION_DESCRIPTION" desc="Description in the dialog instructing the user to choose how they want to connect their security key with their computer, e.g. USB or Bluetooth.">
Pick an option
</message>
<message name="IDS_WEBAUTHN_TRANSPORT_USB" desc="Menu item text. The user selects this to use a security key (an external physical device for user authentication) plugged in to the USB port of the computer.">
USB security key
</message>
@ -13059,9 +13222,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_WEBAUTHN_ERROR_WRONG_KEY_TITLE" desc="Title of the dialog informing the user that they are trying to register a security key (an external physical device for user authentication) that they have already registered with the given web site before or they are trying to sign in to a given web site with a key they have not previously registered on that site.">
Try a different security key
</message>
<message name="IDS_WEBAUTHN_ERROR_WRONG_KEY_REGISTER_DESCRIPTION" desc="Description in the dialog informing the user that they are trying to register a security key (an external physical device for user authentication) that they have already registered with the given web site before.">
You already registered this security key. You don't have to register it again.
</message>
<message name="IDS_WEBAUTHN_ERROR_WRONG_DEVICE_TITLE" desc="Title of the dialog informing the user that they are trying to register a passkey on a device that they have already registered with the given web site before.">
Try a different device
</message>
@ -13117,9 +13277,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
</message>
</if>
<message name="IDS_WEBAUTHN_TRANSPORT_POPUP_LABEL" desc="Menu item text. The user selects this to verify their identity on a web site (i.e. sign in) using a different hardware-based authentication mechanism from what they have selected previously.">
Choose another option
</message>
<message name="IDS_WEBAUTHN_TRANSPORT_POPUP_USB" desc="Menu item text. The user selects this to verify their identity on a web site (i.e. sign in) using a security key (an external physical device for user authentication) plugged in to the USB port of the computer.">
Verify via USB
</message>
@ -13141,9 +13298,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_WEBAUTHN_CABLE_ACTIVATE_TITLE_DEVICE" desc="Title of the dialog shown when the user tries to sign-in using a phone as a security key.">
Check your device
</message>
<message name="IDS_WEBAUTHN_CABLE_ACTIVATE_TITLE_ALT" desc="Title of the dialog shown when the user tries to sign-in using a phone as a security key. The word 'unlock' refers to using a PIN, pattern, or biometric to unlock the phone.">
Unlock your phone
</message>
<message name="IDS_WEBAUTHN_CABLE_ACTIVATE_DESCRIPTION" desc="Contents of the dialog shown when the user tries to sign-in using a phone as a security key.">
A notification was sent to your phone to confirm it's you.
</message>
@ -13151,15 +13305,9 @@ Please help our engineers fix this problem. Tell us what happened right before y
A notification was sent to <ph name="DEVICE_NAME">$1<ex>Ted's Pixel 6 Pro</ex></ph>
</message>
<message name="IDS_WEBAUTHN_CABLEV2_SERVERLINK_DESCRIPTION" desc="Contents of the dialog shown when the user tries to sign-in using a phone as a security key.">
<ph name="WEBSITE"><ex>accounts.google.com</ex>$1</ph> sent a notification to your phone. To confirm it's you, follow the steps there.
</message>
<message name="IDS_WEBAUTHN_CABLEV2_SERVERLINK_TROUBLE" desc="This message is shown as a link below IDS_WEBAUTHN_CABLEV2_SERVERLINK_DESCRIPTION. The 'it' referenced here is the notification mentioned in that message.">
Didn't get it?
</message>
<message name="IDS_WEBAUTHN_CABLEV2_SERVERLINK_TROUBLE_ALT" desc="This message is shown as a link below IDS_WEBAUTHN_CABLEV2_SERVERLINK_DESCRIPTION. The translation of this string should match TC 8961468651054969074.">
Try another way
</message>
<message name="IDS_WEBAUTHN_CABLEV2_AOA_TITLE" desc="Contents of the dialog shown when the user tries to sign-in using a phone as a security key. The 'cable' is a physical USB cable.">
Connect your phone with a cable
</message>
@ -13169,12 +13317,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_WEBAUTHN_CABLEV2_AOA_REQUEST_DESCRIPTION" desc="Potentially displayed in a permissions dialog on Android to describe the type of request that a computer, that is connected over USB, is making. In this context the request from the computer is to use the Android device as a security key. A 'security key' is typically a physical USB token used for authentication (e.g. a gNubby) but in this case the phone is acting as one. The translation of 'security key' should match the phrase used in TC IDs such as 1685482178220389035 and 7775033610159191691">
Security key request
</message>
<message name="IDS_WEBAUTHN_CABLEV2_2ND_FACTOR_DESCRIPTION" desc="The contents of a dialog shown when the user tries to sign-in using a phone as a security key, or tries to register their phone as a security key for a future sign-in. A security key is traditionally a small USB device that is touched to confirm a sign-in (e.g. a gNubby) and, in this context, the phone is replacing the need for a separate device. The placeholder for the notification title will be replaced with the string that will appear in the notification on the phone. These messages are 4300134428943426639 and 581442427601260656.">
<ph name="WEBSITE"><ex>accounts.google.com</ex>$1</ph> sent a notification to your phone. To confirm it's you, tap the “<ph name="NOTIFICATIONTITLE"><ex>Verify with this phone</ex>$2</ph>” notification and follow the steps.
</message>
<message name="IDS_WEBAUTHN_CABLEV2_ADD_PHONE" desc="The label on a button-like element in a list of options. Clicking this causes Thorium to show a QR code that the user can scan with their phone to use that phone for signing into a website. Here 'phone' is used as a short hand for smartphone.">
Use phone with a QR code
</message>
<message name="IDS_WEBAUTHN_PASSKEY_DIFFERENT_DEVICE_LABEL" desc="The label on a button-like element in a list of options. Clicking this causes Thorium to show a QR code that the user can scan with their phone to use that phone for signing into a website. Here 'phone' is used as a short hand for smartphone.">
A different device
</message>
@ -13269,9 +13411,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
</message>
<!-- WebAuthn account selection for resident keys -->
<message name="IDS_WEBAUTHN_SELECT_ACCOUNT" desc="The title on a dialog where the user is expected to select an account from a list. For example, the list may include several identities, e.g. joe@gmail.com, mary@gmail.com, and the user has to select one to login as.">
Select an account to sign in
</message>
<message name="IDS_WEBAUTHN_UNKNOWN_ACCOUNT" desc="Label shown to the user on the list of account names if the account stored does not have a name associated to it.">
Unknown account
</message>
@ -13411,7 +13550,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
</message>
</if>
<!-- WebAuthn strings that are used on both Android and Desktop -->
<message name="IDS_CABLEV2_MAKE_CREDENTIAL_NOTIFICATION_TITLE" desc="The title of a notification shown on Android that informs the user that a website wishes to register their phone for signing into that website." formatter_data="android_java">
Verify with this phone
</message>
@ -13682,47 +13820,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
OK
</message>
<!-- Enterprise file system connector service providers' display names -->
<message name="IDS_FILE_SYSTEM_CONNECTOR_BOX" meaning="box.com" desc="Display name for Box.">
Box
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_GOOGLE_DRIVE" desc="Display name for Google Drive.">
Google Drive
</message>
<!-- Enterprise file system connector sign in from settings page confirmation dialog -->
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_CONFIRM_TITLE" desc="Title shown in modal shown upon clicking sign in for downloads connection on settings page, before sign in dialog">
Storing <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> Authentication Token
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_CONFIRM_MESSAGE" desc="Meesage shown in above-mentioned modal">
Upon signing in, an unique authentication token will be stored and used for all future eligible downloads.
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_CONFIRM_CANCEL_BUTTON" desc="Text displayed for cancel button in above-mentioned modal">
Cancel
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_CONFIRM_ACCEPT_BUTTON" desc="Text displayed for accept button in above-mentioned modal">
Continue
</message>
<!-- Enterprise file system connector sign in on first download confirmation dialog -->
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_REQUIRED_TITLE" desc="Title shown in modal shown upon first eligible download to be uploaded, before sign in dialog">
Sign into <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> to complete download
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_REQUIRED_MESSAGE" desc="Meesage shown in above-mentioned modal">
Your organization requires eligible downloads to be saved to <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph>. Upon signing in, an unique authentication token will be stored and used for all future eligible downloads.
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_REQUIRED_CANCEL_BUTTON" desc="Text displayed for cancel button in above-mentioned modal">
Cancel download
</message>
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_REQUIRED_ACCEPT_BUTTON" desc="Text displayed for accept button in above-mentioned modal">
Sign in
</message>
<!-- Enterprise file system connector sign in dialog -->
<message name="IDS_FILE_SYSTEM_CONNECTOR_SIGNIN_DIALOG_TITLE" desc="Title shown in dialog when prompting user to sign in to link a web drive account.">
Link <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> account for Downloads
</message>
<!-- App uninstall prompt title -->
<message name="IDS_PROMPT_APP_UNINSTALL_TITLE" desc="Title text for uninstalling an app.">
Uninstall "<ph name="APP_NAME">$1<ex>Gmail Checker</ex></ph>"?
@ -13954,9 +14051,18 @@ Please help our engineers fix this problem. Tell us what happened right before y
</if>
<!-- FedCM Account Selection strings -->
<message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_EXPLICIT" desc="Header for sign in sheet. Sheet is shown to prompt user for sign in consent.">
<message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_EXPLICIT_SIGN_IN" desc="Header for sign-in sheet. Sheet is shown to prompt the user to sign-in to a website using an account from an identity provider.">
Sign in to <ph name="SITE_ETLD_PLUS_ONE">$1<ex>rp.example</ex></ph> with <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE">$2<ex>idp.example</ex></ph>
</message>
<message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_EXPLICIT_SIGN_UP" desc="Header for sign-up sheet. Sheet is shown to prompt the user to link their identity on a website with their identity from an identity provider.">
Sign up to <ph name="SITE_ETLD_PLUS_ONE">$1<ex>rp.example</ex></ph> with <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE">$2<ex>idp.example</ex></ph>
</message>
<message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_EXPLICIT_USE" desc="Header for use sheet. Sheet is shown to prompt user to use a website using an account from an identity provider.">
Use <ph name="SITE_ETLD_PLUS_ONE">$1<ex>rp.example</ex></ph> with <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE">$2<ex>idp.example</ex></ph>
</message>
<message name="IDS_ACCOUNT_SELECTION_SHEET_TITLE_EXPLICIT_CONTINUE" desc="Header for continue-to sheet. Sheet is shown to prompt user to continue using their identity from an identity provider on a website.">
Continue to <ph name="SITE_ETLD_PLUS_ONE">$1<ex>rp.example</ex></ph> with <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE">$2<ex>idp.example</ex></ph>
</message>
<message name="IDS_ACCOUNT_SELECTION_CONTINUE" desc="Title of the button that continues filling with the only available set of credentials.">
Continue as <ph name="NAME">$1<ex>Albus (or Albus Dumbledore)</ex></ph>
</message>
@ -13981,6 +14087,9 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_VERIFY_SHEET_TITLE" desc="Header shown to the user while signing in happens.">
Verifying…
</message>
<message name="IDS_VERIFY_SHEET_TITLE_AUTO_SIGNIN" desc="Header for auto sign-in sheet. Sheet is shown to notify the user that they are signing in to a website using an account from an identity provider." translateable="false">
Signing in to <ph name="SITE_ETLD_PLUS_ONE">$1<ex>rp.example</ex></ph> with <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE">$2<ex>idp.example</ex></ph>
</message>
<!-- Input overlay strings -->
<if expr="chromeos_ash">
@ -14135,157 +14244,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
Settings
</message>
<!-- Privacy Sandbox Dialog M1 strings -->
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_TITLE" translateable="false" desc="Title of privacy sandbox consent dialog">
Lorem ipsum Consent
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_DESCRIPTION_1" translateable="false" desc="First part of description in privacy sandbox consent dialog">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pretium pulvinar metus non mollis. Quisque placerat eget nisl sit amet facilisis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_DESCRIPTION_2" translateable="false" desc="Second part of description in privacy sandbox consent dialog">
Nulla in tortor a ligula scelerisque laoreet. Sed sem velit, varius non purus vitae, imperdiet porttitor elit. Integer et libero id metus egestas consequat non a ipsum.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_DESCRIPTION_3" translateable="false" desc="Third part of description in privacy sandbox consent dialog">
Vestibulum pretium placerat justo vel suscipit. Quisque urna arcu, elementum ut venenatis ornare, consequat ac turpis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_LEARN_MORE_EXPAND_LABEL" translateable="false" desc="Learn more expand label in privacy sandbox consent dialog">
Vestibulum orci risus, consectetur
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_DESCRIPTION_4" translateable="false" desc="Forth part of description in privacy sandbox consent dialog">
Vestibulum pretium placerat justo vel suscipit. Quisque urna arcu, elementum ut venenatis ornare, consequat ac turpis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_SAVING_LABEL" translateable="false" desc="Saving state label in privacy sandbox consent dialog">
Consectetur
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_ACCEPT_BUTTON" translateable="false" desc="Accept button label in privacy sandbox consent dialog">
Quisque
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_DECLINE_BUTTON" translateable="false" desc="Decline button label in privacy sandbox consent dialog">
Lorem
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_LEARN_MORE_HEADING" translateable="false" desc="Learn more heading in privacy sandbox consent dialog">
Esed purus vestibulum velit convalli
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_LEARN_MORE_BULLET_1" translateable="false" desc="Learn more bullet point 1 in privacy sandbox consent dialog">
<ph name="BEGIN_BOLD">&lt;b&gt;</ph>Nulla in tortor: <ph name="END_BOLD">&lt;/b&gt;</ph> a ligula scelerisque laoreet. Sed sem velit, varius non purus vitae, imperdiet porttitor elit.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_LEARN_MORE_BULLET_2" translateable="false" desc="Learn more bullet point 2 in privacy sandbox consent dialog">
<ph name="BEGIN_BOLD">&lt;b&gt;</ph>Consectetur adipiscing elit:<ph name="END_BOLD">&lt;/b&gt;</ph> Duis pretium pulvinar metus non mollis
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_LEARN_MORE_BULLET_3" translateable="false" desc="Learn more bullet point 3 in privacy sandbox consent dialog">
<ph name="BEGIN_BOLD">&lt;b&gt;</ph>Sed purus vestibulum:<ph name="END_BOLD">&lt;/b&gt;</ph> velit convallis suscipit. Aenean aliquam ut velit eget dapibus. Vestibulum orci risus, consectetur non odio vulputate, mattis dignissim purus. Cras id tempor mi.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_LEARN_MORE_LINK" translateable="false" desc="Learn more link in privacy sandbox consent dialog">
Esed purus vestibulum velit convalli
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_CONSENT_BANNER_IMAGE_A11Y_DESCRIPTION" translateable="false" desc="A11y description for the banner image in privacy sandbox consent dialog">
Sed ullamcorper, ligula ac tempus venenatis
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_TITLE" translateable="false" desc="Title of privacy sandbox notice EEA dialog">
Lorem ipsum Notice EEA
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_DESCRIPTION_1" translateable="false" desc="First part of description in privacy sandbox notice EEA dialog">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pretium pulvinar metus non mollis. Quisque placerat eget nisl sit amet facilisis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_BULLET_1" translateable="false" desc="First bullet point in the description in privacy sandbox notice EEA dialog">
Nulla in tortor: a ligula scelerisque laoreet. Sed sem velit, varius non purus vitae, imperdiet porttitor elit.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_BULLET_2" translateable="false" desc="Second bullet point in the description in privacy sandbox notice EEA dialog">
Sed purus vestibulum: velit convallis suscipit. Aenean aliquam ut velit eget dapibus. Vestibulum orci risus, consectetur non odio vulputate, mattis dignissim purus. Cras id tempor mi.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_EXPAND_LABEL" translateable="false" desc="Learn more expand label in privacy sandbox notice EEA dialog">
Vestibulum orci risus, consectetur
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_DESCRIPTION_2" translateable="false" desc="Second part of description in privacy sandbox notice EEA dialog">
Consectetur adipiscing elit duis pretium pulvinar metus non mollis
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_ACK_BUTTON" translateable="false" desc="Acknowledge button label in privacy sandbox notice EEA dialog">
Sed
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_SETTINGS_BUTTON" translateable="false" desc="Open settings button label in privacy sandbox notice EEA dialog">
Cras id
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_HEADING_1" translateable="false" desc="Learn more first heading in privacy sandbox notice EEA dialog">
Esed purus vestibulum velit convalli
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_DESCRIPTION" translateable="false" desc="Learn more description in privacy sandbox notice EEA dialog">
Nulla in tortor a ligula scelerisque laoreet. Sed sem velit, varius non purus vitae, imperdiet porttitor elit. Integer et libero id metus egestas consequat non a ipsum.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_HEADING_2" translateable="false" desc="Learn more second heading in privacy sandbox notice EEA dialog">
Proin sed purus vestibulum velit velit eget dapibus.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_BULLET_1" translateable="false" desc="Learn more bullet point 1 in privacy sandbox notice EEA dialog">
<ph name="BEGIN_BOLD">&lt;b&gt;</ph>Nulla in tortor:<ph name="END_BOLD">&lt;/b&gt;</ph> a ligula scelerisque laoreet. Sed sem velit, varius non purus vitae, imperdiet porttitor elit.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_BULLET_2" translateable="false" desc="Learn more bullet point 2 in privacy sandbox notice EEA dialog">
<ph name="BEGIN_BOLD">&lt;b&gt;</ph>Consectetur adipiscing elit:<ph name="END_BOLD">&lt;/b&gt;</ph> Duis pretium pulvinar metus non mollis
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_EEA_LEARN_MORE_BULLET_3" translateable="false" desc="Learn more bullet point 3 in privacy sandbox notice EEA dialog">
<ph name="BEGIN_BOLD">&lt;b&gt;</ph>Sed purus vestibulum:<ph name="END_BOLD">&lt;/b&gt;</ph> velit convallis suscipit. Aenean aliquam ut velit eget dapibus. Vestibulum orci risus, consectetur non odio vulputate, mattis dignissim purus. Cras id tempor mi.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_TITLE" translateable="false" desc="Title of privacy sandbox notice ROW dialog">
Lorem ipsum Notice ROW
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_DESCRIPTION_1" translateable="false" desc="First part of description in privacy sandbox notice ROW dialog">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pretium pulvinar metus non mollis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_DESCRIPTION_2" translateable="false" desc="Second part of description in privacy sandbox notice ROW dialog">
Nulla in tortor a ligula scelerisque laoreet. Sed sem velit, varius non purus vitae, imperdiet porttitor elit. Integer et libero id metus egestas consequat non a ipsum. Quisque placerat eget nisl sit amet facilisis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_DESCRIPTION_3" translateable="false" desc="Third part of description in privacy sandbox notice ROW dialog">
Vestibulum pretium placerat justo vel suscipit. Quisque urna arcu, elementum ut venenatis ornare, consequat ac turpis. Vestibulum orci risus, consectetur non odio vulputate, mattis dignissim purus. Cras id tempor mi.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_DESCRIPTION_4" translateable="false" desc="Fourth part of description in privacy sandbox notice ROW dialog">
Proin sed purus vestibulum velit convallis suscipit eget dapibus.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_ACK_BUTTON" translateable="false" desc="Acknowledge button label in privacy sandbox notice EEA dialog">
Sed
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_SETTINGS_BUTTON" translateable="false" desc="Open settings button label in privacy sandbox notice EEA dialog">
Cras id
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_EXPAND_LABEL" translateable="false" desc="Learn more expand label in privacy sandbox notice ROW dialog">
Vestibulum orci risus consectetur
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_HEADING_1" translateable="false" desc="Learn more first heading in privacy sandbox notice ROW dialog">
Esed purus vestibulum velit convalli
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_DESCRIPTION_1" translateable="false" desc="First part of learn more description in privacy sandbox notice ROW dialog">
Etiam dictum sem et neque molestie lobortis. Morbi quam tellus, tincidunt eget dapibus ac, lobortis et lacus. Integer nec egestas elit. Nulla venenatis facilisis dui eget suscipit.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_HEADING_2" translateable="false" desc="Learn more second heading in privacy sandbox notice ROW dialog">
Class aptent taciti sociosqu ad
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_DESCRIPTION_2" translateable="false" desc="Second part of learn more description in privacy sandbox notice ROW dialog">
Vestibulum pretium placerat justo vel suscipit. Quisque urna arcu.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_BULLET_1" translateable="false" desc="Learn more bullet point 1 in privacy sandbox notice ROW dialog">
Sed elementum tellus condimentum quam vestibulum lacinia. Ut eu lobortis massa, venenatis sodales lacus. Nulla elementum magna et tortor efficitur, at volutpat metus varius.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_BULLET_2" translateable="false" desc="Learn more bullet point 2 in privacy sandbox notice ROW dialog">
Duis tempor nulla nisi, ac bibendum lorem tempus sit amet. Proin non blandit risus. Maecenas facilisis enim nec tristique tristique. Eelementum ut venenatis ornare, consequat ac turpis. Vestibulum orci risus, consectetur non odio vulputate, mattis dignissim purus. Cras id tempor mi.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_DESCRIPTION_3" translateable="false" desc="Third part of learn more description in privacy sandbox notice ROW dialog">
Etiam hendrerit turpis nibh, ac maximus lectus placerat at. Vivamus ligula quam, posuere luctus felis eu, dictum egestas arcu. per conubia nostra, per inceptos himenaeos. Cras ut metus vel est molestie finibus nec ut orci.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_DESCRIPTION_4" translateable="false" desc="Fourth part of learn more description in privacy sandbox notice ROW dialog">
Aliquam euismod scelerisque metus, in aliquet est vehicula ut. Curabitur sit amet ligula quis ante maximus gravida non id magna. Pellentesque interdum venenatis leo, at ultrices felis mollis nec. Integer vulputate velit eget mauris lacinia, ut ullamcorper mauris vehicula.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_HEADING_3" translateable="false" desc="Learn more third heading in privacy sandbox notice ROW dialog">
Orci varius natoque penatibus et
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_DESCRIPTION_5" translateable="false" desc="Fifth part of description in privacy sandbox notice ROW dialog">
Suspendisse at dui pulvinar, rhoncus orci at, porttitor nibh. Curabitur lacinia nulla sem, eu euismod dolor vulputate quis. Duis mattis eros et arcu elementum tempor. Duis pharetra eleifend sagittis.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_LEARN_MORE_DESCRIPTION_6" translateable="false" desc="Sixth part of description in privacy sandbox notice ROW dialog">
Cras sed lacus suscipit, efficitur erat nec, semper sapien. Fusce at nunc molestie, elementum augue at, auctor nunc. Sed dui nisi, consectetur sit amet urna vitae, facilisis scelerisque justo.
</message>
<message name="IDS_PRIVACY_SANDBOX_DIALOG_M1_NOTICE_ROW_BANNER_IMAGE_A11Y_DESCRIPTION" translateable="false" desc="A11y description for the banner image in privacy sandbox notice ROW dialog">
Ut venenatis magna nec lacus facilisis
</message>
<!-- Battery Saver Toolbar strings -->
<if expr="not is_android">
<message name="IDS_BATTERY_SAVER_BUTTON_TOOLTIP" desc="The tooltip for the battery saver toolbar button">
@ -14336,12 +14294,18 @@ Please help our engineers fix this problem. Tell us what happened right before y
<message name="IDS_HIGH_EFFICIENCY_DIALOG_BODY" desc="Body text for a dialog describing that Memory Saver mode will use less memory from inactive tabs and that this is a setting the user can control.">
While this tab was inactive, Memory Saver freed up memory for other tasks. You can change this anytime in <ph name="SETTINGS_LINK">$1<ex>Settings</ex></ph>.
</message>
<message name="IDS_HIGH_EFFICIENCY_DIALOG_BODY_WITHOUT_LINK" desc="Body text for a dialog describing that Memory Saver mode will use less memory.">
While this tab was inactive, Memory Saver freed up memory for other tasks.
</message>
<message name="IDS_HIGH_EFFICIENCY_DIALOG_BODY_LINK_TEXT" desc="The link text for the body text for the Memory Saver dialog.">
Settings
</message>
<message name="IDS_HIGH_EFFICIENCY_DIALOG_BODY_WITH_SAVINGS_AND_LINK" desc="Body text for a dialog describing how much less memory was used due to Memory Saver mode and that this is a setting the user can control.">
While this tab was inactive, Memory Saver freed up <ph name="MEMORY_VALUE">$1<ex>175MB</ex></ph> of memory for other tasks. You can change this anytime in <ph name="SETTINGS_LINK">$2<ex>Settings</ex></ph>.
</message>
<message name="IDS_HIGH_EFFICIENCY_DIALOG_BODY_WITH_SAVINGS" desc="Body text for a dialog describing how much less memory was used due to Memory Saver mode.">
While this tab was inactive, Memory Saver freed up <ph name="MEMORY_VALUE">$1<ex>175MB</ex></ph> of memory for other tasks.
</message>
</if>
<message name="IDS_ACCNAME_SIDEBAR_WEBVIEW_LOCATION_BAR" desc="The accessible name of the sidebar webview's location bar.">
Location

View file

@ -121,6 +121,14 @@
</message>
</if>
<!-- Site Settings - Site Data Page-->
<message name="IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_RADIO_SUBLABEL" desc="A description of the benefit/cost of choosing 'Sites can save content on your device. In short, a site will remember your preferences, shopping cart content, etc. during this browser session. But once you close all open windows, and then visit the site again, it's as if you're coming to the site for the first time.">
Sites will probably work as you expect but won't remember you after you close all Chromium windows
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_EXCEPTIONS_SUB_HEADING" desc="2 of 3. A label within 'Customized behaviors' that allows for exceptions to the 'On-device site data' setting. This label and the list of sites that can appear beneath it is only relevant if the user has chosen to allow 'on-device site data' as the default value above.">
Always clear site data from your device when you close Chromium
</message>
<!-- Privacy Guide -->
<message name="IDS_SETTINGS_PRIVACY_GUIDE_PROMO_BODY" desc="Body text of a card in the settings page that explains what the 'Privacy Guide' feature is.">
Review key privacy and security controls in Thorium

View file

@ -14,6 +14,9 @@
<message name="IDS_SETTINGS_MORE_ACTIONS" desc="Tooltip text (shows on hover or for screenreaders) for a button that shows a menu with more actions when clicked or tapped">
More actions
</message>
<message name="IDS_SETTINGS_OPENS_IN_NEW_TAB" desc="ARIA (accessibility) label describing a link which opens in a new tab.">
Opens in new tab
</message>
<if expr="not chromeos_ash">
<message name="IDS_RELAUNCH_CONFIRMATION_DIALOG_BODY" desc="The body of the modal dialog that we show when users click on relaunch and they have open Incognito windows. The dialog serves to warn the users about losing their Incognito windows if they proceed with the relaunch.">
@ -77,6 +80,12 @@
<message name="IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_SUBTITLE" desc="Subtitle for screen reader image labels feature.">
If an image doesnt have a useful description, Thorium will try to provide one for you. To create descriptions, images are sent to Google.
</message>
<message name="IDS_SETTINGS_PDF_OCR_TITLE" desc="Description for screen reader pdf ocr feature.">
Convert images to text
</message>
<message name="IDS_SETTINGS_PDF_OCR_SUBTITLE" desc="Subtitle for screen reader pdf ocr feature.">
Scan PDF images to convert text for screen reader when necessary
</message>
<message name="IDS_SETTINGS_CAPTIONS_ENABLE_LIVE_CAPTION_TITLE" desc="Name of the setting to enable Live Caption feature.">
Live Caption
</message>
@ -442,6 +451,36 @@
<message name="IDS_SETTINGS_CREDIT_CARD_NICKNAME_INVALID" desc="The error message that is shown when user uses digit numbers in credit card nickname">
Nickname cant include numbers
</message>
<message name="IDS_SETTINGS_ADD_PAYMENT_METHOD_CREDIT_OR_DEBIT_CARD" desc="The label that appears in the drop-down selector when adding a local payment method, which allows users to add a credit or debit card.">
Credit/Debit card
</message>
<message name="IDS_SETTINGS_ADD_PAYMENT_METHOD_IBAN" desc="The label that appears in the drop-down selector when adding a local payment method, which allows users to add an IBAN (International Bank Account Number).">
IBAN
</message>
<message name="IDS_SETTINGS_IBAN_SAVED_TO_THIS_DEVICE_ONLY" desc="Shown in the payments section of settings. Descriptive text to inform the user that this IBAN (International Bank Account Number) will be saved to local device only.">
This IBAN will be saved to this device only
</message>
<message name="IDS_IBAN_NICKNAME" desc="Label for the field containing the nickname of the IBAN (International Bank Account Number) to be saved.">
Nickname
</message>
<message name="IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_IBAN" desc="The (accessibility) title of a button, which brings up a menu of actions that can be taken on a stored IBAN (International Bank Account Number). The IBAN is described by its nickname.">
More actions for <ph name="IBAN_DESCRIPTION">$1<ex>My Doctor's IBAN</ex></ph>
</message>
<message name="IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_IBAN_DESCRIPTION" desc="The (accessibility) IBAN (International Bank Account Number) description from the last 4 digits of the IBAN value.">
IBAN ending in <ph name="LAST_FOUR_DIGITS">$1<ex>1234</ex></ph>
</message>
<message name="IDS_SETTINGS_ADD_IBAN_TITLE" desc="The title for the dialog that's shown when editing an IBAN (International Bank Account Number).">
Add IBAN
</message>
<message name="IDS_SETTINGS_EDIT_IBAN_TITLE" desc="The title for the dialog that's shown when entering the information for a new IBAN (International Bank Account Number).">
Edit IBAN
</message>
<message name="IDS_SETTINGS_IBAN_EDIT" desc="Label for a context menu item that edits the selected IBAN (International Bank Account Number)." meaning="Edit selected IBAN.">
Edit
</message>
<message name="IDS_SETTINGS_IBAN_REMOVE" desc="Label for a context menu item that removes the selected IBAN (International Bank Account Number)." meaning="Remove selected IBAN.">
Remove
</message>
<message name="IDS_SETTINGS_UPI_ID_LABEL" desc="A label which appears next to UPI IDs, when they are listed as stored payment info, but it is visually separate from the UPI ID. It lets the user know this is a UPI ID (e.g. as opposed to a credit card number). UPI is a system for payments in India. A UPI ID is an email-like string.">
UPI ID
</message>
@ -1341,12 +1380,6 @@
<message name="IDS_SETTINGS_CLEAR_PERIOD_EVERYTHING" desc="The option to delete browsing data from the beginning of time.">
All time
</message>
<message name="IDS_SETTINGS_CLEAR_INSTALLED_APPS_DATA_TITLE" desc="Text for title of the important sites dialog.">
Also clear data from these apps?
</message>
<message name="IDS_SETTINGS_CLEAR_INSTALLED_APPS_DATA_CONFIRM" desc="Text for confirmation button of the important sites dialog.">
Clear
</message>
<message name="IDS_SETTINGS_NOTIFICATION_WARNING" desc="A warning that notifications will be disabled by deleting cookies for this site.">
Notifications will be disabled
</message>
@ -1368,35 +1401,6 @@
Open certain file types automatically after downloading
</message>
<!-- Downloads Page: Web Drive Connection -->
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_TITLE" desc="Label for the checkbox which enables a prompt for the user to choose a download location for each download instead of using the default.">
<ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> Connection
</message>
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_LEARN_MORE" desc="Text to be displayed to take user to relevant CBCM article.">
Learn more
</message>
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_UNLINKED_MESSAGE" desc="Meesage to be displayed when downloads are set to be routed to web drive by CBCM policy but the user has not linked a web drive account yet.">
For data safety and security, your organization requries all eligible downloads to be saved to your organization's <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> account.
</message>
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_SIGN_IN_BUTTON" desc="Label for the checkbox which enables a prompt for the user to choose a download location for each download instead of using the default.">
Sign in to <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph>
</message>
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_LINKED_MESSAGE" desc="Meesage to be displayed when downloads are set to be routed to web drive by CBCM policy and the user has linked a web drive account already.">
All eligible downloads are routed to your organization's <ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> account.
</message>
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_SIGN_OUT_BUTTON" desc="Label for the checkbox which enables a prompt for the user to choose a download location for each download instead of using the default.">
Unlink Account
</message>
<message name="IDS_SETTINGS_DOWNLOAD_CONNECTION_ACCOUNT_TITLE" desc="Label for the checkbox which enables a prompt for the user to choose a download location for each download instead of using the default.">
Account
</message>
<message name="IDS_SETTINGS_DOWNLOAD_WEB_DRIVE_LOCATION" desc="Label for the input which allows the user to specify the default download directory, if the file system connector is enabled." meaning="File location">
<ph name="WEB_DRIVE">$1<ex>Google Drive</ex></ph> Location
</message>
<message name="IDS_SETTINGS_DOWNLOAD_LOCAL_LOCATION" desc="Label for the input which allows the user to specify the default download directory, if the file system connector is enabled." meaning="File location">
Local Location
</message>
<!-- On Startup Page -->
<message name="IDS_SETTINGS_ON_STARTUP" desc="Name of the on startup page.">
On startup
@ -1540,8 +1544,14 @@
<message name="IDS_SETTINGS_LANGUAGES_NO_LANGUAGES_ADDED" desc="Placeholder for language list settings when no languages have been added, on the Manage Languages page.">
No languages added
</message>
<message name="IDS_SETTINGS_LANGUAGES_REMOVE_ARIA_LABEL" desc="Text read by screen readers when focusing on the trash can icon for removing a language. Activating this button will remove the selected language from its current list. This text only announced by screen readers and is not visible in the UI.">
Remove <ph name="LANGUAGE_NAME">$1<ex>Swahili</ex></ph>
<message name="IDS_SETTINGS_LANGUAGES_ADD_ARIA_LABEL" desc="Text read by screen readers when focusing on the checkbox for adding a language. This text is only announced by screen readers and is not visible in the UI.">
Add <ph name="LANGUAGE_NAME">$1<ex>Swahili</ex></ph>
</message>
<message name="IDS_SETTINGS_LANGUAGES_REMOVE_AUTOMATIC_ARIA_LABEL" desc="Text read by screen readers when focusing on the remove icon for automatiaclly translated languages. Activating this button will remove the selected language. This text only announced by screen readers and is not visible in the UI.">
Remove <ph name="LANGUAGE_NAME">$1<ex>Swahili</ex></ph> from automatically translated languages
</message>
<message name="IDS_SETTINGS_LANGUAGES_REMOVE_NEVER_ARIA_LABEL" desc="Text read by screen readers when focusing on the remove icon for never offer translate languages. Activating this button will remove the selected language. This text only announced by screen readers and is not visible in the UI.">
Remove <ph name="LANGUAGE_NAME">$1<ex>Swahili</ex></ph> from never offer translation languages
</message>
<message name="IDS_SETTINGS_TRANSLATE_PAGE_TITLE" desc="Name of the settings page which displays translate preferences.">
Google Translate
@ -1828,97 +1838,173 @@
</message>
<!-- Privacy Sandbox Settings 4 - Privacy & Security Page -->
<message name="IDS_SETTINGS_AD_PRIVACY_LINK_ROW_LABEL" translateable="false" desc="Label for row linking to the Ad Privacy preferences page in the Privacy &amp; Security Page.">
Donec semper
<message name="IDS_SETTINGS_AD_PRIVACY_LINK_ROW_LABEL" desc="A new label that appears on the Privacy and security page (chrome://settings/privacy) between 'Third-party cookies' and 'Security'. This same text is used as a page title for the new Ad privacy section. This same pair of words is used in the Consent and Notice flow and must be consistently translated in both contexts. We mean privacy associated with ads, and not privacy from ads. **** CONTEXT PRIVACY SANDBOX **** Thoriums Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Ad privacy
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_LINK_ROW_SUB_LABEL" translateable="false" desc="Sub label for row linking to the Ad Privacy preferences page in the Privacy &amp; Security Page.">
Fusce purus nibh, dictum sit amet mi in, fringilla ullamcorper tortor
<message name="IDS_SETTINGS_AD_PRIVACY_LINK_ROW_SUB_LABEL" desc="A string that describes 'Ad privacy', the label that appears just above it. For context, this new 'Ad privacy' / 'Customize the info...' pair of strings is similar to the existing 'Clear browsing data' / 'Clear history, cookies...' that you find on chrome://settings/privacy. * 'Customize': From our word list: 'This word describes user agency in refining their personalized recommendations, elements of the experience, or sometimes products'. Please don't confuse with 'personalize', which we reserve to mean: '...when Google provides recommendations and other content for users based on their data'. **** CONTEXT PRIVACY SANDBOX **** Thoriums Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Customize the info used by sites to show you ads
</message>
<!-- Privacy Sandbox Settings 4 - Ad Privacy Page -->
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TITLE" translateable="false" desc="Title for the Ad Privacy preferences page.">
Donec semper
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TITLE" desc="A new page title for a page that includes 3 settings. This same text appears as a label on chrome://settings/privacy between 'Third-party cookies' and 'Security'. This same pair of words is used in the Consent and Notice flow and must be consistently translated in both contexts. We mean privacy associated with ads, and not privacy from ads. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Ad privacy
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_LABEL" translateable="false" desc="Label for row linking to Topics page.">
Mauris interdum lectus vitae lacinia
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_LABEL" desc="The name of a new setting. This setting is described to users in the Consent moment as: Ad topics help sites show you relevant ads while protecting your browsing history and identity. Thorium can note topics of interest based on your recent browsing history. Later, a site you visit can ask Thorium for relevant topics to personalize the ads you see. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Ad topics
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_SUB_LABEL_ENABLED" translateable="false" desc="Sub label for row linking to Topics page when Topics is enabled.">
Enabled Nulla eros tortor, placerat blandit dictum a, interdum id metus
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_SUB_LABEL_ENABLED" desc="Ad topics are derived from the user's browsing history. This help-center article explains 'browsing history' to users: https://support.google.com/chrome/answer/95589. This setting is described to users in the Consent moment as: Ad topics help sites show you relevant ads while protecting your browsing history and identity. Thorium can note topics of interest based on your recent browsing history. Later, a site you visit can ask Thorium for relevant topics to personalize the ads you see.">
Based on your browsing history. This setting is on.
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_SUB_LABEL_DISABLED" translateable="false" desc="Sub label for row linking to Topics page when Topics is disabled.">
Disabled Nulla eros tortor, placerat blandit dictum a, interdum id metus
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_SUB_LABEL_DISABLED" desc="Ad topics are derived from the user's browsing history. This help-center article explains 'browsing history' to users: https://support.google.com/chrome/answer/95589. This setting is described to users in the Consent moment as: Ad topics help sites show you relevant ads while protecting your browsing history and identity. Thorium can note topics of interest based on your recent browsing history. Later, a site you visit can ask Thorium for relevant topics to personalize the ads you see.">
Based on your browsing history. This setting is off.
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_FLEDGE_LINK_ROW_LABEL" translateable="false" desc="Label for row linking to FLEDGE page.">
Aenean erat leo
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_FLEDGE_LINK_ROW_LABEL" desc="The name of a new setting. This setting is described to users in the Notice moment as: Site-suggested ads help protect your browsing history and identity while enabling sites to show you relevant ads. Based on your activity, a site you visited can suggest related ads as you continue browsing. You can see a list of these sites and block the ones you don't want in settings. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Site-suggested ads
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_FLEDGE_LINK_ROW_SUB_LABEL_ENABLED" translateable="false" desc="Sub label for row linking to FLEDGE page when FLEDGE is enabled.">
Enabled Duis scelerisque a mi eget ultricies
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_FLEDGE_LINK_ROW_SUB_LABEL_ENABLED" desc="A site can suggest ads for a user based on the user's activity on their site. This setting is described to users in the Notice moment as: Site-suggested ads help protect your browsing history and identity while enabling sites to show you relevant ads. Based on your activity, a site you visited can suggest related ads as you continue browsing. You can see a list of these sites and block the ones you don't want in settings.">
Based on your activity on a site. This setting is on.
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_FLEDGE_LINK_ROW_SUB_LABEL_DISABLED" translateable="false" desc="Sub label for row linking to FLEDGE page when FLEDGE is disabled.">
Disabled Duis scelerisque a mi eget ultricies
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_FLEDGE_LINK_ROW_SUB_LABEL_DISABLED" desc="A site can suggest ads for a user based on the user's activity on their site. This setting is described to users in the Notice moment as: Site-suggested ads help protect your browsing history and identity while enabling sites to show you relevant ads. Based on your activity, a site you visited can suggest related ads as you continue browsing. You can see a list of these sites and block the ones you don't want in settings.">
Based on your activity on a site. This setting is off.
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_AD_MEASUREMENT_LINK_ROW_LABEL" translateable="false" desc="Label for row linking to Ad Measurement page.">
Vestibulum augue erat
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_AD_MEASUREMENT_LINK_ROW_LABEL" desc="The name of a new setting. This setting is described to users in the Notice moment as: With ad measurement, limited types of data are shared between sites to measure the performance of their ads, such as the time of day an ad was shown to you. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Ad measurement
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_AD_MEASUREMENT_LINK_ROW_SUB_LABEL_ENABLED" translateable="false" desc="Sub label for row linking to Ad Measurement page when Ad Measurement is enabled.">
Enabled Vivamus id lacus et lacus porttitor vulputate. Sed semper egestas orci vel maximus.
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_AD_MEASUREMENT_LINK_ROW_SUB_LABEL_ENABLED" desc="The name of a new setting. This setting is described to users in the Notice moment as: With ad measurement, limited types of data are shared between sites to measure the performance of their ads, such as the time of day an ad was shown to you.">
Sites and advertisers can understand how ads perform. This setting is on.
</message>
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_AD_MEASUREMENT_LINK_ROW_SUB_LABEL_DISABLED" translateable="false" desc="Sub label for row linking to Ad Measurement page when Ad Measurement is disabled.">
Disabled Vivamus id lacus et lacus porttitor vulputate. Sed semper egestas orci vel maximus.
<message name="IDS_SETTINGS_AD_PRIVACY_PAGE_AD_MEASUREMENT_LINK_ROW_SUB_LABEL_DISABLED" desc="The name of a new setting. This setting is described to users in the Notice moment as: With ad measurement, limited types of data are shared between sites to measure the performance of their ads, such as the time of day an ad was shown to you.">
Sites and advertisers can understand how ads perform. This setting is off.
</message>
<!-- Privacy Sandbox Settings 4 - Topics Page -->
<message name="IDS_SETTINGS_TOPICS_PAGE_TITLE" translateable="false" desc="Title for the Topics preferences page.">
Mauris interdum lectus vitae lacinia
<!-- Privacy Sandbox v4 - Topics Page -->
<!-- Where possible, these strings have been unified on Desktop & Android in privacy_sandox_strings.grdp. The strings here either only appear on one platform, or have platform specific requirements, e.g. the format of placeholders, and so cannot be unified. For the latter case, they have corresponding _CANONICAL representations used when consent is recorded on either platform, and so they must stay in sync -->
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION" desc="A description that appear beneath the 'Your topics' label. * 'You can block': There is a 'Block' button (or an X on mobile) that appears next to each topic in the list. * 'auto-deletes': this could also read 'Thorium deletes...' We included the 'auto' to reinforce that this is part of a system and the deletion is done regularly.">
You can block topics you dont want shared with sites. Thorium also auto-deletes your topics older than 4 weeks.
</message>
<message name="IDS_SETTINGS_TOPICS_PAGE_TOGGLE_LABEL" translateable="false" desc="Label for the toggle in the Topics preferences page.">
Nunc gravida condimentum consectetur
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_LEARN_MORE_A11Y_LABEL" desc="Read by screen readers and associated with a 'learn more' button.">
Learn more about ad topics
</message>
<message name="IDS_SETTINGS_TOPICS_PAGE_TOGGLE_SUB_LABEL" translateable="false" desc="Subabel for the toggle in the Topics preferences page.">
Vivamus nibh turpis, varius quis nisi vel, porta laoreet tellus. Mauris porta imperdiet venenatis
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_LEARN_MORE_LINK" desc="Text read by screen readers to help users distinguish this 'Learn more' link from others that might get added to this page.">
Learn more
</message>
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_HEADING" translateable="false" desc="Section title for the current Topics list underneath toggle in the Topics preferences page.">
Mauris at lectus
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_REGION_A11Y_DESCRIPTION" desc="An explanation read by screen readers that describes the list of topics.">
List of topics estimated by Thorium based on your recent browsing history
</message>
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION" translateable="false" desc="Section description for the current Topics list in the Topics preferences page.">
Nulla tincidunt iaculis nulla, sit amet viverra massa luctus nec. Integer eget pellentesque magna, et venenatis lorem. Integer a porta elit. Eget bibendum neque.
<message name="IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_REGION_A11Y_DESCRIPTION" desc="Read by screen readers to describe the list of blocked topics.">
List of topics you blocked that you don't want shared with sites
</message>
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_DISABLED" translateable="false" desc="Section description for the current Topics list when Topics is disabled in the Topics preferences page.">
Sed porta viverra lacus ut euismod. Integer a cursus metus, ac ultricies libero.
</message>
<message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_EMPTY" translateable="false" desc="Section description for the current Topics list when the Topics list is empty in the Topics preferences page.">
Curabitur sagittis sapien ut turpis interdum, vitae porttitor sem pretium. Vestibulum sem mauris, ultrices ac massa sit amet, sodales aliquet est.
<message name="IDS_SETTINGS_TOPICS_PAGE_FOOTER" desc="This footer helps the user understand that this setting is just one signal among others that affect whether this user sees personalized ads on a site. We define 'personalize' as 'when Google provides recommendations and other content for users based on their data'. At a high level, there are 4 things that affect whether an ad is personalized in this context: * 'this setting' refers to the 'Ad topics' setting. The user is on this page. * 'Site-suggested ads': this is a link to the other new ad setting Thorium is launching and that sites can use to personalize ads a user sees. * 'cookie settings': this is a link to the cookies control section in Thorium settings. The Privacy Sandbox project deprecates third-party cookies, but it's a process, and we're launching new functionality that will replace important functionality of cookies. Until third-party cookies are deprecated, the two systems remain active in Thorium. * 'site you're viewing personalizes ads': When a user engages with a site, Thorium has no control over whether that site shows the user personalized ads. Imagine you visit www.interesting-site.com and they know a lot about you already based on previous visits. They can personalize content and ads to you if they like. They can use an ad-serving product, like Facebook or Google Ads to deliver personalized ads. They can also use the new Privacy Sandbox APIs (if they so choose) in order to get more information about the user that could be helpful to them in order to personalize ads. Those 2 APIs (settings, from the user's perspective), are 'Ad topics' and 'Site-suggested ads'.">
As you browse, whether an ad you see is personalized depends on this setting, <ph name="BEGIN_LINK1">&lt;a href="$1" target="_blank"&gt;</ph>Site-suggested ads<ph name="LINK_END1">&lt;/a&gt;</ph>, your <ph name="BEGIN_LINK2">&lt;a href="$2" target="_blank"&gt;</ph>cookie settings<ph name="LINK_END2">&lt;/a&gt;</ph>, and if the site youre viewing personalizes ads
</message>
<!-- Privacy Sandbox Settings 4 - Fledge Page -->
<message name="IDS_SETTINGS_FLEDGE_PAGE_TITLE" translateable="false" desc="Title for the Fledge preferences page.">
Aenean erat leo
<message name="IDS_SETTINGS_FLEDGE_PAGE_TITLE" desc="A page title and the name of a new setting. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Site-suggested ads
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_TOGGLE_LABEL" desc="The label for a new setting.">
Site-suggested ads
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_TOGGLE_SUB_LABEL" desc="A description of the new Site-suggested ads setting. This text appears beneath the name of the new setting, 'Site-suggested ads', and is associated with the control that a user can turn on or off. * 'determine what you like': Based on your interaction with a site, that site can define your interests any way it wants. For example, if you put a pair of red running shoes in a shopping cart, the site might define an interest as 'red_running_shoes_size_36'. * 'suggest ads as you continue browsing': 1) you interact with a site and if defines an interest for you. That information is saved with Thorium. 2) You continue browsing. 3) a new site you visit checks with Thorium if 'Site-suggested ads' is turned on and then can request information related to that user. 4) The site might end up showing ads related to 'red_running_shoes_size_36'. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Sites you visit can determine what you like and then suggest ads as you continue browsing
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_HEADING" desc="A label for a list of sites the user has visited. The list of sites looks similar to the user's browsing history, but this is a distinct list. * 'browsing history' is a list of the sites the user has visited. To learn more about 'browsing history', search for that term in the Thorium Help Center. * This list of 'Sites' is a subset of the user's browsing history. 1) Only sites that use the 'Site-suggested ads' API (https://developer.chrome.com/docs/privacy-sandbox/fledge/) can appear on this list. 2) This list is based on recent sites the user has visited and sites older than 4 weeks are regularly deleted.">
Sites
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_DESCRIPTION" desc="A paragraph beneath the 'Sites' label. It explains how users can control the sites that appear in the list. * 'block sites': When a user blocks a site, that site may no longer save info with Thorium about the user's visit. As the user continues to browse, they will not see ads suggested by the blocked site. * 'auto-deletes': We included the 'auto' to reinforce that this is part of a system and the deletion is done regularly.">
You can block sites you don't want. Thorium also auto-deletes sites from the list that are older than 4 weeks.
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_DESCRIPTION_LEARN_MORE" desc="A button label that opens a dialog box allowing the user to learn more about the Site-suggested ads setting.">
Learn more
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_DESCRIPTION_DISABLED" desc="1 of 2 descriptions that appear if there are no sites in the list. This string is for the case that the Site-suggested ads setting isn't on.">
When on, a list of sites you visit that guess your interests appears here
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_DESCRIPTION_EMPTY" desc="1 of 2 descriptions that appear if there are no sites in the list. This string is for the case that the Site-suggested ads setting IS on, but the user hasn't browsed any sites that have called the Site-suggested ads API.">
It can take up to a week for a list of sites to appear here based on your browsing history
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_REGION_A11Y_DESCRIPTION" desc="Read by screen readers to describe a list of sites that appear on the page.">
List of recent sites you visited that can suggest ads to other sites as you keep browsing
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_SEE_ALL_SITES_LABEL" desc="Text that serves as a button. Because the list of sites might be long, we only show the most recent sites. This button allows the user to browse all sites (because sites are auto-deleted every 4 weeks, the list is never older than 4 weeks).">
See all sites
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_BLOCK_SITE" desc="A button associated with each of the sites in the user's 'Site-suggested ads' list. If the user clicks 'Block', that site will get moved to the 'Sites you blocked' page.">
Block
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_BLOCK_SITE_A11Y_LABEL" desc="A button label read by screen readers that indicates which site will get blocked. The list is of sites the user has recently visited and that use the Site-suggested ads API to suggest ads to other sites as the user continues browsing.">
Block <ph name="DOMAIN">$1<ex>example.com</ex></ph>
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_BLOCKED_SITES_HEADING" desc="A label that serves as a button to open the 'Sites you blocked' page.">
Sites you blocked
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_BLOCKED_SITES_DESCRIPTION" desc="1 of 2 possible descriptions that appear beneath the 'Sites' title. In this case, the user has previously blocked sites. * 'pool of sites': We want to express that by clicking 'Add', the user is making a site eligible again for consideration.">
Add a site back if you want it in the pool of sites that can guess what you like
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_BLOCKED_SITES_DESCRIPTION_EMPTY" desc="2 of 2 possible descriptions beneath the 'Sites you blocked' title. In this case, the list is empty (the user hasn't blocked any sites).">
Blocked sites appear here
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_BLOCKED_SITES_REGION_A11Y_DESCRIPTION" desc="Read by screen readers to describe what this list of sites is.">
List of sites you blocked that you don't want suggesting ads to other sites
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_ALLOW_SITE" desc="A button associated with each of the user's blocked sites. When the user clicks 'Add', it makes that site eligible. Clicking 'Add' doesn't automatically put the added site back onto the list of 'Sites'. For that to happen, a user would have to browse to that site again and the site would have to use the Site-suggested ads to save interests for this user.">
Add
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_ALLOW_SITE_A11Y_LABEL" desc="A button label read by screen readers that indicates which site will get added back to the pool of potential sites.">
Add <ph name="DOMAIN">$1<ex>example.com</ex></ph>
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_FOOTER" desc="This footer helps the user understand that this setting is just one signal among others that affect whether this user sees personalized ads on a site. We define 'personalize' as 'when Google provides recommendations and other content for users based on their data'. At a high level, there are 4 things that affect whether an ad is personalized in this context: * 'this setting' refers to the 'Site-suggested ads' setting. The user is on this page. * 'Ad topics': this is a link to the other new ad setting Thorium is launching and that sites can use to personalize ads a user sees. * 'cookie settings': this is a link to the cookies control section in Thorium settings. The Privacy Sandbox project deprecates third-party cookies, but it's a process, and we're launching new functionality that will replace important functionality of cookies. Until third-party cookies are deprecated, the two systems remain active in Thorium. * 'site you're viewing personalizes ads': When a user engages with a site, Thorium has no control over whether that site shows the user personalized ads. Imagine you visit www.interesting-site.com and they know a lot about you already based on previous visits. They can personalize content and ads to you if they like. They can use an ad-serving product, like Facebook or Google Ads to deliver personalized ads. They can also use the new Privacy Sandbox APIs (if they so choose) in order to get more information about the user that could be helpful to them in order to personalize ads. Those 2 APIs (settings, from the user's perspective), are 'Ad topics' and 'Site-suggested ads'.">
As you browse, whether an ad you see is personalized depends on this setting, <ph name="BEGIN_LINK1">&lt;a href="$1" target="_blank"&gt;</ph>Ad topics<ph name="LINK_END1">&lt;/a&gt;</ph>, your <ph name="BEGIN_LINK2">&lt;a href="$2" target="_blank"&gt;</ph>cookie settings<ph name="LINK_END2">&lt;/a&gt;</ph>, and if the site you're viewing personalizes ads
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_LEARN_MORE_HEADING" desc="The title of a dialog box that explains site-suggested ads in more detail.">
More about site-suggested ads
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_LEARN_MORE_BULLET_1" desc="1 of 3 paragraphs on the Learn more page for Site-suggested ads. * 'It's common...' this sentence is intended to be reassuring. Many sites the user visits are retaining some information about the user, such as their preferred language if the site has a language picker. If cookies are allowed, this info might be stored with a first-party cookie on the user's device. Sites can also store limited information with Thorium.">
It's common for sites you visit to remember things you're interested in, to personalize your experience. Sites can also store information with Thorium about your interests.
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_LEARN_MORE_BULLET_2" desc="2 of 3 paragraphs on the Learn more page for Site-suggested ads.">
For example, if you visit a site that sells long-distance running shoes, the site might decide that you're interested in running marathons. Later, if you visit a different site, that site can show you an ad for running shoes suggested by the first site.
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_LEARN_MORE_BULLET_3" desc="3 of 3 paragraphs on the Learn more page for Site-suggested ads. * 'Auto-deletes': This could just read 'Thorium deletes...' but we include the 'auto' to suggest that the deletion happens regularly and as part of the system. * 'A site you visit again...': We want to reassure the user. We just told them sites are automatically deleted. And yet, a user might see the same site in the list month after month if they visit that site regularly.">
Thorium auto-deletes sites that are older than 4 weeks. A site you visit again might reappear on the list. Or you can block a site from suggesting ads for you.
</message>
<message name="IDS_SETTINGS_FLEDGE_PAGE_CURRENT_SITES_DESCRIPTION_LEARN_MORE_A11Y_LABEL" desc="Text read by screen readers to help users distinguish this 'Learn more' link from others that might get added to this page.">
Learn more about site-suggested ads
</message>
<!-- Privacy Sandbox Settings 4 - Ad Measurement Page -->
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_TITLE" translateable="false" desc="Title for the Ad Measurement preferences page.">
Vestibulum augue
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_TITLE" desc="A page title and the name of a new setting. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Ad measurement
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_TOGGLE_LABEL" translateable="false" desc="Label for the toggle in the Ad Measurement preferences page.">
Vestibulum augue erat
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_TOGGLE_LABEL" desc="The label for a new setting.">
Ad measurement
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_TOGGLE_SUB_LABEL" translateable="false" desc="Sublabel for the toggle in the Ad Measurement preferences page.">
Vestibulum eleifend nunc a viverra congue. Integer nec mauris rutrum, porta mauris et, pellentesque ligula. Nam et pulvinar eros, in gravida nisl.
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_TOGGLE_SUB_LABEL" desc="A description of the new Ad measurement setting. This text appears beneath the name of the new setting, 'Ad measurement', and is associated with the control that a user can turn on or off. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** NEW SETTINGS SECTION IN CHROME **** 3 new ad-specific settings appear on an 'Ad privacy' page in Thorium settings. For an equivalent structure, see 'Security' on chrome://settings/privacy that opens chrome://settings/security. Likewise, 'Ad privacy' on chrome://settings/privacy will open chrome://settings/AdPrivacy.">
Sites and advertisers can measure the performance of their ads
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_HEADING" translateable="false" desc="Heading for the 'When on' section in the Ad Measurement preferences page.">
Mauris
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_HEADING" desc="A label above bullet points that explain the functionality of this setting.">
When on
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_HEADING" translateable="false" desc="Heading for the 'Things to consider' section in the Ad Measurement preferences page.">
Aenean
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_HEADING" desc="A label above bullet points that note things the user might want to consider when turning this setting on or off.">
Things to consider
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_BULLET_1" translateable="false" desc="First bullet point underneath the 'When on' section in the Ad Measurement preferences page.">
Praesent sodales, magna eget volutpat iaculis, justo odio viverra justo, id venenatis est est sit amet ex
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_BULLET_1" desc="1 of 3 bullets in the 'When on' section that describes the Ad measurement setting. * 'Limited types of data': The Ad measurement API (for developers) and the Ad measurement control (for users) is offered by Thorium. But Thorium is a 'pass through', helping one site communicate information to another about the performance of an ad. That's where this passive construction comes from. Thorium facilitates, but shouldn't be seen as a major actor here. And we don't want to suggest anything like 'Thorium limits the types of data shared between sites,' because Thorium can't do that. Any 2 sites can have a side agreement to share as much info as they like.">
Limited types of data are shared between sites to measure the performance of their ads, such as the time of day an ad was shown to you
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_BULLET_2" translateable="false" desc="Second bullet point underneath the 'When on' section in the Ad Measurement preferences page.">
Nunc metus est, faucibus sit amet lacus sit amet, aliquet rutrum libero. Maecenas vel euismod ante.
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_BULLET_2" desc="2 of 3 bullets in the 'When on' section that describes the Ad measurement setting.">
Ad-measurement data is deleted regularly from your device
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_1" translateable="false" desc="First bullet point underneath the 'Things to consider' section in the Ad Measurement preferences page.">
Mauris mattis urna elit. Phasellus quis erat sapien. Praesent finibus pellentesque iaculis. Mauris hendrerit metus at enim rhoncus bibendum.
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_ENABLED_BULLET_3" desc="3 of 3 bullets in the 'When on' section that describes the Ad measurement setting. If reports were instantaneous, a site could receive a report and then consult which visitors most recently visited the site.">
Your browsing history is kept private on your device and reports are sent with a delay to protect your identity
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_1" desc="1 of 3 bullets in the 'Things to consider' section that describes the Ad measurement setting.">
You can always delete ad-measurement data by deleting your browsing data
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_2" desc="2 of 3 bullets in the 'Things to consider' section that describes the Ad measurement setting.">
Thorium limits the total amount of data that sites can share through the browser to measure ad performance
</message>
<message name="IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_3" desc="3 of 3 bullets in the 'Things to consider' section that describes the Ad measurement setting.">
Your Android device may include a similar setting. If Ad measurement is turned on in Thorium and on your Android device, a company may be able to measure the effectiveness of an ad across web sites you visit and apps you use.
</message>
<!-- Privacy Guide -->
@ -1991,9 +2077,6 @@
<message name="IDS_SETTINGS_PRIVACY_GUIDE_MSBB_PRIVACY_DESCRIPTION1" desc="A part of the privacy description of 'make searches and browsing better' in the 'Privacy Guide'.">
URLs you visit are sent to Google to predict what sites you might visit next
</message>
<message name="IDS_SETTINGS_PRIVACY_GUIDE_CLEAR_ON_EXIT_CARD_HEADER" desc="Header of the 'clear cookies on exit' card in the 'Privacy Guide'.">
Review automatic data clearing
</message>
<message name="IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_CARD_HEADER" desc="Header of the history sync card in the 'Privacy Guide'.">
Choose whether to sync history
</message>
@ -2296,54 +2379,6 @@
<message name="IDS_SETTINGS_SAFETY_CHECK_TOAST_UNDO_BUTTON_LABEL" desc="After the user has modified permissions for a website, a toast popup message is shown with this text next to a description of the action taken. The user can click this text to undo the action. For example, this text would be next to a descriptiton that says 'Allowed notification permissions for example.com'.">
Undo
</message>
<if expr="is_win and _google_chrome">
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_PRIMARY_LABEL" desc="'Unwanted software protection' is an element in safety check that finds harmful software installed on the computer and allows users to remove it.">
Device software
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_BUTTON_ARIA_LABEL" desc="Accessiblity text for the button that allows users to review and remove harmful software found on their computer.">
Review device software
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_NO_UWS_WITHOUT_TIMESTAMP" desc="This text describes that Thorium can check if any known harmful software is installed on the user's computer.">
Thorium can check your computer for harmful software
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_NO_UWS_WITH_TIMESTAMP_AFTER_SECONDS" desc="This text describes that Thorium did not find any known harmful software installed on the user's computer, and that it checked for harmful softwrae the last time a certain time ago.">
Thorium didn't find harmful software on your computer • Checked just now
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_NO_UWS_WITH_TIMESTAMP_AFTER_MINUTES" desc="This text describes that Thorium did not find any known harmful software installed on the user's computer, and that it checked for harmful softwrae the last time a certain time ago.">
{NUM_MINS, plural,
=1 {Thorium didn't find harmful software on your computer • Checked 1 minute ago}
other {Thorium didn't find harmful software on your computer • Checked {NUM_MINS} minutes ago}}
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_NO_UWS_WITH_TIMESTAMP_AFTER_HOURS" desc="This text describes that Thorium did not find any known harmful software installed on the user's computer, and that it checked for harmful softwrae the last time a certain time ago.">
{NUM_HOURS, plural,
=1 {Thorium didn't find harmful software on your computer • Checked 1 hour ago}
other {Thorium didn't find harmful software on your computer • Checked {NUM_HOURS} hours ago}}
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_NO_UWS_WITH_TIMESTAMP_YESTERDAY" desc="This text describes that Thorium did not find any known harmful software installed on the user's computer, and that it checked for harmful softwrae the last time a certain time ago.">
Thorium didn't find harmful software on your computer • Checked yesterday
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_NO_UWS_WITH_TIMESTAMP_AFTER_DAYS" desc="This text describes that Thorium did not find any known harmful software installed on the user's computer, and that it checked for harmful softwrae the last time a certain time ago.">
{NUM_DAYS, plural,
=1 {Thorium didn't find harmful software on your computer • Checked 1 day ago}
other {Thorium didn't find harmful software on your computer • Checked {NUM_DAYS} days ago}}
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_INFECTED" desc="This text describes that Thorium found harmful software on the computer.">
Thorium found harmful software on your computer
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_SCANNING" desc="This text describes that Thorium is currently checking the user's device for unwanted software. This takes a couple of minutes.">
Thorium is checking your computer for harmful software...
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_REMOVING" desc="This text describes that Thorium is currently removing unwanted software frrom the user.s device. This takes a couple of minutes.">
Thorium is removing harmful software from your computer...
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_DISABLED_BY_ADMIN" desc="This text describes that Thorium can't check for unwanted software because an administrator disabled the feature.">
<ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>Your administrator<ph name="END_LINK">&lt;/a&gt;</ph> has turned off checking for harmful software
</message>
<message name="IDS_SETTINGS_SAFETY_CHECK_CHROME_CLEANER_ERROR" desc="This text describes that Thorium can't check for unwanted software due to an error.">
Something went wrong. Click for more details.
</message>
</if>
<message name="IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_LABEL" desc="In the advanced options tab, the text next to the checkbox that enables prediction of network actions. Actions include browser-initiated DNS prefetching, TCP and SSL preconnection, and prerendering of webpages.">
Preload pages for faster browsing and searching
</message>
@ -2801,11 +2836,11 @@
<message name="IDS_SETTINGS_SITE_SETTINGS_ADS_DESCRIPTION" desc="Description of the ads content setting. In order to comply with the ND4C regulations the translations for this message should use one of the legally approved terms as an alternative to 'free'.">
Sites usually show ads so they can provide content or services free of charge. But, some sites are known to show intrusive or misleading ads.
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED" desc="Label for the enabled option of the ads content setting.">
All sites can show any ads to you
<message name="IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED" desc="1 of 2 states for the 'Intrusive ads' setting.">
Any site you visit can show any ad to you
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCKED" desc="Label for the disabled option of the ads content setting.">
Block ads on sites that show intrusive or misleading ads
<message name="IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCKED" desc="2 of 2 states for the 'intrusive ads' setting.">
Ads are blocked on sites known to show intrusive or misleading ads
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED_EXCEPTIONS" desc="Label for the allowed exceptions site list of the ads content setting.">
Allowed to show any ads
@ -3270,6 +3305,75 @@
<message name="IDS_SETTINGS_COOKIES_PAGE" desc="Title of the cookies settings page">
Cookies and other site data
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DESCRIPTION" desc="An explanation of what third-party cookies are that appear beneath the page title: 'Third-party cookies'. * 'embed': A site you visit uses HTML to construct the page. HTML tags include references to images, like img src='filename.jpg', that are used to show an image. 'filename.jpg' can be a local file owned by the site you visit or a site can embed an external file with something like img src='www.third-party-site.com/images/filename.jpg'. This image is embedded into the site you visit and www.third-party-site.com can set a third-party cookie onto your device.">
A site you visit can embed content from other sites, for example, images, ads, and text. Cookies set by these other sites are called third-party cookies.
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DEFAULT_BEHAVIOR_HEADING" desc="A label on a permissions page. For example, see the Microphone permission at chrome://settings/content/microphone.">
Default behavior
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DEFAULT_BEHAVIOR_DESCRIPTION" desc="A description of what 'Default behavior' means. For example, see the Microphone permission at chrome://settings/content/microphone.">
Sites automatically follow this setting when you visit them
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_CUSTOMIZED_BEHAVIOR_HEADING" desc="A label on a permissions page. For example, see the Microphone permission at chrome://settings/content/microphone.">
Customized behaviors
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_CUSTOMIZED_BEHAVIOR_DESCRIPTION" desc="A description of 'customized behaviors' that appear beneath the 'Customized behaviors' title. For example, see the Microphone permission at chrome://settings/content/microphone.">
Sites listed below follow a custom setting instead of the default
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_EXCEPTIONS_SUB_HEADING" desc="A description of an exception bucket">
Allowed to use third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_TITLE" desc="The title of a new page. Today, Thorium has a 'Cookies and other site data' page at chrome://settings/cookies. As part of the Privacy Sandbox project (see below), Thorium is deprecating third-party cookies but maintaining first-party cookies. As a step towards the ultimate deprecation of third-party cookies, we're first separating them from other forms of 'site data', making it easier to eventually remove this page completely. Cookies are often used for honorable objectives, and the difference between first and third-party cookies is important (see any of the many resources online such as https://termly.io/resources/articles/first-party-cookies-vs-third-party-cookies/.">
Third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_LABEL" desc="This text is the label of a page. Here, it serves as a button that opens the new page.">
Third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_ENABLED" desc="1 of 3 possible states for the Third-party cookies setting. This text appears beneath the 'Third-party cookies' button label.">
Third-party cookies are allowed
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_DISABLED_INCOGNITO" desc="2 of 3 possible states for the Third-party cookies setting. This text appears beneath the 'Third-party cookies' button label.">
Third-party cookies are blocked in Incognito mode
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_DISABLED" desc="3 of 3 possible states for the Third-party cookies setting. This text appears beneath the 'Third-party cookies' button label.">
Third-party cookies are blocked
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_RADIO_LABEL" desc="1 of 3 options the user has to configure cookies. See the cookies page for context: chrome://settings/cookies.">
Allow third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_EXPAND_A11Y_LABEL" desc="This text is read by screenreaders and helps users find more info about this choice.">
More about allowing third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_BULLET_1" desc="1 of 2 bullets that describes the 'Allow all cookies' option.">
Sites can use cookies to improve your browsing experience, for example, to keep you signed in or to remember items in your shopping cart
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_BULLET_2" desc="2 of 2 bullets that describes the 'Allow all cookies' option. Sites use third-party cookies to 'see your browsing activity across different sites'. Third-party cookies aren't necessarily bad. 1) Personalized ads can be useful to the user (though the tracking that generally accompanies the use of third-party cookies for ads isn't). But 2) third-party cookies are also used for spam protection and for anti-tracking efforts.">
Sites can use cookies to see your browsing activity across different sites, for example, to personalize ads
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_RADIO_LABEL" desc="2 of 3 options the user has to configure cookies. See the cookies page for context: chrome://settings/cookies. For more about Incognito mode, see Google Thorium's Help Center.">
Block third-party cookies in Incognito mode
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_EXPAND_A11Y_LABEL" desc="This text is read by screenreaders and helps users find more info about this choice.">
More about blocking third-party cookies in Incognito mode
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_BULLET_1" desc="1 of 2 bullets that describes the 'Block third-party cookies in Incognito mode' option.">
Sites can use cookies to improve your browsing experience, for example, to keep you signed in or to remember items in your shopping cart
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_BULLET_2" desc="2 of 2 bullets that describes the 'Block third-party cookies in Incognito mode' option.">
While in Incognito, sites can't use your cookies to see your browsing activity across sites. Your browsing activity isn't used for things like personalizing ads. Features on some sites may not work.
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_RADIO_LABEL" desc="3 of 3 options the user has to configure cookies. See the cookies page for context: chrome://settings/cookies">
Block third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_EXPAND_A11Y_LABEL" desc="This text is read by screenreaders and helps users find more info about this choice.">
More about blocking third-party cookies
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_BULLET_1" desc="1 of 2 bullets that describes the 'Block third-party cookies' option.">
Sites can use cookies to improve your browsing experience, for example, to keep you signed in or to remember items in your shopping cart
</message>
<message name="IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_BULLET_2" desc="2 of 2 bullets that describe the 'Block third-party cookies' option">
Sites can't use your cookies to see your browsing activity across different sites, for example, to personalize ads. Features on some sites may not work
</message>
<message name="IDS_SETTINGS_COOKIES_CONTROLS" desc="Title of the general cookies control section.">
General settings
</message>
@ -3297,6 +3401,9 @@
<message name="IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_TWO" desc="Description for the first bullet of block third party cookies in Incognito radio toggle">
While in Incognito, sites can't use your cookies to see your browsing activity across different sites, for example, to personalize ads. Features on some sites may not work.
</message>
<message name="IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_TWO_FPS" desc="Description for the first bullet of block third party cookies in Incognito radio toggle">
While in Incognito, sites can't use your cookies to see your browsing activity across sites, even related sites. Your browsing activity isn't used for things like personalizing ads. Features on some sites may not work.
</message>
<message name="IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY" desc="Label for block third party cookies radio toggle">
Block third-party cookies
</message>
@ -3689,6 +3796,9 @@
<message name="IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_OFFLINE_DATA" desc="Text for the dialog that warns about loss of offline data when clearing all storage data.">
Any offline data will be cleared
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_AD_PERSONALIZATION" desc="A bullet in a list of data that gets deleted from the user's device when they choose 'Clear data' for a specific site. 1) Go to chrome://settings/content. 2) From the 'Recent activity' list, choose a site. 3) Click the 'Clear data' button. The 'Clear site data?' dialog appears. This string will appear as a new bullet at the bottom of the dialog.">
Data that affects ad personalization is deleted
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_APPS" desc="Text for the dialog that warns about loss of offline data for installed app when clearing all storage data for site.">
Offline data in installed app will also be cleared
</message>
@ -3794,14 +3904,85 @@
<message name="IDS_SETTINGS_SITE_SETTINGS_NO_SITES_FOUND" desc="Explanation shown when there are no matching search results on All Sites page.">
No sites found
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK" desc="The label that is used to show the Bluetooth scanning setting is set to ask in site settings.">
Ask when a site wants to discover nearby Bluetooth devices
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_DESCRIPTION" desc="Description text on the page controlling whether sites can use Bluetooth scanning.">
Sites usually look for Bluetooth devices for features like setting up or syncing a low-energy beacon, a health or fitness tracker, or a smart light bulb
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK_RECOMMENDED" desc="The label that is used to show the Bluetooth scanning setting is set to ask (with the 'recommended' suffix) in site settings.">
Ask when a site wants to discover nearby Bluetooth devices (recommended)
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK" desc="The label that is used to show the Bluetooth scanning setting is set to ask in site settings.">
Sites can ask to look for Bluetooth devices
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCK" desc="The label that is used to show the Bluetooth scanning setting is set to block in site settings.">
Do not allow any site to discover nearby Bluetooth devices
Don't allow sites to look for Bluetooth devices
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ALLOWED_EXCEPTIONS" desc="The label for the section that displayed sites that are always allowed to use bluetooth scanning.">
Allowed to look for Bluetooth devices
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCKED_EXCEPTIONS" desc="The label for the section that displayed sites that are never allowed to use bluetooth scanning.">
Not allowed to look for Bluetooth devices
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_EXTENSION_ID_DESCRIPTION" desc="Description for an extension using its extension id.">
ID: <ph name="EXTENSION_ID">$1<ex>mhabknllooicelmdboebjilbohdbihln</ex></ph>
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_ALLOWED_SUB_LABEL" desc="1 of 3 possible states for the On-device site data setting. This text appears beneath the 'On-device site data' label and shows the user the state of the setting. With this status, sites have the most flexibility.">
Sites can save data on your device
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_BLOCKED_SUB_LABEL" desc="2 of 3 possible states for the On-device site data setting. This text appears beneath the 'On-device site data' label and shows the user the state of the setting. With this status, sites have the least flexibility.">
Sites aren't allowed to save data on your device
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_CLEAR_ON_EXIT_SUB_LABEL" desc="3 of 3 possible states for the On-device site data setting. This text appears beneath the 'On-device site data' label and shows the user the state of the setting. With this status, data stored on the user's device is deleted each time the user closes all Thorium windows.">
Site data is cleared from your device when you close all windows
</message>
<!-- Site Settings - Site Data Page-->
<message name="IDS_SETTINGS_SITE_DATA_PAGE_TITLE" desc="A page title for a new page. What is 'On-device site data'? When you interact with a site, that site can remember things about what you do. For example, you might place a pair of shoes in a shopping cart, close down your browser, and find those same shoes in your shopping cart when you visit the same site a week later. Sometimes that info is saved in the Cloud. Sometimes that info is saved on the user's device. There are several ways a site can save info to the user's device—for example, with cookies (text files saved to your device), small JavaScript databases, and even Thorium's new ad settings that are part of the Privacy Sandbox project (see details below). This page introduces the concept of on-device site data, allows the user to see which sites are using it, and allows the user to delete all saved data or just data from specific sites.">
On-device site data
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_DESCRIPTION" desc="A paragraph that appear beneath the page title: 'On-device site data'. It defines what on-device site data is. What is 'On-device site data'? When you interact with a site, that site can remember things about what you do. For example, you might place a pair of shoes in a shopping cart, close down your browser, and find those same shoes in your shopping cart when you visit the same site a week later. Sometimes that info is saved in the Cloud. Sometimes that info is saved on the user's device. There are several ways a site can save info to the user's device—for example, with cookies (text files saved to your device), small JavaScript databases, and even Thorium's new ad settings that are part of the Privacy Sandbox project (see details below). This page introduces the concept of on-device site data, allows the user to see which sites are using it, and allows the user to delete all saved data or just data from specific sites. **** CONTEXT PRIVACY SANDBOX **** Thorium's Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com.">
A site you visit can save info about what you're doing so that it works as you would expect — for example, to keep you signed in to a site or to save items in your shopping cart. Often sites save this info temporarily on your device.
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_DEFAULT_BEHAVIOR_HEADING" desc="A label on a permissions page. For example, see the Microphone permission at chrome://settings/content/microphone.">
Default behavior
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_DEFAULT_BEHAVIOR_DESCRIPTION" desc="A description of what 'Default behavior' means. For example, see the Microphone permission at chrome://settings/content/microphone.">
Sites automatically follow this setting when you visit them
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_ALLOW_RADIO_LABEL" desc="1 of 3 choices the user has regarding the 'default behavior' of the 'On-device site data' setting. This offers sites the most flexibility.">
Allow sites to save data on your device
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_ALLOW_RADIO_SUB_LABEL" desc="A description of the benefit/cost of choosing 'Sites can save content on your device'.">
Sites are more likely to work as you would expect
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_RADIO_LABEL" desc="2 of 3 choices the user has regarding the 'default behavior' of the 'On-device site data' setting.">
Delete data sites have saved to your device when you close all windows
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_RADIO_LABEL" desc="3 of 3 choices the user has regarding the 'default behavior' of the 'On-device site data' setting. We include 'not recommended' because the user could have a poor experience with any given site. Imagine getting prompted to sign in again every time you click a link?">
Don't allow sites to save data on your device (not recommended)
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_RADIO_SUB_LABEL" desc="A description of the benefit/cost of choosing 'Sites can save content on your device. * 'don't want to leave information on your device': We think that most users should allow all on-device site data because sites might break if they don't. But there are cases for which this info could prove harmful. Imagine a case of domestic abuse and a tech-savvy partner who can go into Thorium settings and find saved information about the activity of their partner. Or a journalist working in a sensitive environment. We want to convey the value of this option without alarming users.">
Sites may not work as you would expect. Choose this option if you don't want to leave information on your device about sites you visit.
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_CUSTOMIZED_BEHAVIOR_HEADING" desc="A label on a permissions page. For example, see the Microphone permission at chrome://settings/content/microphone.">
Customized behaviors
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_CUSTOMIZED_BEHAVIOR_DESCRIPTION" desc="A description of 'customized behaviors' that appear beneath the 'Customized behaviors' title. For example, see the Microphone permission at chrome://settings/content/microphone.">
Sites listed below follow a custom setting instead of the default
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_ALLOW_EXCEPTIONS_SUB_HEADING" desc="1 of 3. A label within 'Customized behaviors' that allows for exceptions to the 'On-device site data' setting. This label and the list of sites that can appear beneath it is only relevant if the user has chosen to not allow 'on-device site data' as the default value above.">
Allowed to save data on your device
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_EXCEPTIONS_SUB_HEADING" desc="3 of 3. A label within 'Customized behaviors' that allows for exceptions to the 'On-device site data' setting. This label and the list of sites that can appear beneath it is only relevant if the user has chosen to allow 'on-device site data' as the default value above.">
Not allowed to save data on your device
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_CONFIRM_DIALOG_TITLE" desc="The title of a dialog box that appears if the user chooses 'Don't allow sites to save data on your device (not recommended)'. This dialog essentially serves as a 'are you sure?' reminder.">
Sites you visit may stop working as designed
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_CONFIRM_DIALOG_DESCRIPTION" desc="A paragraph beneath the 'Sites you visit may stop working as designed' title on a dialog box that appears when a user chooses 'Don't allow sites to save data on your device (not recommended)'. We want to convey that sites are generally designed to rely on saving some information about the user. Usually this is benign, but sites can abuse this power, and so we qualify the statement with 'often'.">
Most sites you visit probably save data to your device, often to improve your experience by saving your preferences or information you share with the site. We recommend keeping this setting on.
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_CONFIRM_DIALOG_CONFIRM_BUTTON" desc="A button label. The user chose 'Don't allow sites to save data on your device (not recommended)'. As an 'are you sure' moment, we show the user a dialog box titled 'Sites you visit may stop working as designed.'. This string allows the user to confirm their intention to turn this setting off.">
Turn off
</message>
<message name="IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_CONFIRM_DIALOG_CANCEL_BUTTON" desc="A button label on the 'Sites you visit may stop working as designed' dialog.">
Cancel
</message>
<message name="IDS_SETTINGS_NO_BLUETOOTH_DEVICES_FOUND" desc="Explanation for not showing Bluetooth devices in site settings.">
@ -3918,6 +4099,9 @@
<message name="IDS_SETTINGS_SYNC_DISCONNECT_MANAGED_PROFILE_EXPLANATION" desc="The text to display in the 'Sign out of Thorium' dialog to stop syncing for managed profiles.">
Because this account is managed by <ph name="DOMAIN">$1<ex>example.com</ex></ph>, your bookmarks, history, passwords, and other settings will be cleared from this device. However, your data will remain stored in your Google Account and can be managed on <ph name="BEGIN_LINK">&lt;a href="$2" target=&quot;_blank&quot;&gt;<ex>&lt;a href="$2" target=&quot;_blank&quot;&gt;</ex></ph>Google Dashboard<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
</message>
<message name="IDS_SETTINGS_TURN_OFF_SYNC_MANAGED_PROFILE_EXPLANATION" desc="The text to display in the 'Turn Sync off' dialog to stop syncing for managed profiles.">
Because this account is managed by <ph name="DOMAIN">$1<ex>example.com</ex></ph> you will not be signed out of your Google Account. Your bookmarks, history, passwords, and other settings will no longer be synced. However, your previously synced data will remain stored in your Google Account and can be managed on <ph name="BEGIN_LINK">&lt;a href="$2" target=&quot;_blank&quot;&gt;<ex>&lt;a href="$2" target=&quot;_blank&quot;&gt;</ex></ph>Google Dashboard<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
</message>
<message name="IDS_SETTINGS_TURN_OFF_SYNC_DIALOG_TITLE" desc="The text to display on the title of the dialog to turn off sync.">
Turn off sync?
</message>

View file

@ -9,6 +9,9 @@
<message name="IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_ROLE_DESCRIPTION" desc="Description read by screen readers when focusing on the back button. Indicates to the user that activating the back button will cause the settings page to navigate away from the currently displaying subpage to the previous visited page. This text will only be announced by ThoriumVox and will not be visible in the UI.">
Click to navigate away from <ph name="SUBPAGE_TITLE">$1<ex>Bluetooth</ex> subpage</ph>.
</message>
<message name="IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL" desc="Text read by screen readers when focusing the learn more icon button which corresponds to the subpage title. If the icon button is activated, an external page with the corresponding help article is opened. This text will only be announced by screen readers and will not be visible in the UI.">
Learn more about: <ph name="SUBPAGE_TITLE">$1<ex>Payment methods</ex></ph>
</message>
<!-- Caption Subpage (strings used by the <settings-captions> element) -->
<message name="IDS_SETTINGS_CAPTIONS" desc="Title of the subpage for settings related to captions">

View file

@ -161,7 +161,7 @@
<structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_ENTERPRISE_WHITE" file="google_chrome/product_logo_enterprise_white.png" />
</then>
<else> <!-- not _google_chrome -->
<if expr="_google_chrome_for_testing and _use_internal_chrome_for_testing_icons">
<if expr="_is_chrome_for_testing_branded">
<then>
<if expr="is_linux">
<then>
@ -174,7 +174,7 @@
</else>
</if> <!-- is_linux -->
</then>
<else> <!-- not (_google_chrome_for_testing and _use_internal_chrome_for_testing_icons) -->
<else> <!-- not _is_chrome_for_testing_branded -->
<if expr="is_linux">
<then>
<structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_16" file="chromium/linux/product_logo_16.png" />
@ -186,7 +186,7 @@
</else>
</if> <!-- is_linux -->
</else>
</if> <!-- _google_chrome_for_testing and _use_internal_chrome_for_testing_icons -->
</if> <!-- _is_chrome_for_testing_branded -->
<structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_NAME_22" file="chromium/product_logo_name_22.png" />
<structure type="chrome_scaled_image" name="IDR_PRODUCT_LOGO_NAME_22_WHITE" file="chromium/product_logo_name_22_white.png" />
<structure type="chrome_scaled_image" name="IDR_PRODUCT_MASCOT" file="chromium/thorium_mascot.png" />

View file

@ -0,0 +1,20 @@
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
CANVAS_DIMENSIONS, 17,
PATH_COLOR_ARGB, 0xFF, 0x1A, 0x73, 0xE8,
MOVE_TO, 6, 0,
LINE_TO, 8, 0,
V_LINE_TO, 16,
H_LINE_TO, 6,
V_LINE_TO, 0,
CLOSE,
NEW_PATH,
PATH_COLOR_ARGB, 0xFF, 0x1A, 0x73, 0xE8,
MOVE_TO, 10, 0,
LINE_TO, 12, 0,
V_LINE_TO, 16,
H_LINE_TO, 10,
V_LINE_TO, 0,
CLOSE

View file

@ -13,11 +13,11 @@
#include <vector>
#include "base/base_paths.h"
#include "base/bind.h"
#include "base/callback.h"
#include "base/callback_helpers.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
@ -496,10 +496,7 @@ void BackgroundModeManager::OnAppTerminating() {
void BackgroundModeManager::OnExtensionsReady(Profile* profile) {
BackgroundModeManager::BackgroundModeData* bmd =
GetBackgroundModeData(profile);
if (bmd) {
UMA_HISTOGRAM_COUNTS_100("BackgroundMode.BackgroundApplicationsCount",
bmd->applications()->size());
}
// Extensions are loaded, so we don't need to manually keep the browser
// process alive any more when running in no-startup-window mode.
ReleaseStartupKeepAlive();

View file

@ -1,4 +1,4 @@
// Copyright 2022 The Chromium Authors and Alex313031. All rights reserved.
// Copyright 2023 The Chromium Authors and Alex313031
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -9,10 +9,10 @@
#include <utility>
#include <vector>
#include "base/bind.h"
#include "base/callback.h"
#include "base/check.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/location.h"
#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_macros.h"
@ -50,7 +50,6 @@
#if BUILDFLAG(IS_WIN)
#include "base/enterprise_util.h"
#include "base/win/win_util.h"
#include "base/win/windows_version.h"
#include "chrome/browser/win/parental_controls.h"
#endif
@ -83,18 +82,7 @@ enum class SecureDnsModeDetailsForHistogram {
#if BUILDFLAG(IS_WIN)
bool ShouldDisableDohForWindowsParentalControls() {
const WinParentalControls& parental_controls = GetWinParentalControls();
if (parental_controls.web_filter)
return true;
// Some versions before Windows 8 may not fully support |web_filter|, so
// conservatively disable doh for any recognized parental controls.
if (parental_controls.any_restrictions &&
base::win::GetVersion() < base::win::Version::WIN8) {
return true;
}
return false;
return GetWinParentalControls().web_filter;
}
#endif // BUILDFLAG(IS_WIN)
@ -246,7 +234,7 @@ bool StubResolverConfigReader::ShouldDisableDohForManaged() {
#elif BUILDFLAG(IS_WIN)
// TODO(crbug.com/1339062): What is the correct function to use here? (This
// may or may not obsolete the following TODO)
// TODO (crbug.com/1320766): For legacy compatibility, this uses
// TODO(crbug.com/1320766): For legacy compatibility, this uses
// IsEnterpriseDevice() which effectively equates to a domain join check.
// Consider whether this should use IsManagedDevice() instead.
if (base::win::IsEnrolledToDomain())

View file

@ -12,11 +12,11 @@
#include <string>
#include <vector>
#include "base/bind.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/logging.h"
#include "base/path_service.h"
#include "base/ranges/algorithm.h"

View file

@ -5,6 +5,7 @@
#include "chrome/browser/ui/browser_ui_prefs.h"
#include <memory>
#include <string>
#include "base/numerics/safe_conversions.h"
#include "build/build_config.h"
@ -25,10 +26,6 @@
#include "ui/accessibility/accessibility_features.h"
#endif
#if defined(OS_WIN)
#include "base/win/windows_version.h"
#endif
namespace {
uint32_t GetHomeButtonAndHomePageIsNewTabPageFlags() {
@ -69,7 +66,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
bool reset_check_default = false;
#if defined(OS_WIN)
reset_check_default = base::win::GetVersion() >= base::win::Version::WIN10;
reset_check_default = true;
#endif
registry->RegisterBooleanPref(prefs::kResetCheckDefaultBrowser,
reset_check_default);

View file

@ -1,4 +1,4 @@
// Copyright 2022 The Chromium Authors and Alex313031. All rights reserved.
// Copyright 2023 The Chromium Authors and Alex313031. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -6,8 +6,8 @@
#include <memory>
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h"
#include "base/task/single_thread_task_runner.h"
@ -90,13 +90,6 @@ std::u16string DefaultBrowserInfoBarDelegate::GetButtonLabel(
return l10n_util::GetStringUTF16(IDS_DEFAULT_BROWSER_INFOBAR_OK_BUTTON_LABEL);
}
// Setting an app as the default browser doesn't require elevation directly, but
// it does require registering it as the protocol handler for "http", so if
// protocol registration in general requires elevation, this does as well.
bool DefaultBrowserInfoBarDelegate::OKButtonTriggersUACPrompt() const {
return shell_integration::IsElevationNeededForSettingDefaultProtocolClient();
}
bool DefaultBrowserInfoBarDelegate::Accept() {
action_taken_ = true;
base::RecordAction(base::UserMetricsAction("DefaultBrowserInfoBar_Accept"));

View file

@ -27,7 +27,7 @@
#include "content/public/common/content_switches.h"
#include "google_apis/google_api_keys.h"
#if BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING)
#if BUILDFLAG(CHROME_FOR_TESTING)
#include "chrome/browser/ui/startup/chrome_for_testing_infobar_delegate.h"
#endif
@ -63,6 +63,13 @@ bool IsKioskModeEnabled() {
switches::kKioskMode);
}
#if BUILDFLAG(CHROME_FOR_TESTING)
bool IsGpuTest() {
return base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
switches::kTestType) == "gpu";
}
#endif
} // namespace
void AddInfoBarsIfNecessary(Browser* browser,
@ -80,13 +87,11 @@ void AddInfoBarsIfNecessary(Browser* browser,
browser->tab_strip_model()->GetActiveWebContents();
DCHECK(web_contents);
infobars::ContentInfoBarManager* infobar_manager =
infobars::ContentInfoBarManager::FromWebContents(web_contents);
if (show_bad_flags_security_warnings) {
#if BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING)
// TODO(crbug.com/1336611): Switch to a global infobar.
ChromeForTestingInfoBarDelegate::Create(infobar_manager);
#if BUILDFLAG(CHROME_FOR_TESTING)
if (!IsGpuTest()) {
ChromeForTestingInfoBarDelegate::Create();
}
#endif
if (IsAutomationEnabled())

View file

@ -91,34 +91,16 @@ BASE_FEATURE(kQuickCommands,
"QuickCommands",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the side search feature for Google Search. Presents recent Google
// search results in a browser side panel.
BASE_FEATURE(kSideSearch, "SideSearch", base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kSideSearchFeedback,
"SideSearchFeedback",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether the Side Search feature is configured to support any
// participating Chrome search engine. This should always be enabled with
// kSideSearch on non-ChromeOS platforms.
BASE_FEATURE(kSideSearchDSESupport,
"SideSearchDSESupport",
base::FEATURE_ENABLED_BY_DEFAULT);
// Displays right-click search results of a highlighted text in side panel,
// So users are not forced to switch to a new tab to view the search results
BASE_FEATURE(kSearchWebInSidePanel,
"SearchWebInSidePanel",
base::FEATURE_DISABLED_BY_DEFAULT);
// Whether to clobber all side search side panels in the current browser window
// or only the side search in the current tab before read later or lens side
// panel is open.
BASE_FEATURE(kClobberAllSideSearchSidePanels,
"ClobberAllSideSearchSidePanels",
base::FEATURE_ENABLED_BY_DEFAULT);
// Feature that controls whether or not feature engagement configurations can be
// used to control automatic triggering for side search.
BASE_FEATURE(kSideSearchAutoTriggering,
@ -131,13 +113,6 @@ BASE_FEATURE(kSideSearchAutoTriggering,
const base::FeatureParam<int> kSideSearchAutoTriggeringReturnCount{
&kSideSearchAutoTriggering, "SideSearchAutoTriggeringReturnCount", 2};
// Adds improved support for handling multiple contextual and global RHS browser
// side panels. Designed specifically to handle the interim state before the v2
// side panel project launches.
BASE_FEATURE(kSidePanelImprovedClobbering,
"SidePanelImprovedClobbering",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kSidePanelWebView,
"SidePanelWebView",
base::FEATURE_ENABLED_BY_DEFAULT);
@ -146,6 +121,10 @@ BASE_FEATURE(kSidePanelJourneysQueryless,
"SidePanelJourneysQueryless",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSidePanelSearchCompanion,
"SidePanelSearchCompanion",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables tabs to scroll in the tabstrip. https://crbug.com/951078
BASE_FEATURE(kScrollableTabStrip,
"ScrollableTabStrip",
@ -155,7 +134,7 @@ const char kMinimumTabWidthFeatureParameterName[] = "minTabWidth";
// Enables buttons when scrolling the tabstrip https://crbug.com/951078
BASE_FEATURE(kTabScrollingButtonPosition,
"TabScrollingButtonPosition",
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT);
const char kTabScrollingButtonPositionParameterName[] = "buttonPosition";
// Enables tab scrolling while dragging tabs in tabstrip
@ -295,10 +274,6 @@ BASE_FEATURE(kTopChromeWebUIUsesSpareRenderer,
"TopChromeWebUIUsesSpareRenderer",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kUnifiedSidePanel,
"UnifiedSidePanel",
base::FEATURE_ENABLED_BY_DEFAULT);
// This enables enables persistence of a WebContents in a 1-to-1 association
// with the current Profile for WebUI bubbles. See https://crbug.com/1177048.
BASE_FEATURE(kWebUIBubblePerProfilePersistence,

View file

@ -1,4 +1,4 @@
// Copyright (c) 2022 The Chromium Authors and Alex313031
// Copyright (c) 2023 The Chromium Authors and Alex313031
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -6,7 +6,6 @@
#include "build/branding_buildflags.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/chrome_for_testing/buildflags.h"
#include "chrome/common/chrome_version.h"
@ -15,7 +14,7 @@
#if BUILDFLAG(IS_MAC)
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
#define PRODUCT_STRING "Thorium"
#elif BUILDFLAG(USE_INTERNAL_CHROME_FOR_TESTING_ICONS)
#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING)
#define PRODUCT_STRING "Thorium for Testing"
#elif BUILDFLAG(CHROMIUM_BRANDING)
#define PRODUCT_STRING "Thorium"
@ -178,11 +177,6 @@ const wchar_t kUserDataDirname[] = L"User Data";
const float kMaxShareOfExtensionProcesses = 0.30f;
#if BUILDFLAG(IS_CHROMEOS_ASH)
const char kLockScreenAppProfile[] = "LockScreenAppsProfile";
const char kLockScreenProfile[] = "LockScreenProfile";
#endif
// This GUID is associated with any 'don't ask me again' settings that the
// user can select for different file types.
// {2676A9A2-D919-4FEE-9187-152100393AB2}

View file

@ -25,8 +25,8 @@ inline bool EndsWith(const std::wstring& value, const std::wstring& ending) {
const wchar_t kPolicyRegistryKey[] = L"SOFTWARE\\Policies\\Google\\Chrome";
const wchar_t kUserDataDirNameSuffix[] = L"\\Google\\Chrome\\User Data";
#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING)
const wchar_t kPolicyRegistryKey[] =
L"SOFTWARE\\Policies\\Google\\Chrome for Testing";
// kPolicyRegistryKey: same as Chromium
const wchar_t kPolicyRegistryKey[] = L"SOFTWARE\\Policies\\Chromium";
const wchar_t kUserDataDirNameSuffix[] =
L"\\Google\\Chrome for Testing\\User Data";
#else

View file

@ -9,6 +9,7 @@ Package: @@PACKAGE@@
Provides: @@PROVIDES@@
Pre-Depends: @@PREDEPENDS@@
Depends: @@DEPENDS@@
Recommends: @@RECOMMENDS@@
Conflicts: thorium-browser-unstable
Replaces: thorium-browser-unstable
Architecture: @@ARCHITECTURE@@

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit-part>
<if expr="not use_titlecase">
@ -9,6 +9,9 @@
<message name="IDS_AUTOFILL_NO_THANKS_DESKTOP_UPLOAD_SAVE" desc="The label for cancel button used in autofill credit card upload save bubble on desktop.">
No thanks
</message>
<message name="IDS_AUTOFILL_SAVE_IBAN_BUBBLE_LOCAL_SAVE_NO_THANKS" desc="The text label for `No thanks` button used in autofill prompt IBAN (International Bank Account Number) local save bubble on desktop.">
No thanks
</message>
</if>
<if expr="use_titlecase">
<message name="IDS_AUTOFILL_NO_THANKS_DESKTOP_LOCAL_SAVE" desc="In Title Case: The label for cancel button used in autofill credit card local save bubble on desktop.">
@ -17,6 +20,9 @@
<message name="IDS_AUTOFILL_NO_THANKS_DESKTOP_UPLOAD_SAVE" desc="In Title Case: The label for cancel button used in autofill credit card upload save bubble on desktop.">
No Thanks
</message>
<message name="IDS_AUTOFILL_SAVE_IBAN_BUBBLE_LOCAL_SAVE_NO_THANKS" desc="The text label for `No Thanks` button used in autofill prompt IBAN (International Bank Account Number) local save bubble on desktop.">
No Thanks
</message>
</if>
<if expr="is_android or is_ios">
@ -329,9 +335,6 @@
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS" desc="Text explaining what the user should do in the card unmasking dialog.">
After you confirm, card details from your Google Account will be shared with this site.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS_LOCAL_CARD" desc="Text explaining what the user should do in the card unmasking dialog. Appears specifically for local cards already stored on the device.">
Once you confirm, your card details will be shared with this site.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS_VIRTUAL_CARD" desc="Text providing instructions on how to unmask virtual card.">
Enter the <ph name="NUMBER_OF_DIGITS">$1<ex>3</ex></ph>-digit security code on the <ph name="SIDE_OF_CARD">$2<ex>back of your card</ex></ph> so your bank can verify it's you
</message>
@ -341,6 +344,9 @@
<message name="IDS_AUTOFILL_CARD_UNMASK_CVC_IMAGE_DESCRIPTION" desc="Accessible description for the CVC image. It should describe where to find the CVC on a credit card.">
The CVC is located behind your card.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_CVC_IMAGE_DESCRIPTION_FOR_AMEX" desc="Accessible description for the CVC image. It should describe where to find the CVC on an American Express credit card.">
The CVC is located on the front of your card.
</message>
</if>
<if expr="is_ios">
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_TITLE" desc="Title for the credit card unmasking dialog.">
@ -349,15 +355,9 @@
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS" desc="Text explaining what the user should do in the card unmasking dialog.">
Enter the CVC for <ph name="CREDIT_CARD">$1<ex>Visa - 5679</ex></ph>. After you confirm, card details from your Google Account will be shared with this site.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS_LOCAL_CARD" desc="Text explaining what the user should do in the card unmasking dialog. Appears specifically for local cards already stored on the device.">
Enter the CVC for <ph name="CREDIT_CARD">$1<ex>Visa - 5679</ex></ph>. Once you confirm, your card details will be shared with this site.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS_EXPIRED" desc="Text explaining what the user should do in the card unmasking dialog to update an expired card.">
Enter the expiration date and CVC for <ph name="CREDIT_CARD">$1<ex>Visa - 5679</ex></ph> to update your card details. After you confirm, card details from your Google Account will be shared with this site.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_INSTRUCTIONS_EXPIRED_LOCAL_CARD" desc="Text explaining what the user should do in the card unmasking dialog to update an expired card. Appears specifically for local cards already stored on the device.">
Enter the expiration date and CVC for <ph name="CREDIT_CARD">$1<ex>Visa - 5679</ex></ph> to update your card details. Once you confirm, your card details will be shared with this site.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_PROMPT_CVC_FIELD_TITLE" desc="The name of the field for credit card verification code in the card unmasking dialog. The text field where this is presented can be very narrow, so please prefer to translate this to the most common abbreviated form. [CHAR_LIMIT=4]">
CVC
</message>
@ -508,6 +508,23 @@
From Google Pay
</message>
<!--IBAN (International Bank Account Number) related strings - start -->
<message name="IDS_AUTOFILL_SAVE_IBAN_PROMPT_TITLE_LOCAL" desc="Title text for the Autofill save IBAN (International Bank Account Number) prompt when a user submits a form with a valid IBAN.">
Save IBAN to this device?
</message>
<message name="IDS_AUTOFILL_SAVE_IBAN_LABEL" desc="Text to show for the Autofill prompt IBAN (International Bank Account Number) label where user can see the IBAN to be saved.">
IBAN
</message>
<message name="IDS_AUTOFILL_SAVE_IBAN_BUBBLE_LOCAL_SAVE_ACCEPT" desc="The text label for `Save` button used in autofill prompt IBAN (International Bank Account Number) save bubble on desktop.">
Save
</message>
<message name="IDS_AUTOFILL_SAVE_IBAN_PROMPT_NICKNAME" desc="Text to show for the autofill prompt IBAN (International Bank Account Number) save bubble where user can enter nickname optionally.">
Nickname
</message>
<message name="IDS_AUTOFILL_SAVE_IBAN_PLACEHOLDER" desc="The placeholder/label text to show for the autofill prompt IBAN (International Bank Account Number) save bubble to indicate that user can enter nickname optionally.">
Optional
</message>
<!-- virtual cards related strings - start -->
<if expr="not is_ios and not is_android">
<message name="IDS_AUTOFILL_CLOUD_TOKEN_DROPDOWN_OPTION_LABEL" desc="Text shown in the button in the Autofill dropdown menu when a credit card form field is queried, to offer the option to use a virtual card.">
@ -653,10 +670,10 @@
<message name="IDS_AUTOFILL_CARD_UNMASK_AUTHENTICATION_SELECTION_DIALOG_CURRENT_INFO_NOT_SEEN_TEXT" desc="The current info not seen text shown in the Autofill card unmask authentication selection dialog on Desktop. It is the footer text on the dialog, and it instructs the user on what to do if they can not see their most up to date authentication information. This dialog lets the user choose the method of authentication when unmasking a server card, including a virtual card.">
Not seeing your current info? Contact your bank to update it.
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_AUTHENTICATION_SELECTION_DIALOG_OK_BUTTON_LABEL_CONTINUE" desc="The continue button label shown in the Autofill card unmask authentication selection dialog on Desktop. This dialog lets the user choose the method of authentication when unmasking a server card, including a virtual card. This label is used when there is more than one challenge option presented.">
<message name="IDS_AUTOFILL_CARD_UNMASK_AUTHENTICATION_SELECTION_DIALOG_OK_BUTTON_LABEL_CONTINUE" desc="The continue button label shown in the Autofill card unmask authentication selection dialog on Desktop. This dialog lets the user choose the method of authentication when unmasking a server card, including a virtual card. This label is used when the challenge option just requires the user to continue the flow." formatter_data="android_java">
Continue
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_AUTHENTICATION_SELECTION_DIALOG_OK_BUTTON_LABEL_SEND" desc="The ok button label shown in the Autofill card unmask authentication selection dialog on Desktop. This dialog lets the user choose the method of authentication when unmasking a server card, including a virtual card.">
<message name="IDS_AUTOFILL_CARD_UNMASK_AUTHENTICATION_SELECTION_DIALOG_OK_BUTTON_LABEL_SEND" desc="The ok button label shown in the Autofill card unmask authentication selection dialog on Desktop and Android. This dialog lets the user choose the method of authentication when unmasking a server card, including a virtual card. This is the label used when the challenge option requires a step where something needs to be sent to the user, for example an SMS that contains an OTP." formatter_data="android_java">
Send
</message>
<message name="IDS_AUTOFILL_CARD_UNMASK_AUTHENTICATION_SELECTION_DIALOG_CVC_CHALLENGE_INFO" desc="Text that is shown for the security code challenge option in the Card Unmask Authentication Selection Dialog. This text lets the user know where the location of the security code is on their card. If the user selects this challenge option and then accepts the dialog, the user will be prompted to enter this security code. An example of a security code is the CVC on the back of the user's credit card.">
@ -786,6 +803,18 @@
<message name="IDS_AUTOFILL_CREDIT_CARD_CONTINUE_BUTTON" desc="The label of the button, which would fill in the web form with card credentials." formatter_data="android_java">
Continue
</message>
<message name="IDS_AUTOFILL_CREDIT_CARD_BOTTOM_SHEET_CONTENT_DESCRIPTION" desc="Accessibility string read when the bottom sheet is opened. It describes the bottom sheet where a user can pick a payment method to fill into a form." formatter_data="android_java">
Payment methods available to be filled on touch. Keyboard hidden.
</message>
<message name="IDS_AUTOFILL_CREDIT_CARD_BOTTOM_SHEET_HALF_HEIGHT" desc="Accessibility string read when the bottom sheet showing a list of the user's payment methods is opened at half height. The sheet will occupy the bottom half the screen." formatter_data="android_java">
Payment methods available to be filled on touch opened at half height.
</message>
<message name="IDS_AUTOFILL_CREDIT_CARD_BOTTOM_SHEET_FULL_HEIGHT" desc="Accessibility string read when the bottom sheet showing a list of the user's payment methods is opened at full height. The sheet will occupy the entire screen." formatter_data="android_java">
Payment methods available to be filled on touch opened at full height.
</message>
<message name="IDS_AUTOFILL_CREDIT_CARD_BOTTOM_SHEET_CLOSED" desc="Accessibility string read when the bottom sheet showing a list of the user's payment methods is closed." formatter_data="android_java">
List of payment methods is closed.
</message>
</if>
</grit-part>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit-part>
<if expr="not is_ios">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit latest_public_release="0" current_release="1"
output_all_resource_defines="false" source_lang_id="en" enc_check="möl">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit-part>
<message name="IDS_ERRORPAGE_NET_BUTTON_DETAILS" desc="Label for the button that expands the details on a net error page">

View file

@ -168,7 +168,7 @@
Device access actions such as logins (including failed login reasons), logouts, locks, and unlocks
</message>
<message name="IDS_MANAGEMENT_REPORT_CRD_SESSIONS" desc="Message stating that administrators can see Thorium Remote Desktop events.">
Chrome Remote Desktop history, including timestamps, hosts and client session ids
Thorium Remote Desktop history, including timestamps, hosts and client session ids
</message>
<message name="IDS_MANAGEMENT_CROSTINI" desc="Message stating that administrators can see Crostini usage">
Linux apps installed and when they were last used
@ -291,6 +291,9 @@
<message name="IDS_MANAGEMENT_PAGE_VISITED_EVENT" desc="Event for the real time URL check feature.">
Page is visited
</message>
<message name="IDS_MANAGEMENT_SCREEN_CAPTURE_EVENT" desc="Event for the multi screen capture feature.">
Screen capture has started
</message>
<message name="IDS_MANAGEMENT_FILE_ATTACHED_VISIBLE_DATA" desc="Description of the visible data for the file attachment scanning feature.">
Files you upload or attach are sent to Google Cloud or third parties for analysis. For example, they might be scanned for sensitive data or malware and might be stored based on company policies.
</message>
@ -304,13 +307,16 @@
The content of pages you print is sent to Google Cloud or third parties for analysis. For example, it might be scanned for sensitive data.
</message>
<message name="IDS_MANAGEMENT_FILE_TRANSFER_VISIBLE_DATA" desc="Description of the visible data for the file transfer scanning feature.">
Files you copy or move are sent to Google Cloud or third parties for analysis. For example, they might be scanned for sensitive data or malware.
Files you copy or move are sent to Google Cloud or third parties for analysis. For example, they might be scanned for sensitive data or malware and might be stored based on company policies.
</message>
<message name="IDS_MANAGEMENT_SCREEN_CAPTURE_DATA" desc="Description of the visible data for the multi screen capture feature.">
Applications authorized by your administrator can capture all screens attached to your device. This information can be processed locally or uploaded to your organizations servers.
</message>
<message name="IDS_MANAGEMENT_ENTERPRISE_REPORTING_VISIBLE_DATA" desc="Description of the visible data for the Connectors reporting feature">
When security events are flagged by Thorium, relevant data about the events is sent to your administrator. This can include URLs of pages you visit in Thorium, file names or metadata, and the username that you use to sign in to web based applications, your device and Thorium.
</message>
<message name="IDS_MANAGEMENT_PAGE_VISITED_VISIBLE_DATA" desc="Description of the visible data for the real time URL check feature.">
URLs of pages you visit are sent to Google Cloud or third parties for analysis. For example, they might be scanned to detect unsafe websites.
URLs of pages you visit are sent to Google Cloud or third parties for analysis. For example, they might be scanned to detect unsafe websites or filter websites based on rules set by the administrator.
</message>
</if>
</grit-part>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit-part>
<!-- Security summary strings -->
<message name="IDS_PAGE_INFO_SECURE_SUMMARY" desc="A short summary phrase at the top of the Page Info bubble (which shows when you click the lock icon) that indicates that the connection to the current website is secure.">
@ -46,12 +46,6 @@
</message>
<!-- Safety Tip summary strings -->
<message name="IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_TITLE" desc="Message to display in the page info bubble when the page you are on triggered a safety tip.">
Suspicious site
</message>
<message name="IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_LEAVE_BUTTON" desc="Text of button to leave a suspicious page. Shown on the safety tip page info bubble.">
Leave site
</message>
<message name="IDS_PAGE_INFO_SAFETY_TIP_MORE_INFO_LINK" desc="Text of link to Help Center page on safety tip page info bubble.">
Learn more
</message>
@ -263,8 +257,8 @@
<message name="IDS_PAGE_INFO_NUM_COOKIES" desc="The label of the counts for allowed cookies that are in use on the page. This text will be shown next to IDS_PAGE_INFO_COOKIES_BUTTON_TEXT. It is the same as IDS_PAGE_INFO_NUM_COOKIES_PARENTHESIZED, but without parenthesis">
{NUM_COOKIES, plural, =1 {1 in use} other {# in use}}
</message>
<message name="IDS_PAGE_INFO_COOKIES_TOOLTIP" desc="The text of the tooltip on IDS_PAGE_INFO_NUM_COOKIES_PARENTHESIZED.">
Show cookies
<message name="IDS_PAGE_INFO_COOKIES_TOOLTIP" desc="A tooltip that appears when the user hovers over the 'Cookies and site data' button. Options on the next screen include: Block third-party cookies, Manage cookies and site data, and See related sites.">
Options for cookies and site data
</message>
</if>
@ -717,8 +711,8 @@
<message name="IDS_PAGE_INFO_COOKIES_DIALOG_BUTTON_TITLE" desc="The title on the button opening cookies in use dialog in cookies subpage.">
Manage cookies and site data
</message>
<message name="IDS_PAGE_INFO_COOKIES_DIALOG_BUTTON_TOOLTIP" desc="The text of the tooltip on the button opening cookies in use dialog in cookies subpage.">
Show cookies
<message name="IDS_PAGE_INFO_COOKIES_DIALOG_BUTTON_TOOLTIP" desc="A tooltip that appears when the user hovers over the 'Manage cookies and site data' button. The following screen shows cookies and other forms of site data used by the site the user is viewing.">
Review a list of cookies and site data in a new window
</message>
<message name="IDS_PAGE_INFO_FPS_BUTTON_TOOLTIP" desc="The tooltip of first-party sets button in cookies subpage, which opens 'All Sites' settings page in a new tab with a filter for this set's pages.">
See related sites in a new tab
@ -775,4 +769,24 @@
Your organization has blocked this site because it violates a policy.
</message>
<!-- Ad privacy strings -->
<message name="IDS_PAGE_INFO_AD_PRIVACY_HEADER" desc="A label that represents the new ad-related settings. 1) Navigate to any site. 2) Click the icon (often a lock) to the left of the URL in the address bar. Information about the page you're viewing appears. The 'Ad privacy' label will appear above the 'Site settings' button.">
Ad privacy
</message>
<message name="IDS_PAGE_INFO_AD_PRIVACY_TOOLTIP" desc="A tooltip label that appears when a user hovers over the 'Ad privacy' button label. 1) Navigate to any site. 2) Click the icon (often a lock) to the left of the URL in the address bar. Information about the page you're viewing appears. The 'Ad privacy' label will appear above the 'Site settings' button. 3) Hover over the 'Ad privacy' button label and this text will appear to help users understand why they might want to open 'Ad privacy'.">
See info used to show you ads
</message>
<message name="IDS_PAGE_INFO_AD_PRIVACY_TOPICS_DESCRIPTION" desc="1 of 3 possible descriptions a user might see when they choose 'Ad privacy' from page info for a specific site. 1) Navigate to any site. 2) Click the icon (often a lock) to the left of the URL in the address bar. Information about the page you're viewing appears. The 'Ad privacy' label will appear above the 'Site settings' button. 3) Click on Ad privacy. This string describes the case that the site being viewed uses the Ad topics setting. What's the Ad topics setting? When on, Thorium will estimate the user's topics of interest based on their recent browsing history and then show up to 3 of those topics with a site so that the site can better personalize ads (a privacy-preserving way to replicate some of the functionality of third-party cookies). In this case, we're informing the user that this site uses the Ad topics API and we're showing the user the ad topics Thorium has shared with the site. A button 'Manage ad privacy' allows the user to turn 'Ad privacy' settings on/off or to block specific ad topics.">
This site gets your ad topics from Thorium to show you more relevant ads
</message>
<message name="IDS_PAGE_INFO_AD_PRIVACY_FLEDGE_DESCRIPTION" desc="2 of 3 possible descriptions a user might see when they choose 'Ad privacy' from page info for a specific site. 1) Navigate to any site. 2) Click the icon (often a lock) to the left of the URL in the address bar. Information about the page you're viewing appears. The 'Ad privacy' label will appear above the 'Site settings' button. 3) Click on Ad privacy. This string describes the case that the site being viewed uses the Site-suggested ads setting. What's the Site-suggested ads setting? When on, a site can determine a user's interests, save info with Thorium relative to those interests. Later, as a user continues browsing, a site can ask Thorium for a user's interests and the first site can (through Thorium) suggest ads the user might like. In this case, we're informing the user that this site uses the Site-suggested ads API. A button 'Manage ad privacy' allows the user to turn 'Ad privacy' settings on/off or to block specific ad topics.">
This site determines things you like and then suggests ads to other sites
</message>
<message name="IDS_PAGE_INFO_AD_PRIVACY_TOPICS_AND_FLEDGE_DESCRIPTION" desc="3 of 3 possible descriptions a user might see when they choose 'Ad privacy' from page info for a specific site. 1) Navigate to any site. 2) Click the icon (often a lock) to the left of the URL in the address bar. Information about the page you're viewing appears. The 'Ad privacy' label will appear above the 'Site settings' button. 3) Click on Ad privacy. This string describes the case that the site being viewed uses both the Ad topics &amp; Site-suggested ads settings. AD TOPICS: When on, Thorium will estimate the user's topics of interest based on their recent browsing history and then show up to 3 of those topics with a site so that the site can better personalize ads (a privacy-preserving way to replicate some of the functionality of third-party cookies). SITE-SUGGESTED ADS: When on, a site can determine a user's interests, save info with Thorium relative to those interests. Later, as a user continues browsing, a site can ask Thorium for a user's interests and the first site can (through Thorium) suggest ads the user might like. In this case, we're informing the user that this site 1) has asked Thorium for the user's interests (the Ad topics setting), and 2) uses the Site-suggested ads API (this site determines the user's interests and then can suggest ads to other sites as the user continues browsing). A button 'Manage ad privacy' allows the user to turn 'Ad privacy' settings on/off or to block specific ad topics or sites.">
This site determines things you like and then suggests ads to other sites. This site also gets your ad topics from Thorium to show you more relevant ads.
</message>
<message name="IDS_PAGE_INFO_AD_PRIVACY_SUBPAGE_MANAGE_BUTTON" desc="A button label that opens the Ad privacy page, allowing a user to turn on / off the ad privacy settings and to manage the topics and sites that influence ad personalization.">
Manage ad privacy
</message>
</grit-part>

View file

@ -6,7 +6,6 @@
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
namespace prefs {
@ -81,6 +80,18 @@ extern const char kPrivacySandboxFirstPartySetsDataAccessAllowedInitialized[] =
extern const char kPrivacySandboxFirstPartySetsEnabled[] =
"privacy_sandbox.first_party_sets_enabled";
extern const char kPrivacySandboxTopicsConsentGiven[] =
"privacy_sandbox.topics_consent.consent_given";
extern const char kPrivacySandboxTopicsConsentLastUpdateTime[] =
"privacy_sandbox.topics_consent.last_update_time";
extern const char kPrivacySandboxTopicsConsentLastUpdateReason[] =
"privacy_sandbox.topics_consent.last_update_reason";
extern const char kPrivacySandboxTopicsConsentTextAtLastUpdate[] =
"privacy_sandbox.topics_consent.text_at_last_update";
} // namespace prefs
namespace privacy_sandbox {
@ -89,7 +100,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kPrivacySandboxApisEnabled, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(prefs::kPrivacySandboxApisEnabledV2, false);
registry->RegisterBooleanPref(prefs::kPrivacySandboxApisEnabledV2, true);
registry->RegisterBooleanPref(prefs::kPrivacySandboxM1ConsentDecisionMade,
false);
registry->RegisterBooleanPref(prefs::kPrivacySandboxM1EEANoticeAcknowledged,
@ -132,6 +143,16 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kPrivacySandboxFirstPartySetsEnabled, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(prefs::kPrivacySandboxTopicsConsentGiven,
false);
registry->RegisterTimePref(prefs::kPrivacySandboxTopicsConsentLastUpdateTime,
base::Time());
registry->RegisterIntegerPref(
prefs::kPrivacySandboxTopicsConsentLastUpdateReason,
static_cast<int>(TopicsConsentUpdateSource::kDefaultValue));
registry->RegisterStringPref(
prefs::kPrivacySandboxTopicsConsentTextAtLastUpdate, "");
}
} // namespace privacy_sandbox

View file

@ -1,476 +0,0 @@
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/privacy_sandbox/privacy_sandbox_settings.h"
#include "base/feature_list.h"
#include "base/json/values_util.h"
#include "base/observer_list.h"
#include "base/ranges/algorithm.h"
#include "base/time/time.h"
#include "components/content_settings/core/browser/cookie_settings.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/content_settings/core/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/scoped_user_pref_update.h"
#include "components/privacy_sandbox/privacy_sandbox_features.h"
#include "components/privacy_sandbox/privacy_sandbox_prefs.h"
#include "content/public/common/content_features.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/cookies/site_for_cookies.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace privacy_sandbox {
namespace {
constexpr char kBlockedTopicsTopicKey[] = "topic";
constexpr char kBlockedTopicsBlockTimeKey[] = "blockedOn";
bool IsCookiesClearOnExitEnabled(HostContentSettingsMap* map) {
return map->GetDefaultContentSetting(ContentSettingsType::COOKIES,
/*provider_id=*/nullptr) ==
ContentSetting::CONTENT_SETTING_SESSION_ONLY;
}
// Convert a stored FLEDGE block eTLD+1 into applicable content settings
// patterns. This ensures that if Public Suffix List membership changes, the
// stored item continues to match as when it was set. Multiple patterns are set
// to support IP address fallbacks, which do not support [*.] prefixes.
// TODO (crbug.com/1287153): This is somewhat hacky and can be removed when
// FLEDGE is controlled by a content setting directly.
std::vector<ContentSettingsPattern> FledgeBlockToContentSettingsPatterns(
const std::string& entry) {
return {ContentSettingsPattern::FromString("[*.]" + entry),
ContentSettingsPattern::FromString(entry)};
}
// Returns a base::Value for storage in prefs that represents |topic| blocked
// at the current time.
base::Value CreateBlockedTopicEntry(const CanonicalTopic& topic) {
base::Value entry(base::Value::Type::DICTIONARY);
entry.SetKey(kBlockedTopicsTopicKey, topic.ToValue());
entry.SetKey(kBlockedTopicsBlockTimeKey,
base::TimeToValue(base::Time::Now()));
return entry;
}
} // namespace
PrivacySandboxSettings::PrivacySandboxSettings(
std::unique_ptr<Delegate> delegate,
HostContentSettingsMap* host_content_settings_map,
scoped_refptr<content_settings::CookieSettings> cookie_settings,
PrefService* pref_service)
: delegate_(std::move(delegate)),
host_content_settings_map_(host_content_settings_map),
cookie_settings_(cookie_settings),
pref_service_(pref_service) {
DCHECK(pref_service_);
DCHECK(host_content_settings_map_);
DCHECK(cookie_settings_);
// "Clear on exit" causes a cookie deletion on shutdown. But for practical
// purposes, we're notifying the observers on startup (which should be
// equivalent, as no cookie operations could have happened while the profile
// was shut down).
if (IsCookiesClearOnExitEnabled(host_content_settings_map_))
OnCookiesCleared();
pref_change_registrar_.Init(pref_service_);
pref_change_registrar_.Add(
prefs::kPrivacySandboxApisEnabledV2,
base::BindRepeating(&PrivacySandboxSettings::OnPrivacySandboxPrefChanged,
base::Unretained(this)));
pref_change_registrar_.Add(
prefs::kPrivacySandboxFirstPartySetsEnabled,
base::BindRepeating(
&PrivacySandboxSettings::OnFirstPartySetsEnabledPrefChanged,
base::Unretained(this)));
}
PrivacySandboxSettings::~PrivacySandboxSettings() = default;
bool PrivacySandboxSettings::IsTopicsAllowed() const {
// M1 specific
if (base::FeatureList::IsEnabled(privacy_sandbox::kPrivacySandboxSettings4)) {
return IsM1PrivacySandboxApiEnabled(prefs::kPrivacySandboxM1TopicsEnabled);
}
// Topics API calculation should be prevented if the user has blocked 3PC
// cookies, as there will be no context specific check.
const auto cookie_controls_mode =
static_cast<content_settings::CookieControlsMode>(
pref_service_->GetInteger(prefs::kCookieControlsMode));
const auto default_content_setting =
cookie_settings_->GetDefaultCookieSetting(/*provider_id=*/nullptr);
const bool third_party_cookies_blocked =
default_content_setting == ContentSetting::CONTENT_SETTING_BLOCK ||
cookie_controls_mode ==
content_settings::CookieControlsMode::kBlockThirdParty;
return IsPrivacySandboxEnabled() && !third_party_cookies_blocked;
}
bool PrivacySandboxSettings::IsTopicsAllowedForContext(
const GURL& url,
const absl::optional<url::Origin>& top_frame_origin) const {
// M1 specific
if (base::FeatureList::IsEnabled(privacy_sandbox::kPrivacySandboxSettings4)) {
return IsTopicsAllowed() && IsSiteDataAllowed(url);
}
// If the Topics API is disabled completely, it is not available in any
// context.
return IsTopicsAllowed() &&
IsPrivacySandboxEnabledForContext(url, top_frame_origin);
}
bool PrivacySandboxSettings::IsTopicAllowed(const CanonicalTopic& topic) {
const auto& blocked_topics =
pref_service_->GetList(prefs::kPrivacySandboxBlockedTopics);
for (const auto& item : blocked_topics) {
auto blocked_topic =
CanonicalTopic::FromValue(*item.GetDict().Find(kBlockedTopicsTopicKey));
if (!blocked_topic)
continue;
if (topic == *blocked_topic)
return false;
}
return true;
}
void PrivacySandboxSettings::SetTopicAllowed(const CanonicalTopic& topic,
bool allowed) {
ScopedListPrefUpdate scoped_pref_update(pref_service_,
prefs::kPrivacySandboxBlockedTopics);
// Presence in the preference list indicates that a topic is blocked, as
// there is no concept of explicitly allowed topics. Thus, allowing a topic
// is the same as removing it, if it exists, from the blocklist. Blocking
// a topic is the same as adding it to the blocklist, but as duplicate entries
// are undesireable, removing any existing reference first is desireable.
// Thus, regardless of |allowed|, removing any existing reference is the
// first step.
scoped_pref_update->EraseIf([&](const base::Value& value) {
auto* blocked_topic_value = value.GetDict().Find(kBlockedTopicsTopicKey);
auto converted_topic = CanonicalTopic::FromValue(*blocked_topic_value);
return converted_topic && *converted_topic == topic;
});
// If the topic is being blocked, it can be (re)added to the blocklist. If the
// topic was removed from the blocklist above, this is equivalent to updating
// the modified time associated with the entry to the current time. As data
// deletions are typically from the current time backwards, this makes it
// more likely to be removed - a privacy improvement.
if (!allowed)
scoped_pref_update->Append(CreateBlockedTopicEntry(topic));
}
void PrivacySandboxSettings::ClearTopicSettings(base::Time start_time,
base::Time end_time) {
ScopedListPrefUpdate scoped_pref_update(pref_service_,
prefs::kPrivacySandboxBlockedTopics);
// Shortcut for maximum time range deletion.
if (start_time == base::Time() && end_time == base::Time::Max()) {
scoped_pref_update->clear();
return;
}
scoped_pref_update->EraseIf([&](const base::Value& value) {
auto blocked_time =
base::ValueToTime(value.GetDict().Find(kBlockedTopicsBlockTimeKey));
return start_time <= blocked_time && blocked_time <= end_time;
});
}
base::Time PrivacySandboxSettings::TopicsDataAccessibleSince() const {
return pref_service_->GetTime(
prefs::kPrivacySandboxTopicsDataAccessibleSince);
}
bool PrivacySandboxSettings::IsAttributionReportingAllowed(
const url::Origin& top_frame_origin,
const url::Origin& reporting_origin) const {
return IsPrivacySandboxEnabledForContext(reporting_origin.GetURL(),
top_frame_origin);
}
bool PrivacySandboxSettings::MaySendAttributionReport(
const url::Origin& source_origin,
const url::Origin& destination_origin,
const url::Origin& reporting_origin) const {
// The |reporting_origin| needs to have been accessible in both source
// and trigger contexts. These are both checked when they occur, but
// user settings may have changed between then and when the attribution report
// is sent.
return IsPrivacySandboxEnabledForContext(reporting_origin.GetURL(),
source_origin) &&
IsPrivacySandboxEnabledForContext(reporting_origin.GetURL(),
destination_origin);
}
void PrivacySandboxSettings::SetFledgeJoiningAllowed(
const std::string& top_frame_etld_plus1,
bool allowed) {
ScopedDictPrefUpdate scoped_pref_update(
pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked);
// Ensure that the provided etld_plus1 actually is an etld+1.
auto effective_top_frame_etld_plus1 =
net::registry_controlled_domains::GetDomainAndRegistry(
top_frame_etld_plus1,
net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
// Hosts are also accepted as a fallback. This may occur if the private
// registry has changed, and what the caller may be assuming is an eTLD+1 no
// longer is. Simply ignoring non-eTLD+1's may thus result in unexpected
// access.
if (effective_top_frame_etld_plus1 != top_frame_etld_plus1) {
// Add a dummy scheme and use GURL to confirm the provided string is a valid
// host.
const GURL url("https://" + top_frame_etld_plus1);
effective_top_frame_etld_plus1 = url.host();
}
// Ignore attempts to configure an empty etld+1. This will also catch the
// case where the eTLD+1 was not even a host, as GURL will have canonicalised
// it to empty.
if (effective_top_frame_etld_plus1.length() == 0) {
NOTREACHED() << "Cannot control FLEDGE joining for empty eTLD+1";
return;
}
if (allowed) {
// Existence of the key implies blocking, so simply removing the key is
// sufficient. If the key wasn't already present, the following is a no-op.
scoped_pref_update->Remove(effective_top_frame_etld_plus1);
} else {
// Overriding the creation date for keys which already exist is acceptable.
// Time range based deletions are typically started from the current time,
// and so this will be more aggressively removed. This decreases the chance
// a potentially sensitive website remains in preferences.
scoped_pref_update->Set(effective_top_frame_etld_plus1,
base::TimeToValue(base::Time::Now()));
}
}
void PrivacySandboxSettings::ClearFledgeJoiningAllowedSettings(
base::Time start_time,
base::Time end_time) {
ScopedDictPrefUpdate scoped_pref_update(
pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked);
auto& pref_data = scoped_pref_update.Get();
// Shortcut for maximum time range deletion
if (start_time == base::Time() && end_time == base::Time::Max()) {
pref_data.clear();
return;
}
std::vector<std::string> keys_to_remove;
for (auto entry : pref_data) {
absl::optional<base::Time> created_time = base::ValueToTime(entry.second);
if (created_time.has_value() && start_time <= created_time &&
created_time <= end_time) {
keys_to_remove.push_back(entry.first);
}
}
for (const auto& key : keys_to_remove)
pref_data.Remove(key);
}
bool PrivacySandboxSettings::IsFledgeJoiningAllowed(
const url::Origin& top_frame_origin) const {
ScopedDictPrefUpdate scoped_pref_update(
pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked);
auto& pref_data = scoped_pref_update.Get();
for (auto entry : pref_data) {
if (base::ranges::any_of(FledgeBlockToContentSettingsPatterns(entry.first),
[&](const auto& pattern) {
return pattern.Matches(
top_frame_origin.GetURL());
})) {
return false;
}
}
return true;
}
bool PrivacySandboxSettings::IsFledgeAllowed(
const url::Origin& top_frame_origin,
const url::Origin& auction_party) const {
if (base::FeatureList::IsEnabled(privacy_sandbox::kPrivacySandboxSettings4)) {
return IsM1PrivacySandboxApiEnabled(
prefs::kPrivacySandboxM1FledgeEnabled) &&
IsSiteDataAllowed(auction_party.GetURL());
}
return IsPrivacySandboxEnabledForContext(auction_party.GetURL(),
top_frame_origin);
}
bool PrivacySandboxSettings::IsSharedStorageAllowed(
const url::Origin& top_frame_origin,
const url::Origin& accessing_origin) const {
// Ensures that Shared Storage is only allowed if both Privacy Sandbox is
// enabled and full cookie access is enabled for this context.
return IsPrivacySandboxEnabledForContext(accessing_origin.GetURL(),
top_frame_origin);
}
bool PrivacySandboxSettings::IsSharedStorageWriteAllowed(
const url::Origin& top_frame_origin,
const url::Origin& accessing_origin) {
// TODO(crbug.com/1378703): Respect appropriate M1 pref and site data settings
// when release 4 is enabled.
return IsSharedStorageAllowed(top_frame_origin, accessing_origin);
}
bool PrivacySandboxSettings::IsSharedStorageSelectURLAllowed(
const url::Origin& top_frame_origin,
const url::Origin& accessing_origin) {
// TODO(crbug.com/1378703): Respect appropriate M1 pref and site data settings
// when release 4 is enabled.
return IsSharedStorageAllowed(top_frame_origin, accessing_origin);
}
bool PrivacySandboxSettings::IsSharedStorageAggregateReportingAllowed(
const url::Origin& top_frame_origin,
const url::Origin& accessing_origin) {
// TODO(crbug.com/1378703): Respect appropriate M1 pref and site data settings
// when release 4 is enabled.
return IsSharedStorageAllowed(top_frame_origin, accessing_origin);
}
bool PrivacySandboxSettings::IsPrivateAggregationAllowed(
const url::Origin& top_frame_origin,
const url::Origin& reporting_origin) const {
return IsPrivacySandboxEnabledForContext(reporting_origin.GetURL(),
top_frame_origin);
}
bool PrivacySandboxSettings::IsPrivacySandboxEnabled() const {
// If the delegate is restricting access the Privacy Sandbox is disabled.
if (delegate_->IsPrivacySandboxRestricted())
return false;
if (delegate_->IsIncognitoProfile())
return false;
// For Measurement and Relevance APIs, we explicitly do not require the
// underlying pref to be enabled if there is a local flag enabling the APIs to
// allow for local testing.
if (base::FeatureList::IsEnabled(
privacy_sandbox::kOverridePrivacySandboxSettingsLocalTesting)) {
return true;
}
return pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabledV2);
}
void PrivacySandboxSettings::SetPrivacySandboxEnabled(bool enabled) {
pref_service_->SetBoolean(prefs::kPrivacySandboxApisEnabledV2, enabled);
}
bool PrivacySandboxSettings::IsTrustTokensAllowed() {
return IsPrivacySandboxEnabled();
}
bool PrivacySandboxSettings::IsPrivacySandboxRestricted() const {
return delegate_->IsPrivacySandboxRestricted();
}
void PrivacySandboxSettings::OnCookiesCleared() {
SetTopicsDataAccessibleFromNow();
}
void PrivacySandboxSettings::OnPrivacySandboxPrefChanged() {
for (auto& observer : observers_)
observer.OnTrustTokenBlockingChanged(!IsTrustTokensAllowed());
}
void PrivacySandboxSettings::OnFirstPartySetsEnabledPrefChanged() {
if (!base::FeatureList::IsEnabled(features::kFirstPartySets))
return;
for (auto& observer : observers_) {
observer.OnFirstPartySetsEnabledChanged(
pref_service_->GetBoolean(prefs::kPrivacySandboxFirstPartySetsEnabled));
}
}
void PrivacySandboxSettings::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
void PrivacySandboxSettings::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
void PrivacySandboxSettings::SetDelegateForTesting(
std::unique_ptr<Delegate> delegate) {
delegate_ = std::move(delegate);
}
PrivacySandboxSettings::PrivacySandboxSettings() = default;
bool PrivacySandboxSettings::IsPrivacySandboxEnabledForContext(
const GURL& url,
const absl::optional<url::Origin>& top_frame_origin) const {
if (!IsPrivacySandboxEnabled())
return false;
// Third party cookies must also be available for this context. An empty site
// for cookies is provided so the context is always treated as a third party.
return cookie_settings_->IsFullCookieAccessAllowed(
url, net::SiteForCookies(), top_frame_origin,
content_settings::CookieSettings::QueryReason::kPrivacySandbox);
}
void PrivacySandboxSettings::SetTopicsDataAccessibleFromNow() const {
pref_service_->SetTime(prefs::kPrivacySandboxTopicsDataAccessibleSince,
base::Time::Now());
for (auto& observer : observers_)
observer.OnTopicsDataAccessibleSinceUpdated();
}
bool PrivacySandboxSettings::IsSiteDataAllowed(const GURL& url) const {
// Relying on |host_content_settings_map_| instead of |cookie_settings_|
// allows to query whether the site associated with the |url| is allowed to
// access Site data (aka ContentSettingsType::COOKIES) from a stand-alone
// point of view. This is not possible via |cookies_settings_|, which _also_
// takes into account third party context.
return host_content_settings_map_->GetContentSetting(
url, GURL(), ContentSettingsType::COOKIES) !=
ContentSetting::CONTENT_SETTING_BLOCK;
}
bool PrivacySandboxSettings::IsM1PrivacySandboxApiEnabled(
const std::string& pref_name) const {
DCHECK(pref_name == prefs::kPrivacySandboxM1TopicsEnabled ||
pref_name == prefs::kPrivacySandboxM1FledgeEnabled ||
pref_name == prefs::kPrivacySandboxM1AdMeasurementEnabled);
if (delegate_->IsIncognitoProfile())
return false;
if (IsPrivacySandboxRestricted())
return false;
// For Measurement and Relevance APIs, we explicitly do not require the
// underlying pref to be enabled if there is a local flag enabling the APIs to
// allow for local testing.
if (base::FeatureList::IsEnabled(
privacy_sandbox::kOverridePrivacySandboxSettingsLocalTesting)) {
return true;
}
return pref_service_->GetBoolean(pref_name);
}
} // namespace privacy_sandbox

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit-part>
<!-- Shared strings for SSL-related interstitials -->
<message name="IDS_SSL_OPEN_DETAILS_BUTTON" desc="The text for the button that expands the details on an error page. Paired with IDS_SSL_CLOSE_DETAILS_BUTTON.">
@ -105,7 +105,7 @@
The site ahead is blocked by your organization
</message>
<message name="IDS_ENTERPRISE_BLOCK_PRIMARY_PARAGRAPH" desc="Main paragraph of an error message. Context: the error page that's shown when the requested URL doesn't pass the filtering rules set by the admin.">
Your organization has blocked <ph name="BEGIN_BOLD">&lt;strong&gt;</ph><ph name="DOMAIN">$1<ex>example.com</ex></ph><ph name="END_BOLD">&lt;/strong&gt;</ph> because it violates a policy. <ph name="BEGIN_LEARN_MORE_LINK">&lt;a href="https://support.google.com/chrome/a/?p=block_warn" id="learn-more-link"&gt;</ph>Learn more<ph name="END_LEARN_MORE_LINK">&lt;/a&gt;</ph>
Your organization has blocked <ph name="BEGIN_BOLD">&lt;strong&gt;</ph><ph name="DOMAIN">$1<ex>example.com</ex></ph><ph name="END_BOLD">&lt;/strong&gt;</ph> because it violates a policy. <ph name="BEGIN_LEARN_MORE_LINK">&lt;a href="#" id="learn-more-link"&gt;</ph>Learn more<ph name="END_LEARN_MORE_LINK">&lt;/a&gt;</ph>
</message>
<message name="IDS_ENTERPRISE_BLOCK_GO_BACK" desc="The text for the button that takes the user back to safety.">
Go back
@ -119,7 +119,7 @@
The site ahead is flagged by your organization
</message>
<message name="IDS_ENTERPRISE_WARN_PRIMARY_PARAGRAPH" desc="Main paragraph of an error message. Context: the error page that's shown when the requested URL doesn't pass the filtering rules set by the admin.">
Your organization has identified <ph name="BEGIN_BOLD">&lt;strong&gt;</ph><ph name="DOMAIN">$1<ex>example.com</ex></ph><ph name="END_BOLD">&lt;/strong&gt;</ph> as a site that might violate a policy. <ph name="BEGIN_LEARN_MORE_LINK">&lt;a href="https://support.google.com/chrome/a/?p=block_warn" id="learn-more-link"&gt;</ph>Learn more<ph name="END_LEARN_MORE_LINK">&lt;/a&gt;</ph>
Your organization has identified <ph name="BEGIN_BOLD">&lt;strong&gt;</ph><ph name="DOMAIN">$1<ex>example.com</ex></ph><ph name="END_BOLD">&lt;/strong&gt;</ph> as a site that might violate a policy. <ph name="BEGIN_LEARN_MORE_LINK">&lt;a href="#" id="learn-more-link"&gt;</ph>Learn more<ph name="END_LEARN_MORE_LINK">&lt;/a&gt;</ph>
</message>
<message name="IDS_ENTERPRISE_WARN_GO_BACK" desc="The text for the button that takes the user back to safety.">
Go back
@ -429,7 +429,7 @@
&lt;li&gt;Under &lt;strong&gt;Startup type&lt;/strong&gt;, select &lt;strong&gt;Disabled&lt;/strong&gt;
&lt;li&gt;Under &lt;strong&gt;Service status&lt;/strong&gt;, click &lt;strong&gt;Stop&lt;/strong&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;, then click &lt;strong&gt;OK&lt;/strong&gt;
&lt;li&gt;Visit the &lt;a href="https://support.google.com/chrome/answer/6098869"&gt;Chrome help center&lt;/a&gt; to learn how to permanently remove the software from your computer
&lt;li&gt;Visit the &lt;a href="https://support.google.com/chrome/answer/6098869"&gt;Thorium help center&lt;/a&gt; to learn how to permanently remove the software from your computer
&lt;/ol&gt;
</message>
</if>

View file

@ -258,11 +258,20 @@ const char kUserGestureRequiredPolicy[] = "user-gesture-required";
// This provides a mechanism during testing to lock the decoder framerate
// to a specific value.
const char kHardwareVideoDecodeFrameRate[] = "hardware-video-decode-framerate";
// Set the maximum number of decoder threads for hardware video decoders on
// ChromeOS. This is intended to be used for development only.
// Set the task runner strategy used for hardware video decoding on ChromeOS.
// If the option value of --chromeos-decoder-task-runner is
// * OneThreadPoolSequenceSharedByAllDecoders, then SequencedTaskRunner.
// * OneThreadPoolThreadSharedByAllDecoders, then SingleThreadTaskRunner
// (one of the threads in ThreadPool).
// * OneDedicatedThreadSharedByAllDecoders, then SingleThreadTaskRunner of
// base::Thread("VDdecThread"), which is unique and only used for video
// decoders.
// * OneThreadPoolThreadPerDecoder (default), then SingleThreadTaskRunner
// of a dedicated thread newly created in ThreadPool per decoder.
// TODO(b/195769334): Propagate this to Chrome utility process for
// Out-of-Process video decoding.
const char kMaxChromeOSDecoderThreads[] = "max-chromeos-decoder-threads";
const char kChromeOSVideoDecoderTaskRunner[] =
"chromeos-video-decoder-task-runner";
#endif
const char kCastStreamingForceDisableHardwareH264[] =
@ -407,23 +416,20 @@ BASE_FEATURE(kCdmProcessSiteIsolation,
// playback going to a specific output device in the audio service.
BASE_FEATURE(kChromeWideEchoCancellation,
"ChromeWideEchoCancellation",
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
base::FEATURE_ENABLED_BY_DEFAULT);
#if BUILDFLAG(IS_CHROMEOS_DEVICE)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT
#endif
);
// If non-zero, audio processing is done on a dedicated processing thread which
// receives audio from the audio capture thread via a fifo of a specified size.
// Zero fifo size means the usage of such processing thread is disabled and
// processing is done on the audio capture thread itself.
const base::FeatureParam<int> kChromeWideEchoCancellationProcessingFifoSize{
&kChromeWideEchoCancellation, "processing_fifo_size",
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
110 // Default value for the enabled feature.
#else
0
#endif
&kChromeWideEchoCancellation, "processing_fifo_size",
110 // Default value for the enabled feature.
};
// When audio processing is done in the audio process, at the renderer side IPC
@ -451,6 +457,48 @@ const base::FeatureParam<bool> kChromeWideEchoCancellationAllowAllSampleRates{
&kChromeWideEchoCancellation, "allow_all_sample_rates", true};
#endif
#if BUILDFLAG(IS_CHROMEOS)
// To control running audio communication effect on Chrome OS Audio Server.
BASE_FEATURE(kCrOSSystemAEC,
"CrOSSystemAECWithBoardTuningsAllowed",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSSystemAECDeactivatedGroups,
"CrOSSystemAECDeactivatedGroups",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSEnforceSystemAecNsAgc,
"CrOSEnforceSystemAecNsAgc",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSEnforceSystemAecNs,
"CrOSEnforceSystemAecNs",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSEnforceSystemAecAgc,
"CrOSEnforceSystemAecAgc",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSEnforceSystemAec,
"CrOSEnforceSystemAec",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSDspBasedAecDeactivatedGroups,
"CrOSDspBasedAecDeactivatedGroups",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSDspBasedNsDeactivatedGroups,
"CrOSDspBasedNsDeactivatedGroups",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSDspBasedAgcDeactivatedGroups,
"CrOSDspBasedAgcDeactivatedGroups",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSDspBasedAecAllowed,
"CrOSDspBasedAecAllowed",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSDspBasedNsAllowed,
"CrOSDspBasedNsAllowed",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCrOSDspBasedAgcAllowed,
"CrOSDspBasedAgcAllowed",
base::FEATURE_ENABLED_BY_DEFAULT);
#endif
// Make MSE garbage collection algorithm more aggressive when we are under
// moderate or critical memory pressure. This will relieve memory pressure by
// releasing stale data from MSE buffers.
@ -458,11 +506,21 @@ BASE_FEATURE(kMemoryPressureBasedSourceBufferGC,
"MemoryPressureBasedSourceBufferGC",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables binding software video NV12/P010 GMBs as separate shared images.
BASE_FEATURE(kMultiPlaneSoftwareVideoSharedImages,
"MultiPlaneSoftwareVideoSharedImages",
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
#endif
);
// Enable binding multiple shared images to a single GpuMemoryBuffer for video
// frames created by video capture.
BASE_FEATURE(kMultiPlaneVideoCaptureSharedImages,
"MultiPlaneVideoCaptureSharedImages",
#if BUILDFLAG(IS_MAC)
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@ -475,6 +533,12 @@ BASE_FEATURE(kOpenscreenCastStreamingSession,
"OpenscreenCastStreamingSession",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the Mirroring Service will fetch, analyze, and store
// information on the quality of the session using RTCP logs.
BASE_FEATURE(kEnableRtcpReporting,
"EnableRtcpReporting",
base::FEATURE_DISABLED_BY_DEFAULT);
// Approach original pre-REC MSE object URL autorevoking behavior, though await
// actual attempt to use the object URL for attachment to perform revocation.
// This will hopefully reduce runtime memory bloat for pages that do not
@ -498,6 +562,16 @@ BASE_FEATURE(kD3D11VideoDecoderUseSharedHandle,
"D3D11VideoDecoderUseSharedHandle",
base::FEATURE_DISABLED_BY_DEFAULT);
// Runs the media service in the GPU process on a dedicated thread.
BASE_FEATURE(kDedicatedMediaServiceThread,
"DedicatedMediaServiceThread",
#if BUILDFLAG(IS_WIN)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
#endif
);
// Falls back to other decoders after audio/video decode error happens. The
// implementation may choose different strategies on when to fallback. See
// DecoderStream for details. When disabled, playback will fail immediately
@ -523,6 +597,11 @@ BASE_FEATURE(kGlobalMediaControlsAutoDismiss,
base::FEATURE_ENABLED_BY_DEFAULT);
#if BUILDFLAG(IS_CHROMEOS)
// Updated global media controls UI for CrOS.
BASE_FEATURE(kGlobalMediaControlsCrOSUpdatedUI,
"GlobalMediaControlsCrOSUpdatedUI",
base::FEATURE_ENABLED_BY_DEFAULT);
// Show Cast sessions in Global Media Controls.
BASE_FEATURE(kGlobalMediaControlsForCast,
"GlobalMediaControlsForCast",
@ -923,6 +1002,12 @@ BASE_FEATURE(kUseRealColorSpaceForAndroidVideo,
"UseRealColorSpaceForAndroidVideo",
base::FEATURE_ENABLED_BY_DEFAULT);
#if BUILDFLAG(ENABLE_HLS_DEMUXER)
BASE_FEATURE(kBuiltInHlsPlayer,
"BuiltInHlsPlayer",
base::FEATURE_ENABLED_BY_DEFAULT);
#endif // BUILDFLAG(ENABLE_HLS_DEMUXER)
#endif // BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
@ -944,7 +1029,11 @@ BASE_FEATURE(kChromeOSHWVBREncoding,
// TODO(b/159825227): remove when the direct video decoder is fully launched.
BASE_FEATURE(kUseChromeOSDirectVideoDecoder,
"UseChromeOSDirectVideoDecoder",
base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_CHROMEOS)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
#endif
// Limit the number of concurrent hardware decoder instances on ChromeOS.
BASE_FEATURE(kLimitConcurrentDecoderInstances,
@ -952,14 +1041,10 @@ BASE_FEATURE(kLimitConcurrentDecoderInstances,
base::FEATURE_ENABLED_BY_DEFAULT);
#if defined(ARCH_CPU_ARM_FAMILY)
// Some architectures have separate image processor hardware that
// can be used by Chromium's ImageProcessor to color convert/crop/etc.
// video buffers. Sometimes it is more efficient/performant/correct
// to use a libYUV or GL based implementation instead of the hardware to
// do this processing.
BASE_FEATURE(kPreferLibYuvImageProcessor,
"PreferLibYUVImageProcessor",
base::FEATURE_DISABLED_BY_DEFAULT);
// Experimental support for GL based image processing. On some architectures,
// the hardware accelerated video decoder outputs frames in a format not
// understood by the display controller. We usually use LibYUV to convert these
// frames. This flag enables an experimental GL-based conversion method.
BASE_FEATURE(kPreferGLImageProcessor,
"PreferGLImageProcessor",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -976,12 +1061,6 @@ BASE_FEATURE(kUseAlternateVideoDecoderImplementation,
#endif // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
#if BUILDFLAG(IS_WIN)
// Does NV12->NV12 video copy on the main thread right before the texture's
// used by GL.
BASE_FEATURE(kDelayCopyNV12Textures,
"DelayCopyNV12Textures",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables DirectShow GetPhotoState implementation
// Created to act as a kill switch by disabling it, in the case of the
// resurgence of https://crbug.com/722038
@ -1073,8 +1152,15 @@ constexpr base::FeatureParam<MediaFoundationClearRenderingStrategy>::Option
const base::FeatureParam<MediaFoundationClearRenderingStrategy>
kMediaFoundationClearRenderingStrategyParam{
&kMediaFoundationClearRendering, "strategy",
MediaFoundationClearRenderingStrategy::kDynamic,
MediaFoundationClearRenderingStrategy::kDirectComposition,
&kMediaFoundationClearRenderingStrategyOptions};
BASE_FEATURE(kMediaFoundationBatchRead,
"MediaFoundationBatchRead",
base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<int> kBatchReadCount{&kMediaFoundationBatchRead,
"batch_read_count", 1};
#endif // BUILDFLAG(IS_WIN)
#if BUILDFLAG(ENABLE_PLATFORM_ENCRYPTED_DOLBY_VISION)
@ -1148,6 +1234,12 @@ BASE_FEATURE(kRecordWebAudioEngagement,
"RecordWebAudioEngagement",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables reporting "smpteSt2086" HDR Metadata as supported in the
// MediaCapabilities API.
BASE_FEATURE(kSupportSmpteSt2086HdrMetadata,
"SupportSmpteSt2086HdrMetadata",
base::FEATURE_DISABLED_BY_DEFAULT);
// The following Media Engagement flags are not enabled on mobile platforms:
// - MediaEngagementBypassAutoplayPolicies: enables the Media Engagement Index
// data to be esude to override autoplay policies. An origin with a high MEI
@ -1278,6 +1370,14 @@ BASE_FEATURE(kFuchsiaMediacodecVideoEncoder,
bool IsChromeWideEchoCancellationEnabled() {
#if BUILDFLAG(CHROME_WIDE_ECHO_CANCELLATION)
#if BUILDFLAG(IS_CHROMEOS_DEVICE)
if (base::FeatureList::IsEnabled(kCrOSEnforceSystemAecNsAgc) ||
base::FeatureList::IsEnabled(kCrOSEnforceSystemAecNs) ||
base::FeatureList::IsEnabled(kCrOSEnforceSystemAecAgc) ||
base::FeatureList::IsEnabled(kCrOSEnforceSystemAec)) {
return false;
}
#endif
return base::FeatureList::IsEnabled(kChromeWideEchoCancellation);
#else
return false;

View file

@ -1,4 +1,4 @@
// Copyright 2022 The Chromium Authors and Alex313031. All rights reserved.
// Copyright 2023 The Chromium Authors and Alex313031. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -7,7 +7,6 @@
#include <memory>
#include "base/memory/ptr_util.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "gpu/config/gpu_preferences.h"
#include "media/base/media_switches.h"

View file

@ -7,13 +7,14 @@
#include <memory>
#include <vector>
#include "base/bind.h"
#include "base/functional/bind.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/ref_counted.h"
#include "base/synchronization/waitable_event.h"
#include "base/task/bind_post_task.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "build/build_config.h"
#include "gpu/command_buffer/common/command_buffer.h"

View file

@ -9,12 +9,12 @@
#include <memory>
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/containers/contains.h"
#include "base/containers/cxx20_erase.h"
#include "base/cpu.h"
#include "base/files/scoped_file.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"

View file

@ -20,14 +20,14 @@
#include <type_traits>
#include <utility>
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/containers/contains.h"
#include "base/containers/cxx20_erase.h"
#include "base/containers/fixed_flat_set.h"
#include "base/cpu.h"
#include "base/environment.h"
#include "base/files/scoped_file.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
#include "base/no_destructor.h"
@ -1682,6 +1682,7 @@ std::vector<SVCScalabilityMode> VaapiWrapper::GetSupportedScalabilityModes(
VideoCodecProfile media_profile,
VAProfile va_profile) {
std::vector<SVCScalabilityMode> scalability_modes;
scalability_modes.push_back(SVCScalabilityMode::kL1T1);
#if BUILDFLAG(IS_CHROMEOS)
if (media_profile == VP9PROFILE_PROFILE0) {
scalability_modes.push_back(SVCScalabilityMode::kL1T2);
@ -2532,6 +2533,9 @@ VaapiWrapper::ExportVASurfaceAsNativePixmapDmaBufUnwrapped(
case VA_FOURCC_NV12:
buffer_format = gfx::BufferFormat::YUV_420_BIPLANAR;
break;
case VA_FOURCC_ARGB:
buffer_format = gfx::BufferFormat::BGRA_8888;
break;
default:
LOG(ERROR) << "Cannot export a surface with FOURCC "
<< FourccToString(descriptor.fourcc);

View file

@ -1,4 +1,4 @@
// Copyright (c) 2022 The Chromium Authors and Alex313031. All rights reserved.
// Copyright (c) 2023 The Chromium Authors and Alex313031.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -8,7 +8,7 @@
#include <string>
#include <utility>
#include "base/bind.h"
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
#include "base/metrics/histogram_macros.h"
#include "base/rand_util.h"

View file

@ -14,10 +14,10 @@
#include "base/base64url.h"
#include "base/big_endian.h"
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/containers/circular_deque.h"
#include "base/containers/span.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"

View file

@ -11,13 +11,13 @@
#include <vector>
#include "base/base_switches.h"
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/check_op.h"
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/containers/adapters.h"
#include "base/file_version_info.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/field_trial.h"
@ -265,6 +265,7 @@ void URLRequestHttpJob::Start() {
request_->isolation_info().request_type() ==
net::IsolationInfo::RequestType::kSubFrame;
request_info_.load_flags = request_->load_flags();
request_info_.priority_incremental = request_->priority_incremental();
request_info_.secure_dns_policy = request_->secure_dns_policy();
request_info_.traffic_annotation =
net::MutableNetworkTrafficAnnotationTag(request_->traffic_annotation());
@ -416,10 +417,8 @@ PrivacyMode URLRequestHttpJob::DeterminePrivacyMode() const {
? NetworkDelegate::PrivacySetting::kStateAllowed
: NetworkDelegate::PrivacySetting::kStateDisallowed;
if (request_->network_delegate()) {
privacy_setting = request()->network_delegate()->ForcePrivacyMode(
request_->url(), request_->site_for_cookies(),
request_->isolation_info().top_frame_origin(),
first_party_set_metadata_.context().context_type());
privacy_setting =
request()->network_delegate()->ForcePrivacyMode(*request());
}
switch (privacy_setting) {
case NetworkDelegate::PrivacySetting::kStateAllowed:

View file

@ -1,4 +1,4 @@
// Copyright 2018 The Chromium Authors. All rights reserved.
// Copyright 2023 The Chromium Authors and Alex313031
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -83,6 +83,7 @@ ResultExpr AudioProcessPolicy::EvaluateSyscall(int system_call_number) const {
case __NR_futex_time64:
#endif
{
const Arg<int> op(1);
#if defined(USE_PULSEAUDIO)
return Allow();
#else

View file

@ -210,11 +210,6 @@ BASE_FEATURE(kPath2DPaintCache,
"Path2DPaintCache",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable by default. This feature is for a kill switch.
BASE_FEATURE(kLayoutNGBlockInInline,
"LayoutNGBlockInInline",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kPrivacySandboxAdsAPIs,
"PrivacySandboxAdsAPIs",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -311,6 +306,21 @@ const base::FeatureParam<int>
&kSharedStorageAPI,
"SharedStorageMaxAllowedFencedFrameDepthForSelectURL", 1};
BASE_FEATURE(kSharedStorageSelectURLLimit,
"SharedStorageSelectURLLimit",
base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<int>
kSharedStorageMaxAllowedSelectURLCallsPerOriginPerPageLoad = {
&kSharedStorageSelectURLLimit,
"SharedStorageMaxAllowedSelectURLCallsPerOriginPerPageLoad", 3};
BASE_FEATURE(kSharedStorageReportEventLimit,
"SharedStorageReportEventLimit",
base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<int> kSharedStorageReportEventBitBudgetPerPageLoad = {
&kSharedStorageReportEventLimit,
"SharedStorageReportEventBitBudgetPerPageLoad", 9};
BASE_FEATURE(kSameSiteCrossOriginForSpeculationRulesPrerender,
"SameSiteCrossOriginForSpeculationRulesPrerender",
base::FEATURE_ENABLED_BY_DEFAULT);
@ -538,7 +548,8 @@ BASE_FEATURE(kAudioWorkletThreadRealtimePriority,
// A server-side switch for the output device (sink) selection in Web Audio API.
// This enables the selection via the AudioContext constructor and also via
// AudioContext.setSinkId() method.
BASE_FEATURE(kWebAudioSinkSelection, "kWebAudioSinkSelection",
BASE_FEATURE(kWebAudioSinkSelection,
"kWebAudioSinkSelection",
base::FEATURE_ENABLED_BY_DEFAULT);
// A feature to reduce the set of resources fetched by No-State Prefetch.
@ -699,17 +710,29 @@ BASE_FEATURE(kCanvasFreeMemoryWhenHidden,
"CanvasFreeMemoryWhenHidden",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled, add a new option, {imageOrientation: 'none'}, to
// createImageBitmap, which ignores the image orientation metadata of the source
// and renders the image as encoded.
BASE_FEATURE(kCreateImageBitmapOrientationNone,
"CreateImageBitmapOrientationNone",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled, frees up CachedMetadata after consumption by script resources
// and modules. Needed for the experiment in http://crbug.com/1045052.
BASE_FEATURE(kDiscardCodeCacheAfterFirstUse,
"DiscardCodeCacheAfterFirstUse",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled, code cache is produced asynchronously from the script execution
// (https://crbug.com/1260908).
BASE_FEATURE(kCacheCodeOnIdle,
"CacheCodeOnIdle",
base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<int> kCacheCodeOnIdleDelayParam{&kCacheCodeOnIdle,
"delay-in-ms", 0};
// Apply CacheCodeOnIdle only for service workers (https://crbug.com/1410082).
const base::FeatureParam<bool> kCacheCodeOnIdleDelayServiceWorkerOnlyParam{
&kCacheCodeOnIdle, "service-worker-only", false};
// Enables the JPEG XL Image File Format (JXL).
BASE_FEATURE(kJXL, "JXL", base::FEATURE_ENABLED_BY_DEFAULT);
@ -1022,6 +1045,14 @@ const base::FeatureParam<int> kBrowsingTopicsConfigVersion{&kBrowsingTopics,
const base::FeatureParam<int> kBrowsingTopicsTaxonomyVersion{
&kBrowsingTopics, "taxonomy_version", 1};
// Enables the deprecatedBrowsingTopics XHR attribute. For this feature to take
// effect, the main Topics feature has to be enabled first (i.e.
// `kBrowsingTopics` is enabled, and, either a valid Origin Trial token exists
// or `kPrivacySandboxAdsAPIsOverride` is enabled.)
BASE_FEATURE(kBrowsingTopicsXHR,
"BrowsingTopicsXHR",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the check for whether the IP address is publicly routable will be
// bypassed when determining the eligibility for a page to be included in topics
// calculation. This is useful for developers to test in local environment.
@ -1186,16 +1217,17 @@ int GetMaxUnthrottledTimeoutNestingLevel() {
return kMaxUnthrottledTimeoutNestingLevelParam.Get();
}
BASE_FEATURE(kTabSwitchMetrics2,
"TabSwitchMetrics2",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables reporting and web-exposure (respectively) of the time the first frame
// of an animated image was painted.
// Enables reporting as LCP of the time the first frame of an animated image was
// painted.
BASE_FEATURE(kLCPAnimatedImagesReporting,
"LCPAnimatedImagesReporting",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables reporting as LCP of the time the first frame of a video was painted.
BASE_FEATURE(kLCPVideoFirstFrame,
"LCPVideoFirstFrame",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kOriginAgentClusterDefaultEnabled,
"OriginAgentClusterDefaultEnable",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1249,19 +1281,19 @@ BASE_FEATURE(kUACHOverrideBlank,
#if BUILDFLAG(IS_WIN)
BASE_FEATURE(kPrewarmDefaultFontFamilies,
"PrewarmDefaultFontFamilies",
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT);
const base::FeatureParam<bool> kPrewarmStandard = {&kPrewarmDefaultFontFamilies,
"prewarm_standard", true};
"prewarm_standard", false};
const base::FeatureParam<bool> kPrewarmFixed = {&kPrewarmDefaultFontFamilies,
"prewarm_fixed", true};
"prewarm_fixed", false};
const base::FeatureParam<bool> kPrewarmSerif = {&kPrewarmDefaultFontFamilies,
"prewarm_serif", true};
const base::FeatureParam<bool> kPrewarmSansSerif = {
&kPrewarmDefaultFontFamilies, "prewarm_sans_serif", true};
const base::FeatureParam<bool> kPrewarmCursive = {&kPrewarmDefaultFontFamilies,
"prewarm_cursive", true};
"prewarm_cursive", false};
const base::FeatureParam<bool> kPrewarmFantasy = {&kPrewarmDefaultFontFamilies,
"prewarm_fantasy", true};
"prewarm_fantasy", false};
#endif
// Enable `save-data` client hint.
@ -1271,11 +1303,18 @@ BASE_FEATURE(kClientHintsSaveData,
BASE_FEATURE(kEstablishGpuChannelAsync,
"EstablishGpuChannelAsync",
base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_ANDROID)
base::FEATURE_ENABLED_BY_DEFAULT
#else
// TODO(crbug.com/1278147): Experiment with this more on desktop to
// see if it can help.
base::FEATURE_DISABLED_BY_DEFAULT
#endif
);
BASE_FEATURE(kDecodeScriptSourceOffThread,
"DecodeScriptSourceOffThread",
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kDelayAsyncScriptExecution,
"DelayAsyncScriptExecution",
@ -1407,10 +1446,6 @@ BASE_FEATURE(kWebRtcExposeNonStandardStats,
"WebRtc-ExposeNonStandardStats",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kInvalidationSetClassBloomFilter,
"InvalidationSetClassBloomFilter",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kPendingBeaconAPI,
"PendingBeaconAPI",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1422,12 +1457,17 @@ const base::FeatureParam<bool> kPendingBeaconAPIForcesSendingOnNavigation = {
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
BASE_FEATURE(kPrefetchFontLookupTables,
"PrefetchFontLookupTables",
base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_WIN)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
#endif
);
#endif
BASE_FEATURE(kPrecompileInlineScripts,
"PrecompileInlineScripts",
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kPretokenizeCSS,
"PretokenizeCSS",
@ -1446,6 +1486,10 @@ BASE_FEATURE(kSimulateClickOnAXFocus,
#endif
);
BASE_FEATURE(kSerializeAccessibilityPostLifecycle,
"SerializeAccessibilityPostLifeycle",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kThreadedPreloadScanner,
"ThreadedPreloadScanner",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1457,7 +1501,7 @@ BASE_FEATURE(kWebSQLNonSecureContextAccess,
BASE_FEATURE(kFileSystemUrlNavigation,
"FileSystemUrlNavigation",
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kFileSystemUrlNavigationForChromeAppsOnly,
"FileSystemUrlNavigationForChromeAppsOnly",
@ -1482,7 +1526,7 @@ BASE_FEATURE(kDisableArrayBufferSizeLimitsForTesting,
BASE_FEATURE(kTimedHTMLParserBudget,
"TimedHTMLParserBudget",
base::FEATURE_DISABLED_BY_DEFAULT);
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kClipboardUnsanitizedContent,
"ClipboardUnsanitizedContent",
@ -1503,14 +1547,6 @@ BASE_FEATURE(kWebRtcMetronome,
"WebRtcMetronome",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSyncAccessHandleAllSyncSurface,
"SyncAccessHandleAllSyncSurface",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kNoCentralWebCacheLimitControl,
"NoCentralWebCacheLimitControl",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kRunTextInputUpdatePostLifecycle,
"RunTextInputUpdatePostLifecycle",
base::FEATURE_ENABLED_BY_DEFAULT);
@ -1539,10 +1575,6 @@ BASE_FEATURE(kThreadedBodyLoader,
"ThreadedBodyLoader",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kDocumentEventNodePathCaching,
"DocumentEventNodePathCaching",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kNewBaseUrlInheritanceBehavior,
"NewBaseUrlInheritanceBehavior",
base::FEATURE_DISABLED_BY_DEFAULT);
@ -1561,9 +1593,6 @@ bool IsNewBaseUrlInheritanceBehaviorEnabled() {
switches::kDisableNewBaseUrlInheritanceBehavior);
}
const base::FeatureParam<int> kDocumentMaxEventNodePathCachedEntries{
&kDocumentEventNodePathCaching, "max-cache-entries", 10};
BASE_FEATURE(
kPostMessageFirstPartyToThirdPartyDifferentBucketSameOriginBlocked,
"PostMessageFirstPartyToThirdPartyDifferentBucketSameOriginBlocked",
@ -1678,5 +1707,26 @@ BASE_FEATURE(kSpeculationRulesPrefetchFuture,
"SpeculationRulesPrefetchFuture",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kAllowPageWithIDBConnectionInBFCache,
"AllowPageWithIDBConnectionInBFCache",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kAllowPageWithIDBTransactionInBFCache,
"AllowPageWithIDBTransactionInBFCache",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsAllowPageWithIDBConnectionAndTransactionInBFCacheEnabled() {
return base::FeatureList::IsEnabled(kAllowPageWithIDBConnectionInBFCache) &&
base::FeatureList::IsEnabled(kAllowPageWithIDBTransactionInBFCache);
}
BASE_FEATURE(kUseBlinkSchedulerTaskRunnerWithCustomDeleter,
"UseBlinkSchedulerTaskRunnerWithCustomDeleter",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kExtendScriptResourceLifetime,
"ExtendScriptResourceLifetime",
base::FEATURE_DISABLED_BY_DEFAULT);
} // namespace features
} // namespace blink

View file

@ -1,145 +0,0 @@
#!/usr/bin/env python
# Copyright 2022 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This file isn't officially supported by the Chromium project. It's maintained
# on a best-effort basis by volunteers, so some things may be broken from time
# to time. If you encounter errors, it's most often due to files in base that
# have been added or moved since somebody last tried this script. Generally
# such errors are easy to diagnose.
"""Builds gn and generates Chromium's build files.
This script should only be run from a Chromium tarball. It will not work in a
regular git checkout. In a regular git checkout, a gn binary is pulled via
DEPS. To build gn from source in a regular checkout, see
https://gn.googlesource.com/gn/
"""
# This script may be removed if/when gn becomes available in the standard
# repositories for several mainstream Linux distributions.
import optparse
import os
import shutil
import subprocess
import sys
BOOTSTRAP_DIR = os.path.dirname(os.path.abspath(__file__))
GN_ROOT = os.path.dirname(BOOTSTRAP_DIR)
SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT))
def main(argv):
parser = optparse.OptionParser(description=sys.modules[__name__].__doc__)
parser.add_option(
'-d',
'--debug',
action='store_true',
help='Do a debug build. Defaults to release build.')
parser.add_option(
'-o', '--output', help='place output in PATH', metavar='PATH')
parser.add_option('-s', '--no-rebuild', help='ignored')
parser.add_option('--no-clean', help='ignored')
parser.add_option('--gn-gen-args', help='Args to pass to gn gen --args')
parser.add_option(
'--build-path',
help='The directory in which to build gn, '
'relative to the src directory. (eg. out/Release)')
parser.add_option('-v', '--verbose', help='ignored')
parser.add_option('-j', '--jobs', help='Number of jobs')
parser.add_option(
'--skip-generate-buildfiles',
action='store_true',
help='Do not run GN after building it. Causes --gn-gen-args '
'to have no effect.')
parser.add_option(
'--use-custom-libcxx',
action='store_true',
help='Build with in-tree libc++. This may be necessary if the system '
'libstdc++ does not support C++14 features.')
options, args = parser.parse_args(argv)
if args:
parser.error('Unrecognized command line arguments: %s.' % ', '.join(args))
if options.build_path:
build_rel = options.build_path
elif options.debug:
build_rel = os.path.join('out', 'Debug')
else:
build_rel = os.path.join('out', 'Release')
out_dir = os.path.join(SRC_ROOT, build_rel)
gn_path = options.output or os.path.join(out_dir, 'gn')
gn_build_dir = os.path.join(out_dir, 'gn_build')
ninja_binary = os.environ.get('NINJA', 'ninja')
def append_to_env(var, vals):
os.environ[var] = os.environ.get(var, '') + ' ' + ' '.join(vals)
# https://crbug.com/1166707
append_to_env('CXXFLAGS',
['-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS'])
if options.use_custom_libcxx:
libcxx_dir = os.path.join(gn_build_dir, 'libc++')
if not os.path.exists(libcxx_dir):
os.makedirs(libcxx_dir)
shutil.copy2(
os.path.join(BOOTSTRAP_DIR, 'libc++.ninja'),
os.path.join(libcxx_dir, 'build.ninja'))
with open(os.path.join(libcxx_dir, 'toolchain.ninja'), 'w') as f:
f.write('\n'.join([
'cxx = ' + os.environ.get('CXX', 'clang++'),
'ar = ' + os.environ.get('AR', 'ar'),
'cxxflags = ' + ' '.join(
os.environ.get('CFLAGS', '').split() +
os.environ.get('CXXFLAGS', '').split()),
]) + '\n')
subprocess.check_call([ninja_binary, '-C', libcxx_dir])
shutil.copy2(os.path.join(gn_build_dir, 'libc++.gn.so'), out_dir)
append_to_env('LDFLAGS', [
'-nodefaultlibs', 'libc++.gn.so',
'-lpthread', '-lc', '-lm',
'-Wl,-rpath="\$$ORIGIN/."', '-Wl,-rpath-link=.'
])
append_to_env('CXXFLAGS', [
'-nostdinc++',
'-isystem../../../buildtools/third_party/libc++',
' -isystem../../../buildtools/third_party/libc++/trunk/include',
'-isystem../../../buildtools/third_party/libc++abi/trunk/include'
])
cmd = [
sys.executable,
os.path.join(GN_ROOT, 'build', 'gen.py'),
'--no-last-commit-position',
'--out-path=' + gn_build_dir,
]
if options.debug:
cmd.append('--debug')
subprocess.check_call(cmd)
shutil.copy2(
os.path.join(BOOTSTRAP_DIR, 'last_commit_position.h'), gn_build_dir)
if options.jobs:
subprocess.check_call(
[ninja_binary, '-C', gn_build_dir, '-w', 'dupbuild=err', '-j'+str(options.jobs), 'gn'])
else:
subprocess.check_call(
[ninja_binary, '-C', gn_build_dir, '-w', 'dupbuild=err', 'gn'])
shutil.copy2(os.path.join(gn_build_dir, 'gn'), gn_path)
if not options.skip_generate_buildfiles:
gn_gen_args = options.gn_gen_args or ''
if not options.debug:
gn_gen_args += ' is_debug=false'
subprocess.check_call([
gn_path, 'gen', out_dir,
'--args=%s' % gn_gen_args, "--root=" + SRC_ROOT
])
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))

View file

@ -1,4 +1,4 @@
// Copyright (c) 2022 The Chromium Authors and Alex313031. All rights reserved.
// Copyright 2023 The Chromium Authors and Alex313031
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -30,7 +30,6 @@
#include "base/strings/stringprintf.h"
#include "base/task/single_thread_task_runner.h"
#include "base/trace_event/trace_event.h"
#include "base/values.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "third_party/skia/include/core/SkBitmap.h"
@ -474,8 +473,20 @@ bool HasWMSpecProperty(const base::flat_set<x11::Atom>& properties,
}
bool GetCustomFramePrefDefault() {
// Never default to using the custom title bar. Chromium should integrate, not be a special little snowflake.
// Never default to using the custom title bar. Thorium should integrate, not be a special little snowflake.
return false;
// _NET_WM_MOVERESIZE is needed for frame-drag-initiated window movement.
if (!WmSupportsHint(x11::GetAtom("_NET_WM_MOVERESIZE")))
return false;
ui::WindowManagerName wm = GuessWindowManager();
// If we don't know which WM is active, conservatively disable custom frames.
if (wm == WM_OTHER || wm == WM_UNNAMED)
return false;
// Stacking WMs should use custom frames.
return !IsWmTiling(wm);
}
bool IsWmTiling(WindowManagerName window_manager) {
@ -685,21 +696,6 @@ bool SuspendX11ScreenSaver(bool suspend) {
return true;
}
void StoreGpuExtraInfoIntoListValue(x11::VisualId system_visual,
x11::VisualId rgba_visual,
base::Value& list_value) {
list_value.Append(display::BuildGpuInfoEntry("Window manager",
ui::GuessWindowManagerName()));
list_value.Append(display::BuildGpuInfoEntry(
"Compositing manager", ui::IsCompositingManagerPresent() ? "Yes" : "No"));
list_value.Append(display::BuildGpuInfoEntry(
"System visual ID",
base::NumberToString(static_cast<uint32_t>(system_visual))));
list_value.Append(display::BuildGpuInfoEntry(
"RGBA visual ID",
base::NumberToString(static_cast<uint32_t>(rgba_visual))));
}
bool WmSupportsHint(x11::Atom atom) {
if (!SupportsEWMH())
return false;

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2022 Alex313031. -->
<!-- Copyright (c) 2023 Alex313031. -->
<grit base_dir="." latest_public_release="0" current_release="1"
output_all_resource_defines="false" source_lang_id="en" enc_check="möl">
<outputs>

View file

Before

Width:  |  Height:  |  Size: 845 B

After

Width:  |  Height:  |  Size: 845 B

View file

@ -1,4 +1,4 @@
// Copyright 2022 the V8 project authors and Alex313031. All rights reserved.
// Copyright 2023 the V8 project authors and Alex313031. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -133,9 +133,7 @@ class LanguageNames : public LocaleDisplayNamesCommon {
// 1.b If IsStructurallyValidLanguageTag(code) is false, throw a RangeError
// exception.
icu::Locale l =
icu::Locale(icu::Locale::forLanguageTag(code, status).getBaseName());
// 1.c Set code to CanonicalizeUnicodeLocaleId(code).
l.canonicalize(status);
icu::Locale::createCanonical(icu::Locale::forLanguageTag(code, status).getBaseName());
std::string checked = l.toLanguageTag<std::string>(status);
if (U_FAILURE(status)) {

View file

@ -1,4 +1,4 @@
// Copyright 2022 the V8 project authors and Alex313031. All rights reserved.
// Copyright 2023 the V8 project authors and Alex313031. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@ -305,6 +305,8 @@ class ParserBase {
// The current Zone, which might be the main zone or a temporary Zone.
Zone* zone() const { return zone_; }
V8_INLINE bool IsExtraordinaryPrivateNameAccessAllowed() const;
protected:
friend class v8::internal::ExpressionScope<ParserTypes<Impl>>;
friend class v8::internal::ExpressionParsingScope<ParserTypes<Impl>>;
@ -1759,6 +1761,39 @@ typename ParserBase<Impl>::IdentifierT ParserBase<Impl>::ParsePropertyName() {
return impl()->EmptyIdentifierString();
}
template <typename Impl>
bool ParserBase<Impl>::IsExtraordinaryPrivateNameAccessAllowed() const {
if (flags().parsing_while_debugging() != ParsingWhileDebugging::kYes &&
!flags().is_repl_mode()) {
return false;
}
Scope* current_scope = scope();
while (current_scope != nullptr) {
switch (current_scope->scope_type()) {
case CLASS_SCOPE:
case CATCH_SCOPE:
case BLOCK_SCOPE:
case WITH_SCOPE:
case SHADOW_REALM_SCOPE:
return false;
// Top-level scopes.
case SCRIPT_SCOPE:
case MODULE_SCOPE:
return true;
// Top-level wrapper function scopes.
case FUNCTION_SCOPE:
return function_literal_id_ == kFunctionLiteralIdTopLevel;
// Used by debug-evaluate. If the outer scope is top-level,
// extraordinary private name access is allowed.
case EVAL_SCOPE:
current_scope = current_scope->outer_scope();
DCHECK_NOT_NULL(current_scope);
break;
}
}
UNREACHABLE();
}
template <typename Impl>
typename ParserBase<Impl>::ExpressionT
ParserBase<Impl>::ParsePropertyOrPrivatePropertyName() {
@ -1780,7 +1815,10 @@ ParserBase<Impl>::ParsePropertyOrPrivatePropertyName() {
PrivateNameScopeIterator private_name_scope_iter(scope());
// Parse the identifier so that we can display it in the error message
name = impl()->GetIdentifier();
if (private_name_scope_iter.Done()) {
// In debug-evaluate, we relax the private name resolution to enable
// evaluation of obj.#member outside the class bodies in top-level scopes.
if (private_name_scope_iter.Done() &&
!IsExtraordinaryPrivateNameAccessAllowed()) {
impl()->ReportMessageAt(Scanner::Location(pos, pos + 1),
MessageTemplate::kInvalidPrivateFieldResolution,
impl()->GetRawNameFromIdentifier(name));
@ -2825,7 +2863,8 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseObjectLiteral() {
// this runtime function. Here, we make sure that the number of
// properties is less than number of arguments allowed for a runtime
// call.
if (has_rest_property && properties.length() > Code::kMaxArguments) {
if (has_rest_property &&
properties.length() > InstructionStream::kMaxArguments) {
expression_scope()->RecordPatternError(Scanner::Location(pos, position()),
MessageTemplate::kTooManyArguments);
}
@ -2881,7 +2920,7 @@ void ParserBase<Impl>::ParseArguments(
if (!Check(Token::COMMA)) break;
}
if (args->length() > Code::kMaxArguments) {
if (args->length() > InstructionStream::kMaxArguments) {
ReportMessage(MessageTemplate::kTooManyArguments);
return;
}
@ -3928,7 +3967,7 @@ void ParserBase<Impl>::ParseFormalParameterList(FormalParametersT* parameters) {
if (peek() != Token::RPAREN) {
while (true) {
// Add one since we're going to be adding a parameter.
if (parameters->arity + 1 > Code::kMaxArguments) {
if (parameters->arity + 1 > InstructionStream::kMaxArguments) {
ReportMessage(MessageTemplate::kTooManyParameters);
return;
}
@ -4316,6 +4355,8 @@ void ParserBase<Impl>::ParseFunctionBody(
StatementListT* body, IdentifierT function_name, int pos,
const FormalParametersT& parameters, FunctionKind kind,
FunctionSyntaxKind function_syntax_kind, FunctionBodyType body_type) {
CheckStackOverflow();
if (IsResumableFunction(kind)) impl()->PrepareGeneratorVariables();
DeclarationScope* function_scope = parameters.scope;
@ -4736,8 +4777,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseClassLiteral(
if (Check(Token::SEMICOLON)) continue;
// Either we're parsing a `static { }` initialization block or a property.
if (v8_flags.harmony_class_static_blocks && peek() == Token::STATIC &&
PeekAhead() == Token::LBRACE) {
if (peek() == Token::STATIC && PeekAhead() == Token::LBRACE) {
BlockT static_block = ParseClassStaticBlock(&class_info);
impl()->AddClassStaticBlock(static_block, &class_info);
continue;