summaryrefslogtreecommitdiff
path: root/www-client/chromium/files
diff options
context:
space:
mode:
Diffstat (limited to 'www-client/chromium/files')
-rw-r--r--www-client/chromium/files/chromium-107-system-zlib.patch10
-rw-r--r--www-client/chromium/files/chromium-108-DocumentLoader-private.patch55
-rw-r--r--www-client/chromium/files/chromium-108-EnumTable-crash.patch76
-rw-r--r--www-client/chromium/files/chromium-108-revert-GlobalMediaControlsCastStartStop.patch35
-rw-r--r--www-client/chromium/files/chromium-93-InkDropHost-crash.patch25
-rw-r--r--www-client/chromium/files/chromium-98-EnumTable-crash.patch76
-rw-r--r--www-client/chromium/files/chromium-98-gtk4-build.patch56
-rw-r--r--www-client/chromium/files/chromium-browser.xml13
-rw-r--r--www-client/chromium/files/chromium-cross-compile.patch12
-rw-r--r--www-client/chromium/files/chromium-launcher-r7.sh59
-rw-r--r--www-client/chromium/files/chromium-shim_headers.patch48
-rw-r--r--www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch17
-rw-r--r--www-client/chromium/files/chromium.default5
-rw-r--r--www-client/chromium/files/ppc64le/fix-breakpad-compile.patch29
-rw-r--r--www-client/chromium/files/ppc64le/fix-swiftshader-compile.patch26
-rw-r--r--www-client/chromium/files/ppc64le/libpng-pdfium-compile-98.patch13
16 files changed, 555 insertions, 0 deletions
diff --git a/www-client/chromium/files/chromium-107-system-zlib.patch b/www-client/chromium/files/chromium-107-system-zlib.patch
new file mode 100644
index 00000000..5ee7dccb
--- /dev/null
+++ b/www-client/chromium/files/chromium-107-system-zlib.patch
@@ -0,0 +1,10 @@
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
+@@ -19,7 +19,6 @@ limitations under the License.
+ #include <cstdio>
+
+ #include "absl/strings/string_view.h" // from @com_google_absl
+-#include "contrib/minizip/ioapi.h"
+
+ namespace tflite {
+ namespace metadata {
diff --git a/www-client/chromium/files/chromium-108-DocumentLoader-private.patch b/www-client/chromium/files/chromium-108-DocumentLoader-private.patch
new file mode 100644
index 00000000..3e005e43
--- /dev/null
+++ b/www-client/chromium/files/chromium-108-DocumentLoader-private.patch
@@ -0,0 +1,55 @@
+From 4009fdb45cffeb6c824d6f7499114c1ac021ff2f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 12 Oct 2022 13:52:31 +0000
+Subject: [PATCH] GCC: fix access to private class in blink::DocumentLoader
+
+Friend does not work with anonymous namespaces. Therefore,
+DocumentLoader::DecodedBodyData is private for struct
+SameSizeAsDocumentLoader. Add a wrapper in blink namespace
+to make the class visible in anonymous namespace.
+---
+ third_party/blink/renderer/core/loader/document_loader.cc | 7 ++++++-
+ third_party/blink/renderer/core/loader/document_loader.h | 2 +-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
+index 8774812..17c7c9a 100644
+--- a/third_party/blink/renderer/core/loader/document_loader.cc
++++ b/third_party/blink/renderer/core/loader/document_loader.cc
+@@ -150,6 +150,11 @@
+ #include "third_party/blink/renderer/platform/wtf/vector.h"
+
+ namespace blink {
++
++struct DecodedBodyDataVector {
++ Vector<DocumentLoader::DecodedBodyData> type;
++};
++
+ namespace {
+
+ Vector<OriginTrialFeature> CopyInitiatorOriginTrials(
+@@ -254,7 +259,7 @@ struct SameSizeAsDocumentLoader
+ bool finish_loading_when_parser_resumed;
+ bool in_commit_data;
+ scoped_refptr<SharedBuffer> data_buffer;
+- Vector<DocumentLoader::DecodedBodyData> decoded_data_buffer_;
++ DecodedBodyDataVector decoded_data_buffer_;
+ base::UnguessableToken devtools_navigation_token;
+ LoaderFreezeMode defers_loading;
+ bool last_navigation_had_transient_user_activation;
+diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h
+index 7c6ba6b..c034ea9 100644
+--- a/third_party/blink/renderer/core/loader/document_loader.h
++++ b/third_party/blink/renderer/core/loader/document_loader.h
+@@ -442,7 +442,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected<DocumentLoader>,
+ Member<MHTMLArchive> archive_;
+
+ private:
+- friend struct SameSizeAsDocumentLoader;
++ friend struct DecodedBodyDataVector;
+ class BodyData;
+ class EncodedBodyData;
+ class DecodedBodyData;
+--
+2.37.3
+
diff --git a/www-client/chromium/files/chromium-108-EnumTable-crash.patch b/www-client/chromium/files/chromium-108-EnumTable-crash.patch
new file mode 100644
index 00000000..661ec33c
--- /dev/null
+++ b/www-client/chromium/files/chromium-108-EnumTable-crash.patch
@@ -0,0 +1,76 @@
+diff --git a/components/media_router/common/providers/cast/channel/enum_table.h b/components/media_router/common/providers/cast/channel/enum_table.h
+index 842553a..89de703 100644
+--- a/components/media_router/common/providers/cast/channel/enum_table.h
++++ b/components/media_router/common/providers/cast/channel/enum_table.h
+@@ -8,6 +8,7 @@
+ #include <cstdint>
+ #include <cstring>
+ #include <ostream>
++#include <vector>
+
+ #include "base/check_op.h"
+ #include "base/notreached.h"
+@@ -187,7 +188,6 @@ class
+ inline constexpr GenericEnumTableEntry(int32_t value);
+ inline constexpr GenericEnumTableEntry(int32_t value, base::StringPiece str);
+
+- GenericEnumTableEntry(const GenericEnumTableEntry&) = delete;
+ GenericEnumTableEntry& operator=(const GenericEnumTableEntry&) = delete;
+
+ private:
+@@ -253,7 +253,6 @@ class EnumTable {
+ constexpr Entry(E value, base::StringPiece str)
+ : GenericEnumTableEntry(static_cast<int32_t>(value), str) {}
+
+- Entry(const Entry&) = delete;
+ Entry& operator=(const Entry&) = delete;
+ };
+
+@@ -312,15 +311,14 @@ class EnumTable {
+ if (is_sorted_) {
+ const std::size_t index = static_cast<std::size_t>(value);
+ if (ANALYZER_ASSUME_TRUE(index < data_.size())) {
+- const auto& entry = data_.begin()[index];
++ const auto& entry = data_[index];
+ if (ANALYZER_ASSUME_TRUE(entry.has_str()))
+ return entry.str();
+ }
+ return absl::nullopt;
+ }
+ return GenericEnumTableEntry::FindByValue(
+- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
+- data_.size(), static_cast<int32_t>(value));
++ &data_[0], data_.size(), static_cast<int32_t>(value));
+ }
+
+ // This overload of GetString is designed for cases where the argument is a
+@@ -348,8 +346,7 @@ class EnumTable {
+ // enum value directly.
+ absl::optional<E> GetEnum(base::StringPiece str) const {
+ auto* entry = GenericEnumTableEntry::FindByString(
+- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
+- data_.size(), str);
++ &data_[0], data_.size(), str);
+ return entry ? static_cast<E>(entry->value) : absl::optional<E>();
+ }
+
+@@ -364,7 +361,7 @@ class EnumTable {
+ // Align the data on a cache line boundary.
+ alignas(64)
+ #endif
+- std::initializer_list<Entry> data_;
++ const std::vector<Entry> data_;
+ bool is_sorted_;
+
+ constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted)
+@@ -376,8 +373,8 @@ class EnumTable {
+
+ for (std::size_t i = 0; i < data.size(); i++) {
+ for (std::size_t j = i + 1; j < data.size(); j++) {
+- const Entry& ei = data.begin()[i];
+- const Entry& ej = data.begin()[j];
++ const Entry& ei = data[i];
++ const Entry& ej = data[j];
+ DCHECK(ei.value != ej.value)
+ << "Found duplicate enum values at indices " << i << " and " << j;
+ DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str()))
diff --git a/www-client/chromium/files/chromium-108-revert-GlobalMediaControlsCastStartStop.patch b/www-client/chromium/files/chromium-108-revert-GlobalMediaControlsCastStartStop.patch
new file mode 100644
index 00000000..650e9481
--- /dev/null
+++ b/www-client/chromium/files/chromium-108-revert-GlobalMediaControlsCastStartStop.patch
@@ -0,0 +1,35 @@
+From b58f0f2725a8c1a8a131f9984b5fd53b54119dba Mon Sep 17 00:00:00 2001
+From: Muyao Xu <muyaoxu@google.com>
+Date: Thu, 20 Jan 2022 23:46:21 +0000
+Subject: [PATCH] [Zenith] Enable GlobalMediaControlsCastStartStop flag by
+ default
+
+The feature is rolled out to 100% stable through finch for M96+.
+This CL enables it by default and fixes some unit tests failures.
+
+Bug: 1287242, 1287305
+Change-Id: I7e5c9625b77379fef253c41ef292a0dd6fc366fb
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3388416
+Reviewed-by: Takumi Fujimoto <takumif@chromium.org>
+Commit-Queue: Muyao Xu <muyaoxu@google.com>
+Cr-Commit-Position: refs/heads/main@{#961658}
+---
+ chrome/browser/media/router/media_router_feature.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
+index 862329e..47c8912 100644
+--- a/chrome/browser/media/router/media_router_feature.cc
++++ b/chrome/browser/media/router/media_router_feature.cc
+@@ -54,7 +54,7 @@ BASE_FEATURE(kGlobalMediaControlsCastStartStop,
+ #else
+ BASE_FEATURE(kGlobalMediaControlsCastStartStop,
+ "GlobalMediaControlsCastStartStop",
+- base::FEATURE_ENABLED_BY_DEFAULT);
++ base::FEATURE_DISABLED_BY_DEFAULT);
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+ #endif // !BUILDFLAG(IS_ANDROID)
+--
+2.35.1
+
diff --git a/www-client/chromium/files/chromium-93-InkDropHost-crash.patch b/www-client/chromium/files/chromium-93-InkDropHost-crash.patch
new file mode 100644
index 00000000..54d16db5
--- /dev/null
+++ b/www-client/chromium/files/chromium-93-InkDropHost-crash.patch
@@ -0,0 +1,25 @@
+diff --git a/ui/views/animation/ink_drop_host_view.h b/ui/views/animation/ink_drop_host_view.h
+index bd0975b..e5df288 100644
+--- a/ui/views/animation/ink_drop_host_view.h
++++ b/ui/views/animation/ink_drop_host_view.h
+@@ -238,6 +238,11 @@ class VIEWS_EXPORT InkDropHost {
+ // Used to observe View and inform the InkDrop of host-transform changes.
+ ViewLayerTransformObserver host_view_transform_observer_;
+
++ // Declared before |ink_drop_|, because InkDropImpl may call
++ // RemoveInkDropLayer on partly destructed InkDropHost. In
++ // that case |ink_drop_mask_| must be still valid.
++ std::unique_ptr<views::InkDropMask> ink_drop_mask_;
++
+ // Should not be accessed directly. Use GetInkDrop() instead.
+ std::unique_ptr<InkDrop> ink_drop_;
+
+@@ -261,8 +266,6 @@ class VIEWS_EXPORT InkDropHost {
+ int ink_drop_small_corner_radius_ = 2;
+ int ink_drop_large_corner_radius_ = 4;
+
+- std::unique_ptr<views::InkDropMask> ink_drop_mask_;
+-
+ base::RepeatingCallback<std::unique_ptr<InkDrop>()> create_ink_drop_callback_;
+ base::RepeatingCallback<std::unique_ptr<InkDropRipple>()>
+ create_ink_drop_ripple_callback_;
diff --git a/www-client/chromium/files/chromium-98-EnumTable-crash.patch b/www-client/chromium/files/chromium-98-EnumTable-crash.patch
new file mode 100644
index 00000000..f058ec18
--- /dev/null
+++ b/www-client/chromium/files/chromium-98-EnumTable-crash.patch
@@ -0,0 +1,76 @@
+diff --git a/components/cast_channel/enum_table.h b/components/cast_channel/enum_table.h
+index 842553a..89de703 100644
+--- a/components/cast_channel/enum_table.h
++++ b/components/cast_channel/enum_table.h
+@@ -8,6 +8,7 @@
+ #include <cstdint>
+ #include <cstring>
+ #include <ostream>
++#include <vector>
+
+ #include "base/check_op.h"
+ #include "base/notreached.h"
+@@ -187,7 +188,6 @@ class
+ inline constexpr GenericEnumTableEntry(int32_t value);
+ inline constexpr GenericEnumTableEntry(int32_t value, base::StringPiece str);
+
+- GenericEnumTableEntry(const GenericEnumTableEntry&) = delete;
+ GenericEnumTableEntry& operator=(const GenericEnumTableEntry&) = delete;
+
+ private:
+@@ -253,7 +253,6 @@ class EnumTable {
+ constexpr Entry(E value, base::StringPiece str)
+ : GenericEnumTableEntry(static_cast<int32_t>(value), str) {}
+
+- Entry(const Entry&) = delete;
+ Entry& operator=(const Entry&) = delete;
+ };
+
+@@ -312,15 +311,14 @@ class EnumTable {
+ if (is_sorted_) {
+ const std::size_t index = static_cast<std::size_t>(value);
+ if (ANALYZER_ASSUME_TRUE(index < data_.size())) {
+- const auto& entry = data_.begin()[index];
++ const auto& entry = data_[index];
+ if (ANALYZER_ASSUME_TRUE(entry.has_str()))
+ return entry.str();
+ }
+ return absl::nullopt;
+ }
+ return GenericEnumTableEntry::FindByValue(
+- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
+- data_.size(), static_cast<int32_t>(value));
++ &data_[0], data_.size(), static_cast<int32_t>(value));
+ }
+
+ // This overload of GetString is designed for cases where the argument is a
+@@ -348,8 +346,7 @@ class EnumTable {
+ // enum value directly.
+ absl::optional<E> GetEnum(base::StringPiece str) const {
+ auto* entry = GenericEnumTableEntry::FindByString(
+- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
+- data_.size(), str);
++ &data_[0], data_.size(), str);
+ return entry ? static_cast<E>(entry->value) : absl::optional<E>();
+ }
+
+@@ -364,7 +361,7 @@ class EnumTable {
+ // Align the data on a cache line boundary.
+ alignas(64)
+ #endif
+- std::initializer_list<Entry> data_;
++ const std::vector<Entry> data_;
+ bool is_sorted_;
+
+ constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted)
+@@ -376,8 +373,8 @@ class EnumTable {
+
+ for (std::size_t i = 0; i < data.size(); i++) {
+ for (std::size_t j = i + 1; j < data.size(); j++) {
+- const Entry& ei = data.begin()[i];
+- const Entry& ej = data.begin()[j];
++ const Entry& ei = data[i];
++ const Entry& ej = data[j];
+ DCHECK(ei.value != ej.value)
+ << "Found duplicate enum values at indices " << i << " and " << j;
+ DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str()))
diff --git a/www-client/chromium/files/chromium-98-gtk4-build.patch b/www-client/chromium/files/chromium-98-gtk4-build.patch
new file mode 100644
index 00000000..94d2f1f0
--- /dev/null
+++ b/www-client/chromium/files/chromium-98-gtk4-build.patch
@@ -0,0 +1,56 @@
+--- a/ui/gtk/gsk.sigs
++++ b/ui/gtk/gsk.sigs
+@@ -1,16 +1,16 @@
+-GskRenderNodeType gsk_render_node_get_node_type(GskRenderNode* node);
++GskRenderNodeType gsk_render_node_get_node_type(const GskRenderNode* node);
+ void gsk_render_node_unref(GskRenderNode* node);
+-GskRenderNode* gsk_transform_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_opacity_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_color_matrix_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_repeat_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_clip_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_rounded_clip_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_shadow_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_blur_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_debug_node_get_child(GskRenderNode* node);
+-GskRenderNode* gsk_container_node_get_child(GskRenderNode* node, guint idx);
+-GskRenderNode* gsk_gl_shader_node_get_child(GskRenderNode* node, guint idx);
+-guint gsk_container_node_get_n_children(GskRenderNode* node);
+-guint gsk_gl_shader_node_get_n_children(GskRenderNode* node);
+-GdkTexture* gsk_texture_node_get_texture(GskRenderNode* node);
++GskRenderNode* gsk_transform_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_opacity_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_color_matrix_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_repeat_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_clip_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_rounded_clip_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_shadow_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_blur_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_debug_node_get_child(const GskRenderNode* node);
++GskRenderNode* gsk_container_node_get_child(const GskRenderNode* node, guint idx);
++GskRenderNode* gsk_gl_shader_node_get_child(const GskRenderNode* node, guint idx);
++guint gsk_container_node_get_n_children(const GskRenderNode* node);
++guint gsk_gl_shader_node_get_n_children(const GskRenderNode* node);
++GdkTexture* gsk_texture_node_get_texture(const GskRenderNode* node);
+--- a/ui/gtk/gtk_util.cc
++++ b/ui/gtk/gtk_util.cc
+@@ -705,7 +705,7 @@
+ DCHECK(GtkCheckVersion(4));
+ struct {
+ GskRenderNodeType node_type;
+- GskRenderNode* (*get_child)(GskRenderNode*);
++ GskRenderNode* (*get_child)(const GskRenderNode*);
+ } constexpr simple_getters[] = {
+ {GSK_TRANSFORM_NODE, gsk_transform_node_get_child},
+ {GSK_OPACITY_NODE, gsk_opacity_node_get_child},
+@@ -719,8 +719,8 @@
+ };
+ struct {
+ GskRenderNodeType node_type;
+- guint (*get_n_children)(GskRenderNode*);
+- GskRenderNode* (*get_child)(GskRenderNode*, guint);
++ guint (*get_n_children)(const GskRenderNode*);
++ GskRenderNode* (*get_child)(const GskRenderNode*, guint);
+ } constexpr container_getters[] = {
+ {GSK_CONTAINER_NODE, gsk_container_node_get_n_children,
+ gsk_container_node_get_child},
diff --git a/www-client/chromium/files/chromium-browser.xml b/www-client/chromium/files/chromium-browser.xml
new file mode 100644
index 00000000..2c95a558
--- /dev/null
+++ b/www-client/chromium/files/chromium-browser.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE default-apps SYSTEM "gnome-da-list.dtd">
+<default-apps>
+ <web-browsers>
+ <web-browser>
+ <name>Chromium</name>
+ <executable>chromium-browser</executable>
+ <command>chromium-browser %s</command>
+ <icon-name>chromium-browser</icon-name>
+ <run-in-terminal>false</run-in-terminal>
+ </web-browser>
+ </web-browsers>
+</default-apps>
diff --git a/www-client/chromium/files/chromium-cross-compile.patch b/www-client/chromium/files/chromium-cross-compile.patch
new file mode 100644
index 00000000..430ceb7a
--- /dev/null
+++ b/www-client/chromium/files/chromium-cross-compile.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@ gcc_toolchain("host") {
+ extra_ldflags = getenv("BUILD_LDFLAGS")
+
+ toolchain_args = {
+- current_cpu = current_cpu
+- current_os = current_os
++ current_cpu = host_cpu
++ current_os = host_os
+ }
+ }
diff --git a/www-client/chromium/files/chromium-launcher-r7.sh b/www-client/chromium/files/chromium-launcher-r7.sh
new file mode 100644
index 00000000..1163ff3d
--- /dev/null
+++ b/www-client/chromium/files/chromium-launcher-r7.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+# Allow the user to override command-line flags, bug #357629.
+# This is based on Debian's chromium-browser package, and is intended
+# to be consistent with Debian.
+for f in /etc/chromium/*; do
+ [[ -f ${f} ]] && source "${f}"
+done
+
+# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system
+# default CHROMIUM_FLAGS (from /etc/chromium/default).
+CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-"$CHROMIUM_FLAGS"}
+
+# Let the wrapped binary know that it has been run through the wrapper
+export CHROME_WRAPPER=$(readlink -f "$0")
+
+PROGDIR=${CHROME_WRAPPER%/*}
+
+case ":$PATH:" in
+ *:$PROGDIR:*)
+ # $PATH already contains $PROGDIR
+ ;;
+ *)
+ # Append $PROGDIR to $PATH
+ export PATH="$PATH:$PROGDIR"
+ ;;
+esac
+
+if [[ ${EUID} == 0 && -O ${XDG_CONFIG_HOME:-${HOME}} ]]; then
+ # Running as root with HOME owned by root.
+ # Pass --user-data-dir to work around upstream failsafe.
+ CHROMIUM_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium
+ ${CHROMIUM_FLAGS}"
+fi
+
+# Select session type and platform
+if @@OZONE_AUTO_SESSION@@; then
+ platform=
+ if [[ ${XDG_SESSION_TYPE} == x11 ]]; then
+ platform=x11
+ elif [[ ${XDG_SESSION_TYPE} == wayland ]]; then
+ platform=wayland
+ else
+ if [[ -n ${WAYLAND_DISPLAY} ]]; then
+ platform=wayland
+ else
+ platform=x11
+ fi
+ fi
+ if ${DISABLE_OZONE_PLATFORM:-false}; then
+ platform=x11
+ fi
+ CHROMIUM_FLAGS="--ozone-platform=${platform} ${CHROMIUM_FLAGS}"
+fi
+
+# Set the .desktop file name
+export CHROME_DESKTOP="chromium-browser-chromium.desktop"
+
+exec -a "chromium-browser" "$PROGDIR/chrome" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_FLAGS} "$@"
diff --git a/www-client/chromium/files/chromium-shim_headers.patch b/www-client/chromium/files/chromium-shim_headers.patch
new file mode 100644
index 00000000..9372632a
--- /dev/null
+++ b/www-client/chromium/files/chromium-shim_headers.patch
@@ -0,0 +1,48 @@
+From e273172bbafedca36984fc40f4aa6c44b79ac2ef Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Fri, 25 Dec 2020 09:10:32 +0000
+Subject: [PATCH] shim_headers: fix outputs generation
+
+---
+ build/shim_headers.gni | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/build/shim_headers.gni b/build/shim_headers.gni
+index 0900cba..5138647 100644
+--- a/build/shim_headers.gni
++++ b/build/shim_headers.gni
+@@ -6,6 +6,8 @@ template("shim_headers") {
+ action_name = "gen_${target_name}"
+ config_name = "${target_name}_config"
+ shim_headers_path = "${root_gen_dir}/shim_headers/${target_name}"
++ shim_root_path = rebase_path(invoker.root_path)
++ shim_rel_path = rebase_path("${shim_root_path}", rebase_path("//"))
+
+ config(config_name) {
+ include_dirs = [ shim_headers_path ]
+@@ -16,7 +18,7 @@ template("shim_headers") {
+ args = [
+ "--generate",
+ "--headers-root",
+- rebase_path(invoker.root_path),
++ "${shim_root_path}",
+ "--output-directory",
+ rebase_path(shim_headers_path),
+ ]
+@@ -27,9 +29,10 @@ template("shim_headers") {
+ ]
+ }
+ args += invoker.headers
+-
+- outputs = process_file_template(invoker.headers,
+- "${shim_headers_path}/{{source_file_part}}")
++ outputs = []
++ foreach(shim_header, invoker.headers) {
++ outputs += [ "${shim_headers_path}/${shim_rel_path}/" + shim_header ]
++ }
+ }
+
+ group(target_name) {
+--
+2.26.2
+
diff --git a/www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch b/www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch
new file mode 100644
index 00000000..9d9c57bf
--- /dev/null
+++ b/www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch
@@ -0,0 +1,17 @@
+diff -upr chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc chromium-89.0.4389.58/google_apis/google_api_keys.cc
+--- chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc 2021-02-24 22:37:18.494007649 +0000
++++ chromium-89.0.4389.58/google_apis/google_api_keys.cc 2021-02-24 22:35:00.865777600 +0000
+@@ -154,11 +154,11 @@ class APIKeyCache {
+
+ std::string default_client_id = CalculateKeyValue(
+ GOOGLE_DEFAULT_CLIENT_ID,
+- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), nullptr,
++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), ::switches::kOAuth2ClientID,
+ std::string(), environment.get(), command_line, gaia_config);
+ std::string default_client_secret = CalculateKeyValue(
+ GOOGLE_DEFAULT_CLIENT_SECRET,
+- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), nullptr,
++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), ::switches::kOAuth2ClientSecret,
+ std::string(), environment.get(), command_line, gaia_config);
+
+ // We currently only allow overriding the baked-in values for the
diff --git a/www-client/chromium/files/chromium.default b/www-client/chromium/files/chromium.default
new file mode 100644
index 00000000..c140cdeb
--- /dev/null
+++ b/www-client/chromium/files/chromium.default
@@ -0,0 +1,5 @@
+# Default settings for chromium. This file is sourced by /bin/bash from
+# the chromium launcher.
+
+# Options to pass to chromium.
+#CHROMIUM_FLAGS=""
diff --git a/www-client/chromium/files/ppc64le/fix-breakpad-compile.patch b/www-client/chromium/files/ppc64le/fix-breakpad-compile.patch
new file mode 100644
index 00000000..a07cc194
--- /dev/null
+++ b/www-client/chromium/files/ppc64le/fix-breakpad-compile.patch
@@ -0,0 +1,29 @@
+Index: chromium-98.0.4758.80/third_party/breakpad/BUILD.gn
+===================================================================
+--- chromium-98.0.4758.80.orig/third_party/breakpad/BUILD.gn
++++ chromium-98.0.4758.80/third_party/breakpad/BUILD.gn
+@@ -623,7 +623,6 @@ if (is_linux || is_chromeos || is_android) {
+ "breakpad/src/client/minidump_file_writer.h",
+ "breakpad/src/common/convert_UTF.cc",
+ "breakpad/src/common/convert_UTF.h",
+- "breakpad/src/common/linux/breakpad_getcontext.S",
+ "breakpad/src/common/linux/elf_core_dump.cc",
+ "breakpad/src/common/linux/elf_core_dump.h",
+ "breakpad/src/common/linux/elfutils.cc",
+@@ -655,6 +654,8 @@ if (is_linux || is_chromeos || is_android) {
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ public_configs = [ ":client_config" ]
+
++ defines = [ "HAVE_GETCONTEXT" ]
++
+ if (current_cpu == "arm" && is_chromeos_ash) {
+ # Avoid running out of registers in
+ # linux_syscall_support.h:sys_clone()'s inline assembly.
+@@ -712,7 +713,6 @@ if (is_linux || is_chromeos || is_android) {
+ "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc",
+ "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc",
+ "breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc",
+- "breakpad/src/common/linux/breakpad_getcontext_unittest.cc",
+ "breakpad/src/common/linux/elf_core_dump_unittest.cc",
+ "breakpad/src/common/linux/file_id_unittest.cc",
+ "breakpad/src/common/linux/linux_libc_support_unittest.cc",
diff --git a/www-client/chromium/files/ppc64le/fix-swiftshader-compile.patch b/www-client/chromium/files/ppc64le/fix-swiftshader-compile.patch
new file mode 100644
index 00000000..8474cb6b
--- /dev/null
+++ b/www-client/chromium/files/ppc64le/fix-swiftshader-compile.patch
@@ -0,0 +1,26 @@
+--- chromium-101.0.4951.54/third_party/swiftshader/third_party/llvm-10.0/BUILD.gn.orig 2022-05-15 10:30:50.887333316 +0200
++++ chromium-101.0.4951.54/third_party/swiftshader/third_party/llvm-10.0/BUILD.gn 2022-05-15 10:31:43.477318032 +0200
+@@ -131,7 +131,6 @@
+ if (is_ubsan_vptr) {
+ sources = [
+ "llvm/lib/MC/MCWasmObjectTargetWriter.cpp",
+- "llvm/lib/MC/MCXCOFFObjectTargetWriter.cpp",
+ "llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp",
+ "llvm/lib/Target/TargetIntrinsicInfo.cpp",
+ ]
+@@ -579,6 +578,7 @@
+ "llvm/lib/MC/MCAsmInfoCOFF.cpp",
+ "llvm/lib/MC/MCAsmInfoDarwin.cpp",
+ "llvm/lib/MC/MCAsmInfoELF.cpp",
++ "llvm/lib/MC/MCAsmInfoXCOFF.cpp",
+ "llvm/lib/MC/MCAsmMacro.cpp",
+ "llvm/lib/MC/MCAsmStreamer.cpp",
+ "llvm/lib/MC/MCAssembler.cpp",
+@@ -633,6 +633,7 @@
+ "llvm/lib/MC/MCWin64EH.cpp",
+ "llvm/lib/MC/MCWinCOFFStreamer.cpp",
+ "llvm/lib/MC/MCWinEH.cpp",
++ "llvm/lib/MC/MCXCOFFObjectTargetWriter.cpp",
+ "llvm/lib/MC/MCXCOFFStreamer.cpp",
+ "llvm/lib/MC/MachObjectWriter.cpp",
+ "llvm/lib/MC/StringTableBuilder.cpp",
diff --git a/www-client/chromium/files/ppc64le/libpng-pdfium-compile-98.patch b/www-client/chromium/files/ppc64le/libpng-pdfium-compile-98.patch
new file mode 100644
index 00000000..681eb80e
--- /dev/null
+++ b/www-client/chromium/files/ppc64le/libpng-pdfium-compile-98.patch
@@ -0,0 +1,13 @@
+Index: chromium-98.0.4758.80/third_party/pdfium/BUILD.gn
+===================================================================
+--- chromium-98.0.4758.80.orig/third_party/pdfium/BUILD.gn
++++ chromium-98.0.4758.80/third_party/pdfium/BUILD.gn
+@@ -16,7 +16,7 @@
+ }
+
+ config("pdfium_common_config") {
+- cflags = []
++ cflags = [ "-DPNG_POWERPC_VSX_OPT=0" ]
+ cflags_cc = []
+ ldflags = []
+ include_dirs = [ "." ]