diff --git a/chromium-117-el7-default_constructor.patch b/chromium-117-el7-default_constructor.patch deleted file mode 100644 index 1b386b60..00000000 --- a/chromium-117-el7-default_constructor.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up chromium-117.0.5938.62/content/browser/interest_group/header_direct_from_seller_signals.cc.me chromium-117.0.5938.62/content/browser/interest_group/header_direct_from_seller_signals.cc ---- chromium-117.0.5938.62/content/browser/interest_group/header_direct_from_seller_signals.cc.me 2023-09-16 09:43:41.717545215 +0200 -+++ chromium-117.0.5938.62/content/browser/interest_group/header_direct_from_seller_signals.cc 2023-09-16 09:48:07.319539585 +0200 -@@ -187,7 +187,8 @@ void OnJsonDecoded(std::unique_ptr -+#include - - #include "base/functional/callback_forward.h" - diff --git a/chromium-121-mnemonic-error.patch b/chromium-121-mnemonic-error.patch new file mode 100644 index 00000000..61239e7f --- /dev/null +++ b/chromium-121-mnemonic-error.patch @@ -0,0 +1,12 @@ +diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn +--- chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error 2023-12-19 18:14:43.027723832 +0100 ++++ chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn 2023-12-19 18:39:47.492384620 +0100 +@@ -1731,8 +1731,6 @@ action_foreach("element_locator_test_pro + python_path_root = "${root_out_dir}/pyproto" + python_path_proto = "${python_path_root}/third_party/blink/renderer/core/lcp_critical_path_predictor" + +- mnemonic = "ELOC_PROTO" +- + source_dir = "lcp_critical_path_predictor/test_proto" + sources = rebase_path([ "lcp_image_id.asciipb" ], "", source_dir) + sources += rebase_path([ "lcp_image_id_b.asciipb" ], "", source_dir) diff --git a/chromium-120-no_matching_constructor.patch b/chromium-121-no_matching_constructor.patch similarity index 75% rename from chromium-120-no_matching_constructor.patch rename to chromium-121-no_matching_constructor.patch index b1d987ad..332a91ad 100644 --- a/chromium-120-no_matching_constructor.patch +++ b/chromium-121-no_matching_constructor.patch @@ -114,9 +114,9 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per + ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal}; } - buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW), -- ButtonType::kAllow, ui::ButtonStyle::kTonal); +- ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId); + buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW), -+ ButtonType::kAllow, ui::ButtonStyle::kTonal}; ++ ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId}; return buttons; } @@ -145,55 +145,6 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per return buttons; } -diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc ---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor 2023-11-29 22:39:53.000000000 +0100 -+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc 2023-12-03 17:31:25.756420342 +0100 -@@ -63,18 +63,18 @@ EmbeddedPermissionPromptPreviouslyDenied - std::vector - EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const { - std::vector buttons; -- buttons.emplace_back( -+ buttons.emplace_back() = { - l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING), -- ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal); -+ ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal}; - - if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) { -- buttons.emplace_back( -+ buttons.emplace_back() = { - l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME), -- ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal); -+ ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal}; - } else { -- buttons.emplace_back( -+ buttons.emplace_back() = { - l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME), -- ButtonType::kAllow, ui::ButtonStyle::kTonal); -+ ButtonType::kAllow, ui::ButtonStyle::kTonal}; - } - return buttons; - } -diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc ---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor 2023-11-29 22:39:53.000000000 +0100 -+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc 2023-12-03 17:31:25.750420227 +0100 -@@ -57,13 +57,13 @@ EmbeddedPermissionPromptPreviouslyGrante - std::vector - EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const { - std::vector buttons; -- buttons.emplace_back( -+ buttons.emplace_back() = { - l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING), -- ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal); -+ ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal}; - -- buttons.emplace_back( -+ buttons.emplace_back() = { - l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING), -- ButtonType::kStopAllowing, ui::ButtonStyle::kTonal); -+ ButtonType::kStopAllowing, ui::ButtonStyle::kTonal}; - return buttons; - } - diff -up chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc --- chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor 2023-11-29 22:39:54.000000000 +0100 +++ chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc 2023-12-03 17:31:25.750420227 +0100 @@ -246,18 +197,6 @@ diff -up chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofil if (type == ADDRESS_HOME_COUNTRY) { country_code = base::UTF16ToUTF8(s.ColumnString16(1)); -diff -up chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc ---- chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor 2023-11-29 22:39:58.000000000 +0100 -+++ chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc 2023-12-03 17:31:25.751420246 +0100 -@@ -630,7 +630,7 @@ void PasswordManager::OnUserModifiedNonP - // |driver| might be empty on iOS or in tests. - int driver_id = driver ? driver->GetId() : 0; - possible_usernames_.Put( -- PossibleUsernameFieldIdentifier(driver_id, renderer_id), -+ PossibleUsernameFieldIdentifier{driver_id, renderer_id}, - PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()), - renderer_id, value, base::Time::Now(), driver_id, - autocomplete_attribute_has_username, is_likely_otp)); diff -up chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc --- chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor 2023-11-29 22:40:01.000000000 +0100 +++ chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc 2023-12-03 17:31:25.751420246 +0100 @@ -300,45 +239,6 @@ diff -up chromium-120.0.6099.56/content/browser/interest_group/interest_group_st } if (!interest_group_kanon_query.Succeeded()) { return absl::nullopt; -diff -up chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc ---- chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor 2023-11-29 22:40:01.000000000 +0100 -+++ chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc 2023-12-03 20:49:28.059042672 +0100 -@@ -8685,7 +8685,7 @@ void RenderFrameHostImpl::SendFencedFram - for (const blink::FencedFrame::ReportingDestination& destination : - destinations) { - SendFencedFrameReportingBeaconInternal( -- DestinationEnumEvent(event_type, event_data), destination, -+ DestinationEnumEvent{event_type, event_data}, destination, - /*from_renderer=*/true, attribution_reporting_runtime_features); - } - } -@@ -8720,7 +8720,7 @@ void RenderFrameHostImpl::SendFencedFram - } - - SendFencedFrameReportingBeaconInternal( -- DestinationURLEvent(destination_url), -+ DestinationURLEvent{destination_url}, - blink::FencedFrame::ReportingDestination::kBuyer, - /*from_renderer=*/true, attribution_reporting_runtime_features); - } -@@ -8820,7 +8820,7 @@ void RenderFrameHostImpl::MaybeSendFence - data = info->data; - } - initiator_rfh->SendFencedFrameReportingBeaconInternal( -- AutomaticBeaconEvent(event_type, data), destination, -+ AutomaticBeaconEvent{event_type, data}, destination, - /*from_renderer=*/false, attribution_reporting_features, - navigation_request.GetNavigationId()); - } -@@ -8832,7 +8832,7 @@ void RenderFrameHostImpl::MaybeSendFence - for (blink::FencedFrame::ReportingDestination destination : - info->destinations) { - initiator_rfh->SendFencedFrameReportingBeaconInternal( -- AutomaticBeaconEvent(event_type, info->data), destination, -+ AutomaticBeaconEvent{event_type, info->data}, destination, - /*from_renderer=*/false, info->attribution_reporting_runtime_features, - navigation_request.GetNavigationId()); - } diff -up chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor chromium-120.0.6099.56/net/dns/host_resolver_cache.cc --- chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor 2023-11-29 22:40:07.000000000 +0100 +++ chromium-120.0.6099.56/net/dns/host_resolver_cache.cc 2023-12-03 17:31:25.754420303 +0100 @@ -740,3 +640,306 @@ diff -up chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor chromiu } return config; } +diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc +--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than 2023-12-19 17:13:15.116949814 +0100 ++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc 2023-12-19 17:27:18.807102716 +0100 +@@ -66,17 +66,17 @@ EmbeddedPermissionPromptPreviouslyDenied + std::vector + EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const { + std::vector buttons; +- buttons.emplace_back( ++ buttons.emplace_back() = { + l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING), +- ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal); ++ ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal}; + + if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) { +- buttons.emplace_back( ++ buttons.emplace_back() = { + l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME), +- ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId); ++ ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId}; + } else { +- buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW), +- ButtonType::kAllow, ui::ButtonStyle::kTonal); ++ buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW), ++ ButtonType::kAllow, ui::ButtonStyle::kTonal}; + } + return buttons; + } +diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc +--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than 2023-12-19 17:39:17.818834020 +0100 ++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc 2023-12-19 17:44:15.346337876 +0100 +@@ -61,13 +61,13 @@ EmbeddedPermissionPromptPreviouslyGrante + std::vector + EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const { + std::vector buttons; +- buttons.emplace_back( ++ buttons.emplace_back() = { + l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING), +- ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal); ++ ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal}; + +- buttons.emplace_back( ++ buttons.emplace_back() = { + l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING), +- ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId); ++ ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId}; + return buttons; + } + +diff -up chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc +--- chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than 2023-12-19 17:39:17.819834039 +0100 ++++ chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc 2023-12-19 17:48:33.144389081 +0100 +@@ -666,7 +666,7 @@ void PasswordManager::OnUserModifiedNonP + it->second.last_change = base::Time::Now(); + } else { + possible_usernames_.Put( +- PossibleUsernameFieldIdentifier(driver_id, renderer_id), ++ PossibleUsernameFieldIdentifier{driver_id, renderer_id}, + PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()), + renderer_id, value, base::Time::Now(), driver_id, + autocomplete_attribute_has_username, +diff -up chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc +--- chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than 2023-12-19 17:39:17.825834156 +0100 ++++ chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc 2023-12-19 17:53:43.153283847 +0100 +@@ -8561,7 +8561,7 @@ void RenderFrameHostImpl::SendFencedFram + for (const blink::FencedFrame::ReportingDestination& destination : + destinations) { + SendFencedFrameReportingBeaconInternal( +- DestinationEnumEvent(event_type, event_data), destination, ++ DestinationEnumEvent{event_type, event_data}, destination, + attribution_reporting_runtime_features); + } + } +@@ -8593,7 +8593,7 @@ void RenderFrameHostImpl::SendFencedFram + } + + SendFencedFrameReportingBeaconInternal( +- DestinationURLEvent(destination_url), ++ DestinationURLEvent{destination_url}, + blink::FencedFrame::ReportingDestination::kBuyer, + attribution_reporting_runtime_features); + } +@@ -8730,7 +8730,7 @@ void RenderFrameHostImpl::MaybeSendFence + data = info->data; + } + initiator_rfh->SendFencedFrameReportingBeaconInternal( +- AutomaticBeaconEvent(event_type, data), destination, ++ AutomaticBeaconEvent{event_type, data}, destination, + attribution_reporting_features, navigation_request.GetNavigationId()); + } + } else { +@@ -8741,7 +8741,7 @@ void RenderFrameHostImpl::MaybeSendFence + for (blink::FencedFrame::ReportingDestination destination : + info->destinations) { + initiator_rfh->SendFencedFrameReportingBeaconInternal( +- AutomaticBeaconEvent(event_type, info->data), destination, ++ AutomaticBeaconEvent{event_type, info->data}, destination, + info->attribution_reporting_runtime_features, + navigation_request.GetNavigationId()); + } +diff -up chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me chromium-121.0.6167.57/base/nix/mime_util_xdg.cc +--- chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me 2024-01-21 16:54:15.261844448 +0100 ++++ chromium-121.0.6167.57/base/nix/mime_util_xdg.cc 2024-01-21 16:55:48.705577424 +0100 +@@ -56,7 +56,7 @@ void LoadAllMimeCacheFiles(MimeTypeMap& + for (const auto& path : GetXDGDataSearchLocations(env.get())) { + FilePath mime_cache = path.Append("mime/mime.cache"); + if (GetFileInfo(mime_cache, &info) && ParseMimeTypes(mime_cache, map)) { +- files.emplace_back(mime_cache, info.last_modified); ++ files.emplace_back() = {mime_cache, info.last_modified}; + } + } + } +diff -up chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc +--- chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me 2024-01-21 18:11:31.397859608 +0100 ++++ chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc 2024-01-21 18:20:07.715415037 +0100 +@@ -239,7 +239,7 @@ void WorkerWatcher::OnWorkerCreated( + DCHECK(insertion_result.second); + + absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [&, + this](const content::GlobalRenderFrameHostId& render_frame_host_id) { + AddFrameClientConnection(insertion_result.first->second.get(), +@@ -248,7 +248,7 @@ void WorkerWatcher::OnWorkerCreated( + [&, this](blink::DedicatedWorkerToken dedicated_worker_token) { + ConnectDedicatedWorkerClient(insertion_result.first->second.get(), + dedicated_worker_token); +- }), ++ }}, + creator); + } + +@@ -265,7 +265,7 @@ void WorkerWatcher::OnBeforeWorkerDestro + // First disconnect the creator's node from this worker node. + + absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [&, + this](const content::GlobalRenderFrameHostId& render_frame_host_id) { + RemoveFrameClientConnection(worker_node.get(), +@@ -274,7 +274,7 @@ void WorkerWatcher::OnBeforeWorkerDestro + [&, this](blink::DedicatedWorkerToken dedicated_worker_token) { + DisconnectDedicatedWorkerClient(worker_node.get(), + dedicated_worker_token); +- }), ++ }}, + creator); + + // Disconnect all child workers before destroying the node. +@@ -446,7 +446,7 @@ void WorkerWatcher::OnControlleeAdded( + const std::string& client_uuid, + const content::ServiceWorkerClientInfo& client_info) { + absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [&, this](content::GlobalRenderFrameHostId render_frame_host_id) { + // For window clients, it is necessary to wait until the navigation + // has committed to a RenderFrameHost. +@@ -484,7 +484,7 @@ void WorkerWatcher::OnControlleeAdded( + ConnectSharedWorkerClient(service_worker_node, + shared_worker_token); + } +- }), ++ }}, + client_info); + } + +@@ -524,7 +524,7 @@ void WorkerWatcher::OnControlleeRemoved( + return; + + absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [&, this](content::GlobalRenderFrameHostId render_frame_host_id) { + RemoveFrameClientConnection(worker_node, render_frame_host_id); + }, +@@ -534,7 +534,7 @@ void WorkerWatcher::OnControlleeRemoved( + }, + [&, this](blink::SharedWorkerToken shared_worker_token) { + DisconnectSharedWorkerClient(worker_node, shared_worker_token); +- }), ++ }}, + client); + } + +@@ -810,7 +810,7 @@ void WorkerWatcher::ConnectAllServiceWor + + for (const auto& kv : it->second) { + absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [&, this](content::GlobalRenderFrameHostId render_frame_host_id) { + AddFrameClientConnection(service_worker_node, + render_frame_host_id); +@@ -822,7 +822,7 @@ void WorkerWatcher::ConnectAllServiceWor + [&, this](blink::SharedWorkerToken shared_worker_token) { + ConnectSharedWorkerClient(service_worker_node, + shared_worker_token); +- }), ++ }}, + kv.second); + } + } +@@ -837,7 +837,7 @@ void WorkerWatcher::DisconnectAllService + + for (const auto& kv : it->second) { + absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [&, this]( + const content::GlobalRenderFrameHostId& render_frame_host_id) { + RemoveFrameClientConnection(service_worker_node, +@@ -851,7 +851,7 @@ void WorkerWatcher::DisconnectAllService + [&, this](const blink::SharedWorkerToken& shared_worker_token) { + DisconnectSharedWorkerClient(service_worker_node, + shared_worker_token); +- }), ++ }}, + kv.second); + } + } +diff -up chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc +--- chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me 2024-01-21 18:40:52.284389286 +0100 ++++ chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc 2024-01-21 18:41:17.276840222 +0100 +@@ -764,7 +764,7 @@ FirstPartySetParser::ParseSetsFromEnterp + context.GetPolicySetsFromList( + policy.FindList(kFirstPartySetPolicyAdditionsField), + PolicySetType::kAddition)); +- return ParsedPolicySetLists(std::move(replacements), std::move(additions)); ++ return ParsedPolicySetLists{std::move(replacements), std::move(additions)}; + }(); + + context.PostProcessSetLists(set_lists); +diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h +--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me 2024-01-21 19:30:00.536387844 +0100 ++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h 2024-01-21 20:29:50.236287514 +0100 +@@ -133,6 +133,7 @@ class CONTENT_EXPORT HeaderDirectFromSel + + // The Ad-Auction-Signals response served by `origin`. + std::string response_json; ++ UnprocessedResponse(auto u, auto s) : origin(u), response_json(s) { } + }; + + // Information from ParseAndFind() calls used by ParseAndFindCompleted. +diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc +--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me 2024-01-21 21:58:48.773366301 +0100 ++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc 2024-01-21 22:02:17.956086167 +0100 +@@ -360,10 +360,10 @@ ServiceWorkerMainResourceLoaderIntercept + } + auto* storage_partition = process->GetStoragePartition(); + +- return absl::visit(base::Overloaded([&, this](auto token) { ++ return absl::visit(base::Overloaded{[&, this](auto token) { + return GetStorageKeyFromWorkerHost(storage_partition, + token, origin); +- }), ++ }}, + *worker_token_); + } + +diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc +--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me 2024-01-21 22:04:30.446454697 +0100 ++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc 2024-01-21 22:05:22.847391481 +0100 +@@ -870,7 +870,7 @@ ServiceWorkerContainerHost::GetClientTyp + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(client_info_); + return absl::visit( +- base::Overloaded( ++ base::Overloaded{ + [](GlobalRenderFrameHostId render_frame_host_id) { + return blink::mojom::ServiceWorkerClientType::kWindow; + }, +@@ -879,7 +879,7 @@ ServiceWorkerContainerHost::GetClientTyp + }, + [](blink::SharedWorkerToken shared_worker_token) { + return blink::mojom::ServiceWorkerClientType::kSharedWorker; +- }), ++ }}, + *client_info_); + } + +diff -up chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc +--- chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me 2024-01-21 22:37:00.969416148 +0100 ++++ chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc 2024-01-21 22:38:07.754528335 +0100 +@@ -251,7 +251,7 @@ void DedicatedWorkerHost::StartScriptLoa + RenderFrameHostImpl* creator_render_frame_host = nullptr; + DedicatedWorkerHost* creator_worker = nullptr; + +- absl::visit(base::Overloaded( ++ absl::visit(base::Overloaded{ + [&](const GlobalRenderFrameHostId& render_frame_host_id) { + creator_render_frame_host = + RenderFrameHostImpl::FromID(render_frame_host_id); +@@ -259,7 +259,7 @@ void DedicatedWorkerHost::StartScriptLoa + [&](blink::DedicatedWorkerToken dedicated_worker_token) { + creator_worker = service_->GetDedicatedWorkerHostFromToken( + dedicated_worker_token); +- }), ++ }}, + creator_); + + if (!creator_render_frame_host && !creator_worker) { diff --git a/chromium-121-nullptr_t-without-namespace-std.patch b/chromium-121-nullptr_t-without-namespace-std.patch new file mode 100644 index 00000000..3defc393 --- /dev/null +++ b/chromium-121-nullptr_t-without-namespace-std.patch @@ -0,0 +1,12 @@ +diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h +--- chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than 2023-12-04 10:20:45.350540897 +0100 ++++ chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h 2023-12-04 10:23:17.335339670 +0100 +@@ -21,7 +21,7 @@ class FragmentDataIteratorBase { + + public: + explicit FragmentDataIteratorBase(Head& head) : fragment_head_(head) {} +- explicit FragmentDataIteratorBase(nullptr_t) {} ++ explicit FragmentDataIteratorBase(std::nullptr_t) {} + + Data* GetFragmentData() const { + return !IsDone() ? &fragment_head_.at(idx_) : nullptr; diff --git a/chromium-121-python3-invalid-escape-sequence.patch b/chromium-121-python3-invalid-escape-sequence.patch new file mode 100644 index 00000000..c2bf5b48 --- /dev/null +++ b/chromium-121-python3-invalid-escape-sequence.patch @@ -0,0 +1,77 @@ +diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py +--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me 2024-01-15 20:48:28.177397102 +0100 ++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py 2024-01-15 20:48:46.427768328 +0100 +@@ -18,7 +18,7 @@ class HTMLGenerationController(object): + + def GetHTMLForInlineStylesheet(self, contents): + if self.current_module is None: +- if re.search('url\(.+\)', contents): ++ if re.search(r'url\(.+\)', contents): + raise Exception( + 'Default HTMLGenerationController cannot handle inline style urls') + return contents +diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py +--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me 2024-01-15 20:49:39.363845083 +0100 ++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py 2024-01-15 20:49:57.407212098 +0100 +@@ -4,4 +4,4 @@ + + + def EscapeJSIfNeeded(js): +- return js.replace('', '<\/script>') ++ return js.replace(r'', r'<\/script>') +diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py +--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me 2024-01-15 20:50:11.819505254 +0100 ++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py 2024-01-15 20:50:38.611050213 +0100 +@@ -293,6 +293,6 @@ class HTMLModuleParser(): + html = '' + else: + if html.find('< /script>') != -1: +- raise Exception('Escape script tags with <\/script>') ++ raise Exception(r'Escape script tags with <\/script>') + + return HTMLModuleParserResults(html) +diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py +--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me 2024-01-15 20:48:59.917042709 +0100 ++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py 2024-01-15 20:49:24.402540761 +0100 +@@ -60,7 +60,7 @@ class ParsedStyleSheet(object): + return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8')) + + # I'm assuming we only have url()'s associated with images +- return re.sub('url\((?P"|\'|)(?P[^"\'()]*)(?P=quote)\)', ++ return re.sub(r'url\((?P"|\'|)(?P[^"\'()]*)(?P=quote)\)', + InlineUrl, self.contents) + + def AppendDirectlyDependentFilenamesTo(self, dependent_filenames): +@@ -72,7 +72,7 @@ class ParsedStyleSheet(object): + raise Exception('@imports are not supported') + + matches = re.findall( +- 'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)', ++ r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)', + self.contents) + + def resolve_url(url): +diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py +--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me 2024-01-15 20:50:56.810420400 +0100 ++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py 2024-01-15 20:52:33.506387261 +0100 +@@ -28,7 +28,7 @@ import platform + import sys + + def glob_slash(dirname): +- """Like regular glob but replaces \ with / in returned paths.""" ++ """Like regular glob but replaces \\ with / in returned paths.""" + return [s.replace('\\', '/') for s in glob.glob(dirname)] + + def main(): +diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py +--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me 2024-01-15 20:52:38.016479000 +0100 ++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py 2024-01-15 20:52:48.863699640 +0100 +@@ -28,7 +28,7 @@ import platform + import sys + + def glob_slash(dirname): +- """Like regular glob but replaces \ with / in returned paths.""" ++ """Like regular glob but replaces \\ with / in returned paths.""" + return [s.replace('\\', '/') for s in glob.glob(dirname)] + + def main(): diff --git a/chromium-119-revert-av1enc-el9.patch b/chromium-121-revert-av1enc-el9.patch similarity index 93% rename from chromium-119-revert-av1enc-el9.patch rename to chromium-121-revert-av1enc-el9.patch index b533ab9f..3debbe69 100644 --- a/chromium-119-revert-av1enc-el9.patch +++ b/chromium-121-revert-av1enc-el9.patch @@ -50,21 +50,6 @@ diff -up chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.c default: return nullptr; } -diff -up chromium-114.0.5735.35/media/gpu/BUILD.gn.revert-av1enc chromium-114.0.5735.35/media/gpu/BUILD.gn ---- chromium-114.0.5735.35/media/gpu/BUILD.gn.revert-av1enc 2023-05-18 00:37:57.000000000 +0200 -+++ chromium-114.0.5735.35/media/gpu/BUILD.gn 2023-05-20 13:14:10.755183630 +0200 -@@ -373,10 +373,7 @@ source_set("common") { - "vp9_svc_layers.h", - ] - configs += [ "//third_party/libvpx:libvpx_config" ] -- deps += [ -- "//third_party/libaom:libaomrc", -- "//third_party/libvpx:libvpxrc", -- ] -+ deps += [ "//third_party/libvpx:libvpxrc" ] - } - if (use_libgav1_parser) { - sources += [ diff -up chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn.revert-av1enc chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn --- chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn.revert-av1enc 2023-05-18 00:37:57.000000000 +0200 +++ chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn 2023-05-20 13:14:10.756183626 +0200 @@ -119,3 +104,18 @@ diff -up chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h.me chromium-119 // Blits a VASurface |va_surface_src| into another VASurface // |va_surface_dest| applying pixel format conversion, cropping +diff -up chromium-121.0.6167.57/media/gpu/BUILD.gn.than chromium-121.0.6167.57/media/gpu/BUILD.gn +--- chromium-121.0.6167.57/media/gpu/BUILD.gn.than 2024-01-15 22:09:21.010029147 +0100 ++++ chromium-121.0.6167.57/media/gpu/BUILD.gn 2024-01-15 22:10:05.192259340 +0100 +@@ -391,10 +391,7 @@ source_set("common") { + "vp9_svc_layers_stateful.h", + ] + configs += [ "//third_party/libvpx:libvpx_config" ] +- deps += [ +- "//third_party/libaom:libaomrc", +- "//third_party/libvpx:libvpxrc", +- ] ++ deps += [ "//third_party/libvpx:libvpxrc" ] + } + if (use_libgav1_parser) { + sources += [ diff --git a/chromium-121-rust-clang_lib.patch b/chromium-121-rust-clang_lib.patch new file mode 100644 index 00000000..70327eff --- /dev/null +++ b/chromium-121-rust-clang_lib.patch @@ -0,0 +1,55 @@ +diff -up chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib chromium-121.0.6167.57/build/config/clang/BUILD.gn +--- chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib 2024-01-10 16:43:01.000000000 +0100 ++++ chromium-121.0.6167.57/build/config/clang/BUILD.gn 2024-01-20 19:51:38.481992799 +0100 +@@ -112,6 +112,7 @@ template("clang_lib") { + _prefix = "lib" + _suffix = "" + _ext = "a" ++ _libprefix = "" + if (is_win) { + _dir = "windows" + _prefix = "" +@@ -127,7 +128,33 @@ template("clang_lib") { + } + } else if (is_apple) { + _dir = "darwin" +- } else if (is_linux || is_chromeos) { ++ } else if (is_linux) { ++ if (current_cpu == "x64") { ++ _dir = "x86_64-redhat-linux-gnu" ++ _suffix ="-x86_64" ++ } else if (current_cpu == "x86") { ++ _dir = "i386-redhat-linux-gnu" ++ _suffix = "-i386" ++ } else if (current_cpu == "arm64") { ++ _dir = "aarch64-redhat-linux-gnu" ++ _suffix = "-aarch64" ++ } else if (current_cpu == "arm") { ++ _dir = "armhf-redhat-linux-gnu" ++ _suffix = "-armhf" ++ } else if (current_cpu == "ppc64") { ++ _dir = "powerpc64le-redhat-linux-gnu" ++ _suffix = "-powerpc64le" ++ } else { ++ assert(false) # Unhandled cpu type ++ } ++ # different clang lib dir in fedora/epel ++ if (clang_version == "17") { ++ _suffix = "" ++ } else if (clang_version == "16" || clang_version == "14") { ++ _libprefix = "64" ++ _dir = "" ++ } ++ } else if (is_chromeos) { + if (current_cpu == "x64") { + _dir = "x86_64-unknown-linux-gnu" + } else if (current_cpu == "x86") { +@@ -166,7 +193,7 @@ template("clang_lib") { + assert(false) # Unhandled target platform + } + +- _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" ++ _clang_lib_dir = "$clang_base_path/lib${_libprefix}/clang/$clang_version/lib" + _lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}" + libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ] + } diff --git a/chromium-121-system-old-ffmpeg.patch b/chromium-121-system-old-ffmpeg.patch new file mode 100644 index 00000000..0398e5b6 --- /dev/null +++ b/chromium-121-system-old-ffmpeg.patch @@ -0,0 +1,34 @@ +diff -up chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc.me chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc +--- chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc.me 2024-01-16 10:54:38.994173911 +0100 ++++ chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc 2024-01-16 11:06:20.974160612 +0100 +@@ -710,8 +710,13 @@ bool AVStreamToVideoDecoderConfig(const + } + + VideoTransformation video_transformation = VideoTransformation(); ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102) ++ for (int i = 0; i < stream->nb_side_data; i++) { ++ const auto& side_data = stream->side_data[i]; ++#else + for (int i = 0; i < stream->codecpar->nb_coded_side_data; ++i) { + const auto& side_data = stream->codecpar->coded_side_data[i]; ++#endif + switch (side_data.type) { + case AV_PKT_DATA_DISPLAYMATRIX: { + CHECK_EQ(side_data.size, sizeof(int32_t) * 3 * 3); +diff -up chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc.me chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc +--- chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc.me 2024-01-16 11:12:27.521534151 +0100 ++++ chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc 2024-01-16 11:15:08.717337026 +0100 +@@ -113,8 +113,13 @@ bool AudioVideoMetadataExtractor::Extrac + if (!stream) + continue; + ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102) ++ for (int j = 0; j < stream->nb_side_data; j++) { ++ const AVPacketSideData& sd = stream->side_data[j]; ++#else + for (int j = 0; j < stream->codecpar->nb_coded_side_data; j++) { + const AVPacketSideData& sd = stream->codecpar->coded_side_data[j]; ++#endif + if (sd.type == AV_PKT_DATA_DISPLAYMATRIX) { + CHECK_EQ(sd.size, sizeof(int32_t) * 3 * 3); + rotation_ = VideoTransformation::FromFFmpegDisplayMatrix( diff --git a/chromium-120-typename.patch b/chromium-121-typename.patch similarity index 78% rename from chromium-120-typename.patch rename to chromium-121-typename.patch index 9a2d878b..e83e62c6 100644 --- a/chromium-120-typename.patch +++ b/chromium-121-typename.patch @@ -203,3 +203,57 @@ diff -up chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/asyn ExceptionState& exception_state) = 0; }; +diff -up chromium-121.0.6167.57/base/functional/bind_internal.h.me chromium-121.0.6167.57/base/functional/bind_internal.h +--- chromium-121.0.6167.57/base/functional/bind_internal.h.me 2024-01-21 16:10:09.809037581 +0100 ++++ chromium-121.0.6167.57/base/functional/bind_internal.h 2024-01-21 16:46:33.759397303 +0100 +@@ -1533,11 +1533,11 @@ template + struct ParamCanBeBound { + private: +- using UnwrappedParam = BindArgument::template ForwardedAs< ++ using UnwrappedParam = typename BindArgument::template ForwardedAs< + Unwrapped>::template ToParamWithType; +- using ParamStorage = BindArgument::template ToParamWithType< ++ using ParamStorage = typename BindArgument::template ToParamWithType< + Param>::template StoredAs; +- using BoundStorage = ++ using BoundStorage = typename + BindArgument::template BoundAs::template StoredAs; + + // We forbid callbacks from using raw_ptr as a parameter. However, we allow +diff -up chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h +--- chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me 2024-01-21 17:23:37.786606428 +0100 ++++ chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h 2024-01-21 17:23:58.582127103 +0100 +@@ -90,7 +90,7 @@ template + { c[i] } -> std::same_as; + } + struct ArrayTraits { +- using Element = Container::value_type; ++ using Element = typename Container::value_type; + + // vector-like containers have no built-in null. + static bool IsNull(const Container& c) { return false; } +diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h +--- chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me 2024-01-21 17:33:40.030897838 +0100 ++++ chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h 2024-01-21 17:34:11.518705266 +0100 +@@ -25,7 +25,7 @@ void SetExecutionRequestTemplate( + + // Request is set by the feature and should always be typed. + auto typed_request = +- static_cast(request_metadata); ++ static_cast(request_metadata); + *(logging_data->mutable_request_data()) = typed_request; + } + +diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h +--- chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me 2024-01-21 17:32:42.367417619 +0100 ++++ chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h 2024-01-21 17:33:25.732531198 +0100 +@@ -29,7 +29,7 @@ class ModelQualityLogEntry { + } + + template +- FeatureType::Quality* quality_data() { ++ typename FeatureType::Quality* quality_data() { + return FeatureType::GetLoggingData(*log_ai_data_request_) + ->mutable_quality_data(); + } diff --git a/chromium-121-v8-c++20.patch b/chromium-121-v8-c++20.patch new file mode 100644 index 00000000..3b3bb50f --- /dev/null +++ b/chromium-121-v8-c++20.patch @@ -0,0 +1,743 @@ +commit 940af9f2c87b436559b97c53763aa9eaaf1254eb +Author: Jeremy Roman +Date: Wed Nov 15 16:24:54 2023 +0000 + + Use C++20 features to simplify blink::NativeValueTraitsBase. + + These allow some of the metaprogramming bits to be simplified a little. + + Change-Id: I052b4397586d21348401616e1792afdb9662f975 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5030335 + Reviewed-by: Yuki Shiino + Commit-Queue: Jeremy Roman + Cr-Commit-Position: refs/heads/main@{#1224978} + +diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h +index 7fc91d14acc71..1e5a0790df6da 100644 +--- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h ++++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h +@@ -5,6 +5,7 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_ + #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_ + ++#include + #include + + #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h" +@@ -30,7 +31,7 @@ class ExceptionState; + // return toInt32(isolate, value, exceptionState, NormalConversion); + // } + // } +-template ++template + struct NativeValueTraits; + + // This declaration serves only as a blueprint for specializations: the +@@ -45,22 +46,15 @@ struct NativeValueTraits; + + namespace bindings { + +-template +-struct NativeValueTraitsHasIsNull : std::false_type {}; +- + template +-struct NativeValueTraitsHasIsNull< +- T, +- std::void_t().IsNull())>> : std::true_type {}; ++struct ImplTypeFor { ++ using type = T; ++}; + + template +-struct NativeValueTraitsHasNullValue { +- // true if |T| supports IDL null value. +- static constexpr bool value = +- // ScriptValue, String, and union types have IsNull member function. +- bindings::NativeValueTraitsHasIsNull::value || +- // Pointer types have nullptr as IDL null value. +- std::is_pointer::value; ++ requires std::derived_from ++struct ImplTypeFor { ++ using type = typename T::ImplType; + }; + + } // namespace bindings +@@ -78,37 +72,17 @@ struct NativeValueTraitsHasNullValue { + // If present, |NullValue()| will be used when converting from the nullable type + // T?, and should be used if the impl type has an existing "null" state. If not + // present, WTF::Optional will be used to wrap the type. +-template +-struct NativeValueTraitsBase { +- STATIC_ONLY(NativeValueTraitsBase); +- +- using ImplType = T; +- +- static constexpr bool has_null_value = +- bindings::NativeValueTraitsHasNullValue::value; +- +- template +- static decltype(auto) ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state, +- ExtraArgs... extra_args) { +- return NativeValueTraits>::NativeValue( +- isolate, value, exception_state, +- std::forward(extra_args)...); +- } +-}; +- + template +-struct NativeValueTraitsBase< +- T, +- std::enable_if_t::value>> { ++struct NativeValueTraitsBase { + STATIC_ONLY(NativeValueTraitsBase); + +- using ImplType = typename T::ImplType; ++ using ImplType = bindings::ImplTypeFor::type; + ++ // Pointer types have nullptr as IDL null value. ++ // ScriptValue, String, and union types have IsNull member function. + static constexpr bool has_null_value = +- bindings::NativeValueTraitsHasNullValue::value; ++ std::is_pointer_v || ++ requires(ImplType value) { value.IsNull(); }; + + template + static decltype(auto) ArgumentValue(v8::Isolate* isolate, +diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc +index 508ea6d8eea48..18de71d84023f 100644 +--- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc ++++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc +@@ -7,6 +7,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/execution_context/execution_context.h" + #include "third_party/blink/renderer/core/frame/web_feature.h" ++#include "third_party/blink/renderer/core/typed_arrays/flexible_array_buffer_view.h" + #include "third_party/blink/renderer/core/typed_arrays/typed_flexible_array_buffer_view.h" + + namespace blink { +@@ -698,12 +699,11 @@ DOMArrayBufferBase* NativeValueTraits< + // ArrayBufferView + + template +-NotShared NativeValueTraits< +- NotShared, +- typename std::enable_if_t::value>>:: +- NativeValue(v8::Isolate* isolate, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++NotShared NativeValueTraits>::NativeValue( ++ v8::Isolate* isolate, ++ v8::Local value, ++ ExceptionState& exception_state) { + return NativeValueImpl< + RecipeTrait>, ToDOMViewType, + Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, +@@ -712,13 +712,12 @@ NotShared NativeValueTraits< + } + + template +-NotShared NativeValueTraits< +- NotShared, +- typename std::enable_if_t::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++NotShared NativeValueTraits>::ArgumentValue( ++ v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl< + RecipeTrait>, ToDOMViewType, + Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, +@@ -729,12 +728,11 @@ NotShared NativeValueTraits< + // [AllowShared] ArrayBufferView + + template +-MaybeShared NativeValueTraits< +- MaybeShared, +- typename std::enable_if_t::value>>:: +- NativeValue(v8::Isolate* isolate, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++MaybeShared NativeValueTraits>::NativeValue( ++ v8::Isolate* isolate, ++ v8::Local value, ++ ExceptionState& exception_state) { + return NativeValueImpl>, + ToDOMViewType, + Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, +@@ -743,13 +741,12 @@ MaybeShared NativeValueTraits< + } + + template +-MaybeShared NativeValueTraits< +- MaybeShared, +- typename std::enable_if_t::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++MaybeShared NativeValueTraits>::ArgumentValue( ++ v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl>, + ToDOMViewType, + Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, +@@ -760,12 +757,12 @@ MaybeShared NativeValueTraits< + // [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView + + template +-MaybeShared NativeValueTraits< +- IDLBufferSourceTypeNoSizeLimit>, +- typename std::enable_if_t::value>>:: +- NativeValue(v8::Isolate* isolate, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++MaybeShared ++NativeValueTraits>>::NativeValue( ++ v8::Isolate* isolate, ++ v8::Local value, ++ ExceptionState& exception_state) { + return NativeValueImpl< + RecipeTrait>, ToDOMViewType, + Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck, +@@ -774,13 +771,12 @@ MaybeShared NativeValueTraits< + } + + template +-MaybeShared NativeValueTraits< +- IDLBufferSourceTypeNoSizeLimit>, +- typename std::enable_if_t::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++MaybeShared NativeValueTraits>>::ArgumentValue(v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl< + RecipeTrait>, ToDOMViewType, + Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck, +@@ -791,12 +787,11 @@ MaybeShared NativeValueTraits< + // Nullable ArrayBufferView + + template +-NotShared NativeValueTraits< +- IDLNullable>, +- typename std::enable_if_t::value>>:: +- NativeValue(v8::Isolate* isolate, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++NotShared NativeValueTraits>>::NativeValue( ++ v8::Isolate* isolate, ++ v8::Local value, ++ ExceptionState& exception_state) { + return NativeValueImpl< + RecipeTrait>, ToDOMViewType, + Nullablity::kIsNullable, BufferSizeCheck::kCheck, +@@ -805,13 +800,12 @@ NotShared NativeValueTraits< + } + + template +-NotShared NativeValueTraits< +- IDLNullable>, +- typename std::enable_if_t::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++NotShared NativeValueTraits>>::ArgumentValue( ++ v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl< + RecipeTrait>, ToDOMViewType, + Nullablity::kIsNullable, BufferSizeCheck::kCheck, +@@ -822,12 +816,11 @@ NotShared NativeValueTraits< + // Nullable [AllowShared] ArrayBufferView + + template +-MaybeShared NativeValueTraits< +- IDLNullable>, +- typename std::enable_if_t::value>>:: +- NativeValue(v8::Isolate* isolate, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++MaybeShared NativeValueTraits>>::NativeValue( ++ v8::Isolate* isolate, ++ v8::Local value, ++ ExceptionState& exception_state) { + return NativeValueImpl>, + ToDOMViewType, + Nullablity::kIsNullable, BufferSizeCheck::kCheck, +@@ -836,13 +829,12 @@ MaybeShared NativeValueTraits< + } + + template +-MaybeShared NativeValueTraits< +- IDLNullable>, +- typename std::enable_if_t::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++MaybeShared NativeValueTraits>>::ArgumentValue( ++ v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl>, + ToDOMViewType, + Nullablity::kIsNullable, BufferSizeCheck::kCheck, +@@ -853,9 +845,9 @@ MaybeShared NativeValueTraits< + // Nullable [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView + + template +-MaybeShared NativeValueTraits< +- IDLNullable>>, +- typename std::enable_if_t::value>>:: ++ requires std::derived_from ++MaybeShared ++NativeValueTraits>>>:: + ArgumentValue(v8::Isolate* isolate, + int argument_index, + v8::Local value, +@@ -870,13 +862,11 @@ MaybeShared NativeValueTraits< + // [AllowShared, FlexibleArrayBufferView] ArrayBufferView + + template +-T NativeValueTraits::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++T NativeValueTraits::ArgumentValue(v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl, ToFlexibleArrayBufferView, + Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, + ResizableAllowance::kDisallowResizable, +@@ -888,13 +878,12 @@ T NativeValueTraits +-T NativeValueTraits, +- typename std::enable_if_t< +- std::is_base_of::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++T NativeValueTraits>::ArgumentValue( ++ v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl< + RecipeTrait, ToFlexibleArrayBufferView, Nullablity::kIsNotNullable, + BufferSizeCheck::kDoNotCheck, ResizableAllowance::kDisallowResizable, +@@ -905,13 +894,12 @@ T NativeValueTraits, + // Nullable [AllowShared, FlexibleArrayBufferView] ArrayBufferView + + template +-T NativeValueTraits, +- typename std::enable_if_t< +- std::is_base_of::value>>:: +- ArgumentValue(v8::Isolate* isolate, +- int argument_index, +- v8::Local value, +- ExceptionState& exception_state) { ++ requires std::derived_from ++T NativeValueTraits>::ArgumentValue( ++ v8::Isolate* isolate, ++ int argument_index, ++ v8::Local value, ++ ExceptionState& exception_state) { + return ArgumentValueImpl, ToFlexibleArrayBufferView, + Nullablity::kIsNullable, BufferSizeCheck::kCheck, + ResizableAllowance::kDisallowResizable, +diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h +index 899929dcf49f9..5011503dcf1c0 100644 +--- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h ++++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h +@@ -5,6 +5,9 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_ + #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_ + ++#include ++#include ++ + #include "third_party/abseil-cpp/absl/types/optional.h" + #include "third_party/blink/renderer/bindings/core/v8/idl_types.h" + #include "third_party/blink/renderer/bindings/core/v8/native_value_traits.h" +@@ -715,9 +718,8 @@ struct CORE_EXPORT NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t::value>> { ++ requires std::derived_from ++struct NativeValueTraits { + // NotShared or MaybeShared should be used instead. + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -729,9 +731,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t::value>> { ++ requires std::derived_from ++struct NativeValueTraits> { + // NotShared or MaybeShared should be used instead. + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -743,9 +744,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- NotShared, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits> + : public NativeValueTraitsBase> { + static NotShared NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -758,9 +758,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable>, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits>> + : public NativeValueTraitsBase> { + static NotShared NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -773,9 +772,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- MaybeShared, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits> + : public NativeValueTraitsBase> { + static MaybeShared NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -788,9 +786,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLBufferSourceTypeNoSizeLimit>, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits>> + : public NativeValueTraitsBase> { + // FlexibleArrayBufferView uses this in its implementation, so we cannot + // delete it. +@@ -805,9 +802,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable>, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits>> + : public NativeValueTraitsBase> { + static MaybeShared NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -820,9 +816,9 @@ struct NativeValueTraits< + }; + + template ++ requires std::derived_from + struct NativeValueTraits< +- IDLNullable>>, +- typename std::enable_if_t::value>> ++ IDLNullable>>> + : public NativeValueTraitsBase> { + // BufferSourceTypeNoSizeLimit must be used only as arguments. + static MaybeShared NativeValue(v8::Isolate* isolate, +@@ -836,11 +832,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t< +- std::is_base_of::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + // FlexibleArrayBufferView must be used only as arguments. + static T NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -853,10 +846,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLBufferSourceTypeNoSizeLimit, +- typename std::enable_if_t< +- std::is_base_of::value>> ++ requires std::derived_from ++struct NativeValueTraits> + : public NativeValueTraitsBase { + // BufferSourceTypeNoSizeLimit and FlexibleArrayBufferView must be used only + // as arguments. +@@ -871,11 +862,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t< +- std::is_base_of::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits> : public NativeValueTraitsBase { + // FlexibleArrayBufferView must be used only as arguments. + static T NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -1134,9 +1122,8 @@ NativeValueTraits>::NativeValue( + } + + template +-struct NativeValueTraits>, +- typename std::enable_if_t< +- NativeValueTraits>::has_null_value>> ++ requires NativeValueTraits>::has_null_value ++struct NativeValueTraits>> + : public NativeValueTraitsBase>*> { + using ImplType = typename NativeValueTraits>::ImplType*; + +@@ -1203,9 +1190,8 @@ struct NativeValueTraits> + : public NativeValueTraits> {}; + + template +-struct NativeValueTraits>, +- typename std::enable_if_t< +- NativeValueTraits>::has_null_value>> ++ requires NativeValueTraits>::has_null_value ++struct NativeValueTraits>> + : public NativeValueTraits>> {}; + + // Record types +@@ -1335,10 +1321,8 @@ struct NativeValueTraits> + + // Callback function types + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1361,9 +1345,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits> + : public NativeValueTraitsBase> { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -1392,10 +1375,8 @@ struct NativeValueTraits< + + // Callback interface types + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1418,9 +1399,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits> + : public NativeValueTraitsBase> { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -1449,11 +1429,8 @@ struct NativeValueTraits< + + // Dictionary types + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t< +- std::is_base_of::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1464,14 +1441,11 @@ struct NativeValueTraits< + // We don't support nullable dictionary types in general since it's quite + // confusing and often misused. + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t< +- std::is_base_of::value && +- (std::is_same::value || +- std::is_same::value || +- std::is_same::value)>> +- : public NativeValueTraitsBase { ++ requires std::derived_from && ++ (std::same_as || ++ std::same_as || ++ std::same_as) ++struct NativeValueTraits> : public NativeValueTraitsBase { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1483,11 +1457,8 @@ struct NativeValueTraits< + + // Enumeration types + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t< +- std::is_base_of::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + static T NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1497,10 +1468,8 @@ struct NativeValueTraits< + + // Interface types + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + static inline T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1528,9 +1497,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t::value>> ++ requires std::derived_from ++struct NativeValueTraits> + : public NativeValueTraitsBase> { + static inline T* NativeValue(v8::Isolate* isolate, + v8::Local value, +@@ -1565,10 +1533,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- T, +- typename std::enable_if_t::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits : public NativeValueTraitsBase { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1584,10 +1550,8 @@ struct NativeValueTraits< + }; + + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t::value>> +- : public NativeValueTraitsBase { ++ requires std::derived_from ++struct NativeValueTraits> : public NativeValueTraitsBase { + static T* NativeValue(v8::Isolate* isolate, + v8::Local value, + ExceptionState& exception_state) { +@@ -1608,9 +1572,8 @@ struct NativeValueTraits< + + // Nullable types + template +-struct NativeValueTraits< +- IDLNullable, +- typename std::enable_if_t::has_null_value>> ++ requires(!NativeValueTraits::has_null_value) ++struct NativeValueTraits> + : public NativeValueTraitsBase> { + // https://webidl.spec.whatwg.org/#es-nullable-type + using ImplType = +@@ -1642,9 +1605,8 @@ struct NativeValueTraits>>; + + // Optional types + template +-struct NativeValueTraits, +- typename std::enable_if_t::ImplType>::value>> ++ requires std::is_arithmetic_v::ImplType> ++struct NativeValueTraits> + : public NativeValueTraitsBase::ImplType> { + using ImplType = typename NativeValueTraits::ImplType; + +@@ -1666,9 +1628,8 @@ struct NativeValueTraits, + }; + + template +-struct NativeValueTraits, +- typename std::enable_if_t::ImplType>::value>> ++ requires std::is_pointer_v::ImplType> ++struct NativeValueTraits> + : public NativeValueTraitsBase::ImplType> { + using ImplType = typename NativeValueTraits::ImplType; + diff --git a/chromium-120-workaround_clang_bug-structured_binding.patch b/chromium-121-workaround_clang_bug-structured_binding.patch similarity index 75% rename from chromium-120-workaround_clang_bug-structured_binding.patch rename to chromium-121-workaround_clang_bug-structured_binding.patch index b06e29f2..192b0692 100644 --- a/chromium-120-workaround_clang_bug-structured_binding.patch +++ b/chromium-121-workaround_clang_bug-structured_binding.patch @@ -25,27 +25,29 @@ diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_co DCHECK(document_url.is_valid()); TRACE_EVENT1("ServiceWorker", -diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc ---- chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me 2023-12-03 22:17:50.922083200 +0100 -+++ chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc 2023-12-03 22:22:55.437484343 +0100 -@@ -3447,7 +3447,8 @@ void GridLayoutAlgorithm::PlaceGridItems +diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc +--- chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than 2023-12-19 17:57:56.205197246 +0100 ++++ chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc 2023-12-19 18:10:13.778634531 +0100 +@@ -3527,8 +3527,8 @@ void GridLayoutAlgorithm::PlaceGridItems DCHECK(out_row_break_between); - const auto& container_space = ConstraintSpace(); + const auto& container_space = GetConstraintSpace(); - const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData(); +- + const auto& [grid_items, l_d, tree_size] = sizing_tree.TreeRootData(); + const auto& layout_data = l_d; - const auto* cached_layout_subtree = container_space.GetGridLayoutSubtree(); const auto container_writing_direction = -@@ -3611,7 +3612,9 @@ void GridLayoutAlgorithm::PlaceGridItems + container_space.GetWritingDirection(); +@@ -3691,8 +3691,9 @@ void GridLayoutAlgorithm::PlaceGridItems // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true. - const auto& constraint_space = ConstraintSpace(); + const auto& constraint_space = GetConstraintSpace(); - const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData(); +- + const auto& [g_i, l_d, tree_size] = sizing_tree.TreeRootData(); + const auto& grid_items = g_i; + const auto& layout_data = l_d; - const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree(); const auto container_writing_direction = + constraint_space.GetWritingDirection(); diff --git a/chromium.spec b/chromium.spec index e5b689cd..c0309aa2 100644 --- a/chromium.spec +++ b/chromium.spec @@ -186,6 +186,12 @@ %global use_qt6 0 %endif +# disable due to gcc-14 bug +%if 0%{?fedora} > 39 +%global use_qt6 0 +%global use_qt 0 +%endif + # enable gtk3 by default %global gtk3 1 @@ -285,8 +291,8 @@ %endif Name: chromium%{chromium_channel} -Version: 120.0.6099.224 -Release: 2%{?dist} +Version: 121.0.6167.71 +Release: 1%{?dist} Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use Url: http://www.chromium.org/Home License: BSD-3-Clause AND LGPL-2.1-or-later AND Apache-2.0 AND IJG AND MIT AND GPL-2.0-or-later AND ISC AND OpenSSL AND (MPL-1.1 OR GPL-2.0-only OR LGPL-2.0-only) @@ -378,36 +384,37 @@ Patch108: chromium-118-el7_v4l2_quantization.patch Patch109: chromium-114-wireless-el7.patch Patch110: chromium-115-buildflag-el7.patch Patch111: chromium-116-constexpr.patch -Patch112: chromium-117-el7-default_constructor.patch # old clang on el7 -Patch113: chromium-120-el7-clang-version-warning.patch +Patch113: chromium-121-el7-clang-version-warning.patch Patch114: chromium-120-el7-clang-build-failure.patch # system ffmpeg -# need for old ffmpeg 5.x on epel9 and fedora 37 +# need for old ffmpeg 5.x on epel9 Patch115: chromium-107-ffmpeg-5.x-duration.patch # disable the check Patch116: chromium-107-proprietary-codecs.patch # fix tab crash with SIGTRAP error when using system ffmpeg Patch117: chromium-118-sigtrap_system_ffmpeg.patch +# need for old ffmpeg 6.0/5.x on epel9 and fedora < 40 +Patch118: chromium-121-system-old-ffmpeg.patch # revert AV1 VAAPI video encode due to old libva on el9 -Patch130: chromium-119-revert-av1enc-el9.patch +Patch130: chromium-121-revert-av1enc-el9.patch # file conflict with old kernel on el8/el9 Patch140: chromium-118-dma_buf_export_sync_file-conflict.patch # fixes for old clang version in fedora < 38 end epel < 8 (old clang <= 15) # compiler build errors, no matching constructor for initialization -Patch300: chromium-120-no_matching_constructor.patch +Patch300: chromium-121-no_matching_constructor.patch Patch301: chromium-115-compiler-SkColor4f.patch # workaround for clang bug, https://github.com/llvm/llvm-project/issues/57826 -Patch302: chromium-120-workaround_clang_bug-structured_binding.patch +Patch302: chromium-121-workaround_clang_bug-structured_binding.patch # missing typename -Patch303: chromium-120-typename.patch +Patch303: chromium-121-typename.patch # error: invalid operands to binary expression Patch304: chromium-117-string-convert.patch @@ -416,10 +423,14 @@ Patch306: chromium-119-assert.patch # disable memory tagging in epel7 and epel8 on aarch64 due to new feature IFUNC-Resolver # not supported in old glibc < 2.30, error: fatal error: 'sys/ifunc.h' file not found -Patch307: chromium-120-arm64-memory_tagging.patch +Patch307: chromium-121-arm64-memory_tagging.patch + +# compiler errors on epel +Patch308: chromium-121-v8-c++20.patch +Patch309: chromium-121-constexpr.patch # missing include header files -Patch310: chromium-120-missing-header-files.patch +Patch310: chromium-121-missing-header-files.patch # clang warnings Patch311: chromium-115-clang-warnings.patch @@ -428,24 +439,31 @@ Patch311: chromium-115-clang-warnings.patch Patch312: chromium-119-fstack-protector-strong.patch # build error -Patch351: chromium-117-mnemonic-error.patch +Patch351: chromium-121-mnemonic-error.patch # Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2239523 # https://bugs.chromium.org/p/chromium/issues/detail?id=1145581#c60 # Disable BTI until this is fixed upstream. Patch352: chromium-117-workaround_for_crash_on_BTI_capable_system.patch -# gn workaround for the error: Assignment had no effect -Patch353: chromium-120-gn-workaround-atspi.patch # remove flag split-threshold-for-reg-with-hint, it' not supported in clang <= 17 Patch354: chromium-120-split-threshold-for-reg-with-hint.patch + # error: unknown type name 'nullptr_t' -Patch355: chromium-120-nullptr_t-without-namespace-std.patch +Patch355: chromium-121-nullptr_t-without-namespace-std.patch + # disable FFmpegAllowLists by default to allow external ffmpeg patch356: chromium-120-disable-FFmpegAllowLists.patch + # remove ldflags -Wl,-mllvm,-disable-auto-upgrade-debug-info which is not supported Patch357: chromium-120-clang16-disable-auto-upgrade-debug-info.patch +# set clang_lib path +Patch358: chromium-121-rust-clang_lib.patch + +# python3-invalid-escape-sequence +Patch359: chromium-121-python3-invalid-escape-sequence.patch + # upstream patches # Use chromium-latest.py to generate clean tarball from released build tarballs, found here: @@ -510,6 +528,8 @@ BuildRequires: binutils %endif %endif +BuildRequires: rustc + # build with system ffmpeg-free %if ! %{bundleffmpegfree} BuildRequires: pkgconfig(libavcodec) @@ -999,6 +1019,7 @@ udev. %endif %patch -P116 -p1 -b .prop-codecs %patch -P117 -p1 -b .sigtrap_system_ffmpeg +%patch -P118 -p1 -b .system-old-ffmpeg %endif # EPEL specific patches @@ -1014,9 +1035,14 @@ udev. %patch -P109 -p1 -b .wireless %patch -P110 -p1 -b .buildflag-el7 %patch -P111 -p1 -b .constexpr -%patch -P112 -p1 -b .default_constructor %patch -P113 -p1 -b .el7-clang-version-warning %patch -P114 -p1 -R -b .clang-build-failure +%patch -P300 -p1 -b .no_matching_constructor +%patch -P301 -p1 -b .workaround_clang-SkColor4f +%patch -P302 -p1 -b .workaround_clang_bug-structured_binding +%patch -P303 -p1 -b .typename +%patch -P304 -p1 -b .string-convert +%patch -P306 -p1 -b .assert %endif %if 0%{?rhel} == 8 || 0%{?rhel} == 9 @@ -1027,23 +1053,17 @@ udev. %patch -P130 -p1 -b .revert-av1enc %endif -%if %{clang} -%if 0%{?rhel} < 8 || 0%{?fedora} < 38 -%patch -P300 -p1 -b .no_matching_constructor -%patch -P301 -p1 -b .workaround_clang-SkColor4f -%patch -P302 -p1 -b .workaround_clang_bug-structured_binding -%patch -P303 -p1 -b .typename -%patch -P304 -p1 -b .string-convert -%patch -P306 -p1 -b .assert -%endif -%endif - %ifarch aarch64 %if 0%{?rhel} <= 8 %patch -P307 -p1 -b .memory_tagging %endif %endif +%if 0%{?rhel} || 0%{?fedora} < 39 +%patch -P308 -p1 -R -b .v8-c++20 +%patch -P309 -p1 -b .constexpr +%endif + %patch -P310 -p1 -b .missing-header-files %patch -P311 -p1 -b .clang-warnings %patch -P312 -p1 -b .fstack-protector-strong @@ -1054,13 +1074,14 @@ udev. %patch -P352 -p1 -b .workaround_for_crash_on_BTI_capable_system %endif -%patch -P353 -p1 -b .gn-workaround-atspi %patch -P354 -p1 -b .revert-split-threshold-for-reg-with-hint %if ! %{use_custom_libcxx} %patch -P355 -p1 -b .nullptr_t-without-namespace-std %endif %patch -P356 -p1 -b .disable-FFmpegAllowLists %patch -P357 -p1 -b .clang16-disable-auto-upgrade-debug-info +%patch -P358 -p1 -b .rust-clang_lib +%patch -P359 -p1 -b .python3-invalid-escape-sequence # Change shebang in all relevant files in this directory and all subdirectories # See `man find` for how the `-exec command {} +` syntax works @@ -1177,6 +1198,16 @@ export CXXFLAGS . /opt/rh/%{toolset}-%{dts_version}/enable %endif +# need for error: the option `Z` is only accepted on the nightly compiler +export RUSTC_BOOTSTRAP=1 + +# set rustc version +rustc_version="$(rustc --version)" + +# set clang version +clang_version="$(clang --version | sed -n 's/clang version //p' | cut -d. -f1)" +clang_base_path="$(clang --version | grep InstalledDir | cut -d' ' -f2 | sed 's#/bin##')" + # Core defines are flags that are true for both the browser and headless. CHROMIUM_CORE_GN_DEFINES="" # using system toolchain @@ -1192,9 +1223,7 @@ CHROMIUM_CORE_GN_DEFINES+=' is_official_build=true' sed -i 's|OFFICIAL_BUILD|GOOGLE_CHROME_BUILD|g' tools/generate_shim_headers/generate_shim_headers.py %endif -%if 0%{?rhel} || 0%{?fedora} < 39 CHROMIUM_CORE_GN_DEFINES+=' chrome_pgo_phase=0' -%endif %if %{cfi} CHROMIUM_CORE_GN_DEFINES+=' is_cfi=true' @@ -1213,7 +1242,8 @@ CHROMIUM_CORE_GN_DEFINES+=' google_default_client_secret="%{default_client_secre %if %{clang} CHROMIUM_CORE_GN_DEFINES+=' is_clang=true' -CHROMIUM_CORE_GN_DEFINES+=' clang_base_path="%{_prefix}"' +CHROMIUM_CORE_GN_DEFINES+=" clang_base_path=\"$clang_base_path\"" +CHROMIUM_CORE_GN_DEFINES+=" clang_version=\"$clang_version\"" CHROMIUM_CORE_GN_DEFINES+=' clang_use_chrome_plugins=false' CHROMIUM_CORE_GN_DEFINES+=' use_lld=true' %else @@ -1221,8 +1251,9 @@ CHROMIUM_CORE_GN_DEFINES+=' is_clang=false' CHROMIUM_CORE_GN_DEFINES+=' use_lld=false' %endif -# disable rust, it's only using for testing -CHROMIUM_CORE_GN_DEFINES+=' enable_rust=false' +# enable system rust +CHROMIUM_CORE_GN_DEFINES+=' rust_sysroot_absolute="%{_prefix}"' +CHROMIUM_CORE_GN_DEFINES+=" rustc_version=\"$rustc_version\"" CHROMIUM_CORE_GN_DEFINES+=' use_sysroot=false disable_fieldtrial_testing_config=true' @@ -1766,6 +1797,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %{chromium_path}/chromedriver %changelog +* Tue Jan 23 2024 Than Ngo - 121.0.6167.71-1 +- update to 121.0.6167.71 + * Tue Jan 23 2024 Fedora Release Engineering - 120.0.6099.224-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/sources b/sources index fd1b23b1..08355272 100644 --- a/sources +++ b/sources @@ -2,4 +2,4 @@ SHA512 (node-v20.6.1-linux-arm64.tar.xz) = adfcaf2c22614797fd69fb46d94c1cbf64dea SHA512 (node-v20.6.1-linux-x64.tar.xz) = 7e15c05041a9a50f0046266aadb2e092a5aefbec19be1c7c809471add520cb57c7df3c47d88b1888b29bf2979dca3c92adddfd965370fa2a9da4ea02186464fd SHA512 (linux-arm64-0.19.2.tgz) = 8a0d8fec6786fffcd6954d00820037a55d61e60762c74300df0801f8db27057562c221a063bedfb8df56af9ba80abb366336987e881782c5996e6f871abd3dc6 SHA512 (linux-x64-0.19.2.tgz) = a31cc74c4bfa54f9b75d735a1cfc944d3b5efb7c06bfba9542da9a642ae0b2d235ea00ae84d3ad0572c406405110fe7b61377af0fd15803806ef78d20fc6f05d -SHA512 (chromium-120.0.6099.224-clean.tar.xz) = 0140125632c0a629f7aa9217aad078656e4e2e26c1849e9cf287d1fbaecbb1dc2e3baf1cdbdb3a473f8a27339e8e7f853fa1bdb30d4faae8fcfdde8fc2370874 +SHA512 (chromium-121.0.6167.71-clean.tar.xz) = be9ef1298b6f45f0b9d04fa2315b7f2bb0af40708143602da46a898426994e03e32ef52135e7ac1dd234fa13a3976baccdf268fb7d5f8134693922f73e5681aa