Initial commit, builds 101.0.4951.54-1-x86_64
This commit is contained in:
commit
4545e5ee73
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
archive
|
||||
aur-ungoogled-chromium
|
||||
cache
|
||||
chromium-downloads
|
||||
chromium-launcher
|
||||
chromium-src**
|
||||
old-zips
|
||||
pkg
|
||||
src
|
||||
ungoogled-chromium
|
||||
ungoogled-chromium-michael*.zst
|
||||
chromium-launcher.tar.gz
|
||||
chromium-src-release.tar.gz
|
||||
aur-confs.tar.gz
|
135
PKGBUILD
Executable file
135
PKGBUILD
Executable file
@ -0,0 +1,135 @@
|
||||
# Based on aur/chromium-vaapi, with ungoogled-chromium patches, and some extra tweaks by Michael
|
||||
|
||||
# Maintainer: Michael Peters <chris.frog@protonmail.com>
|
||||
|
||||
# Contributor: Pierre Schmitz <pierre@archlinux.de>
|
||||
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
|
||||
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
|
||||
|
||||
pkgname=ungoogled-chromium-michael
|
||||
pkgdesc="Michael's custom build of ungoogled-chromium"
|
||||
|
||||
pkgver=101.0.4951.54
|
||||
pkgrel=1
|
||||
|
||||
arch=('x86_64')
|
||||
license=('BSD')
|
||||
|
||||
provides=('chromium')
|
||||
conflicts=('chromium')
|
||||
|
||||
options=('debug' '!lto') # Chromium adds its own flags for ThinLTO
|
||||
|
||||
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
|
||||
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
|
||||
'desktop-file-utils' 'hicolor-icon-theme')
|
||||
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
|
||||
'java-runtime-headless')
|
||||
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: support for native dialogs in Plasma'
|
||||
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
|
||||
'kwallet: support for storing passwords in KWallet on Plasma')
|
||||
|
||||
source=('chromium-src-release.tar.gz'
|
||||
'aur-confs.tar.gz'
|
||||
'chromium-launcher.tar.gz')
|
||||
sha256sums=('135dd761de526e4ac0ad3de10ac9b0b97f0b0f572aaf2063f53a6a5103a71a0b'
|
||||
'cb75bd9700a36858b63067fedd1862c79ebc0086a82bf35064b111f3817fee88'
|
||||
'9cc5da044ec72a2e27b5444ba5a6b6af89dd6608657cb166d9df7461b83e2cee')
|
||||
|
||||
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
|
||||
# Keys are the names in the above script; values are the dependencies in Arch
|
||||
declare -gA _system_libs=(
|
||||
[ffmpeg]=ffmpeg
|
||||
[flac]=flac
|
||||
[fontconfig]=fontconfig
|
||||
[freetype]=freetype2
|
||||
[harfbuzz-ng]=harfbuzz
|
||||
[icu]=icu
|
||||
[libdrm]=
|
||||
[libjpeg]=libjpeg
|
||||
[libpng]=libpng
|
||||
#[libvpx]=libvpx
|
||||
[libwebp]=libwebp
|
||||
[libxml]=libxml2
|
||||
[libxslt]=libxslt
|
||||
[opus]=opus
|
||||
[re2]=re2 [snappy]=snappy [zlib]=minizip
|
||||
)
|
||||
_unwanted_bundled_libs=(
|
||||
$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
|
||||
)
|
||||
depends+=(${_system_libs[@]})
|
||||
|
||||
package() {
|
||||
cd "$srcdir/chromium-launcher"
|
||||
|
||||
make PREFIX=/usr DESTDIR="$pkgdir" install
|
||||
install -Dm644 LICENSE \
|
||||
"$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
|
||||
|
||||
cd "$srcdir/chromium-src"
|
||||
|
||||
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
|
||||
install -D out/Release/chromedriver "$pkgdir/usr/bin/chromedriver"
|
||||
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
|
||||
|
||||
install -Dm644 ../aur-confs/chromium-drirc-disable-10bpc-color-configs.conf \
|
||||
"$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/desktop.template \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop"
|
||||
install -Dm644 chrome/app/resources/manpage.1.in \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
sed -i \
|
||||
-e 's/@@MENUNAME@@/Chromium/g' \
|
||||
-e 's/@@PACKAGE@@/chromium/g' \
|
||||
-e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop" \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
sed -ni \
|
||||
-e 's/chromium-browser\.desktop/chromium.desktop/' \
|
||||
-e '/<update_contact>/d' \
|
||||
-e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
|
||||
-e '/^<?xml/,$p' \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
|
||||
local toplevel_files=(
|
||||
chrome_100_percent.pak
|
||||
chrome_200_percent.pak
|
||||
chrome_crashpad_handler
|
||||
resources.pak
|
||||
v8_context_snapshot.bin
|
||||
|
||||
# ANGLE
|
||||
libEGL.so
|
||||
libGLESv2.so
|
||||
|
||||
# SwiftShader ICD
|
||||
libvk_swiftshader.so
|
||||
vk_swiftshader_icd.json
|
||||
)
|
||||
|
||||
if [[ -z ${_system_libs[icu]+set} ]]; then
|
||||
toplevel_files+=(icudtl.dat)
|
||||
fi
|
||||
|
||||
cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/"
|
||||
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
|
||||
#install -Dm755 -t "$pkgdir/usr/lib/chromium/swiftshader" out/Release/swiftshader/*.so
|
||||
|
||||
for size in 24 48 64 128 256; do
|
||||
install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
for size in 16 32; do
|
||||
install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
|
||||
}
|
135
PKGBUILD.backup
Executable file
135
PKGBUILD.backup
Executable file
@ -0,0 +1,135 @@
|
||||
# Based on aur/chromium-vaapi, with ungoogled-chromium patches, and some extra tweaks by Michael
|
||||
|
||||
# Maintainer: Michael Peters <chris.frog@protonmail.com>
|
||||
|
||||
# Contributor: Pierre Schmitz <pierre@archlinux.de>
|
||||
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
|
||||
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
|
||||
|
||||
pkgname=ungoogled-chromium-michael
|
||||
pkgdesc="Michael's custom build of ungoogled-chromium"
|
||||
|
||||
pkgver=101.0.4951.54
|
||||
pkgrel=1
|
||||
|
||||
arch=('x86_64')
|
||||
license=('BSD')
|
||||
|
||||
provides=('chromium')
|
||||
conflicts=('chromium')
|
||||
|
||||
options=('debug' '!lto') # Chromium adds its own flags for ThinLTO
|
||||
|
||||
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
|
||||
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
|
||||
'desktop-file-utils' 'hicolor-icon-theme')
|
||||
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
|
||||
'java-runtime-headless')
|
||||
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: support for native dialogs in Plasma'
|
||||
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
|
||||
'kwallet: support for storing passwords in KWallet on Plasma')
|
||||
|
||||
source=('chromium-src-release.tar.gz'
|
||||
'aur-confs.tar.gz'
|
||||
'chromium-launcher.tar.gz')
|
||||
sha256sums=('d377e88d1b998c61e0d4e65a1a3578f1e21869063f21766fccde8eb60b7fcbcb'
|
||||
'cb75bd9700a36858b63067fedd1862c79ebc0086a82bf35064b111f3817fee88'
|
||||
'ca5a54b9c50c94c4d1496f529ca7970f5d2fc51bc7546746c132cccdc5d89920')
|
||||
|
||||
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
|
||||
# Keys are the names in the above script; values are the dependencies in Arch
|
||||
declare -gA _system_libs=(
|
||||
[ffmpeg]=ffmpeg
|
||||
[flac]=flac
|
||||
[fontconfig]=fontconfig
|
||||
[freetype]=freetype2
|
||||
[harfbuzz-ng]=harfbuzz
|
||||
[icu]=icu
|
||||
[libdrm]=
|
||||
[libjpeg]=libjpeg
|
||||
[libpng]=libpng
|
||||
#[libvpx]=libvpx
|
||||
[libwebp]=libwebp
|
||||
[libxml]=libxml2
|
||||
[libxslt]=libxslt
|
||||
[opus]=opus
|
||||
[re2]=re2 [snappy]=snappy [zlib]=minizip
|
||||
)
|
||||
_unwanted_bundled_libs=(
|
||||
$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
|
||||
)
|
||||
depends+=(${_system_libs[@]})
|
||||
|
||||
package() {
|
||||
cd "$srcdir/chromium-launcher"
|
||||
|
||||
make PREFIX=/usr DESTDIR="$pkgdir" install
|
||||
install -Dm644 LICENSE \
|
||||
"$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
|
||||
|
||||
cd "$srcdir/chromium-src"
|
||||
|
||||
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
|
||||
install -D out/Release/chromedriver "$pkgdir/usr/bin/chromedriver"
|
||||
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
|
||||
|
||||
install -Dm644 ../aur-confs/chromium-drirc-disable-10bpc-color-configs.conf \
|
||||
"$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/desktop.template \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop"
|
||||
install -Dm644 chrome/app/resources/manpage.1.in \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
sed -i \
|
||||
-e 's/@@MENUNAME@@/Chromium/g' \
|
||||
-e 's/@@PACKAGE@@/chromium/g' \
|
||||
-e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop" \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
sed -ni \
|
||||
-e 's/chromium-browser\.desktop/chromium.desktop/' \
|
||||
-e '/<update_contact>/d' \
|
||||
-e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
|
||||
-e '/^<?xml/,$p' \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
|
||||
local toplevel_files=(
|
||||
chrome_100_percent.pak
|
||||
chrome_200_percent.pak
|
||||
chrome_crashpad_handler
|
||||
resources.pak
|
||||
v8_context_snapshot.bin
|
||||
|
||||
# ANGLE
|
||||
libEGL.so
|
||||
libGLESv2.so
|
||||
|
||||
# SwiftShader ICD
|
||||
libvk_swiftshader.so
|
||||
vk_swiftshader_icd.json
|
||||
)
|
||||
|
||||
if [[ -z ${_system_libs[icu]+set} ]]; then
|
||||
toplevel_files+=(icudtl.dat)
|
||||
fi
|
||||
|
||||
cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/"
|
||||
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
|
||||
install -Dm755 -t "$pkgdir/usr/lib/chromium/swiftshader" out/Release/swiftshader/*.so
|
||||
|
||||
for size in 24 48 64 128 256; do
|
||||
install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
for size in 16 32; do
|
||||
install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
|
||||
}
|
135
PKGBUILD.template
Executable file
135
PKGBUILD.template
Executable file
@ -0,0 +1,135 @@
|
||||
# Based on aur/chromium-vaapi, with ungoogled-chromium patches, and some extra tweaks by Michael
|
||||
|
||||
# Maintainer: Michael Peters <chris.frog@protonmail.com>
|
||||
|
||||
# Contributor: Pierre Schmitz <pierre@archlinux.de>
|
||||
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
|
||||
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
|
||||
|
||||
pkgname=ungoogled-chromium-michael
|
||||
pkgdesc="Michael's custom build of ungoogled-chromium"
|
||||
|
||||
pkgver=101.0.4951.54
|
||||
pkgrel=1
|
||||
|
||||
arch=('x86_64')
|
||||
license=('BSD')
|
||||
|
||||
provides=('chromium')
|
||||
conflicts=('chromium')
|
||||
|
||||
options=('debug' '!lto') # Chromium adds its own flags for ThinLTO
|
||||
|
||||
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
|
||||
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
|
||||
'desktop-file-utils' 'hicolor-icon-theme')
|
||||
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
|
||||
'java-runtime-headless')
|
||||
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: support for native dialogs in Plasma'
|
||||
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
|
||||
'kwallet: support for storing passwords in KWallet on Plasma')
|
||||
|
||||
source=('chromium-src-release.tar.gz'
|
||||
'aur-confs.tar.gz'
|
||||
'chromium-launcher.tar.gz')
|
||||
sha256sums=('<chromium-src-release.tar.gz-sha256sum>'
|
||||
'<aur-confs.tar.gz-sha256sum>'
|
||||
'<chromium-launcher.tar.gz-sha256sum>')
|
||||
|
||||
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
|
||||
# Keys are the names in the above script; values are the dependencies in Arch
|
||||
declare -gA _system_libs=(
|
||||
[ffmpeg]=ffmpeg
|
||||
[flac]=flac
|
||||
[fontconfig]=fontconfig
|
||||
[freetype]=freetype2
|
||||
[harfbuzz-ng]=harfbuzz
|
||||
[icu]=icu
|
||||
[libdrm]=
|
||||
[libjpeg]=libjpeg
|
||||
[libpng]=libpng
|
||||
#[libvpx]=libvpx
|
||||
[libwebp]=libwebp
|
||||
[libxml]=libxml2
|
||||
[libxslt]=libxslt
|
||||
[opus]=opus
|
||||
[re2]=re2 [snappy]=snappy [zlib]=minizip
|
||||
)
|
||||
_unwanted_bundled_libs=(
|
||||
$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
|
||||
)
|
||||
depends+=(${_system_libs[@]})
|
||||
|
||||
package() {
|
||||
cd "$srcdir/chromium-launcher"
|
||||
|
||||
make PREFIX=/usr DESTDIR="$pkgdir" install
|
||||
install -Dm644 LICENSE \
|
||||
"$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
|
||||
|
||||
cd "$srcdir/chromium-src"
|
||||
|
||||
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
|
||||
install -D out/Release/chromedriver "$pkgdir/usr/bin/chromedriver"
|
||||
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
|
||||
|
||||
install -Dm644 ../aur-confs/chromium-drirc-disable-10bpc-color-configs.conf \
|
||||
"$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/desktop.template \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop"
|
||||
install -Dm644 chrome/app/resources/manpage.1.in \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
sed -i \
|
||||
-e 's/@@MENUNAME@@/Chromium/g' \
|
||||
-e 's/@@PACKAGE@@/chromium/g' \
|
||||
-e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop" \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
sed -ni \
|
||||
-e 's/chromium-browser\.desktop/chromium.desktop/' \
|
||||
-e '/<update_contact>/d' \
|
||||
-e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
|
||||
-e '/^<?xml/,$p' \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
|
||||
local toplevel_files=(
|
||||
chrome_100_percent.pak
|
||||
chrome_200_percent.pak
|
||||
chrome_crashpad_handler
|
||||
resources.pak
|
||||
v8_context_snapshot.bin
|
||||
|
||||
# ANGLE
|
||||
libEGL.so
|
||||
libGLESv2.so
|
||||
|
||||
# SwiftShader ICD
|
||||
libvk_swiftshader.so
|
||||
vk_swiftshader_icd.json
|
||||
)
|
||||
|
||||
if [[ -z ${_system_libs[icu]+set} ]]; then
|
||||
toplevel_files+=(icudtl.dat)
|
||||
fi
|
||||
|
||||
cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/"
|
||||
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
|
||||
#install -Dm755 -t "$pkgdir/usr/lib/chromium/swiftshader" out/Release/swiftshader/*.so
|
||||
|
||||
for size in 24 48 64 128 256; do
|
||||
install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
for size in 16 32; do
|
||||
install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
|
||||
}
|
289
aur-PKGBUILD
Normal file
289
aur-PKGBUILD
Normal file
@ -0,0 +1,289 @@
|
||||
# Maintainer: Seppia <seppia@seppio.fish>
|
||||
# Maintainer: JustKidding <jk@vin.ovh>
|
||||
|
||||
# Based on aur/chromium-vaapi, with ungoogled-chromium patches
|
||||
|
||||
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
|
||||
# Contributor: Pierre Schmitz <pierre@archlinux.de>
|
||||
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
|
||||
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
|
||||
|
||||
pkgname=ungoogled-chromium
|
||||
pkgver=101.0.4951.54
|
||||
pkgrel=1
|
||||
_launcher_ver=8
|
||||
_gcc_patchset=4
|
||||
pkgdesc="A lightweight approach to removing Google web service dependency"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/Eloston/ungoogled-chromium"
|
||||
license=('BSD')
|
||||
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
|
||||
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
|
||||
'desktop-file-utils' 'hicolor-icon-theme')
|
||||
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
|
||||
'java-runtime-headless')
|
||||
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: support for native dialogs in Plasma'
|
||||
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
|
||||
'kwallet: support for storing passwords in KWallet on Plasma')
|
||||
options=('debug' '!lto') # Chromium adds its own flags for ThinLTO
|
||||
source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz
|
||||
https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz
|
||||
https://github.com/stha09/chromium-patches/releases/download/chromium-${pkgver%%.*}-patchset-$_gcc_patchset/chromium-${pkgver%%.*}-patchset-$_gcc_patchset.tar.xz
|
||||
enable-GlobalMediaControlsCastStartStop.patch
|
||||
chromium-libxml-unbundle.patch
|
||||
sql-make-VirtualCursor-standard-layout-type.patch
|
||||
use-oauth2-client-switches-as-default.patch)
|
||||
sha256sums=('c26cc6fd453d9a42a6b5e46fa4f3ee62ed368bb78101512b6816bc5d8f4200b5'
|
||||
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
|
||||
'8ed519d21ccd8b382ddd384e9c15306a60d2e3495f48a62dea07c9be9bbffebd'
|
||||
'779fb13f2494209d3a7f1f23a823e59b9dded601866d3ab095937a1a04e19ac6'
|
||||
'fd3bf124aacc45f2d0a4f1dd86303fa7f2a3d4f4eeaf33854631d6cb39e12485'
|
||||
'b94b2e88f63cfb7087486508b8139599c89f96d7a4181c61fec4b4e250ca327a'
|
||||
'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711')
|
||||
provides=('chromium')
|
||||
conflicts=('chromium')
|
||||
_uc_usr=Eloston
|
||||
_uc_ver=$pkgver-1
|
||||
source=(${source[@]}
|
||||
$pkgname-$_uc_ver.tar.gz::https://github.com/$_uc_usr/ungoogled-chromium/archive/$_uc_ver.tar.gz
|
||||
chromium-drirc-disable-10bpc-color-configs.conf
|
||||
wayland-egl.patch)
|
||||
sha256sums=(${sha256sums[@]}
|
||||
'8c5da085191a8586bf52ff3bbd0548f1af0fe1792c5db8530d4b158df83a092b'
|
||||
'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb'
|
||||
'34d08ea93cb4762cb33c7cffe931358008af32265fc720f2762f0179c3973574')
|
||||
|
||||
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
|
||||
# Keys are the names in the above script; values are the dependencies in Arch
|
||||
declare -gA _system_libs=(
|
||||
[ffmpeg]=ffmpeg
|
||||
[flac]=flac
|
||||
[fontconfig]=fontconfig
|
||||
[freetype]=freetype2
|
||||
[harfbuzz-ng]=harfbuzz
|
||||
[icu]=icu
|
||||
[libdrm]=
|
||||
[libjpeg]=libjpeg
|
||||
[libpng]=libpng
|
||||
#[libvpx]=libvpx
|
||||
[libwebp]=libwebp
|
||||
[libxml]=libxml2
|
||||
[libxslt]=libxslt
|
||||
[opus]=opus
|
||||
[re2]=re2
|
||||
[snappy]=snappy
|
||||
[zlib]=minizip
|
||||
)
|
||||
_unwanted_bundled_libs=(
|
||||
$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
|
||||
)
|
||||
depends+=(${_system_libs[@]})
|
||||
|
||||
prepare() {
|
||||
cd "$srcdir/chromium-$pkgver"
|
||||
|
||||
# Allow building against system libraries in official builds
|
||||
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
|
||||
tools/generate_shim_headers/generate_shim_headers.py
|
||||
|
||||
# https://crbug.com/893950
|
||||
sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
|
||||
third_party/blink/renderer/core/xml/*.cc \
|
||||
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
|
||||
third_party/libxml/chromium/*.cc \
|
||||
third_party/maldoca/src/maldoca/ole/oss_utils.h
|
||||
|
||||
# Use the --oauth2-client-id= and --oauth2-client-secret= switches for
|
||||
# setting GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET at
|
||||
# runtime -- this allows signing into Chromium without baked-in values
|
||||
patch -Np1 -i ../use-oauth2-client-switches-as-default.patch
|
||||
|
||||
# Upstream fixes
|
||||
|
||||
# Revert kGlobalMediaControlsCastStartStop enabled by default
|
||||
# https://crbug.com/1314342
|
||||
patch -Rp1 -F3 -i ../enable-GlobalMediaControlsCastStartStop.patch
|
||||
|
||||
# https://chromium-review.googlesource.com/c/chromium/src/+/3488058
|
||||
patch -Np1 -i ../chromium-libxml-unbundle.patch
|
||||
|
||||
# https://chromium-review.googlesource.com/c/chromium/src/+/2862724
|
||||
patch -Np1 -i ../sql-make-VirtualCursor-standard-layout-type.patch
|
||||
|
||||
# Fixes for building with libstdc++ instead of libc++
|
||||
#patch -Np1 -i ../patches/
|
||||
|
||||
# Wayland/EGL regression (crbug #1071528 #1071550)
|
||||
patch -Np1 -i ../wayland-egl.patch
|
||||
|
||||
# Ungoogled Chromium changes
|
||||
_ungoogled_repo="$srcdir/$pkgname-$_uc_ver"
|
||||
_utils="${_ungoogled_repo}/utils"
|
||||
python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list"
|
||||
python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches"
|
||||
python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" \
|
||||
-f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./
|
||||
|
||||
# Link to system tools required by the build
|
||||
mkdir -p third_party/node/linux/node-linux-x64/bin
|
||||
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
|
||||
ln -s /usr/bin/java third_party/jdk/current/bin/
|
||||
|
||||
# Remove bundled libraries for which we will use the system copies; this
|
||||
# *should* do what the remove_bundled_libraries.py script does, with the
|
||||
# added benefit of not having to list all the remaining libraries
|
||||
local _lib
|
||||
for _lib in ${_unwanted_bundled_libs[@]}; do
|
||||
find "third_party/$_lib" -type f \
|
||||
\! -path "third_party/$_lib/chromium/*" \
|
||||
\! -path "third_party/$_lib/google/*" \
|
||||
\! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
|
||||
\! -regex '.*\.\(gn\|gni\|isolate\)' \
|
||||
-delete
|
||||
done
|
||||
|
||||
./build/linux/unbundle/replace_gn_files.py \
|
||||
--system-libraries "${!_system_libs[@]}"
|
||||
}
|
||||
|
||||
build() {
|
||||
make -C chromium-launcher-$_launcher_ver
|
||||
|
||||
cd "$srcdir/chromium-$pkgver"
|
||||
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
export AR=ar
|
||||
export NM=nm
|
||||
|
||||
local _flags=(
|
||||
'custom_toolchain="//build/toolchain/linux/unbundle:default"'
|
||||
'host_toolchain="//build/toolchain/linux/unbundle:default"'
|
||||
'is_official_build=true' # implies is_cfi=true on x86_64
|
||||
'symbol_level=0' # sufficient for backtraces on x86(_64)
|
||||
'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile
|
||||
'disable_fieldtrial_testing_config=true'
|
||||
'blink_enable_generated_code_formatting=false'
|
||||
'ffmpeg_branding="Chrome"'
|
||||
'proprietary_codecs=true'
|
||||
'rtc_use_pipewire=true'
|
||||
'link_pulseaudio=true'
|
||||
'use_gnome_keyring=false'
|
||||
'use_sysroot=false'
|
||||
'use_custom_libcxx=false'
|
||||
'enable_widevine=true'
|
||||
)
|
||||
|
||||
if [[ -n ${_system_libs[icu]+set} ]]; then
|
||||
_flags+=('icu_use_data_file=false')
|
||||
fi
|
||||
|
||||
# Append ungoogled chromium flags to _flags array
|
||||
_ungoogled_repo="$srcdir/$pkgname-$_uc_ver"
|
||||
readarray -t -O ${#_flags[@]} _flags < "${_ungoogled_repo}/flags.gn"
|
||||
|
||||
# Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
|
||||
CFLAGS+=' -Wno-builtin-macro-redefined'
|
||||
CXXFLAGS+=' -Wno-builtin-macro-redefined'
|
||||
CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__='
|
||||
|
||||
# Do not warn about unknown warning options
|
||||
CFLAGS+=' -Wno-unknown-warning-option'
|
||||
CXXFLAGS+=' -Wno-unknown-warning-option'
|
||||
|
||||
# Let Chromium set its own symbol level
|
||||
CFLAGS=${CFLAGS/-g }
|
||||
CXXFLAGS=${CXXFLAGS/-g }
|
||||
|
||||
# https://github.com/ungoogled-software/ungoogled-chromium-archlinux/issues/123
|
||||
CFLAGS=${CFLAGS/-fexceptions}
|
||||
CFLAGS=${CFLAGS/-fcf-protection}
|
||||
CXXFLAGS=${CXXFLAGS/-fexceptions}
|
||||
CXXFLAGS=${CXXFLAGS/-fcf-protection}
|
||||
|
||||
# This appears to cause random segfaults when combined with ThinLTO
|
||||
# https://bugs.archlinux.org/task/73518
|
||||
CFLAGS=${CFLAGS/-fstack-clash-protection}
|
||||
CXXFLAGS=${CXXFLAGS/-fstack-clash-protection}
|
||||
|
||||
# https://crbug.com/957519#c122
|
||||
CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS}
|
||||
|
||||
gn gen out/Release --args="${_flags[*]}"
|
||||
ninja -C out/Release chrome chrome_sandbox chromedriver
|
||||
}
|
||||
|
||||
package() {
|
||||
cd chromium-launcher-$_launcher_ver
|
||||
make PREFIX=/usr DESTDIR="$pkgdir" install
|
||||
install -Dm644 LICENSE \
|
||||
"$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
|
||||
|
||||
cd "$srcdir/chromium-$pkgver"
|
||||
|
||||
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
|
||||
install -D out/Release/chromedriver "$pkgdir/usr/bin/chromedriver"
|
||||
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
|
||||
|
||||
install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
|
||||
"$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/desktop.template \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop"
|
||||
install -Dm644 chrome/app/resources/manpage.1.in \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
sed -i \
|
||||
-e 's/@@MENUNAME@@/Chromium/g' \
|
||||
-e 's/@@PACKAGE@@/chromium/g' \
|
||||
-e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
|
||||
"$pkgdir/usr/share/applications/chromium.desktop" \
|
||||
"$pkgdir/usr/share/man/man1/chromium.1"
|
||||
|
||||
install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
sed -ni \
|
||||
-e 's/chromium-browser\.desktop/chromium.desktop/' \
|
||||
-e '/<update_contact>/d' \
|
||||
-e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
|
||||
-e '/^<?xml/,$p' \
|
||||
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
|
||||
|
||||
local toplevel_files=(
|
||||
chrome_100_percent.pak
|
||||
chrome_200_percent.pak
|
||||
chrome_crashpad_handler
|
||||
resources.pak
|
||||
v8_context_snapshot.bin
|
||||
|
||||
# ANGLE
|
||||
libEGL.so
|
||||
libGLESv2.so
|
||||
|
||||
# SwiftShader ICD
|
||||
libvk_swiftshader.so
|
||||
vk_swiftshader_icd.json
|
||||
)
|
||||
|
||||
if [[ -z ${_system_libs[icu]+set} ]]; then
|
||||
toplevel_files+=(icudtl.dat)
|
||||
fi
|
||||
|
||||
cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/"
|
||||
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
|
||||
install -Dm755 -t "$pkgdir/usr/lib/chromium/swiftshader" out/Release/swiftshader/*.so
|
||||
|
||||
for size in 24 48 64 128 256; do
|
||||
install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
for size in 16 32; do
|
||||
install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
|
||||
done
|
||||
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 et:
|
15
aur-confs/chromium-drirc-disable-10bpc-color-configs.conf
Normal file
15
aur-confs/chromium-drirc-disable-10bpc-color-configs.conf
Normal file
@ -0,0 +1,15 @@
|
||||
<!--
|
||||
|
||||
Disable 10 bpc color configs; fixes VAAPI playback.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=106490
|
||||
|
||||
-->
|
||||
|
||||
<driconf>
|
||||
<device>
|
||||
<application name="Chromium" executable="chromium">
|
||||
<option name="allow_rgb10_configs" value="false" />
|
||||
</application>
|
||||
</device>
|
||||
</driconf>
|
11
aur-mods.sh
Executable file
11
aur-mods.sh
Executable file
@ -0,0 +1,11 @@
|
||||
|
||||
# Allow building against system libraries in official builds
|
||||
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
|
||||
tools/generate_shim_headers/generate_shim_headers.py
|
||||
|
||||
# https://crbug.com/893950
|
||||
sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
|
||||
third_party/blink/renderer/core/xml/*.cc \
|
||||
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
|
||||
third_party/libxml/chromium/*.cc \
|
||||
third_party/maldoca/src/maldoca/ole/oss_utils.h
|
32
aur-patches/enable-GlobalMediaControlsCastStartStop.patch
Normal file
32
aur-patches/enable-GlobalMediaControlsCastStartStop.patch
Normal file
@ -0,0 +1,32 @@
|
||||
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 f28f9b0b802..a8d544f7d6d 100644
|
||||
--- a/chrome/browser/media/router/media_router_feature.cc
|
||||
+++ b/chrome/browser/media/router/media_router_feature.cc
|
||||
@@ -33,7 +33,7 @@ const base::Feature kMediaRouter{"MediaRouter",
|
||||
const base::Feature kCastAllowAllIPsFeature{"CastAllowAllIPs",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
const base::Feature kGlobalMediaControlsCastStartStop{
|
||||
- "GlobalMediaControlsCastStartStop", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ "GlobalMediaControlsCastStartStop", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
const base::Feature kAllowAllSitesToInitiateMirroring{
|
||||
"AllowAllSitesToInitiateMirroring", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
const base::Feature kDialMediaRouteProvider{"DialMediaRouteProvider",
|
18
aur-patches/remove-no-opaque-pointers-flag.patch
Normal file
18
aur-patches/remove-no-opaque-pointers-flag.patch
Normal file
@ -0,0 +1,18 @@
|
||||
--- chromium-102.0.5005.61/build/config/compiler/BUILD.gn.orig 2022-05-19 10:35:52.991415777 +0000
|
||||
+++ chromium-102.0.5005.61/build/config/compiler/BUILD.gn 2022-05-19 10:36:11.102017131 +0000
|
||||
@@ -1538,15 +1538,6 @@ config("default_warnings") {
|
||||
cflags += [ "-Wno-deprecated-non-prototype" ]
|
||||
}
|
||||
|
||||
- if (!is_nacl && !(is_chromeos ||
|
||||
- default_toolchain == "//build/toolchain/cros:target")) {
|
||||
- # TODO(https://crbug.com/1316298): Re-enable once test failure is figured out
|
||||
- cflags += [
|
||||
- "-Xclang",
|
||||
- "-no-opaque-pointers",
|
||||
- ]
|
||||
- }
|
||||
-
|
||||
if (is_fuchsia) {
|
||||
# TODO(https://bugs.chromium.org/p/fuchsia/issues/detail?id=77383)
|
||||
cflags += [ "-Wno-deprecated-copy" ]
|
333
aur-patches/roll-src-third_party-ffmpeg.patch
Normal file
333
aur-patches/roll-src-third_party-ffmpeg.patch
Normal file
@ -0,0 +1,333 @@
|
||||
From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
|
||||
From: Dale Curtis <dalecurtis@chromium.org>
|
||||
Date: Sat, 2 Apr 2022 05:13:53 +0000
|
||||
Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
|
||||
commits)
|
||||
|
||||
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
|
||||
|
||||
Created with:
|
||||
roll-dep src/third_party/ffmpeg
|
||||
|
||||
Fixed: 1293918
|
||||
Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
|
||||
Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
|
||||
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
|
||||
Reviewed-by: Dan Sanders <sandersd@chromium.org>
|
||||
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/main@{#988253}
|
||||
---
|
||||
.../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
|
||||
media/ffmpeg/ffmpeg_common.cc | 11 +++----
|
||||
media/filters/audio_file_reader.cc | 9 +++---
|
||||
media/filters/audio_file_reader_unittest.cc | 6 ++--
|
||||
.../filters/audio_video_metadata_extractor.cc | 11 +++++--
|
||||
.../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++--
|
||||
...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +-
|
||||
media/filters/ffmpeg_audio_decoder.cc | 13 +++++----
|
||||
8 files changed, 51 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
index e4fc3f460e2..9b1ad9f7675 100644
|
||||
--- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
|
||||
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
|
||||
}
|
||||
|
||||
- codec_context->channels = config.channel_count;
|
||||
+ codec_context->ch_layout.nb_channels = config.channel_count;
|
||||
codec_context->sample_rate = config.samples_per_second;
|
||||
|
||||
if (config.extra_data) {
|
||||
@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
|
||||
case cdm::kAudioFormatPlanarS16:
|
||||
case cdm::kAudioFormatPlanarF32: {
|
||||
const int decoded_size_per_channel =
|
||||
- decoded_audio_size / av_frame.channels;
|
||||
- for (int i = 0; i < av_frame.channels; ++i) {
|
||||
+ decoded_audio_size / av_frame.ch_layout.nb_channels;
|
||||
+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
|
||||
memcpy(output_buffer, av_frame.extended_data[i],
|
||||
decoded_size_per_channel);
|
||||
output_buffer += decoded_size_per_channel;
|
||||
@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
|
||||
// Success!
|
||||
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
|
||||
samples_per_second_ = config.samples_per_second;
|
||||
- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
|
||||
+ bytes_per_frame_ =
|
||||
+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
|
||||
output_timestamp_helper_ =
|
||||
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
|
||||
is_initialized_ = true;
|
||||
|
||||
// Store initial values to guard against midstream configuration changes.
|
||||
- channels_ = codec_context_->channels;
|
||||
+ channels_ = codec_context_->ch_layout.nb_channels;
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
|
||||
return true;
|
||||
@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
|
||||
for (auto& frame : audio_frames) {
|
||||
int decoded_audio_size = 0;
|
||||
if (frame->sample_rate != samples_per_second_ ||
|
||||
- frame->channels != channels_ || frame->format != av_sample_format_) {
|
||||
+ frame->ch_layout.nb_channels != channels_ ||
|
||||
+ frame->format != av_sample_format_) {
|
||||
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
<< " Sample Rate: " << frame->sample_rate << " vs "
|
||||
- << samples_per_second_ << ", Channels: " << frame->channels
|
||||
- << " vs " << channels_ << ", Sample Format: " << frame->format
|
||||
- << " vs " << av_sample_format_;
|
||||
+ << samples_per_second_
|
||||
+ << ", Channels: " << frame->ch_layout.nb_channels << " vs "
|
||||
+ << channels_ << ", Sample Format: " << frame->format << " vs "
|
||||
+ << av_sample_format_;
|
||||
return cdm::kDecodeError;
|
||||
}
|
||||
|
||||
decoded_audio_size = av_samples_get_buffer_size(
|
||||
- nullptr, codec_context_->channels, frame->nb_samples,
|
||||
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
||||
codec_context_->sample_fmt, 1);
|
||||
if (!decoded_audio_size)
|
||||
continue;
|
||||
@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
|
||||
size_t* total_size,
|
||||
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
|
||||
AVFrame* frame) {
|
||||
- *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
|
||||
- frame->nb_samples,
|
||||
- codec_context_->sample_fmt, 1);
|
||||
+ *total_size += av_samples_get_buffer_size(
|
||||
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
||||
+ codec_context_->sample_fmt, 1);
|
||||
audio_frames->emplace_back(av_frame_clone(frame));
|
||||
return true;
|
||||
}
|
||||
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
|
||||
index 87ca8969626..76f03d6608e 100644
|
||||
--- a/media/ffmpeg/ffmpeg_common.cc
|
||||
+++ b/media/ffmpeg/ffmpeg_common.cc
|
||||
@@ -345,10 +345,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
|
||||
codec_context->sample_fmt, codec_context->codec_id);
|
||||
|
||||
ChannelLayout channel_layout =
|
||||
- codec_context->channels > 8
|
||||
+ codec_context->ch_layout.nb_channels > 8
|
||||
? CHANNEL_LAYOUT_DISCRETE
|
||||
- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
|
||||
- codec_context->channels);
|
||||
+ : ChannelLayoutToChromeChannelLayout(
|
||||
+ codec_context->ch_layout.u.mask,
|
||||
+ codec_context->ch_layout.nb_channels);
|
||||
|
||||
int sample_rate = codec_context->sample_rate;
|
||||
switch (codec) {
|
||||
@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
|
||||
extra_data, encryption_scheme, seek_preroll,
|
||||
codec_context->delay);
|
||||
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
|
||||
- config->SetChannelsForDiscrete(codec_context->channels);
|
||||
+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
|
||||
|
||||
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
|
||||
// These are bitstream formats unknown to ffmpeg, so they don't have
|
||||
@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
|
||||
|
||||
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
|
||||
// said information to decode.
|
||||
- codec_context->channels = config.channels();
|
||||
+ codec_context->ch_layout.nb_channels = config.channels();
|
||||
codec_context->sample_rate = config.samples_per_second();
|
||||
|
||||
if (config.extra_data().empty()) {
|
||||
diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
|
||||
index 5f257bdfaa6..e1be5aa9a5b 100644
|
||||
--- a/media/filters/audio_file_reader.cc
|
||||
+++ b/media/filters/audio_file_reader.cc
|
||||
@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
|
||||
|
||||
// Verify the channel layout is supported by Chrome. Acts as a sanity check
|
||||
// against invalid files. See http://crbug.com/171962
|
||||
- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
|
||||
- codec_context_->channels) ==
|
||||
+ if (ChannelLayoutToChromeChannelLayout(
|
||||
+ codec_context_->ch_layout.u.mask,
|
||||
+ codec_context_->ch_layout.nb_channels) ==
|
||||
CHANNEL_LAYOUT_UNSUPPORTED) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Store initial values to guard against midstream configuration changes.
|
||||
- channels_ = codec_context_->channels;
|
||||
+ channels_ = codec_context_->ch_layout.nb_channels;
|
||||
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
|
||||
sample_rate_ = codec_context_->sample_rate;
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
|
||||
if (frames_read < 0)
|
||||
return false;
|
||||
|
||||
- const int channels = frame->channels;
|
||||
+ const int channels = frame->ch_layout.nb_channels;
|
||||
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
|
||||
frame->format != av_sample_format_) {
|
||||
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc
|
||||
index 2aba7927a31..1f45a50cace 100644
|
||||
--- a/media/filters/audio_file_reader_unittest.cc
|
||||
+++ b/media/filters/audio_file_reader_unittest.cc
|
||||
@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test {
|
||||
EXPECT_FALSE(reader_->Open());
|
||||
}
|
||||
|
||||
- void RunTestFailingDecode(const char* fn) {
|
||||
+ void RunTestFailingDecode(const char* fn, int expect_read = 0) {
|
||||
Initialize(fn);
|
||||
EXPECT_TRUE(reader_->Open());
|
||||
std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
|
||||
- EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
|
||||
+ EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
|
||||
}
|
||||
|
||||
void RunTestPartialDecode(const char* fn) {
|
||||
@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
|
||||
}
|
||||
|
||||
TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
|
||||
- RunTestFailingDecode("midstream_config_change.mp3");
|
||||
+ RunTestFailingDecode("midstream_config_change.mp3", 42624);
|
||||
}
|
||||
#endif
|
||||
|
||||
diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
|
||||
index 185819eb936..69ff508c221 100644
|
||||
--- a/media/filters/audio_video_metadata_extractor.cc
|
||||
+++ b/media/filters/audio_video_metadata_extractor.cc
|
||||
@@ -113,6 +113,15 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source,
|
||||
if (!stream)
|
||||
continue;
|
||||
|
||||
+ void* display_matrix =
|
||||
+ av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
|
||||
+ if (display_matrix) {
|
||||
+ rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
|
||||
+ static_cast<int32_t*>(display_matrix))
|
||||
+ .rotation;
|
||||
+ info.tags["rotate"] = base::NumberToString(rotation_);
|
||||
+ }
|
||||
+
|
||||
// Extract dictionary from streams also. Needed for containers that attach
|
||||
// metadata to contained streams instead the container itself, like OGG.
|
||||
ExtractDictionary(stream->metadata, &info.tags);
|
||||
@@ -255,8 +264,6 @@ void AudioVideoMetadataExtractor::ExtractDictionary(AVDictionary* metadata,
|
||||
if (raw_tags->find(tag->key) == raw_tags->end())
|
||||
(*raw_tags)[tag->key] = tag->value;
|
||||
|
||||
- if (ExtractInt(tag, "rotate", &rotation_))
|
||||
- continue;
|
||||
if (ExtractString(tag, "album", &album_))
|
||||
continue;
|
||||
if (ExtractString(tag, "artist", &artist_))
|
||||
diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
index 6f231c85729..ca5e5fb927d 100644
|
||||
--- a/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
|
||||
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
|
||||
audio_profile_ != stream_codec_parameters_->profile ||
|
||||
sample_rate_index_ != sample_rate_index ||
|
||||
- channel_configuration_ != stream_codec_parameters_->channels ||
|
||||
+ channel_configuration_ !=
|
||||
+ stream_codec_parameters_->ch_layout.nb_channels ||
|
||||
frame_length_ != header_plus_packet_size) {
|
||||
header_generated_ =
|
||||
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
|
||||
0, // layer
|
||||
stream_codec_parameters_->profile, sample_rate_index,
|
||||
0, // private stream
|
||||
- stream_codec_parameters_->channels,
|
||||
+ stream_codec_parameters_->ch_layout.nb_channels,
|
||||
0, // originality
|
||||
0, // home
|
||||
0, // copyrighted_stream
|
||||
@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
|
||||
codec_ = stream_codec_parameters_->codec_id;
|
||||
audio_profile_ = stream_codec_parameters_->profile;
|
||||
sample_rate_index_ = sample_rate_index;
|
||||
- channel_configuration_ = stream_codec_parameters_->channels;
|
||||
+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
|
||||
frame_length_ = header_plus_packet_size;
|
||||
}
|
||||
|
||||
diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
index 1fd4c5ccd7d..f59bcd8fdaf 100644
|
||||
--- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
|
||||
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
|
||||
test_parameters_.codec_id = AV_CODEC_ID_AAC;
|
||||
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
|
||||
- test_parameters_.channels = 2;
|
||||
+ test_parameters_.ch_layout.nb_channels = 2;
|
||||
test_parameters_.extradata = extradata_header_;
|
||||
test_parameters_.extradata_size = sizeof(extradata_header_);
|
||||
}
|
||||
diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
|
||||
index 6a56c675f7d..4615fdeb3fb 100644
|
||||
--- a/media/filters/ffmpeg_audio_decoder.cc
|
||||
+++ b/media/filters/ffmpeg_audio_decoder.cc
|
||||
@@ -28,7 +28,7 @@ namespace media {
|
||||
|
||||
// Return the number of channels from the data in |frame|.
|
||||
static inline int DetermineChannels(AVFrame* frame) {
|
||||
- return frame->channels;
|
||||
+ return frame->ch_layout.nb_channels;
|
||||
}
|
||||
|
||||
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
|
||||
@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
|
||||
// Translate unsupported into discrete layouts for discrete configurations;
|
||||
// ffmpeg does not have a labeled discrete configuration internally.
|
||||
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
|
||||
- codec_context_->channel_layout, codec_context_->channels);
|
||||
+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
|
||||
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
|
||||
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
|
||||
channel_layout = CHANNEL_LAYOUT_DISCRETE;
|
||||
@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
|
||||
// Success!
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
|
||||
- if (codec_context_->channels != config.channels()) {
|
||||
+ if (codec_context_->ch_layout.nb_channels != config.channels()) {
|
||||
MEDIA_LOG(ERROR, media_log_)
|
||||
<< "Audio configuration specified " << config.channels()
|
||||
<< " channels, but FFmpeg thinks the file contains "
|
||||
- << codec_context_->channels << " channels";
|
||||
+ << codec_context_->ch_layout.nb_channels << " channels";
|
||||
ReleaseFFmpegResources();
|
||||
state_ = DecoderState::kUninitialized;
|
||||
return false;
|
||||
@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
|
||||
if (frame->nb_samples <= 0)
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
- if (s->channels != channels) {
|
||||
+ if (s->ch_layout.nb_channels != channels) {
|
||||
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
|
||||
ChannelLayout channel_layout =
|
||||
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
|
||||
? CHANNEL_LAYOUT_DISCRETE
|
||||
- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
|
||||
+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
|
||||
+ s->ch_layout.nb_channels);
|
||||
|
||||
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
|
||||
DLOG(ERROR) << "Unsupported channel layout.";
|
238
aur-patches/sql-make-VirtualCursor-standard-layout-type.patch
Normal file
238
aur-patches/sql-make-VirtualCursor-standard-layout-type.patch
Normal file
@ -0,0 +1,238 @@
|
||||
From 144479ad7b4287bee4067f95e4218f614798a865 Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Sun, 16 Jan 2022 19:15:26 +0000
|
||||
Subject: [PATCH] sql: make VirtualCursor standard layout type
|
||||
|
||||
sql::recover::VirtualCursor needs to be a standard layout type, but
|
||||
has members of type std::unique_ptr. However, std::unique_ptr is not
|
||||
guaranteed to be standard layout. Compiling with clang combined with
|
||||
gcc-11 libstdc++ fails because of this.
|
||||
|
||||
Bug: 1189788
|
||||
Change-Id: Ia6dc388cc5ef1c0f2afc75f8ca45b9f12687ca9c
|
||||
---
|
||||
sql/recover_module/btree.cc | 18 ++++++++++++------
|
||||
sql/recover_module/btree.h | 21 +++++++++++++++------
|
||||
sql/recover_module/cursor.cc | 24 ++++++++++++------------
|
||||
sql/recover_module/cursor.h | 2 +-
|
||||
sql/recover_module/pager.cc | 5 ++---
|
||||
sql/recover_module/pager.h | 6 +++---
|
||||
6 files changed, 45 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc
|
||||
index cc9420e5c05..f12d8fa32a2 100644
|
||||
--- a/sql/recover_module/btree.cc
|
||||
+++ b/sql/recover_module/btree.cc
|
||||
@@ -136,16 +136,22 @@ static_assert(std::is_trivially_destructible<LeafPageDecoder>::value,
|
||||
"Move the destructor to the .cc file if it's non-trival");
|
||||
#endif // !DCHECK_IS_ON()
|
||||
|
||||
-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept
|
||||
- : page_id_(db_reader->page_id()),
|
||||
- db_reader_(db_reader),
|
||||
- cell_count_(ComputeCellCount(db_reader)),
|
||||
- next_read_index_(0),
|
||||
- last_record_size_(0) {
|
||||
+LeafPageDecoder::LeafPageDecoder() noexcept = default;
|
||||
+
|
||||
+void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) {
|
||||
+ page_id_ = db_reader->page_id();
|
||||
+ db_reader_ = db_reader;
|
||||
+ cell_count_ = ComputeCellCount(db_reader);
|
||||
+ next_read_index_ = 0;
|
||||
+ last_record_size_ = 0;
|
||||
DCHECK(IsOnValidPage(db_reader));
|
||||
DCHECK(DatabasePageReader::IsValidPageId(page_id_));
|
||||
}
|
||||
|
||||
+void LeafPageDecoder::Reset() {
|
||||
+ db_reader_ = nullptr;
|
||||
+}
|
||||
+
|
||||
bool LeafPageDecoder::TryAdvance() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
DCHECK(CanAdvance());
|
||||
diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h
|
||||
index eaa087a5c52..df0e0c937c0 100644
|
||||
--- a/sql/recover_module/btree.h
|
||||
+++ b/sql/recover_module/btree.h
|
||||
@@ -101,9 +101,7 @@ class LeafPageDecoder {
|
||||
public:
|
||||
// Creates a decoder for a DatabasePageReader's last read page.
|
||||
//
|
||||
- // |db_reader| must have been used to read an inner page of a table B-tree.
|
||||
- // |db_reader| must outlive this instance.
|
||||
- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept;
|
||||
+ LeafPageDecoder() noexcept;
|
||||
~LeafPageDecoder() noexcept = default;
|
||||
|
||||
LeafPageDecoder(const LeafPageDecoder&) = delete;
|
||||
@@ -151,6 +149,17 @@ class LeafPageDecoder {
|
||||
// read as long as CanAdvance() returns true.
|
||||
bool TryAdvance();
|
||||
|
||||
+ // Initialize with DatabasePageReader
|
||||
+ // |db_reader| must have been used to read an inner page of a table B-tree.
|
||||
+ // |db_reader| must outlive this instance.
|
||||
+ void Initialize(DatabasePageReader* db_reader);
|
||||
+
|
||||
+ // Reset internal DatabasePageReader
|
||||
+ void Reset();
|
||||
+
|
||||
+ // True if DatabasePageReader is valid
|
||||
+ bool IsValid() { return (db_reader_ != nullptr); }
|
||||
+
|
||||
// True if the given reader may point to an inner page in a table B-tree.
|
||||
//
|
||||
// The last ReadPage() call on |db_reader| must have succeeded.
|
||||
@@ -164,14 +173,14 @@ class LeafPageDecoder {
|
||||
static int ComputeCellCount(DatabasePageReader* db_reader);
|
||||
|
||||
// The number of the B-tree page this reader is reading.
|
||||
- const int64_t page_id_;
|
||||
+ int64_t page_id_;
|
||||
// Used to read the tree page.
|
||||
//
|
||||
// Raw pointer usage is acceptable because this instance's owner is expected
|
||||
// to ensure that the DatabasePageReader outlives this.
|
||||
- DatabasePageReader* const db_reader_;
|
||||
+ DatabasePageReader* db_reader_;
|
||||
// Caches the ComputeCellCount() value for this reader's page.
|
||||
- const int cell_count_ = ComputeCellCount(db_reader_);
|
||||
+ int cell_count_;
|
||||
|
||||
// The reader's cursor state.
|
||||
//
|
||||
diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc
|
||||
index 4f827edf1b4..240de4999fe 100644
|
||||
--- a/sql/recover_module/cursor.cc
|
||||
+++ b/sql/recover_module/cursor.cc
|
||||
@@ -28,7 +28,7 @@ VirtualCursor::~VirtualCursor() {
|
||||
int VirtualCursor::First() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
inner_decoders_.clear();
|
||||
- leaf_decoder_ = nullptr;
|
||||
+ leaf_decoder_.Reset();
|
||||
|
||||
AppendPageDecoder(table_->root_page_id());
|
||||
return Next();
|
||||
@@ -38,18 +38,18 @@ int VirtualCursor::Next() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
record_reader_.Reset();
|
||||
|
||||
- while (!inner_decoders_.empty() || leaf_decoder_.get()) {
|
||||
- if (leaf_decoder_.get()) {
|
||||
- if (!leaf_decoder_->CanAdvance()) {
|
||||
+ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) {
|
||||
+ if (leaf_decoder_.IsValid()) {
|
||||
+ if (!leaf_decoder_.CanAdvance()) {
|
||||
// The leaf has been exhausted. Remove it from the DFS stack.
|
||||
- leaf_decoder_ = nullptr;
|
||||
+ leaf_decoder_.Reset();
|
||||
continue;
|
||||
}
|
||||
- if (!leaf_decoder_->TryAdvance())
|
||||
+ if (!leaf_decoder_.TryAdvance())
|
||||
continue;
|
||||
|
||||
- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(),
|
||||
- leaf_decoder_->last_record_offset())) {
|
||||
+ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(),
|
||||
+ leaf_decoder_.last_record_offset())) {
|
||||
continue;
|
||||
}
|
||||
if (!record_reader_.Initialize())
|
||||
@@ -101,13 +101,13 @@ int VirtualCursor::ReadColumn(int column_index,
|
||||
int64_t VirtualCursor::RowId() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
DCHECK(record_reader_.IsInitialized());
|
||||
- DCHECK(leaf_decoder_.get());
|
||||
- return leaf_decoder_->last_record_rowid();
|
||||
+ DCHECK(leaf_decoder_.IsValid());
|
||||
+ return leaf_decoder_.last_record_rowid();
|
||||
}
|
||||
|
||||
void VirtualCursor::AppendPageDecoder(int page_id) {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
- DCHECK(leaf_decoder_.get() == nullptr)
|
||||
+ DCHECK(!leaf_decoder_.IsValid())
|
||||
<< __func__
|
||||
<< " must only be called when the current path has no leaf decoder";
|
||||
|
||||
@@ -115,7 +115,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) {
|
||||
return;
|
||||
|
||||
if (LeafPageDecoder::IsOnValidPage(&db_reader_)) {
|
||||
- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_);
|
||||
+ leaf_decoder_.Initialize(&db_reader_);
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h
|
||||
index 845b7852648..cc4e85f83f9 100644
|
||||
--- a/sql/recover_module/cursor.h
|
||||
+++ b/sql/recover_module/cursor.h
|
||||
@@ -130,7 +130,7 @@ class VirtualCursor {
|
||||
std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_;
|
||||
|
||||
// Decodes the leaf page containing records.
|
||||
- std::unique_ptr<LeafPageDecoder> leaf_decoder_;
|
||||
+ LeafPageDecoder leaf_decoder_;
|
||||
|
||||
SEQUENCE_CHECKER(sequence_checker_);
|
||||
};
|
||||
diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc
|
||||
index 58e75de2704..69d98cef98d 100644
|
||||
--- a/sql/recover_module/pager.cc
|
||||
+++ b/sql/recover_module/pager.cc
|
||||
@@ -23,8 +23,7 @@ static_assert(DatabasePageReader::kMaxPageId <= std::numeric_limits<int>::max(),
|
||||
"ints are not appropriate for representing page IDs");
|
||||
|
||||
DatabasePageReader::DatabasePageReader(VirtualTable* table)
|
||||
- : page_data_(std::make_unique<uint8_t[]>(table->page_size())),
|
||||
- table_(table) {
|
||||
+ : page_data_(table->page_size()), table_(table) {
|
||||
DCHECK(table != nullptr);
|
||||
DCHECK(IsValidPageSize(table->page_size()));
|
||||
}
|
||||
@@ -58,7 +57,7 @@ int DatabasePageReader::ReadPage(int page_id) {
|
||||
"The |read_offset| computation above may overflow");
|
||||
|
||||
int sqlite_status =
|
||||
- RawRead(sqlite_file, read_size, read_offset, page_data_.get());
|
||||
+ RawRead(sqlite_file, read_size, read_offset, page_data_.data());
|
||||
|
||||
// |page_id_| needs to be set to kInvalidPageId if the read failed.
|
||||
// Otherwise, future ReadPage() calls with the previous |page_id_| value
|
||||
diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h
|
||||
index 07cac3cb989..d08f0932fab 100644
|
||||
--- a/sql/recover_module/pager.h
|
||||
+++ b/sql/recover_module/pager.h
|
||||
@@ -6,8 +6,8 @@
|
||||
#define SQL_RECOVER_MODULE_PAGER_H_
|
||||
|
||||
#include <cstdint>
|
||||
-#include <memory>
|
||||
#include <ostream>
|
||||
+#include <vector>
|
||||
|
||||
#include "base/check_op.h"
|
||||
#include "base/memory/raw_ptr.h"
|
||||
@@ -72,7 +72,7 @@ class DatabasePageReader {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
DCHECK_NE(page_id_, kInvalidPageId)
|
||||
<< "Successful ReadPage() required before accessing pager state";
|
||||
- return page_data_.get();
|
||||
+ return page_data_.data();
|
||||
}
|
||||
|
||||
// The number of bytes in the page read by the last ReadPage() call.
|
||||
@@ -139,7 +139,7 @@ class DatabasePageReader {
|
||||
int page_id_ = kInvalidPageId;
|
||||
// Stores the bytes of the last page successfully read by ReadPage().
|
||||
// The content is undefined if the last call to ReadPage() did not succeed.
|
||||
- const std::unique_ptr<uint8_t[]> page_data_;
|
||||
+ std::vector<uint8_t> page_data_;
|
||||
// Raw pointer usage is acceptable because this instance's owner is expected
|
||||
// to ensure that the VirtualTable outlives this.
|
||||
const raw_ptr<VirtualTable> table_;
|
17
aur-patches/use-oauth2-client-switches-as-default.patch
Normal file
17
aur-patches/use-oauth2-client-switches-as-default.patch
Normal file
@ -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
|
22
aur-patches/wayland-egl.patch
Normal file
22
aur-patches/wayland-egl.patch
Normal file
@ -0,0 +1,22 @@
|
||||
--- a/ui/gl/gl_image_native_pixmap.cc 2020-05-18 11:40:06.000000000 -0700
|
||||
+++ b/ui/gl/gl_image_native_pixmap.cc 2020-05-22 02:07:16.007770442 -0700
|
||||
@@ -288,6 +288,8 @@
|
||||
std::move(scoped_fd));
|
||||
}
|
||||
|
||||
+ handle.planes[0].size = size_.GetArea();
|
||||
+
|
||||
return handle;
|
||||
#endif // !defined(OS_FUCHSIA)
|
||||
}
|
||||
--- a/gpu/command_buffer/service/error_state.cc 2020-05-18 11:39:22.000000000 -0700
|
||||
+++ b/gpu/command_buffer/service/error_state.cc 2020-05-22 13:43:09.181180388 -0700
|
||||
@@ -115,6 +115,8 @@
|
||||
// buffer.
|
||||
error = GL_NO_ERROR;
|
||||
}
|
||||
+ if (error == GL_INVALID_ENUM)
|
||||
+ error = GL_NO_ERROR;
|
||||
return error;
|
||||
}
|
||||
|
94
build.sh
Executable file
94
build.sh
Executable file
@ -0,0 +1,94 @@
|
||||
# Pulled from PKGBUILD on AUR
|
||||
|
||||
# Possible replacements are listed in chromium-src/linux/unbundle/replace_gn_files.py
|
||||
# Keys are the names in the above script; values are the dependencies in Arch
|
||||
declare -gA _system_libs=(
|
||||
[ffmpeg]=ffmpeg
|
||||
[flac]=flac
|
||||
[fontconfig]=fontconfig
|
||||
[freetype]=freetype2
|
||||
[harfbuzz-ng]=harfbuzz
|
||||
[icu]=icu
|
||||
[libdrm]=
|
||||
[libjpeg]=libjpeg
|
||||
[libpng]=libpng
|
||||
#[libvpx]=libvpx
|
||||
[libwebp]=libwebp
|
||||
[libxml]=libxml2
|
||||
[libxslt]=libxslt
|
||||
[opus]=opus
|
||||
[re2]=re2
|
||||
[snappy]=snappy
|
||||
[zlib]=minizip
|
||||
)
|
||||
|
||||
build() {
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
export AR=ar
|
||||
export NM=nm
|
||||
|
||||
local _flags=(
|
||||
'custom_toolchain="//build/toolchain/linux/unbundle:default"'
|
||||
'host_toolchain="//build/toolchain/linux/unbundle:default"'
|
||||
'is_official_build=true' # implies is_cfi=true on x86_64
|
||||
'symbol_level=0' # sufficient for backtraces on x86(_64)
|
||||
'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile
|
||||
'disable_fieldtrial_testing_config=true'
|
||||
'blink_enable_generated_code_formatting=false'
|
||||
'ffmpeg_branding="Chrome"'
|
||||
'proprietary_codecs=true'
|
||||
'rtc_use_pipewire=true'
|
||||
'link_pulseaudio=true'
|
||||
'use_gnome_keyring=false'
|
||||
'use_sysroot=false'
|
||||
'use_custom_libcxx=false'
|
||||
'enable_widevine=true'
|
||||
)
|
||||
|
||||
if [[ -n ${_system_libs[icu]+set} ]]; then
|
||||
_flags+=('icu_use_data_file=false')
|
||||
fi
|
||||
|
||||
# Append ungoogled chromium flags to _flags array
|
||||
_ungoogled_repo="../ungoogled-chromium"
|
||||
readarray -t -O ${#_flags[@]} _flags < "${_ungoogled_repo}/flags.gn"
|
||||
|
||||
# Facilitate deterministic builds (taken from chromium-src/config/compiler/BUILD.gn)
|
||||
CFLAGS+=' -Wno-builtin-macro-redefined'
|
||||
CXXFLAGS+=' -Wno-builtin-macro-redefined'
|
||||
CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__='
|
||||
|
||||
# Do not warn about unknown warning options
|
||||
CFLAGS+=' -Wno-unknown-warning-option'
|
||||
CXXFLAGS+=' -Wno-unknown-warning-option'
|
||||
|
||||
# Let Chromium set its own symbol level
|
||||
CFLAGS=${CFLAGS/-g }
|
||||
CXXFLAGS=${CXXFLAGS/-g }
|
||||
|
||||
# https://github.com/ungoogled-software/ungoogled-chromium-archlinux/issues/123
|
||||
CFLAGS=${CFLAGS/-fexceptions}
|
||||
CFLAGS=${CFLAGS/-fcf-protection}
|
||||
CXXFLAGS=${CXXFLAGS/-fexceptions}
|
||||
CXXFLAGS=${CXXFLAGS/-fcf-protection}
|
||||
|
||||
# This appears to cause random segfaults when combined with ThinLTO
|
||||
# https://bugs.archlinux.org/task/73518
|
||||
CFLAGS=${CFLAGS/-fstack-clash-protection}
|
||||
CXXFLAGS=${CXXFLAGS/-fstack-clash-protection}
|
||||
|
||||
# https://crbug.com/957519#c122
|
||||
CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS}
|
||||
|
||||
# echo python build/util/lastchange.py -o build/util/LASTCHANGE
|
||||
# python build/util/lastchange.py -o build/util/LASTCHANGE
|
||||
|
||||
echo gn gen out/Release --args="${_flags[*]}"
|
||||
gn gen out/Release --args="${_flags[*]}"
|
||||
|
||||
echo ninja -C out/release chrome chrome_sandbox chromedriver
|
||||
ninja -C out/Release chrome chrome_sandbox chromedriver
|
||||
}
|
||||
build
|
||||
|
50
configure-libraries.sh
Executable file
50
configure-libraries.sh
Executable file
@ -0,0 +1,50 @@
|
||||
# From AUR PKGBUILD
|
||||
|
||||
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
|
||||
# Keys are the names in the above script; values are the dependencies in Arch
|
||||
declare -gA _system_libs=(
|
||||
[ffmpeg]=ffmpeg
|
||||
[flac]=flac
|
||||
[fontconfig]=fontconfig
|
||||
[freetype]=freetype2
|
||||
[harfbuzz-ng]=harfbuzz
|
||||
[icu]=icu
|
||||
[libdrm]=
|
||||
[libjpeg]=libjpeg
|
||||
[libpng]=libpng
|
||||
#[libvpx]=libvpx
|
||||
[libwebp]=libwebp
|
||||
[libxml]=libxml2
|
||||
[libxslt]=libxslt
|
||||
[opus]=opus
|
||||
[re2]=re2
|
||||
[snappy]=snappy
|
||||
[zlib]=minizip
|
||||
)
|
||||
_unwanted_bundled_libs=(
|
||||
$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
|
||||
)
|
||||
|
||||
prepare() {
|
||||
# Link to system tools required by the build
|
||||
mkdir -p third_party/node/linux/node-linux-x64/bin
|
||||
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
|
||||
ln -s /usr/bin/java third_party/jdk/current/bin/
|
||||
|
||||
local _lib
|
||||
for _lib in ${_unwanted_bundled_libs[@]}; do
|
||||
find "third_party/$_lib" -type f \
|
||||
\! -path "third_party/$_lib/chromium/*" \
|
||||
\! -path "third_party/$_lib/google/*" \
|
||||
\! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
|
||||
\! -regex '.*\.\(gn\|gni\|isolate\)' \
|
||||
-delete
|
||||
done
|
||||
|
||||
./build/linux/unbundle/replace_gn_files.py \
|
||||
--system-libraries "${!_system_libs[@]}"
|
||||
|
||||
echo "done"
|
||||
}
|
||||
prepare
|
||||
|
124
makefile
Normal file
124
makefile
Normal file
@ -0,0 +1,124 @@
|
||||
# Build requires gn and ninja
|
||||
# also clang, clang++, ar, nm
|
||||
|
||||
# ungoogled-chromium way
|
||||
retrieve:
|
||||
mkdir -p chromium-downloads
|
||||
./ungoogled-chromium/utils/downloads.py retrieve -c chromium-downloads -i ./ungoogled-chromium/downloads.ini
|
||||
|
||||
unpack:
|
||||
./ungoogled-chromium/utils/downloads.py unpack -c chromium-downloads -i ./ungoogled-chromium/downloads.ini -- chromium-src
|
||||
|
||||
# google way
|
||||
checkout:
|
||||
mkdir -p repo
|
||||
export PATH="$$PATH:$${HOME}/builds/chromium/depot_tools" && cd repo && fetch --nohooks chromium
|
||||
|
||||
|
||||
# AUR Preparation Steps
|
||||
apply-aur-mods:
|
||||
cd chromium-src && ../aur-mods.sh
|
||||
|
||||
apply-aur-patches:
|
||||
# Use the --oauth2-client-id= and --oauth2-client-secret= switches for
|
||||
# setting GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET at
|
||||
# runtime -- this allows signing into Chromium without baked-in values
|
||||
cd chromium-src && patch -Np1 -i ../aur-patches/use-oauth2-client-switches-as-default.patch
|
||||
|
||||
# Remove '-Xclang -no-opaque-pointers' flag not supported by our clang
|
||||
cd chromium-src && patch -Np1 -i ../aur-patches/remove-no-opaque-pointers-flag.patch
|
||||
|
||||
# Upstream fixes
|
||||
|
||||
# Revert kGlobalMediaControlsCastStartStop enabled by default
|
||||
# https://crbug.com/1314342
|
||||
cd chromium-src && patch -Rp1 -F3 -i ../aur-patches/enable-GlobalMediaControlsCastStartStop.patch
|
||||
|
||||
# https://chromium-review.googlesource.com/c/chromium/src/+/3488058
|
||||
#archived cd chromium-src && patch -Np1 -i ../aur-patches/chromium-libxml-unbundle.patch
|
||||
|
||||
# Revert ffmpeg roll requiring new channel layout API support
|
||||
# https://crbug.com/1325301
|
||||
cd chromium-src && patch -Rp1 -i ../aur-patches/roll-src-third_party-ffmpeg.patch
|
||||
|
||||
# https://chromium-review.googlesource.com/c/chromium/src/+/2862724
|
||||
cd chromium-src && patch -Np1 -i ../aur-patches/sql-make-VirtualCursor-standard-layout-type.patch
|
||||
|
||||
# Wayland/EGL regression (crbug #1071528 #1071550)
|
||||
cd chromium-src && patch -Np1 -i ../aur-patches/wayland-egl.patch
|
||||
|
||||
# Ungoogled Chromium Steps
|
||||
prune-binaries:
|
||||
./ungoogled-chromium/utils/prune_binaries.py chromium-src ./ungoogled-chromium/pruning.list
|
||||
|
||||
apply-ungoogle-patches:
|
||||
./ungoogled-chromium/utils/patches.py apply chromium-src ./ungoogled-chromium/patches
|
||||
|
||||
apply-michael-patches:
|
||||
cd chromium-src && patch -Np1 -i ../michael-patches/michael-customizations.patch
|
||||
|
||||
subst-domains:
|
||||
mkdir -p chromium-src/cache
|
||||
./ungoogled-chromium/utils/domain_substitution.py apply \
|
||||
-r ./ungoogled-chromium/domain_regex.list \
|
||||
-f ./ungoogled-chromium/domain_substitution.list \
|
||||
-c chromium-src/cache/domsubcache.tar.gz \
|
||||
chromium-src
|
||||
|
||||
# More AUR Preparation Steps
|
||||
configure-libraries:
|
||||
cd chromium-src && ../configure-libraries.sh
|
||||
|
||||
# Build the package
|
||||
build-chromium:
|
||||
cd chromium-src && ../build.sh
|
||||
|
||||
build-launcher:
|
||||
cd chromium-launcher && make
|
||||
|
||||
clean-zips:
|
||||
rm chromium-src-release.tar.gz
|
||||
rm chromium-launcher.tar.gz
|
||||
rm aur-confs.tar.gz
|
||||
|
||||
#chromium-src/out/Release/swiftshader/*.so \
|
||||
|
||||
create-zips:
|
||||
apack chromium-src-release.tar.gz \
|
||||
chromium-src/LICENSE \
|
||||
chromium-src/out/Release/chrome \
|
||||
chromium-src/out/Release/chromedriver \
|
||||
chromium-src/out/Release/chrome_sandbox \
|
||||
chromium-src/out/Release/chrome_100_percent.pak \
|
||||
chromium-src/out/Release/chrome_200_percent.pak \
|
||||
chromium-src/out/Release/chrome_crashpad_handler \
|
||||
chromium-src/out/Release/resources.pak \
|
||||
chromium-src/out/Release/v8_context_snapshot.bin \
|
||||
chromium-src/out/Release/libEGL.so \
|
||||
chromium-src/out/Release/libGLESv2.so \
|
||||
chromium-src/out/Release/libvk_swiftshader.so \
|
||||
chromium-src/out/Release/vk_swiftshader_icd.json\
|
||||
chromium-src/out/Release/locales/*.pak \
|
||||
chromium-src/chrome/app/theme/chromium/product_logo_*.png \
|
||||
chromium-src/chrome/app/theme/default_100_percent/chromium/product_logo_*.png \
|
||||
chromium-src/chrome/installer/linux/common/desktop.template \
|
||||
chromium-src/chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
|
||||
chromium-src/chrome/app/resources/manpage.1.in
|
||||
|
||||
apack chromium-launcher.tar.gz \
|
||||
chromium-launcher
|
||||
|
||||
apack aur-confs.tar.gz \
|
||||
aur-confs/chromium-drirc-disable-10bpc-color-configs.conf
|
||||
|
||||
create-pkgbuild:
|
||||
cp PKGBUILD.template PKGBUILD
|
||||
sed -i "s/<chromium-src-release.tar.gz-sha256sum>/$$(sha256sum chromium-src-release.tar.gz | awk '{ print $$1 }')/" PKGBUILD
|
||||
sed -i "s/<aur-confs.tar.gz-sha256sum>/$$(sha256sum aur-confs.tar.gz | awk '{ print $$1 }')/" PKGBUILD
|
||||
sed -i "s/<chromium-launcher.tar.gz-sha256sum>/$$(sha256sum chromium-launcher.tar.gz | awk '{ print $$1 }')/" PKGBUILD
|
||||
|
||||
makepkg:
|
||||
makepkg
|
||||
|
||||
install:
|
||||
makepkg --install
|
212
michael-patches/michael-customizations.patch
Normal file
212
michael-patches/michael-customizations.patch
Normal file
@ -0,0 +1,212 @@
|
||||
diff --git a/chrome/browser/ui/tabs/tab_menu_model.cc b/chrome/browser/ui/tabs/tab_menu_model.cc
|
||||
index 08b078d90..a2cdc60be 100644
|
||||
--- a/chrome/browser/ui/tabs/tab_menu_model.cc
|
||||
+++ b/chrome/browser/ui/tabs/tab_menu_model.cc
|
||||
@@ -49,47 +49,51 @@ void TabMenuModel::Build(TabStripModel* tab_strip, int index) {
|
||||
}
|
||||
|
||||
int num_tabs = indices.size();
|
||||
+ // New Tab
|
||||
AddItemWithStringId(TabStripModel::CommandNewTabToRight,
|
||||
base::i18n::IsRTL() ? IDS_TAB_CXMENU_NEWTABTOLEFT
|
||||
: IDS_TAB_CXMENU_NEWTABTORIGHT);
|
||||
- if (reading_list::switches::IsReadingListEnabled() &&
|
||||
- !tab_strip->profile()->IsGuestSession()) {
|
||||
- AddItem(
|
||||
- TabStripModel::CommandAddToReadLater,
|
||||
- l10n_util::GetPluralStringFUTF16(IDS_TAB_CXMENU_READ_LATER, num_tabs));
|
||||
- SetEnabledAt(GetItemCount() - 1,
|
||||
- tab_strip->IsReadLaterSupportedForAny(indices));
|
||||
- if (base::FeatureList::IsEnabled(features::kReadLaterNewBadgePromo))
|
||||
- SetIsNewFeatureAt(GetItemCount() - 1, true);
|
||||
- }
|
||||
- if (ExistingTabGroupSubMenuModel::ShouldShowSubmenu(tab_strip, index)) {
|
||||
- // Create submenu with existing groups
|
||||
- add_to_existing_group_submenu_ =
|
||||
- std::make_unique<ExistingTabGroupSubMenuModel>(delegate(), tab_strip,
|
||||
- index);
|
||||
- AddSubMenu(TabStripModel::CommandAddToExistingGroup,
|
||||
- l10n_util::GetPluralStringFUTF16(IDS_TAB_CXMENU_ADD_TAB_TO_GROUP,
|
||||
- num_tabs),
|
||||
- add_to_existing_group_submenu_.get());
|
||||
- if (base::FeatureList::IsEnabled(features::kTabGroupsNewBadgePromo))
|
||||
- SetIsNewFeatureAt(GetItemCount() - 1, true);
|
||||
- } else {
|
||||
- AddItem(TabStripModel::CommandAddToNewGroup,
|
||||
- l10n_util::GetPluralStringFUTF16(
|
||||
- IDS_TAB_CXMENU_ADD_TAB_TO_NEW_GROUP, num_tabs));
|
||||
- SetElementIdentifierAt(GetItemCount() - 1, kAddToNewGroupItemIdentifier);
|
||||
- if (base::FeatureList::IsEnabled(features::kTabGroupsNewBadgePromo))
|
||||
- SetIsNewFeatureAt(GetItemCount() - 1, true);
|
||||
- }
|
||||
-
|
||||
- for (const auto& selection : indices) {
|
||||
- if (tab_strip->GetTabGroupForTab(selection).has_value()) {
|
||||
- AddItemWithStringId(TabStripModel::CommandRemoveFromGroup,
|
||||
- IDS_TAB_CXMENU_REMOVE_TAB_FROM_GROUP);
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
+ // Add to reading list (removed)
|
||||
+ // if (reading_list::switches::IsReadingListEnabled() &&
|
||||
+ // !tab_strip->profile()->IsGuestSession()) {
|
||||
+ // AddItem(
|
||||
+ // TabStripModel::CommandAddToReadLater,
|
||||
+ // l10n_util::GetPluralStringFUTF16(IDS_TAB_CXMENU_READ_LATER, num_tabs));
|
||||
+ // SetEnabledAt(GetItemCount() - 1,
|
||||
+ // tab_strip->IsReadLaterSupportedForAny(indices));
|
||||
+ // if (base::FeatureList::IsEnabled(features::kReadLaterNewBadgePromo))
|
||||
+ // SetIsNewFeatureAt(GetItemCount() - 1, true);
|
||||
+ // }
|
||||
+ // Change tab group (removed)
|
||||
+ // if (ExistingTabGroupSubMenuModel::ShouldShowSubmenu(tab_strip, index)) {
|
||||
+ // // Create submenu with existing groups
|
||||
+ // add_to_existing_group_submenu_ =
|
||||
+ // std::make_unique<ExistingTabGroupSubMenuModel>(delegate(), tab_strip,
|
||||
+ // index);
|
||||
+ // AddSubMenu(TabStripModel::CommandAddToExistingGroup,
|
||||
+ // l10n_util::GetPluralStringFUTF16(IDS_TAB_CXMENU_ADD_TAB_TO_GROUP,
|
||||
+ // num_tabs),
|
||||
+ // add_to_existing_group_submenu_.get());
|
||||
+ // if (base::FeatureList::IsEnabled(features::kTabGroupsNewBadgePromo))
|
||||
+ // SetIsNewFeatureAt(GetItemCount() - 1, true);
|
||||
+ // } else {
|
||||
+ // AddItem(TabStripModel::CommandAddToNewGroup,
|
||||
+ // l10n_util::GetPluralStringFUTF16(
|
||||
+ // IDS_TAB_CXMENU_ADD_TAB_TO_NEW_GROUP, num_tabs));
|
||||
+ // SetElementIdentifierAt(GetItemCount() - 1, kAddToNewGroupItemIdentifier);
|
||||
+ // if (base::FeatureList::IsEnabled(features::kTabGroupsNewBadgePromo))
|
||||
+ // SetIsNewFeatureAt(GetItemCount() - 1, true);
|
||||
+ // }
|
||||
+ //
|
||||
+ // for (const auto& selection : indices) {
|
||||
+ // if (tab_strip->GetTabGroupForTab(selection).has_value()) {
|
||||
+ // AddItemWithStringId(TabStripModel::CommandRemoveFromGroup,
|
||||
+ // IDS_TAB_CXMENU_REMOVE_TAB_FROM_GROUP);
|
||||
+ // break;
|
||||
+ // }
|
||||
+ // }
|
||||
|
||||
+ // New Window / Move to other window
|
||||
if (ExistingWindowSubMenuModel::ShouldShowSubmenu(tab_strip->profile())) {
|
||||
// Create submenu with existing windows
|
||||
add_to_existing_window_submenu_ = ExistingWindowSubMenuModel::Create(
|
||||
@@ -105,9 +109,17 @@ void TabMenuModel::Build(TabStripModel* tab_strip, int index) {
|
||||
}
|
||||
|
||||
AddSeparator(ui::NORMAL_SEPARATOR);
|
||||
- AddItemWithStringId(TabStripModel::CommandReload, IDS_TAB_CXMENU_RELOAD);
|
||||
- AddItemWithStringId(TabStripModel::CommandDuplicate,
|
||||
- IDS_TAB_CXMENU_DUPLICATE);
|
||||
+ // AddItemWithStringId(TabStripModel::CommandCloseTab, IDS_TAB_CXMENU_CLOSETAB);
|
||||
+ AddItemWithStringId(TabStripModel::CommandCloseOtherTabs,
|
||||
+ IDS_TAB_CXMENU_CLOSEOTHERTABS);
|
||||
+ AddItemWithStringId(TabStripModel::CommandCloseTabsToRight,
|
||||
+ base::i18n::IsRTL() ? IDS_TAB_CXMENU_CLOSETABSTOLEFT
|
||||
+ : IDS_TAB_CXMENU_CLOSETABSTORIGHT);
|
||||
+
|
||||
+ AddSeparator(ui::NORMAL_SEPARATOR);
|
||||
+ // AddItemWithStringId(TabStripModel::CommandReload, IDS_TAB_CXMENU_RELOAD);
|
||||
+ // AddItemWithStringId(TabStripModel::CommandDuplicate,
|
||||
+ // IDS_TAB_CXMENU_DUPLICATE);
|
||||
bool will_pin = tab_strip->WillContextMenuPin(index);
|
||||
AddItemWithStringId(
|
||||
TabStripModel::CommandTogglePinned,
|
||||
@@ -159,14 +171,6 @@ void TabMenuModel::Build(TabStripModel* tab_strip, int index) {
|
||||
#endif
|
||||
}
|
||||
}
|
||||
-
|
||||
- AddSeparator(ui::NORMAL_SEPARATOR);
|
||||
- AddItemWithStringId(TabStripModel::CommandCloseTab, IDS_TAB_CXMENU_CLOSETAB);
|
||||
- AddItemWithStringId(TabStripModel::CommandCloseOtherTabs,
|
||||
- IDS_TAB_CXMENU_CLOSEOTHERTABS);
|
||||
- AddItemWithStringId(TabStripModel::CommandCloseTabsToRight,
|
||||
- base::i18n::IsRTL() ? IDS_TAB_CXMENU_CLOSETABSTOLEFT
|
||||
- : IDS_TAB_CXMENU_CLOSETABSTORIGHT);
|
||||
}
|
||||
|
||||
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(TabMenuModel,
|
||||
diff --git a/chrome/browser/ui/views/frame/tab_strip_region_view.cc b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
|
||||
index 1e741368e..fac2b5f51 100644
|
||||
--- a/chrome/browser/ui/views/frame/tab_strip_region_view.cc
|
||||
+++ b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
|
||||
@@ -142,7 +142,8 @@ TabStripRegionView::TabStripRegionView(std::unique_ptr<TabStrip> tab_strip) {
|
||||
}
|
||||
|
||||
if (browser->is_type_normal() &&
|
||||
- !base::CommandLine::ForCurrentProcess()->HasSwitch("remove-tabsearch-button")) {
|
||||
+ !base::CommandLine::ForCurrentProcess()->HasSwitch("remove-tabsearch-button") &&
|
||||
+ false) {
|
||||
auto tab_search_button = std::make_unique<TabSearchButton>(tab_strip_);
|
||||
tab_search_button->SetTooltipText(
|
||||
l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_SEARCH));
|
||||
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
|
||||
index 03e8c0fb9..2acc440b1 100644
|
||||
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
|
||||
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
|
||||
@@ -354,14 +354,15 @@ void LocationBarView::Init() {
|
||||
params.types_enabled.push_back(PageActionIconType::kSaveAutofillAddress);
|
||||
}
|
||||
}
|
||||
- if (browser_) {
|
||||
-#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||
- params.types_enabled.push_back(PageActionIconType::kSharingHub);
|
||||
-#else
|
||||
- if (sharing_hub::SharingHubOmniboxEnabled(profile_) && !is_popup_mode_)
|
||||
- params.types_enabled.push_back(PageActionIconType::kSharingHub);
|
||||
-#endif
|
||||
- }
|
||||
+ // Remove sharing hub icon
|
||||
+// if (browser_) {
|
||||
+// #if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||
+// params.types_enabled.push_back(PageActionIconType::kSharingHub);
|
||||
+// #else
|
||||
+// if (sharing_hub::SharingHubOmniboxEnabled(profile_) && !is_popup_mode_)
|
||||
+// params.types_enabled.push_back(PageActionIconType::kSharingHub);
|
||||
+// #endif
|
||||
+// }
|
||||
if (browser_ && !is_popup_mode_)
|
||||
params.types_enabled.push_back(PageActionIconType::kBookmarkStar);
|
||||
|
||||
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
||||
index 76fce2124..cfe392364 100644
|
||||
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
||||
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
||||
@@ -378,20 +378,22 @@ void ToolbarView::Init() {
|
||||
if (send_tab_to_self_button)
|
||||
send_tab_to_self_button_ = AddChildView(std::move(send_tab_to_self_button));
|
||||
|
||||
- if (side_panel_button)
|
||||
- side_panel_button_ = AddChildView(std::move(side_panel_button));
|
||||
-
|
||||
- if (toolbar_account_icon_container) {
|
||||
- toolbar_account_icon_container_ =
|
||||
- AddChildView(std::move(toolbar_account_icon_container));
|
||||
- avatar_ = toolbar_account_icon_container_->avatar_button();
|
||||
- } else {
|
||||
- // TODO(crbug.com/932818): Remove this once the
|
||||
- // |kAutofillEnableToolbarStatusChip| is fully launched.
|
||||
- avatar_ =
|
||||
- AddChildView(std::make_unique<AvatarToolbarButton>(browser_view_));
|
||||
- avatar_->SetVisible(show_avatar_toolbar_button);
|
||||
- }
|
||||
+ // Remove side panel
|
||||
+ // if (side_panel_button)
|
||||
+ // side_panel_button_ = AddChildView(std::move(side_panel_button));
|
||||
+
|
||||
+ // Remove toolbar
|
||||
+ // if (toolbar_account_icon_container) {
|
||||
+ // toolbar_account_icon_container_ =
|
||||
+ // AddChildView(std::move(toolbar_account_icon_container));
|
||||
+ // avatar_ = toolbar_account_icon_container_->avatar_button();
|
||||
+ // } else {
|
||||
+ // // TODO(crbug.com/932818): Remove this once the
|
||||
+ // // |kAutofillEnableToolbarStatusChip| is fully launched.
|
||||
+ // avatar_ =
|
||||
+ // AddChildView(std::make_unique<AvatarToolbarButton>(browser_view_));
|
||||
+ // avatar_->SetVisible(show_avatar_toolbar_button);
|
||||
+ // }
|
||||
|
||||
auto app_menu_button = std::make_unique<BrowserAppMenuButton>(this);
|
||||
app_menu_button->SetFlipCanvasOnPaintForRTLUI(true);
|
Loading…
Reference in New Issue
Block a user