109.0.5414.119

This commit is contained in:
Sergey Zhemoytel 2023-02-05 18:40:55 +00:00
parent c8f1c9e3b1
commit eaa89e5f73
10 changed files with 492 additions and 79 deletions

View file

@ -1,7 +1,11 @@
sources:
chromium-106.0.5249.61.tar.xz: 7170bc9699451d8b8664fca9dae7bca5557fe21c
chromium-gost-2980e5bb5bec4bd52b615fc94a47ad2f29fcaae8.tar.gz: 68828d3dfd199535030c2f685a003b26e815b72b
22x22_chromium.svg: 045aa39ba3e340ba5e2c4366ad34f909001c02f9
48x48_chromium.svg: bbaa00aeb7b4f9820bc29474c5c1964ed17b32cc
chromium-109.0.5414.119.tar.xz: da8546ed117895bd1c80ac6708d3b422bd2dd1f2
chromium-gost-59b267ec653c1cbc13af73f5dff4757018331ff2.tar.gz: 0d706b72f70117b707005823daaaf1514eff6654
chromium-gost-d8f964ab4cbcb2d054391ebdde7e8f70f3bace60.tar.gz: 8f09d03f4cd11b7ae0e8f816391bb53799713ab9
depot_tools.tar.xz: 082b7f9a4dfa7eb03900755b4866aef2d73543a5
icons-2012.tar.bz2: a835954af164bf38f8ea4ea80608839bed7800a3
msspi-0d09dc6de9df58041fc385ac49e5778323e547f4.tar.gz: 6bc512f9bffae44418d9482f3ad7395864a8dc24
rosa-logo-for-new-tab-page.svg: a01c204d34d1c8a8e4cb865891b1fd2720ff431c
xcb-proto-1.14.1.tar.xz: 836d5b2dd00ff21bd038e92764fda9a256a1b022

View file

@ -23,10 +23,10 @@ but it would make Yandex.ru be the default even for not Russian users.
2 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
index 13572d4355..cc449a1ccb 100644
index 5a0bf4d..49be5d2 100644
--- a/components/search_engines/prepopulated_engines.json
+++ b/components/search_engines/prepopulated_engines.json
@@ -553,7 +553,7 @@
@@ -557,7 +557,7 @@
"suggest_url": "https://suggest.yandex.by/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.by/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
@ -35,7 +35,7 @@ index 13572d4355..cc449a1ccb 100644
"type": "SEARCH_ENGINE_YANDEX",
"id": 15
},
@@ -566,6 +566,7 @@
@@ -570,6 +570,7 @@
"suggest_url": "https://suggest.yandex.com/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}&uil=en&v=3&sn=5",
"image_url": "https://yandex.com/images/search?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
@ -43,7 +43,7 @@ index 13572d4355..cc449a1ccb 100644
"type": "SEARCH_ENGINE_YANDEX",
"id": 15
},
@@ -579,7 +580,7 @@
@@ -583,7 +584,7 @@
"suggest_url": "https://suggest.yandex.kz/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.kz/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
@ -52,7 +52,7 @@ index 13572d4355..cc449a1ccb 100644
"type": "SEARCH_ENGINE_YANDEX",
"id": 15
},
@@ -593,7 +594,7 @@
@@ -597,7 +598,7 @@
"suggest_url": "https://suggest.yandex.ru/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.ru/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
@ -61,7 +61,7 @@ index 13572d4355..cc449a1ccb 100644
"type": "SEARCH_ENGINE_YANDEX",
"id": 15
},
@@ -606,7 +607,7 @@
@@ -610,7 +611,7 @@
"suggest_url": "https://suggest.yandex.com.tr/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.com.tr/gorsel/search?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
@ -70,11 +70,12 @@ index 13572d4355..cc449a1ccb 100644
"type": "SEARCH_ENGINE_YANDEX",
"id": 15
},
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
index e38343c221..4759cd6711 100644
index bb2366e..6cc8a24 100644
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -28,6 +28,7 @@ namespace {
@@ -29,6 +29,7 @@ namespace {
// Default (for countries with no better engine set)
const PrepopulatedEngine* const engines_default[] = {
@ -82,7 +83,7 @@ index e38343c221..4759cd6711 100644
&google,
&bing,
&yahoo,
@@ -155,8 +156,8 @@ const PrepopulatedEngine* const engines_BR[] = {
@@ -156,8 +157,8 @@ const PrepopulatedEngine* const engines_BR[] = {
// Belarus
const PrepopulatedEngine* const engines_BY[] = {
@ -92,7 +93,7 @@ index e38343c221..4759cd6711 100644
&mail_ru,
&bing,
&duckduckgo,
@@ -434,10 +435,10 @@ const PrepopulatedEngine* const engines_IN[] = {
@@ -435,10 +436,10 @@ const PrepopulatedEngine* const engines_IN[] = {
// Iraq
const PrepopulatedEngine* const engines_IQ[] = {
@ -104,7 +105,7 @@ index e38343c221..4759cd6711 100644
&duckduckgo,
};
@@ -524,8 +525,8 @@ const PrepopulatedEngine* const engines_KW[] = {
@@ -525,8 +526,8 @@ const PrepopulatedEngine* const engines_KW[] = {
// Kazakhstan
const PrepopulatedEngine* const engines_KZ[] = {
@ -114,7 +115,7 @@ index e38343c221..4759cd6711 100644
&mail_ru,
&bing,
&duckduckgo,
@@ -794,8 +795,8 @@ const PrepopulatedEngine* const engines_RS[] = {
@@ -795,8 +796,8 @@ const PrepopulatedEngine* const engines_RS[] = {
// Russia
const PrepopulatedEngine* const engines_RU[] = {
@ -124,7 +125,7 @@ index e38343c221..4759cd6711 100644
&mail_ru,
&bing,
&duckduckgo,
@@ -893,8 +894,8 @@ const PrepopulatedEngine* const engines_TN[] = {
@@ -894,8 +895,8 @@ const PrepopulatedEngine* const engines_TN[] = {
// Turkey
const PrepopulatedEngine* const engines_TR[] = {
@ -134,14 +135,13 @@ index e38343c221..4759cd6711 100644
&yahoo_tr,
&bing,
&duckduckgo,
@@ -1381,13 +1382,15 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
@@ -1381,12 +1382,15 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
t_urls = GetPrepopulationSetFromCountryID(
country_codes::GetCountryIDFromPrefs(prefs));
}
- if (default_search_provider_index) {
- const auto itr = std::find_if(
- t_urls.begin(), t_urls.end(),
- [](const auto& t_url) { return t_url->prepopulate_id == google.id; });
- const auto itr =
- base::ranges::find(t_urls, google.id, &TemplateURLData::prepopulate_id);
- *default_search_provider_index =
- itr == t_urls.end() ? 0 : std::distance(t_urls.begin(), itr);
- }
@ -157,6 +157,3 @@ index e38343c221..4759cd6711 100644
return t_urls;
}
--
2.35.2

View file

@ -1,29 +1,16 @@
From 60e68a6bbac3904a68d1270843f839cf4c56883a Mon Sep 17 00:00:00 2001
From: Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
Date: Mon, 30 May 2022 00:43:20 +0300
Subject: [PATCH] Remove voice search button
Remove voice search button from chrome://new-tab-page.
Firstly, Google APIs keys do not work now and this button also does not work.
Secondly, we use Yandex as the default search for most users, and Google's voice search is irrelevant.
---
chrome/browser/resources/new_tab_page/realbox/realbox.html | 3 ---
1 file changed, 3 deletions(-)
diff --git a/chrome/browser/resources/new_tab_page/realbox/realbox.html b/chrome/browser/resources/new_tab_page/realbox/realbox.html
index 4f411aaf24..265dda16fe 100644
index 2e91c57..fbdf426 100644
--- a/chrome/browser/resources/new_tab_page/realbox/realbox.html
+++ b/chrome/browser/resources/new_tab_page/realbox/realbox.html
@@ -137,9 +137,6 @@
@@ -187,11 +187,6 @@
<ntp-realbox-icon id="icon" match="[[selectedMatch_]]"
default-icon="[[realboxIcon_]]" in-searchbox>
</ntp-realbox-icon>
- <button id="voiceSearchButton" on-click="onVoiceSearchClick_"
- title="$i18n{voiceSearchButtonLabel}">
- <button id="voiceSearchButton"
- class="realbox-icon-button"
- on-click="onVoiceSearchClick_"
- title="$i18n{voiceSearchButtonLabel}">
- </button>
<ntp-realbox-dropdown id="matches" role="listbox" theme="[[theme]]"
result="[[result_]]" selected-match-index="{{selectedMatchIndex_}}"
on-result-repaint="onResultRepaint_" on-match-focusin="onMatchFocusin_"
--
2.35.2
<template is="dom-if" if="[[realboxLensSearchEnabled_]]">
<button id="lensSearchButton"
class="realbox-icon-button"

View file

@ -22,8 +22,9 @@ if they want to use their own API keys.
chrome/browser/ui/views/profiles/profile_menu_view.cc | 9 ++++-----
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/chrome/browser/resources/settings/people_page/sync_account_control.html b/chrome/browser/resources/settings/people_page/sync_account_control.html
index 70b3128642..b91ea8675a 100644
index 26d7e46..38dd350 100644
--- a/chrome/browser/resources/settings/people_page/sync_account_control.html
+++ b/chrome/browser/resources/settings/people_page/sync_account_control.html
@@ -117,6 +117,7 @@
@ -43,10 +44,10 @@ index 70b3128642..b91ea8675a 100644
<div class="cr-row first two-line" id="avatar-row">
<div id="avatar-container">
diff --git a/chrome/browser/resources/welcome/signin_view.html b/chrome/browser/resources/welcome/signin_view.html
index b8ef23a4dc..b127c5b48a 100644
index 9311059..0f697ff 100644
--- a/chrome/browser/resources/welcome/signin_view.html
+++ b/chrome/browser/resources/welcome/signin_view.html
@@ -10,6 +10,7 @@
@@ -9,6 +9,7 @@
outline: none;
}
</style>
@ -54,13 +55,13 @@ index b8ef23a4dc..b127c5b48a 100644
<div id="container">
<onboarding-background id="background" class="fade-in">
</onboarding-background>
@@ -24,3 +25,4 @@
@@ -25,3 +26,4 @@
</button>
</div>
</div>
+-->
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view.cc b/chrome/browser/ui/views/profiles/profile_menu_view.cc
index 1d9b51a8ec..0c597d2e67 100644
index 8cf74d6..6e80536 100644
--- a/chrome/browser/ui/views/profiles/profile_menu_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_menu_view.cc
@@ -180,9 +180,7 @@ gfx::ImageSkia ProfileMenuView::GetSyncIcon() const {
@ -74,7 +75,7 @@ index 1d9b51a8ec..0c597d2e67 100644
if (!is_sync_feature_enabled) {
// This is done regardless of GetAvatarSyncErrorType() because the icon
// should reflect that sync-the-feature is off. The error will still be
@@ -517,8 +515,7 @@ void ProfileMenuView::BuildSyncInfo() {
@@ -526,8 +524,7 @@ void ProfileMenuView::BuildSyncInfo() {
signin::IdentityManager* identity_manager =
IdentityManagerFactory::GetForProfile(profile);
@ -84,7 +85,7 @@ index 1d9b51a8ec..0c597d2e67 100644
// First, check for sync errors. They may exist even if sync-the-feature is
// disabled and only sync-the-transport is running.
const absl::optional<AvatarSyncErrorType> error =
@@ -546,6 +543,7 @@ void ProfileMenuView::BuildSyncInfo() {
@@ -555,6 +552,7 @@ void ProfileMenuView::BuildSyncInfo() {
return;
}
@ -92,7 +93,7 @@ index 1d9b51a8ec..0c597d2e67 100644
// If there's no error and sync-the-feature is disabled, show a sync promo.
// For a signed-in user, the promo just opens the "turn on sync" dialog.
// For a signed-out user, it prompts for sign-in first.
@@ -573,6 +571,7 @@ void ProfileMenuView::BuildSyncInfo() {
@@ -582,6 +580,7 @@ void ProfileMenuView::BuildSyncInfo() {
/*show_sync_badge=*/false);
#endif
}
@ -100,6 +101,3 @@ index 1d9b51a8ec..0c597d2e67 100644
}
void ProfileMenuView::BuildFeatureButtons() {
--
2.35.2

View file

@ -15,7 +15,7 @@ Note: it is a hack. Text size depends on font and size.
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ui/webui/resources/cr_components/most_visited/most_visited.html b/ui/webui/resources/cr_components/most_visited/most_visited.html
index fa00ea2729..fc06516c2e 100644
index 94c6d39..5c01a88 100644
--- a/ui/webui/resources/cr_components/most_visited/most_visited.html
+++ b/ui/webui/resources/cr_components/most_visited/most_visited.html
@@ -5,7 +5,7 @@
@ -27,7 +27,7 @@ index fa00ea2729..fc06516c2e 100644
--title-height: 32px;
}
@@ -135,7 +135,7 @@
@@ -154,7 +154,7 @@
line-height: calc(var(--title-height) / 2);
margin-top: 6px;
padding: 2px 8px;
@ -36,6 +36,3 @@ index fa00ea2729..fc06516c2e 100644
}
:host([use-title-pill_]) .tile-title {
--
2.35.2

View file

@ -1,8 +1,10 @@
## Prevent request attempts
# chrome://discards/ attempts to use d3 to display the graph
diff --git a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc b/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
index d31f73e..dc92b2a 100644
--- a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
+++ b/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
@@ -287,6 +287,7 @@ OneGoogleBarLoaderImpl::OneGoogleBarLoad
@@ -287,6 +287,7 @@ OneGoogleBarLoaderImpl::OneGoogleBarLoaderImpl(
OneGoogleBarLoaderImpl::~OneGoogleBarLoaderImpl() = default;
void OneGoogleBarLoaderImpl::Load(OneGoogleCallback callback) {
@ -10,6 +12,8 @@
callbacks_.push_back(std::move(callback));
// Note: If there is an ongoing request, abandon it. It's possible that
diff --git a/chrome/browser/new_tab_page/promos/promo_service.cc b/chrome/browser/new_tab_page/promos/promo_service.cc
index 6e55aac..9710e55 100644
--- a/chrome/browser/new_tab_page/promos/promo_service.cc
+++ b/chrome/browser/new_tab_page/promos/promo_service.cc
@@ -171,6 +171,7 @@ PromoService::PromoService(
@ -20,9 +24,11 @@
std::string command_id;
// Replace the promo URL with "command:<id>" if such a command ID is set
// via the feature params.
diff --git a/chrome/browser/resources/discards/graph_doc_template.html b/chrome/browser/resources/discards/graph_doc_template.html
index 707f75a..8eb7a52 100644
--- a/chrome/browser/resources/discards/graph_doc_template.html
+++ b/chrome/browser/resources/discards/graph_doc_template.html
@@ -78,10 +78,6 @@ URL. As result, this document needs to b
@@ -78,10 +78,6 @@ URL. As result, this document needs to be self-contained, hence inline scripts.
}
</style>
@ -33,6 +39,8 @@
<script type="application/javascript">
${javascript_file}
</script>
diff --git a/chrome/browser/search/background/ntp_background_service.cc b/chrome/browser/search/background/ntp_background_service.cc
index 3129a3c..31de4ff 100644
--- a/chrome/browser/search/background/ntp_background_service.cc
+++ b/chrome/browser/search/background/ntp_background_service.cc
@@ -84,6 +84,7 @@ void NtpBackgroundService::Shutdown() {
@ -43,9 +51,11 @@
if (collections_loader_ != nullptr)
return;
collection_error_info_.ClearError();
diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
index 6bb7c99..b3e4ade 100644
--- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
+++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
@@ -286,6 +286,7 @@ GURL SpellcheckHunspellDictionary::GetDi
@@ -286,6 +286,7 @@ GURL SpellcheckHunspellDictionary::GetDictionaryURL() {
}
void SpellcheckHunspellDictionary::DownloadDictionary(GURL url) {
@ -53,6 +63,8 @@
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(browser_context_);
diff --git a/components/assist_ranker/ranker_url_fetcher.cc b/components/assist_ranker/ranker_url_fetcher.cc
index 9af6e27..f78c458 100644
--- a/components/assist_ranker/ranker_url_fetcher.cc
+++ b/components/assist_ranker/ranker_url_fetcher.cc
@@ -31,6 +31,7 @@ bool RankerURLFetcher::Request(
@ -63,6 +75,8 @@
// This function is not supposed to be called if the previous operation is not
// finished.
if (state_ == REQUESTING) {
diff --git a/components/update_client/update_checker.cc b/components/update_client/update_checker.cc
index 8cdb9a9..548fa9f 100644
--- a/components/update_client/update_checker.cc
+++ b/components/update_client/update_checker.cc
@@ -98,6 +98,7 @@ void UpdateCheckerImpl::CheckForUpdates(

View file

@ -10,7 +10,6 @@
# Get the version number of latest stable version
# $ curl -s 'https://omahaproxy.appspot.com/all?os=linux&channel=stable' | sed 1d | cut -d , -f 3
%ifarch %{x86_64} %ix86
%bcond_without gost
%else
@ -21,6 +20,9 @@
# http://a3f.at/lists/linkers
%bcond_with gold
%global optflags %{nil}
%global ldflags %{nil}
# Linker is out of memory on 32 bit with -g2
# XXX debugsource package is empty, probably there are odd compiler flags
# TODO: fix building with debuginfo
@ -50,7 +52,7 @@
# GOST patches and sources
# Using commit hashes because upstream often puts tags long after making changes
# (they wait for builds to finish to make a new "release" with binary packages)
%define chromium_gost_commit 2980e5bb5bec4bd52b615fc94a47ad2f29fcaae8
%define chromium_gost_commit d8f964ab4cbcb2d054391ebdde7e8f70f3bace60
%define msspi_commit 0d09dc6de9df58041fc385ac49e5778323e547f4
%define _gostsourcedir %{_builddir}/chromium-gost
@ -78,10 +80,14 @@
%define _default_patch_fuzz 12
%bcond_without use_qt
%bcond_with use_gtk
%bcond_without use_system_libffi
Summary: A fast web browser based on the Blink engine
Name: chromium-browser-stable
Version: 106.0.5249.61
Release: 1
Version: 109.0.5414.119
Release: 2
License: BSD, LGPL
Group: Networking/WWW
Url: https://www.chromium.org/Home
@ -105,13 +111,15 @@ Source35: 22x22_chromium.svg
Source36: 48x48_chromium.svg
Source100: icons-2012.tar.bz2
Source997: depot_tools.tar.xz
Source1000: macros.clang
# segfaults on x86_32, but building with debuginfo is not possible, x86_32 has near to no users
ExclusiveArch: %{x86_64} aarch64
# GOST
Source1101: https://github.com/deemru/chromium-gost/archive/%{chromium_gost_commit}.tar.gz?/chromium-gost-%{chromium_gost_commit}.tar.gz
Source1102: https://github.com/deemru/msspi/archive/%{msspi_commit}.tar.gz?/msspi-%{msspi_commit}.tar.gz
Patch1: fix-ffmpeg.106.0.5219.0.patch
Patch4: chromium-30.0.1599.66-master-prefs-path.patch
# (cjw) fix gn bootstrapping with gcc
Patch190: chromium-69-gn-bootstrap.patch
@ -119,9 +127,6 @@ Patch190: chromium-69-gn-bootstrap.patch
Patch601: chromium-62-include-cstdlib.patch
# Add "ROSA" to the user agent string
Patch627: chromium-68.0.3440.106-rosa-user-agent.patch
# Fix building with current glib2.0
# Hunks from https://build.opensuse.org/package/view_file/openSUSE:Factory/chromium/chromium-gcc11.patch
Patch643: glib2.0.patch
Patch647: ALT-allow-to-override-clang-through-env-variables.patch
# XXX This patch is not enough to fully fix debuginfo and debugsource subpackages
Patch648: fix-debugsource.patch
@ -141,8 +146,10 @@ Patch657: angle-wayland-include-protocol.patch
BuildRequires: bison
BuildRequires: llvm15
%if %{mdvver} == 201610
# for gn, not chromium itself
BuildRequires: stdc++-gcc10-devel
%endif
# gn needs these
BuildRequires: flex
%if %{with bundled_llvm}
@ -225,6 +232,15 @@ BuildRequires: pkgconfig(zlib)
BuildRequires: pythonegg(setuptools)
# https://bugs.chromium.org/p/dawn/issues/detail?id=1441
BuildRequires: git-core
# Qt5
%if %{with use_qt}
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Widgets)
%endif
%if %{with use_system_libffi}
BuildRequires: pkgconfig(libffi)
BuildRequires: %{_lib}ffi-static-devel
%endif
Requires: chromium-codecs = %{EVRD}
@ -278,6 +294,10 @@ if proprietary CryptoPro is installed.
%{_crdir}/libGLESv2.so
%{_crdir}/libvk_swiftshader.so
%{_crdir}/vk_swiftshader_icd.json
%{_crdir}/libvulkan.so.1
%if %{with use_qt}
%{_crdir}/libqt5_shim.so
%endif
%{_datadir}/applications/*.desktop
%if %{mdvver} <= 201905
%{_iconsdir}/hicolor/*/apps/chromium*
@ -477,7 +497,7 @@ export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
%endif
# Linking on 32 bit does not have enough memory for LTO
%ifarch %{ix86}
%ifarch %{ix86}
%define use_thin_lto false
%else
%define use_thin_lto true
@ -499,11 +519,12 @@ export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
ffmpeg_branding="ChromeOS" \
proprietary_codecs=true \
is_component_ffmpeg=true \
enable_ffmpeg_video_decoders=true \
media_use_ffmpeg=true \
is_component_build=false \
use_system_libjpeg=true \
use_libjpeg_turbo=false \
enable_widevine=%{is_widevine} \
enable_vulkan=true \
enable_js_type_check=false \
use_pulseaudio=true \
link_pulseaudio=true \
@ -522,7 +543,10 @@ export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
v8_use_external_startup_data=false \
google_api_key="%{google_api_key}" \
google_default_client_id="%{google_default_client_id}" \
google_default_client_secret="%{google_default_client_secret}"
google_default_client_secret="%{google_default_client_secret}" \
%{!?with_use_gtk:use_gtk=false}%{?with_use_gtk:use_gtk=true} \
%{?with_use_qt:use_qt=true}%{!?with_use_qt:use_qt=false} \
%{?with_use_system_libffi:use_system_libffi=true}%{!?with_use_system_libffi:use_system_libffi=false}
#clang_base_path="//third_party/llvm-build/Release+Asserts" \
@ -556,10 +580,10 @@ sed -i -e 's,chrome_pgo_phase = 2,chrome_pgo_phase = 0,' build/config/compiler/p
# ALT-allow-to-override-clang-through-env-variables.patch makes gn read these variables
%if %{without bundled_llvm}
export CC=%{llvm_prefix}/bin/clang
export CXX=%{llvm_prefix}/bin/clang++
export AR=%{llvm_prefix}/bin/llvm-ar
export NM=%{llvm_prefix}/bin/llvm-nm
# let's do a hack, remove the version check in update.py and resume it again only empty
rm -vrf tools/clang/scripts/update.py && touch tools/clang/scripts/update.py
# create a macro for convenience
#_clang_alternative 15
sed -i -e 's,//third_party/llvm-build/Release+Asserts,%{llvm_prefix},g' build/config/clang/clang.gni
%else
%define clang_path "%{_builddir}/chromium-%{version}/third_party/llvm-build/Release+Asserts/bin/"
@ -568,9 +592,10 @@ export CXX="%{clang_path}clang++"
export AR="%{clang_path}llvm-ar"
export NM=nm
%endif
export READELF=readelf
#export READELF=readelf
export PYTHON=%{__python}
%if %{mdvver} == 201610
# libstdc++ in rosa2016.1 is too old to build gn, there are 2 ways to solve this:
# 1) run bootstrap.py with --use-custom-libcxx, it will build and use bundled libc++
# 2) use libstdc++-gcc10 (https://forum.rosalinux.ru/viewtopic.php?t=10047&p=104560)
@ -582,8 +607,12 @@ CXXFLAGS="-nostdinc++ \
-I%{_includedir}/libstdc++-gcc10/%{_host} \
-D__STDCPP_WANT_MATH_SPEC_FUNCS__=1 \
" \
%endif
%{__python} tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}'
%if %{mdvver} == 201610
unset LDFLAGS CXXFLAGS
%endif
# Reduce memory usage by linker
%ifarch %{ix86}
@ -638,6 +667,11 @@ ln -s %{_crdir}/chromedriver %{buildroot}%{_bindir}/chromedriver
install -m 644 out/Release/libEGL.so %{buildroot}%{_crdir}/
install -m 644 out/Release/libGLESv2.so %{buildroot}%{_crdir}/
install -m 644 out/Release/libvk_swiftshader.so %{buildroot}%{_crdir}/
install -m 644 out/Release/libvulkan.so.1 %{buildroot}%{_crdir}/
%if %{with use_qt}
install -m 644 out/Release/libqt5_shim.so %{buildroot}%{_crdir}/
strip %{buildroot}%{_crdir}/libqt5_shim.so
%endif
# create global config file
mkdir -p %{buildroot}%{_sysconfdir}/default
@ -669,8 +703,13 @@ mkdir -p %{buildroot}%{_sysconfdir}/%{crname}
install -m 0644 %{SOURCE30} %{buildroot}%{_sysconfdir}/%{crname}/
install -m 0644 %{SOURCE31} %{buildroot}%{_sysconfdir}/%{crname}/
for st in libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 chrome chrome-sandbox chrome_crashpad_handler;do
strip -v %{buildroot}%{_crdir}/${st}
done
find %{buildroot} -name "*.nexe" -exec strip {} \;
%check
# ensure JSON validity
[ "$(jq .browser.custom_chrome_frame %{buildroot}%{_crdir}/chromium-default-config.json)" = "true" ]

View file

@ -0,0 +1,355 @@
diff --git a/media/filters/ffmpeg_demuxer.h b/media/filters/ffmpeg_demuxer.h
index c147309..48a8f6a 100644
--- a/media/filters/ffmpeg_demuxer.h
+++ b/media/filters/ffmpeg_demuxer.h
@@ -151,6 +151,8 @@
base::TimeDelta start_time() const { return start_time_; }
void set_start_time(base::TimeDelta time) { start_time_ = time; }
+ int64_t first_dts() const { return first_dts_; }
+
private:
friend class FFmpegDemuxerTest;
@@ -208,6 +210,7 @@
bool fixup_chained_ogg_;
int num_discarded_packet_warnings_;
+ int64_t first_dts_;
int64_t last_packet_pos_;
int64_t last_packet_dts_;
};
--- a/media/filters/ffmpeg_demuxer.cc 2021-06-28 16:40:34.456861225 +0200
+++ b/media/filters/ffmpeg_demuxer.cc 2021-06-28 16:49:27.746115753 +0200
@@ -58,7 +58,7 @@
namespace {
-constexpr int64_t kInvalidPTSMarker = static_cast<int64_t>(0x8000000000000000);
+constexpr int64_t kRelativeTsBase = static_cast<int64_t>(0x7ffeffffffffffff);
void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) {
DCHECK(stream);
@@ -96,7 +96,7 @@
sample_rate);
}
-static base::TimeDelta ExtractStartTime(AVStream* stream) {
+static base::TimeDelta ExtractStartTime(AVStream* stream, int64_t first_dts) {
// The default start time is zero.
base::TimeDelta start_time;
@@ -106,12 +106,12 @@
// Next try to use the first DTS value, for codecs where we know PTS == DTS
// (excludes all H26x codecs). The start time must be returned in PTS.
- if (av_stream_get_first_dts(stream) != kNoFFmpegTimestamp &&
+ if (first_dts != AV_NOPTS_VALUE &&
stream->codecpar->codec_id != AV_CODEC_ID_HEVC &&
stream->codecpar->codec_id != AV_CODEC_ID_H264 &&
stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) {
const base::TimeDelta first_pts =
- ConvertFromTimeBase(stream->time_base, av_stream_get_first_dts(stream));
+ ConvertFromTimeBase(stream->time_base, first_dts);
if (first_pts < start_time)
start_time = first_pts;
}
@@ -280,6 +280,7 @@
fixup_negative_timestamps_(false),
fixup_chained_ogg_(false),
num_discarded_packet_warnings_(0),
+ first_dts_(AV_NOPTS_VALUE),
last_packet_pos_(AV_NOPTS_VALUE),
last_packet_dts_(AV_NOPTS_VALUE) {
DCHECK(demuxer_);
@@ -346,6 +347,11 @@
int64_t packet_dts =
packet->dts == AV_NOPTS_VALUE ? packet->pts : packet->dts;
+ if (first_dts_ == AV_NOPTS_VALUE && packet->dts != AV_NOPTS_VALUE &&
+ last_packet_dts_ != AV_NOPTS_VALUE) {
+ first_dts_ = packet->dts - (last_packet_dts_ + kRelativeTsBase);
+ }
+
// Chained ogg files have non-monotonically increasing position and time stamp
// values, which prevents us from using them to determine if a packet should
// be dropped. Since chained ogg is only allowed on single track audio only
@@ -1439,7 +1445,7 @@
max_duration = std::max(max_duration, streams_[i]->duration());
- base::TimeDelta start_time = ExtractStartTime(stream);
+ base::TimeDelta start_time = ExtractStartTime(stream, streams_[i]->first_dts());
// Note: This value is used for seeking, so we must take the true value and
// not the one possibly clamped to zero below.
@@ -1596,7 +1602,7 @@
for (const auto& stream : streams_) {
if (!stream || stream->IsEnabled() != enabled)
continue;
- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker)
+ if (stream->first_dts() == AV_NOPTS_VALUE)
continue;
if (!lowest_start_time_stream ||
stream->start_time() < lowest_start_time_stream->start_time()) {
@@ -1617,7 +1623,7 @@
if (stream->type() != DemuxerStream::VIDEO)
continue;
- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker)
+ if (stream->first_dts() == AV_NOPTS_VALUE)
continue;
if (!stream->IsEnabled())
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 e4fc3f46..9b1ad9f 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 @@
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
}
- codec_context->ch_layout.nb_channels = config.channel_count;
+ codec_context->channels = config.channel_count;
codec_context->sample_rate = config.samples_per_second;
if (config.extra_data) {
@@ -124,8 +124,8 @@
case cdm::kAudioFormatPlanarS16:
case cdm::kAudioFormatPlanarF32: {
const int decoded_size_per_channel =
- decoded_audio_size / av_frame.ch_layout.nb_channels;
- for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
+ decoded_audio_size / av_frame.channels;
+ for (int i = 0; i < av_frame.channels; ++i) {
memcpy(output_buffer, av_frame.extended_data[i],
decoded_size_per_channel);
output_buffer += decoded_size_per_channel;
@@ -185,14 +185,13 @@
// Success!
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
samples_per_second_ = config.samples_per_second;
- bytes_per_frame_ =
- codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
+ bytes_per_frame_ = codec_context_->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_->ch_layout.nb_channels;
+ channels_ = codec_context_->channels;
av_sample_format_ = codec_context_->sample_fmt;
return true;
@@ -291,9 +291,8 @@
for (auto& frame : audio_frames) {
int decoded_audio_size = 0;
if (frame->sample_rate != samples_per_second_ ||
- frame->ch_layout.nb_channels != channels_ ||
- frame->format != av_sample_format_) {
- DLOG(ERROR) << "Unsupported midstream configuration change!"
+ frame->channels != channels_ || frame->format != av_sample_format_) {
+ DLOG(ERROR) << "Unsupported midstream configuration change!"
<< " Sample Rate: " << frame->sample_rate << " vs "
<< samples_per_second_
<< ", Channels: " << frame->ch_layout.nb_channels << " vs "
@@ -303,7 +302,7 @@
}
decoded_audio_size = av_samples_get_buffer_size(
- nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
+ nullptr, codec_context_->channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
if (!decoded_audio_size)
continue;
@@ -323,7 +322,7 @@
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
AVFrame* frame) {
*total_size += av_samples_get_buffer_size(
- nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
+ nullptr, codec_context_->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 87ca896..76f03d6 100644
--- a/media/ffmpeg/ffmpeg_common.cc
+++ b/media/ffmpeg/ffmpeg_common.cc
@@ -345,11 +345,10 @@
codec_context->sample_fmt, codec_context->codec_id);
ChannelLayout channel_layout =
- codec_context->ch_layout.nb_channels > 8
+ codec_context->channels > 8
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(
- codec_context->ch_layout.u.mask,
- codec_context->ch_layout.nb_channels);
+ : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
+ codec_context->channels);
int sample_rate = codec_context->sample_rate;
switch (codec) {
@@ -401,7 +402,7 @@
extra_data, encryption_scheme, seek_preroll,
codec_context->delay);
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
- config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
+ config->SetChannelsForDiscrete(codec_context->channels);
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
// These are bitstream formats unknown to ffmpeg, so they don't have
@@ -470,7 +471,7 @@
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
// said information to decode.
- codec_context->ch_layout.nb_channels = config.channels();
+ codec_context->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 5f257bd..e1be5aa 100644
--- a/media/filters/audio_file_reader.cc
+++ b/media/filters/audio_file_reader.cc
@@ -113,15 +113,14 @@
// 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_->ch_layout.u.mask,
- codec_context_->ch_layout.nb_channels) ==
+ if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
+ codec_context_->channels) ==
CHANNEL_LAYOUT_UNSUPPORTED) {
return false;
}
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->ch_layout.nb_channels;
+ channels_ = codec_context_->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 @@
if (frames_read < 0)
return false;
- const int channels = frame->ch_layout.nb_channels;
+ const int channels = frame->channels;
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
@@ -243,10 +243,10 @@
// silence from being output. In the case where we are also discarding some
// portion of the packet (as indicated by a negative pts), we further want to
// adjust the duration downward by however much exists before zero.
- if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
+ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
glue_->format_context()->streams[stream_index_]->time_base,
- frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
+ frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
const base::TimeDelta frame_duration =
base::Seconds(frames_read / static_cast<double>(sample_rate_));
diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
index 6f231c8..ca5e5fb 100644
--- a/media/filters/ffmpeg_aac_bitstream_converter.cc
+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
@@ -195,15 +195,14 @@
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_->ch_layout.nb_channels ||
+ channel_configuration_ != stream_codec_parameters_->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_->ch_layout.nb_channels,
+ stream_codec_parameters_->channels,
0, // originality
0, // home
0, // copyrighted_stream
@@ -214,7 +215,7 @@
codec_ = stream_codec_parameters_->codec_id;
audio_profile_ = stream_codec_parameters_->profile;
sample_rate_index_ = sample_rate_index;
- channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
+ channel_configuration_ = stream_codec_parameters_->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 1fd4c5c..f59bcd8f 100644
--- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
@@ -34,7 +34,7 @@
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
test_parameters_.codec_id = AV_CODEC_ID_AAC;
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
- test_parameters_.ch_layout.nb_channels = 2;
+ test_parameters_.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 6a56c67..4615fdeb 100644
--- a/media/filters/ffmpeg_audio_decoder.cc
+++ b/media/filters/ffmpeg_audio_decoder.cc
@@ -28,7 +28,7 @@
// Return the number of channels from the data in |frame|.
static inline int DetermineChannels(AVFrame* frame) {
- return frame->ch_layout.nb_channels;
+ return frame->channels;
}
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
@@ -231,7 +231,7 @@
// Translate unsupported into discrete layouts for discrete configurations;
// ffmpeg does not have a labeled discrete configuration internally.
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
- codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
+ codec_context_->channel_layout, codec_context_->channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
channel_layout = CHANNEL_LAYOUT_DISCRETE;
@@ -348,11 +348,11 @@
// Success!
av_sample_format_ = codec_context_->sample_fmt;
- if (codec_context_->ch_layout.nb_channels != config.channels()) {
+ if (codec_context_->channels != config.channels()) {
MEDIA_LOG(ERROR, media_log_)
<< "Audio configuration specified " << config.channels()
<< " channels, but FFmpeg thinks the file contains "
- << codec_context_->ch_layout.nb_channels << " channels";
+ << codec_context_->channels << " channels";
ReleaseFFmpegResources();
state_ = DecoderState::kUninitialized;
return false;
@@ -403,7 +403,7 @@
if (frame->nb_samples <= 0)
return AVERROR(EINVAL);
- if (s->ch_layout.nb_channels != channels) {
+ if (s->channels != channels) {
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
return AVERROR(EINVAL);
}
@@ -436,8 +436,7 @@
ChannelLayout channel_layout =
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
- s->ch_layout.nb_channels);
+ : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
DLOG(ERROR) << "Unsupported channel layout.";

22
macros.clang Normal file
View file

@ -0,0 +1,22 @@
%_clang_opt_flags() \
CFLAGS=${CFLAGS:-%{optflags} -Wno-unknown-warning-option} ; export CFLAGS ; \
CXXFLAGS=${CXXFLAGS:-%{optflags} -Wno-unknown-warning-option} ; export CXXFLAGS ; \
%{nil}
%_clang_ldflags() \
LDFLAGS=${LDFLAGS:-%{ldflags}} ; export LDFLAGS ; \
%{nil}
%_clang_compile_flags %{_clang_opt_flags} %{_clang_ldflags} %{nil}
%_clang_alternative() \
PATH="PATH=/opt/llvm%{1}/bin:%{_libdir}/qt5/bin:$PATH" ; export PATH ; \
LD_LIBRARY_PATH="/opt/llvm%{1}/%{_lib}:$LD_LIBRARY_PATH" ; export LD_LIBRARY_PATH ; \
CC="${CC:-/opt/llvm%{1}/bin/clang}" ; export CC ; \
CXX="${CXX:-/opt/llvm%{1}/bin/clang++}" ; export CXX ; \
%_clang_compile_flags \
AR="/opt/llvm%{1}/bin/llvm-ar" ; export AR ; \
NM="/opt/llvm%{1}/bin/llvm-nm" ; export NM ; \
READELF="/opt/llvm%{1}/bin/llvm-readelf" ; export READELF ; \
%{nil}

0
rpmlint-wrapper.sh Executable file → Normal file
View file