Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chromium for openSUSE:Factory checked in at 2026-04-26 21:11:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chromium (Old) and /work/SRC/openSUSE:Factory/.chromium.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium" Sun Apr 26 21:11:19 2026 rev:516 rq:1349179 version:148.0.7778.56 Changes: -------- --- /work/SRC/openSUSE:Factory/chromium/chromium.changes 2026-04-23 17:10:54.360269925 +0200 +++ /work/SRC/openSUSE:Factory/.chromium.new.11940/chromium.changes 2026-04-26 21:13:45.271405836 +0200 @@ -1,0 +2,46 @@ +Sat Apr 25 07:23:43 UTC 2026 - Andreas Stieger <[email protected]> + +- promote Chromium 148 to early stable + +------------------------------------------------------------------- +Thu Apr 23 19:03:26 UTC 2026 - Andreas Stieger <[email protected]> + +- Chromium 148.0.7778.56 (beta released 2026-04-23) +- bump version in buildrequires for gn (0.20260331) + (needs variable inputs added in March 2026) +- added patches: + * chromium-148-revert_std_ranges_iota.patch + (revert for llvm < 20, + error: no member named 'iota' in namespace 'std::ranges') + * ppc-chromium-v8-3d60e0915e8a0caec994a400627f9dfa00e717d0.patch + (from upstream, add missing implementation for ppc) + * chromium-148-no_dep_on_intree_rustc_binary.patch + (do not depend on intree binary of rustc) +- added patches: + * chromium-148-only_address_sanitizer.patch + (prevent undefined symbol __sanitizer_set_death_callback) + * chromium-f14702bb2b25c940cc95eb772110e715618bd069.patch + (revert upstream change) + * ppc-chromium-v8-3d60e0915e8a0caec994a400627f9dfa00e717d0.patch + (obsolete, upstream) +- removed patches: + * chromium-147-ffmpeg_includes.patch (upstream) + * chromium-3bccbdead3efa7e91f7c9d4078106dedaed84fb8.patch (upstream) +- modified patches: + * ppc-fedora-fix-different-data-layouts.patch + * ppc-fedora-skia-vsx-instructions.patch + * ppc-fedora-0002-regenerate-xnn-buildgn.patch + * chromium-146-ignore-for-ubsan.patch + * chromium-f14702bb2b25c940cc95eb772110e715618bd069.patch + adjust context for changes made in 7120cf7 + * chromium-146-value_or.patch (one more place in v8) + * chromium-147-blink_renderer_need_ffmpeg.patch (new hunk added) +- keeplibs: + added: third_party/gperf + (needed by blink/renderer/core/css/parser/at_rule_descriptors.cc) + change: third_party/harfbuzz-ng to third_party/harfbuzz + drop: third_party/libaom/source/libaom/third_party/SVT-AV1 +- force link to system gperf binary instead of hardcoded x86 + in tree copy + +------------------------------------------------------------------- @@ -4,0 +51,5 @@ + * CVE-2026-6919: Use after free in DevTools + * CVE-2026-6920: Out of bounds read in GPU + * CVE-2026-6921: Race in GPU + * Various fixes from internal audits, fuzzing and other + initiatives Old: ---- chromium-147-ffmpeg_includes.patch chromium-147.0.7727.116-linux.tar.xz New: ---- chromium-148-no_dep_on_intree_rustc_binary.patch chromium-148-only_address_sanitizer.patch chromium-148-revert_std_ranges_iota.patch chromium-148.0.7778.56-linux.tar.xz chromium-f14702bb2b25c940cc95eb772110e715618bd069.patch ----------(Old B)---------- Old:- removed patches: * chromium-147-ffmpeg_includes.patch (upstream) * chromium-3bccbdead3efa7e91f7c9d4078106dedaed84fb8.patch (upstream) ----------(Old E)---------- ----------(New B)---------- New: (from upstream, add missing implementation for ppc) * chromium-148-no_dep_on_intree_rustc_binary.patch (do not depend on intree binary of rustc) New:- added patches: * chromium-148-only_address_sanitizer.patch (prevent undefined symbol __sanitizer_set_death_callback) New:- added patches: * chromium-148-revert_std_ranges_iota.patch (revert for llvm < 20, New: (prevent undefined symbol __sanitizer_set_death_callback) * chromium-f14702bb2b25c940cc95eb772110e715618bd069.patch (revert upstream change) ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chromium.spec ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:52.959719959 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:52.963720123 +0200 @@ -79,7 +79,7 @@ # minimal esbuild version %define esbuild_version 0.25.1 # minimal gn version -%define gn_version 0.20251217 +%define gn_version 0.20260331 # local rollup override to run without binaries %define rollup_version 3.29.5 %if 0%{?suse_version} <= 1699 @@ -132,7 +132,7 @@ %global official_build 1 Name: chromium%{n_suffix} -Version: 147.0.7727.116 +Version: 148.0.7778.56 Release: 0 Summary: Google's open source browser project License: BSD-3-Clause AND LGPL-2.1-or-later @@ -200,7 +200,7 @@ Patch396: chromium-146-value_or.patch Patch397: chromium-146-has_no_clone.patch Patch398: chromium-147-comment_safe_assert.patch -Patch399: chromium-147-ffmpeg_includes.patch +Patch399: chromium-148-no_dep_on_intree_rustc_binary.patch # conditionally applied patches ppc64le only # where applicable patch numbers from fedora specfile + 100 Patch400: chromium-141-glibc-2.42-SYS_SECCOMP.patch @@ -294,7 +294,11 @@ # clang++: error: unknown argument: '-fsanitize-ignore-for-ubsan-feature=array-bounds' Patch1066: chromium-146-ignore-for-ubsan.patch Patch1067: chromium-146-bytemuck.patch -# +Patch1068: chromium-148-only_address_sanitizer.patch +# error: no member named 'iota' in namespace 'std::ranges' +Patch1069: chromium-148-revert_std_ranges_iota.patch +# revert using raw_ref in permission_request_manager, fails to compile +Patch1070: chromium-f14702bb2b25c940cc95eb772110e715618bd069.patch Patch1080: rollup.patch # end conditionally applied patches @@ -573,14 +577,18 @@ %patch -p1 -P 1061 %patch -p1 -P 1062 %patch -p1 -R -P 1063 +%patch -p1 -P 1069 fi %patch -p1 -P 1064 if [[ $(echo ${clang_version} | cut -d. -f1) -lt 23 ]]; then %patch -p1 -P 1066 %patch -p1 -P 1067 +%patch -p1 -P 1068 fi +%patch -p1 -R -P 1070 + ## ROLLUP_HACK rm -rf third_party/devtools-frontend/src/node_modules/rollup rm -rf third_party/devtools-frontend/src/node_modules/@rollup/rollup-linux-* @@ -643,6 +651,10 @@ node_version=$(/usr/bin/node --version) sed -i -e "s@^NODE_VERSION=.*@NODE_VERSION=\"${node_version}\"@" third_party/node/update_node_binaries +# fix the gperf binary +rm -f third_party/gperf/cipd/bin/gperf +ln -sf /usr/bin/gperf third_party/gperf/cipd/bin/gperf + # python3 mkdir -p $HOME/bin %if 0%{?suse_version} >= 1600 @@ -774,6 +786,7 @@ third_party/google_input_tools/third_party/closure_library third_party/google_input_tools/third_party/closure_library/third_party/closure third_party/googletest + third_party/gperf third_party/highway third_party/hunspell third_party/ink @@ -787,7 +800,6 @@ third_party/libaddressinput third_party/libaom third_party/libaom/source/libaom/third_party/fastfeat - third_party/libaom/source/libaom/third_party/SVT-AV1 third_party/libaom/source/libaom/third_party/vector third_party/libaom/source/libaom/third_party/x86inc third_party/libc++ @@ -914,7 +926,7 @@ ) %if !%{with system_harfbuzz} keeplibs+=( - third_party/harfbuzz-ng + third_party/harfbuzz ) %endif %if !%{with system_freetype} @@ -947,7 +959,6 @@ keeplibs+=( third_party/speech-dispatcher third_party/usb_ids - third_party/xdg-utils ) # really if not with system_re2 but googletest needs it keeplibs+=( third_party/re2 ) @@ -1066,7 +1077,7 @@ %endif %if %{with system_harfbuzz} gn_system_libraries+=( - harfbuzz-ng + harfbuzz ) %endif %if %{with system_freetype} ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:53.139727314 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:53.143727478 +0200 @@ -1,6 +1,6 @@ -mtime: 1776881908 -commit: 333a54dbc65df3ebc2d299e0ef4e14736d61489a3787df971aac935e2ac906d5 -url: https://src.opensuse.org/chromium/chromium.git -revision: 333a54dbc65df3ebc2d299e0ef4e14736d61489a3787df971aac935e2ac906d5 +mtime: 1777101857 +commit: 361fee9b62f264c020066f9aaceabd17545f55c2204f33030654e1b58538f5e2 +url: https://src.opensuse.org/chromium/chromium +revision: 361fee9b62f264c020066f9aaceabd17545f55c2204f33030654e1b58538f5e2 projectscmsync: https://src.opensuse.org/chromium/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-04-25 09:24:17.000000000 +0200 @@ -0,0 +1,4 @@ +.osc +*.patch~ +*-build/ +.*.swp ++++++ chromium-146-ignore-for-ubsan.patch ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:53.431739245 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:53.431739245 +0200 @@ -17,4 +17,12 @@ ] } } +@@ -1934,7 +1934,6 @@ + # sanitizer) is enabled, they then do expensive debug like operations. We + # want to suppress this behaviour since we want to keep performance costs + # as low as possible while having these checks. +- "-fsanitize-ignore-for-ubsan-feature=return", + ] + } + } ++++++ chromium-146-value_or.patch ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:53.455740225 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:53.455740225 +0200 @@ -49,4 +49,15 @@ } #endif // BUILDFLAG(ENTERPRISE_CACHE_ENCRYPTION) +--- chromium-148.0.7766.3/v8/src/compiler/turboshaft/wasm-shuffle-reducer.cc 2026/04/08 09:47:38 1.1 ++++ chromium-148.0.7766.3/v8/src/compiler/turboshaft/wasm-shuffle-reducer.cc 2026/04/08 09:47:50 +@@ -573,7 +573,7 @@ + uint8_t index = shuffle.shuffle[i]; + if (index >= lower_limit && index <= upper_limit) { + max = std::max(static_cast<uint8_t>(index % kSimd128Size), +- max.value_or({})); ++ max.value_or(0)); + } + } + if (max) { ++++++ chromium-147-blink_renderer_need_ffmpeg.patch ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:53.471740879 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:53.475741043 +0200 @@ -1,17 +1,32 @@ ---- chromium-147.0.7727.3/third_party/blink/renderer/platform/media/BUILD.gn 2026/03/18 13:00:37 1.1 -+++ chromium-147.0.7727.3/third_party/blink/renderer/platform/media/BUILD.gn 2026/03/18 13:03:25 -@@ -114,6 +114,13 @@ - "//third_party/blink/renderer/platform:allow_discouraged_type", +Index: chromium-148.0.7778.5/third_party/blink/renderer/platform/media/BUILD.gn +=================================================================== +--- chromium-148.0.7778.5.orig/third_party/blink/renderer/platform/media/BUILD.gn ++++ chromium-148.0.7778.5/third_party/blink/renderer/platform/media/BUILD.gn +@@ -25,6 +25,13 @@ blink_platform_sources("media_final") { + "//url", ] + deps = [ "//third_party/blink/renderer/platform:allow_discouraged_type" ] ++ ++ if (media_use_ffmpeg) { ++ deps += [ ++ "//third_party/ffmpeg", ++ "//third_party/ffmpeg:ffmpeg_features", ++ ] ++ } + } + component("media") { +@@ -112,6 +119,12 @@ + "//third_party/blink/renderer/platform", + "//third_party/blink/renderer/platform:allow_discouraged_type", + ] + if (media_use_ffmpeg) { + deps += [ + "//third_party/ffmpeg", + "//third_party/ffmpeg:ffmpeg_features", + ] + } -+ - if (enable_hls_demuxer) { - sources += [ - "multi_buffer_data_source_factory.cc", + } + + source_set("unit_tests") { ++++++ chromium-148-no_dep_on_intree_rustc_binary.patch ++++++ --- chromium-148.0.7766.3/build/toolchain/gcc_toolchain.gni 2026/04/07 23:25:44 1.1 +++ chromium-148.0.7766.3/build/toolchain/gcc_toolchain.gni 2026/04/07 23:25:57 @@ -681,7 +681,6 @@ "//build/action_helpers.py", "//build/gn_helpers.py", "//build/rust/gni_impl/rustc_wrapper.py", - "//third_party/rust-toolchain/bin/rustc", ] # RSP manipulation due to https://bugs.chromium.org/p/gn/issues/detail?id=249 --- chromium-148.0.7778.5/build/rust/cargo_crate.gni 2026/04/08 21:57:34 1.1 +++ chromium-148.0.7778.5/build/rust/cargo_crate.gni 2026/04/08 21:57:43 @@ -456,12 +456,6 @@ rustc_print_cfg_path, ] - if (host_os == "win") { - inputs += [ "//third_party/rust-toolchain/bin/rustc.exe" ] - } else { - inputs += [ "//third_party/rust-toolchain/bin/rustc" ] - } - build_script_target = ":${_build_script_name}($rust_macro_toolchain)" deps = [ ":${_build_script_name}_write_rustflags", --- chromium-148.0.7778.5/build/rust/std/BUILD.gn 2026/04/08 21:57:55 1.1 +++ chromium-148.0.7778.5/build/rust/std/BUILD.gn 2026/04/08 21:58:01 @@ -267,12 +267,6 @@ out_libdir = rebase_path(target_out_dir, root_build_dir) out_depfile = rebase_path(depfile, root_build_dir) - if (host_os == "win") { - inputs = [ "//third_party/rust-toolchain/bin/rustc.exe" ] - } else { - inputs = [ "//third_party/rust-toolchain/bin/rustc" ] - } - # For the rustc sysroot we must include even the rlibs we don't pass to # the C++ linker. all_stdlibs_to_copy = stdlib_files + skip_stdlib_files ++++++ chromium-148-only_address_sanitizer.patch ++++++ --- chromium-148.0.7743.0/v8/src/sandbox/testing.cc 2026/03/25 23:17:45 1.1 +++ chromium-148.0.7743.0/v8/src/sandbox/testing.cc 2026/03/25 23:19:18 @@ -854,7 +854,7 @@ // We should also uninstall the sanitizer death callback as our crash filter // may hand a crash over to sanitizers, which should then not enter our crash // filtering logic a second time. -#ifdef V8_USE_ANY_SANITIZER +#ifdef V8_USE_ADDRESS_SANITIZER __sanitizer_set_death_callback(nullptr); #endif // V8_USE_ANY_SANITIZER } @@ -1134,7 +1134,7 @@ } CHECK(success); -#ifdef V8_USE_ANY_SANITIZER +#ifdef V8_USE_ADDRESS_SANITIZER // We install sanitizer specific crash handlers. These can only check for // in-sandbox crashes on certain configurations. // ++++++ chromium-148-revert_std_ranges_iota.patch ++++++ --- chromium-148.0.7753.0/base/strings/string_util_impl_helpers.h 2026-03-25 04:03:27.000000000 +0100 +++ chromium-148.0.7743.0/base/strings/string_util_impl_helpers.h 2026-03-20 04:03:22.000000000 +0100 @@ -232,7 +232,7 @@ // Lookup table for fast ASCII case-insensitive comparison. inline constexpr std::array<unsigned char, 256> kToLower = []() { std::array<unsigned char, 256> table; - std::ranges::iota(table, 0); + std::iota(table.begin(), table.end(), 0); std::iota(table.begin() + size_t{'A'}, table.begin() + size_t{'Z'} + 1, 'a'); return table; }(); ++++++ chromium-147.0.7727.116-linux.tar.xz -> chromium-148.0.7778.56-linux.tar.xz ++++++ /work/SRC/openSUSE:Factory/chromium/chromium-147.0.7727.116-linux.tar.xz /work/SRC/openSUSE:Factory/.chromium.new.11940/chromium-148.0.7778.56-linux.tar.xz differ: char 15, line 1 ++++++ chromium-f14702bb2b25c940cc95eb772110e715618bd069.patch ++++++ commit f14702bb2b25c940cc95eb772110e715618bd069 Author: Antonio Sartori <[email protected]> Date: Mon Mar 16 04:02:03 2026 -0700 [permissions] Use base::raw_ref in PermissionRequestManager As per https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++.md#non_owning-pointers-in-class-fields, non-null member pointers in classes should be stored inside base::raw_ref. This also makes the code easier. Bug: 418963644 Change-Id: Icabe58bd9a6f0c64ac2e18d25f447bf7931df4da Fixed: 418963644 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7652577 Reviewed-by: Andy Paicu <[email protected]> Commit-Queue: Antonio Sartori <[email protected]> Cr-Commit-Position: refs/heads/main@{#1599788} diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc index 62713eb2eb639..8ba2119bba3bd 100644 --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc @@ -16,7 +16,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/logging.h" -#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/user_metrics.h" @@ -176,15 +176,6 @@ bool RequestExistsExactlyOnce( }); } -void EraseRequest(std::vector<base::WeakPtr<PermissionRequest>>& requests, - PermissionRequest* request) { - std::erase_if(requests, - [request](base::WeakPtr<PermissionRequest> weak_ptr) -> bool { - CHECK(weak_ptr); - return weak_ptr.get() == request; - }); -} - } // namespace // PermissionRequestManager ---------------------------------------------------- @@ -364,9 +355,9 @@ bool PermissionRequestManager::ReprioritizeCurrentRequestIfNeeded() { // Pop out all invalid requests in front of the queue. while (!pending_permission_requests_.IsEmpty() && !HasActiveSourceFrameOrDisallowActivationOtherwise( - pending_permission_requests_.Peek())) { + *pending_permission_requests_.Peek())) { auto request = pending_permission_requests_.Pop(); - FinalizeAndCancelRequest(request.get()); + FinalizeAndCancelRequest(*request); } if (pending_permission_requests_.IsEmpty()) { @@ -419,10 +410,9 @@ bool PermissionRequestManager::ReprioritizeCurrentRequestIfNeeded() { // request if the next candidate has just been added to pending queue but // not validated yet. if (std::ranges::any_of( - validated_requests_.begin(), validated_requests_.end(), - [&](const auto& element) -> bool { - CHECK(element); - return element.get() == pending_permission_requests_.Peek(); + validated_requests_, + [&](const raw_ref<PermissionRequest> element) -> bool { + return element == *pending_permission_requests_.Peek(); })) { return true; } @@ -446,7 +436,7 @@ bool PermissionRequestManager::ReprioritizeCurrentRequestIfNeeded() { bool PermissionRequestManager:: HasActiveSourceFrameOrDisallowActivationOtherwise( - PermissionRequest* request) const { + const PermissionRequest& request) const { const auto iter = request_sources_map_.find(request); if (iter != request_sources_map_.end()) { return !iter->second.IsSourceFrameInactiveAndDisallowActivation(); @@ -455,18 +445,18 @@ bool PermissionRequestManager:: } void PermissionRequestManager::FinalizeAndCancelRequest( - PermissionRequest* request) { - if (request_sources_map_.erase(request) > 0) { - EraseRequest(validated_requests_, request); + PermissionRequest& request) { + if (request_sources_map_.erase(base::raw_ref(request)) > 0) { + std::erase(validated_requests_, request); } - request->Cancelled(); + request.Cancelled(); } void PermissionRequestManager::QueueRequest( content::RenderFrameHost* source_frame, std::unique_ptr<PermissionRequest> request) { request_sources_map_.emplace( - request.get(), PermissionRequestSource({source_frame->GetGlobalId()})); + *request, PermissionRequestSource({source_frame->GetGlobalId()})); pending_permission_requests_.Push(std::move(request)); } @@ -776,8 +766,8 @@ void PermissionRequestManager::FinalizeCurrentRequests() { // Erase the request from |validated_requests_| before its destruction // during requests_.clear() at the end of this function. for (const auto& request : requests_) { - EraseRequest(validated_requests_, request.get()); - request_sources_map_.erase(request.get()); + std::erase(validated_requests_, *request); + request_sources_map_.erase(base::raw_ref(*request)); FinishRequestIncludingDuplicates(request.get()); } @@ -996,12 +986,13 @@ void PermissionRequestManager::DequeueRequestIfNeeded() { // Find first valid request. while (!pending_permission_requests_.IsEmpty()) { auto next = pending_permission_requests_.Pop(); - if (HasActiveSourceFrameOrDisallowActivationOtherwise(next.get())) { - validated_requests_.push_back(next->GetWeakPtr()); + if (HasActiveSourceFrameOrDisallowActivationOtherwise(*next)) { + validated_requests_.push_back( + base::raw_ref<PermissionRequest>::from_ptr(next.get())); requests_.push_back(std::move(next)); break; } - FinalizeAndCancelRequest(next.get()); + FinalizeAndCancelRequest(*next); } if (requests_.empty()) { @@ -1010,13 +1001,14 @@ void PermissionRequestManager::DequeueRequestIfNeeded() { // Find additional requests that can be grouped with the first one. for (; !pending_permission_requests_.IsEmpty();) { - auto* front = pending_permission_requests_.Peek(); - if (!HasActiveSourceFrameOrDisallowActivationOtherwise(front)) { - FinalizeAndCancelRequest(front); + PermissionRequest* front = pending_permission_requests_.Peek(); + if (!HasActiveSourceFrameOrDisallowActivationOtherwise(*front)) { + FinalizeAndCancelRequest(*front); continue; } - validated_requests_.push_back(front->GetWeakPtr()); + validated_requests_.push_back( + base::raw_ref<PermissionRequest>::from_ptr(front)); if (!ShouldGroupRequests(requests_.front().get(), front)) { break; } @@ -1029,8 +1021,9 @@ void PermissionRequestManager::DequeueRequestIfNeeded() { // priority order for (const auto& request_list : pending_permission_requests_) { for (auto& request : request_list) { - if (HasActiveSourceFrameOrDisallowActivationOtherwise(request.get())) { - validated_requests_.push_back(request->GetWeakPtr()); + if (HasActiveSourceFrameOrDisallowActivationOtherwise(*request)) { + validated_requests_.push_back( + base::raw_ref<PermissionRequest>::from_ptr(request.get())); } } } @@ -1394,8 +1387,9 @@ void PermissionRequestManager::CleanUpRequests() { for (; !pending_permission_requests_.IsEmpty(); pending_permission_requests_.Pop()) { auto* pending_request = pending_permission_requests_.Peek(); - EraseRequest(validated_requests_, pending_request); - request_sources_map_.erase(pending_request); + std::erase(validated_requests_, *pending_request); + request_sources_map_.erase( + base::raw_ref<PermissionRequest>::from_ptr(pending_request)); CancelRequestIncludingDuplicates(pending_request); FinishRequestIncludingDuplicates(pending_request); } diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h index b9152572ce786..9d2eb71712bee 100644 --- a/components/permissions/permission_request_manager.h +++ b/components/permissions/permission_request_manager.h @@ -16,6 +16,7 @@ #include "base/callback_list.h" #include "base/check_is_test.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/time/time.h" @@ -346,14 +347,6 @@ class PermissionRequestManager kFinalize }; - struct lex_compare { - bool operator()(const base::WeakPtr<PermissionRequest>& lhs, - const base::WeakPtr<PermissionRequest>& rhs) const { - CHECK(lhs); - CHECK(rhs); - return lhs.get() < rhs.get(); - } - }; // Reprioritize the current requests (preempting, finalizing) based on what // type of UI has been shown for `requests_` and current pending requests // queue. @@ -376,11 +369,11 @@ class PermissionRequestManager // RenderFrameHost::IsInactiveAndDisallowActivation() bool HasActiveSourceFrameOrDisallowActivationOtherwise( - PermissionRequest* request) const; + const PermissionRequest& request) const; // Cancels a request and removes it from |request_sources_map_| and // |validated_requests_|. - void FinalizeAndCancelRequest(PermissionRequest* request); + void FinalizeAndCancelRequest(PermissionRequest& request); // Adds `request` into `pending_permission_requests_`, and request's // `source_frame` into `request_sources_map_`. @@ -560,13 +553,14 @@ class PermissionRequestManager // Maps each PermissionRequest currently in |requests_| or // |pending_permission_requests_| to which RenderFrameHost it originated from. // Note that no date is stored for |duplicate_requests_|. - std::map<PermissionRequest*, PermissionRequestSource> request_sources_map_; + std::map<base::raw_ref<PermissionRequest>, PermissionRequestSource> + request_sources_map_; // Sequence of requests from pending queue will be marked as validated, when // we are extracting a group of requests from the queue to show to user. This // is an immature solution to avoid an infinitive loop of preempting, we would // not prempt a request if the incoming request is already validated. - std::vector<base::WeakPtr<PermissionRequest>> validated_requests_; + std::vector<base::raw_ref<PermissionRequest>> validated_requests_; // TODO(crbug.com/484371187): Investigate if reentrancy can be removed. base::ObserverList< ++++++ ppc-fedora-0002-regenerate-xnn-buildgn.patch ++++++ ++++ 48813 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/chromium/ppc-fedora-0002-regenerate-xnn-buildgn.patch ++++ and /work/SRC/openSUSE:Factory/.chromium.new.11940/ppc-fedora-0002-regenerate-xnn-buildgn.patch ++++++ ppc-fedora-fix-different-data-layouts.patch ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:54.155768826 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:54.163769154 +0200 @@ -28,13 +28,13 @@ =================================================================== --- chromium-144.0.7559.59.orig/build/config/compiler/BUILD.gn +++ chromium-144.0.7559.59/build/config/compiler/BUILD.gn -@@ -470,7 +470,7 @@ config("compiler") { - - # Linker warnings. - if (fatal_linker_warnings && !is_apple && current_os != "aix" && -- current_os != "zos") { -+ current_os != "zos" && current_cpu != "ppc64") { - ldflags += [ "-Wl,--fatal-warnings" ] +@@ -1009,7 +1009,7 @@ + # errors. We only apply fatal warnings when using lld. + ldflags += [ "-Wl,-fatal_warnings" ] + } +- if (!is_apple && current_os != "aix" && current_os != "zos") { ++ if (!is_apple && current_os != "aix" && current_os != "zos" && current_cpu != "ppc64") { + ldflags += [ "-Wl,--fatal-warnings" ] + } } - if (fatal_linker_warnings && is_apple) { ++++++ ppc-fedora-skia-vsx-instructions.patch ++++++ --- /var/tmp/diff_new_pack.TWvKRz/_old 2026-04-26 21:13:54.203770788 +0200 +++ /var/tmp/diff_new_pack.TWvKRz/_new 2026-04-26 21:13:54.207770951 +0200 @@ -16,8 +16,8 @@ template("optional") { if (invoker.enabled) { @@ -1700,6 +1706,7 @@ skia_component("skia") { - ":skx", ":typeface_fontations", + ":typeface_freetype", ":vello", + ":vsx", ":webp_decode", @@ -51,7 +51,7 @@ + #ifndef SK_CPU_PPC64 + #define SK_CPU_PPC64 + #endif -+ #undef SK_CPU_SSE_LEVEL ++ #undef SK_CPU_X64_LEVEL +#endif + +// Newer versions of clang and gcc for ppc64 ship with wrappers that translate @@ -59,20 +59,20 @@ +// to be Intel. Currently, full API support for SSSE3 on POWER8 and later +// processors. +#if defined(__POWER8_VECTOR__) && defined(__has_include) && \ -+ !defined(SK_CPU_SSE_LEVEL) ++ !defined(SK_CPU_X64_LEVEL) + + // Clang ships both Intel and PPC headers in its PPC version, storing the + // PPC compatibility in a subdirectory that the compiler will include before + // its standard library include directory. + #if (__has_include(<tmmintrin.h>) && !defined(__clang__)) || \ + __has_include(<ppc_wrappers/tmmintrin.h>) -+ #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3 ++ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSSE3 + #elif (__has_include(<emmintrin.h>) && !defined(__clang__)) || \ + __has_include(<ppc_wrappers/emmintrin.h>) -+ #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 ++ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2 + #endif + -+ #ifdef SK_CPU_SSE_LEVEL ++ #ifdef SK_CPU_X64_LEVEL + #define SK_PPC64_HAS_SSE_COMPAT + #ifndef NO_WARN_X86_INTRINSICS + #define NO_WARN_X86_INTRINSICS @@ -92,8 +92,8 @@ #endif // Renamed from "pause" to avoid conflict with function defined in unistd.h --#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 -+#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 && \ +-#if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2 ++#if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2 && \ + !defined(SK_PPC64_CLANG_MFPPR_BUG) #include <emmintrin.h> static void do_pause() { _mm_pause(); } @@ -106,14 +106,14 @@ // The rest are scattershot at the moment but I want to get them // all migrated to be normal code inside SkBitmapProcState.cpp. --#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 +-#if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2 +#if defined(SK_PPC64_HAS_SSE_COMPAT) -+ #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 ++ #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSSE3 + #include <tmmintrin.h> + #else + #include <emmintrin.h> + #endif -+#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 ++#elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2 #include <immintrin.h> #elif defined(SK_ARM_HAS_NEON) #include <arm_neon.h> @@ -124,7 +124,7 @@ @@ -69,7 +69,7 @@ #endif - #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 + #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2 - #include <immintrin.h> + #include <emmintrin.h> @@ -136,7 +136,7 @@ +++ chromium-144.0.7559.59/third_party/skia/src/opts/SkRasterPipeline_opts.h @@ -1,5 +1,6 @@ /* - * Copyright 2018 Google Inc. + * Copyright 2018 Google LLC + * Copyright 2023-2024 Raptor Engineering, LLC * * Use of this source code is governed by a BSD-style license that can be @@ -147,9 +147,9 @@ #define SKRP_CPU_NEON +#elif defined(SK_PPC64_HAS_SSE_COMPAT) + #define SKRP_CPU_VSX - #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SKX - #define SKRP_CPU_SKX - #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX2 + #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_ML4 + #define SKRP_CPU_ML4 + #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX2 @@ -103,6 +106,8 @@ using NoCtx = const void*; #include <math.h> #elif defined(SKRP_CPU_NEON) @@ -353,7 +353,7 @@ template <typename T> using V = Vec<4, T>; using F = V<float >; @@ -1427,6 +1618,15 @@ SI F from_half(U16 h) { - #elif defined(SKRP_CPU_HSW) + #elif defined(SKRP_CPU_AVX2) return _mm256_cvtph_ps((__m128i)h); +// Disabled for now as this is not a particularly hot function @@ -369,7 +369,7 @@ // Remember, a half is 1-5-10 (sign-exponent-mantissa) with 15 exponent bias. U32 sem = expand(h), @@ -1450,6 +1650,16 @@ SI U16 to_half(F f) { - #elif defined(SKRP_CPU_HSW) + #elif defined(SKRP_CPU_AVX2) return (U16)_mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION); +// Disabled for now as this is not a particularly hot function @@ -422,7 +422,7 @@ // Note: on neon this is a saturating multiply while the others are not. +// Note: for POWER, the code below was borrowed from emmintrin.h SI I16 scaled_mult(I16 a, I16 b) { - #if defined(SKRP_CPU_SKX) + #if defined(SKRP_CPU_ML4) return (I16)_mm256_mulhrs_epi16((__m256i)a, (__m256i)b); @@ -5661,6 +5880,22 @@ SI I16 scaled_mult(I16 a, I16 b) { return vqrdmulhq_s16(a, b); @@ -527,15 +527,15 @@ #endif #if SKVX_USE_SIMD -- #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX +- #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX + #if __PPC64__ + #define NO_WARN_X86_INTRINSICS + #include <mmintrin.h> + #include <emmintrin.h> + #include <tmmintrin.h> -+ #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX ++ #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX #include <immintrin.h> - #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 + #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE41 #include <smmintrin.h> Index: chromium-144.0.7559.59/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp =================================================================== @@ -561,7 +561,7 @@ -#if defined(SK_CPU_X86) && \ +#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && \ !defined(SK_ENABLE_OPTIMIZE_SIZE) && \ - SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 + SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3 Index: chromium-144.0.7559.59/third_party/skia/src/core/SkBlitMask_opts.cpp =================================================================== @@ -573,8 +573,8 @@ // All Init_foo functions are omitted when optimizing for size - #elif defined(SK_CPU_X86) + #elif defined(SK_CPU_X86) || defined(SK_CPU_PPC64) - #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 - if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BlitMask_ssse3(); } + #if SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3 + if (SkCpu::Supports(SkX64::SSSE3)) { Init_BlitMask_ssse3(); } #endif Index: chromium-144.0.7559.59/third_party/skia/src/core/SkBitmapProcState_opts.cpp =================================================================== @@ -586,8 +586,8 @@ // All Init_foo functions are omitted when optimizing for size - #elif defined(SK_CPU_X86) + #elif defined(SK_CPU_X86) || defined(SK_CPU_PPC64) - #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 - if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BitmapProcState_ssse3(); } + #if SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3 + if (SkCpu::Supports(SkX64::SSSE3)) { Init_BitmapProcState_ssse3(); } #endif Index: chromium-144.0.7559.59/third_party/skia/src/core/SkCpu.h =================================================================== @@ -599,8 +599,8 @@ // often compile away this entire function. -#if SK_CPU_X86 +#if SK_CPU_X86 || defined(SK_CPU_PPC64) - #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 - features |= SSE1; + #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1 + features |= SkX64::SSE1; #endif Index: chromium-144.0.7559.59/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp =================================================================== @@ -636,11 +636,11 @@ #include <cmath> #include <utility> --#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 +-#if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1 +#if defined(SK_PPC64_HAS_SSE_COMPAT) + #include <emmintrin.h> + #include <tmmintrin.h> -+#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 ++#elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1 #include <immintrin.h> #elif defined(SK_ARM_HAS_NEON) #include <arm_neon.h> @@ -675,7 +675,7 @@ + + return vec_and(vCmp, q)[0]; +} - #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 && (defined(__clang__) || !defined(_MSC_VER)) + #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1 && (defined(__clang__) || !defined(_MSC_VER)) // -- SSE -- Harden against timing attacks -- MSVC is not supported. using F4 = __m128; Index: chromium-144.0.7559.59/third_party/skia/src/core/SkBlitter_ARGB32.cpp @@ -683,7 +683,7 @@ --- chromium-144.0.7559.59.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp +++ chromium-144.0.7559.59/third_party/skia/src/core/SkBlitter_ARGB32.cpp @@ -129,6 +129,16 @@ static inline SkPMColor blend_lcd16_opaq - #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 + #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2 #include <emmintrin.h> +#if defined(SK_CPU_PPC64) @@ -699,4 +699,6 @@ // The following (left) shifts cause the top 5 bits of the mask components to // line up with the corresponding components in an SkPMColor. // Note that the mask's RGB16 order may differ from the SkPMColor order. +--- chromium-148.0.7778.5/third_party/skia/src/opts/SkRasterPipeline_opts.h 2026/04/08 22:36:34 1.1 ++++ chromium-148.0.7778.5/third_party/skia/src/opts/SkRasterPipeline_opts.h 2026/04/08 22:39:31
