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
 

Reply via email to