diff --git a/.chromium.metadata b/.chromium.metadata index 999d345e..300895ef 100644 --- a/.chromium.metadata +++ b/.chromium.metadata @@ -1,4 +1,4 @@ -8e7fe8dd9ce8087ad1ecb87269149807a72952ae SOURCES/chromium-122.0.6261.128-clean.tar.xz +6ac47529406d1bfcc6dcc263020bb707b37e17bd SOURCES/chromium-123.0.6312.58-clean.tar.xz 7e5d2c7864c5c83ec789b59c77cd9c20d2594916 SOURCES/linux-arm64-0.19.2.tgz dea187019741602d57aaf189a80abba261fbd2aa SOURCES/linux-x64-0.19.2.tgz 3e94bb4f999c636293bc745b02d98e7925da5616 SOURCES/node-v20.6.1-linux-arm64.tar.xz diff --git a/.gitignore b/.gitignore index 001985ed..5e7ad1a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -SOURCES/chromium-122.0.6261.128-clean.tar.xz +SOURCES/chromium-123.0.6312.58-clean.tar.xz SOURCES/linux-arm64-0.19.2.tgz SOURCES/linux-x64-0.19.2.tgz SOURCES/node-v20.6.1-linux-arm64.tar.xz diff --git a/SOURCES/chromium-119-fstack-protector-strong.patch b/SOURCES/chromium-119-fstack-protector-strong.patch deleted file mode 100644 index 688938d1..00000000 --- a/SOURCES/chromium-119-fstack-protector-strong.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up chromium-119.0.6045.199/build/config/compiler/BUILD.gn.me chromium-119.0.6045.199/build/config/compiler/BUILD.gn ---- chromium-119.0.6045.199/build/config/compiler/BUILD.gn.me 2023-12-02 12:19:01.138079722 +0100 -+++ chromium-119.0.6045.199/build/config/compiler/BUILD.gn 2023-12-02 12:21:05.835322037 +0100 -@@ -379,7 +379,7 @@ config("compiler") { - cflags += [ "-fno-stack-protector" ] - } else if (current_os != "aix") { - # Not available on aix. -- cflags += [ "-fstack-protector" ] -+ cflags += [ "-fstack-protector-strong" ] - } - } - } diff --git a/SOURCES/chromium-120-el7-clang-build-failure.patch b/SOURCES/chromium-120-el7-clang-build-failure.patch deleted file mode 100644 index 96258e67..00000000 --- a/SOURCES/chromium-120-el7-clang-build-failure.patch +++ /dev/null @@ -1,230 +0,0 @@ -commit 57526b8dc45b2e6c67bba7306f1dde73b1f2910c -Author: sisidovski -Date: Tue Oct 24 09:32:49 2023 +0000 - - Remove unused items from the RaceNetworkRequest hashmap - - When the AutoPreload or the race-network-and-fetch-handler option in the - static routing API is enabled, network requests are dispatched and - URLLoaderFactories are held in a hashmap in ServiceWorkerGlobalScope. - Those are consumed inside the fetch handler when fetch(e.request) is - called. But if the fetch handler doesn't call fetch() e.g. fallback, - those hashmap items does not have a chance to be removed. - - This CL changes the hashmap items to be removed when the fetch event - finishes, and the URLLoaderFactory is still not consumed at that time. - This may loose the dedupe capability if fetch() is called later e.g. - setTimeout(() => fetch()), but it makes sense to prioritize keeping the - hashmap small. - - Change-Id: I51bdc9d5eb5185f2b5b4df6ee785715b1180c848 - Bug: 1492640 - Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4964840 - Reviewed-by: Minoru Chikamune - Commit-Queue: Yoshisato Yanagisawa - Reviewed-by: Yoshisato Yanagisawa - Cr-Commit-Position: refs/heads/main@{#1214064} - -diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc -index 02887edc10883..b3624fc0162df 100644 ---- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc -+++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc -@@ -46,6 +46,7 @@ - #include "services/network/public/cpp/cross_origin_embedder_policy.h" - #include "services/network/public/mojom/cookie_manager.mojom-blink.h" - #include "services/network/public/mojom/cross_origin_embedder_policy.mojom.h" -+#include "services/network/public/mojom/url_loader_factory.mojom-blink.h" - #include "third_party/blink/public/common/features.h" - #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" - #include "third_party/blink/public/mojom/notifications/notification.mojom-blink.h" -@@ -1096,6 +1097,10 @@ void ServiceWorkerGlobalScope::DidHandleFetchEvent( - TRACE_ID_WITH_SCOPE(kServiceWorkerGlobalScopeTraceScope, - TRACE_ID_LOCAL(event_id)), - TRACE_EVENT_FLAG_FLOW_IN, "status", MojoEnumToString(status)); -+ -+ // Delete the URLLoaderFactory for the RaceNetworkRequest if it's not used. -+ RemoveItemFromRaceNetworkRequests(event_id); -+ - if (!RunEventCallback(&fetch_event_callbacks_, event_queue_.get(), event_id, - status)) { - // The event may have been aborted. Its response callback also needs to be -@@ -1495,6 +1500,7 @@ void ServiceWorkerGlobalScope::AbortCallbackForFetchEvent( - response_callback_iter->value->TakeValue().reset(); - fetch_response_callbacks_.erase(response_callback_iter); - } -+ RemoveItemFromRaceNetworkRequests(event_id); - - // Run the event callback with the error code. - auto event_callback_iter = fetch_event_callbacks_.find(event_id); -@@ -1551,52 +1557,11 @@ void ServiceWorkerGlobalScope::StartFetchEvent( - - if (params->race_network_request_loader_factory && - params->request->service_worker_race_network_request_token) { -- auto insert_result = race_network_request_loader_factories_.insert( -- String(params->request->service_worker_race_network_request_token -- ->ToString()), -- std::move(params->race_network_request_loader_factory)); -- -- // DumpWithoutCrashing if the token is empty, or not inserted as a new entry -- // to |race_network_request_loader_factories_|. -- // TODO(crbug.com/1492640) Remove DumpWithoutCrashing once we collect data -- // and identify the cause. -- static bool has_dumped_without_crashing_for_empty_token = false; -- static bool has_dumped_without_crashing_for_not_new_entry = false; -- if (!has_dumped_without_crashing_for_empty_token && -- params->request->service_worker_race_network_request_token -- ->is_empty()) { -- has_dumped_without_crashing_for_empty_token = true; -- SCOPED_CRASH_KEY_BOOL( -- "SWGlobalScope", "empty_race_token", -- params->request->service_worker_race_network_request_token -- ->is_empty()); -- SCOPED_CRASH_KEY_STRING64( -- "SWGlobalScope", "race_token_string", -- params->request->service_worker_race_network_request_token -- ->ToString()); -- SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", -- insert_result.is_new_entry); -- SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", -- params->request->url.GetString().Utf8()); -- base::debug::DumpWithoutCrashing(); -- } -- if (!has_dumped_without_crashing_for_not_new_entry && -- !insert_result.is_new_entry) { -- has_dumped_without_crashing_for_not_new_entry = true; -- SCOPED_CRASH_KEY_BOOL( -- "SWGlobalScope", "empty_race_token", -- params->request->service_worker_race_network_request_token -- ->is_empty()); -- SCOPED_CRASH_KEY_STRING64( -- "SWGlobalScope", "race_token_string", -- params->request->service_worker_race_network_request_token -- ->ToString()); -- SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", -- insert_result.is_new_entry); -- SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", -- params->request->url.GetString().Utf8()); -- base::debug::DumpWithoutCrashing(); -- } -+ InsertNewItemToRaceNetworkRequests( -+ event_id, -+ params->request->service_worker_race_network_request_token.value(), -+ std::move(params->race_network_request_loader_factory), -+ params->request->url); - } - - Request* request = Request::Create( -@@ -2808,12 +2773,71 @@ bool ServiceWorkerGlobalScope::SetAttributeEventListener( - absl::optional> - ServiceWorkerGlobalScope::FindRaceNetworkRequestURLLoaderFactory( - const base::UnguessableToken& token) { -- mojo::PendingRemote result = -- race_network_request_loader_factories_.Take(String(token.ToString())); -+ std::unique_ptr result = -+ race_network_requests_.Take(String(token.ToString())); - if (result) { -- return result; -+ race_network_request_fetch_event_ids_.erase(result->fetch_event_id); -+ return absl::optional< -+ mojo::PendingRemote>( -+ std::move(result->url_loader_factory)); - } - return absl::nullopt; - } - -+void ServiceWorkerGlobalScope::InsertNewItemToRaceNetworkRequests( -+ int fetch_event_id, -+ const base::UnguessableToken& token, -+ mojo::PendingRemote -+ url_loader_factory, -+ const KURL& request_url) { -+ auto race_network_request_token = String(token.ToString()); -+ auto info = std::make_unique( -+ fetch_event_id, race_network_request_token, -+ std::move(url_loader_factory)); -+ race_network_request_fetch_event_ids_.insert(fetch_event_id, info.get()); -+ auto insert_result = race_network_requests_.insert(race_network_request_token, -+ std::move(info)); -+ -+ // DumpWithoutCrashing if the token is empty, or not inserted as a new entry -+ // to |race_network_request_loader_factories_|. -+ // TODO(crbug.com/1492640) Remove DumpWithoutCrashing once we collect data -+ // and identify the cause. -+ static bool has_dumped_without_crashing_for_empty_token = false; -+ static bool has_dumped_without_crashing_for_not_new_entry = false; -+ if (!has_dumped_without_crashing_for_empty_token && token.is_empty()) { -+ has_dumped_without_crashing_for_empty_token = true; -+ SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "empty_race_token", -+ token.is_empty()); -+ SCOPED_CRASH_KEY_STRING64("SWGlobalScope", "race_token_string", -+ token.ToString()); -+ SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", -+ insert_result.is_new_entry); -+ SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", -+ request_url.GetString().Utf8()); -+ base::debug::DumpWithoutCrashing(); -+ } -+ if (!has_dumped_without_crashing_for_not_new_entry && -+ !insert_result.is_new_entry) { -+ has_dumped_without_crashing_for_not_new_entry = true; -+ SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "empty_race_token", -+ token.is_empty()); -+ SCOPED_CRASH_KEY_STRING64("SWGlobalScope", "race_token_string", -+ token.ToString()); -+ SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", -+ insert_result.is_new_entry); -+ SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", -+ request_url.GetString().Utf8()); -+ base::debug::DumpWithoutCrashing(); -+ } -+} -+ -+void ServiceWorkerGlobalScope::RemoveItemFromRaceNetworkRequests( -+ int fetch_event_id) { -+ RaceNetworkRequestInfo* info = -+ race_network_request_fetch_event_ids_.Take(fetch_event_id); -+ if (info) { -+ race_network_requests_.erase(info->token); -+ } -+} -+ - } // namespace blink -diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h -index 46c431b395825..ac4cac0b1d8fb 100644 ---- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h -+++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h -@@ -623,6 +623,14 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final - // ServiceWorker.FetchEvent.QueuingTime histogram. - void RecordQueuingTime(base::TimeTicks created_time); - -+ void InsertNewItemToRaceNetworkRequests( -+ int fetch_event_id, -+ const base::UnguessableToken& token, -+ mojo::PendingRemote -+ url_loader_factory, -+ const KURL& request_url); -+ void RemoveItemFromRaceNetworkRequests(int fetch_event_id); -+ - Member clients_; - Member registration_; - Member<::blink::ServiceWorker> service_worker_; -@@ -768,10 +776,17 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final - - blink::BlinkStorageKey storage_key_; - -+ struct RaceNetworkRequestInfo { -+ int fetch_event_id; -+ String token; -+ mojo::PendingRemote -+ url_loader_factory; -+ }; - // TODO(crbug.com/918702) WTF::HashMap cannot use base::UnguessableToken as a - // key. As a workaround uses WTF::String as a key instead. -- HashMap> -- race_network_request_loader_factories_; -+ HashMap> -+ race_network_requests_; -+ HashMap race_network_request_fetch_event_ids_; - - HeapMojoAssociatedRemote - remote_associated_interfaces_{this}; diff --git a/SOURCES/chromium-121-mnemonic-error.patch b/SOURCES/chromium-121-mnemonic-error.patch deleted file mode 100644 index 61239e7f..00000000 --- a/SOURCES/chromium-121-mnemonic-error.patch +++ /dev/null @@ -1,12 +0,0 @@ -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/SOURCES/chromium-122-python3-assignment-expressions.patch b/SOURCES/chromium-122-python3-assignment-expressions.patch deleted file mode 100644 index 61ce0378..00000000 --- a/SOURCES/chromium-122-python3-assignment-expressions.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py.me chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py ---- chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py.me 2024-02-23 12:04:45.451423995 +0100 -+++ chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py 2024-02-23 12:18:04.099824392 +0100 -@@ -124,7 +124,8 @@ def _GenerateH(basepath, fileroot, head, - f.write(u'#include \n') - f.write(u'\n') - -- if system_headers := schema.get(u'system-headers', []): -+ system_headers = schema.get(u'system-headers', []) -+ if system_headers: - for header in system_headers: - f.write(u'#include <%s>\n' % header) - f.write(u'\n') diff --git a/SOURCES/chromium-122-static-assert.patch b/SOURCES/chromium-122-static-assert.patch deleted file mode 100644 index b24439f6..00000000 --- a/SOURCES/chromium-122-static-assert.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit 04866680f4f9a8475ae3795ad6ed59649ba478d7 -Author: Jose Dapena Paz -Date: Tue Jan 23 12:04:05 2024 +0000 - - libstdc++: fix static assertion in NodeUuidEquality - - libstdc++ equality checks in static assertion that it is possible to - compare for equality base::Uuid to BookmarkNode*. This was a missing - operator in NodeUuidEquality that this changeset adds. - - Bug: 957519 - Change-Id: Icc9809cb43d321f0b3e3394ef27ab55672aec5e7 - Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5227686 - Reviewed-by: Mikel Astiz - Commit-Queue: José Dapena Paz - Cr-Commit-Position: refs/heads/main@{#1250753} - -diff --git a/components/bookmarks/browser/uuid_index.h b/components/bookmarks/browser/uuid_index.h -index 77cb1a1a54dd9..639d6fefcd831 100644 ---- a/components/bookmarks/browser/uuid_index.h -+++ b/components/bookmarks/browser/uuid_index.h -@@ -23,6 +23,10 @@ class NodeUuidEquality { - bool operator()(const BookmarkNode* n1, const base::Uuid& uuid2) const { - return n1->uuid() == uuid2; - } -+ -+ bool operator()(const base::Uuid& uuid1, const BookmarkNode* n2) const { -+ return uuid1 == n2->uuid(); -+ } - }; - - // Used to hash BookmarkNode instances by UUID. diff --git a/SOURCES/chromium-122-unique_ptr.patch b/SOURCES/chromium-122-unique_ptr.patch deleted file mode 100644 index 9462ae6d..00000000 --- a/SOURCES/chromium-122-unique_ptr.patch +++ /dev/null @@ -1,44 +0,0 @@ -commit 5517d167c083885847a08a83b96da03b1eb2bc3e -Author: Jose Dapena Paz -Date: Tue Jan 23 15:34:35 2024 +0000 - - libstdc++: do not require including unique_ptr in header - - Including std::unique_ptr declaration initial value requires - declaration of contained type. - - Bug: 957519 - Change-Id: If9b0362b6cea48a395041faa82f83b6f48b98403 - Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5225137 - Reviewed-by: Caroline Rising - Commit-Queue: José Dapena Paz - Cr-Commit-Position: refs/heads/main@{#1250826} - -diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h -index ec3e34a86f4c5..32ca27b6d126b 100644 ---- a/chrome/browser/ui/views/toolbar/toolbar_view.h -+++ b/chrome/browser/ui/views/toolbar/toolbar_view.h -@@ -311,8 +311,7 @@ class ToolbarView : public views::AccessiblePaneView, - AppMenuIconController app_menu_icon_controller_; - - std::unique_ptr chrome_labs_model_; -- std::unique_ptr -- extensions_toolbar_coordinator_ = nullptr; -+ std::unique_ptr extensions_toolbar_coordinator_; - - // Controls whether or not a home button should be shown on the toolbar. - BooleanPrefMember show_home_button_; -diff --git a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h -index 3046c543c7c8e..46ff5d40ffad3 100644 ---- a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h -+++ b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h -@@ -150,8 +150,7 @@ class WebAppToolbarButtonContainer : public views::View, - std::unique_ptr page_action_icon_controller_; - int page_action_insertion_point_ = 0; - -- std::unique_ptr -- extensions_toolbar_coordinator_ = nullptr; -+ std::unique_ptr extensions_toolbar_coordinator_; - - // All remaining members are owned by the views hierarchy. - raw_ptr web_app_origin_text_ = nullptr; diff --git a/SOURCES/chromium-122-constexpr.patch b/SOURCES/chromium-123-constexpr.patch similarity index 68% rename from SOURCES/chromium-122-constexpr.patch rename to SOURCES/chromium-123-constexpr.patch index 282066cc..aa59c3e5 100644 --- a/SOURCES/chromium-122-constexpr.patch +++ b/SOURCES/chromium-123-constexpr.patch @@ -25,15 +25,6 @@ diff -up chromium-122.0.6261.29/base/types/strong_alias.h.me chromium-122.0.6261 diff -up chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h.constexpr chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h --- chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h.constexpr 2024-02-07 19:49:31.000000000 +0100 +++ chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h 2024-02-13 11:12:52.913338699 +0100 -@@ -29,7 +29,7 @@ class ContextCollection { - ContextCollection(const ContextCollection& other); - ContextCollection& operator=(const ContextCollection& other); - -- friend constexpr bool operator==(const ContextCollection&, -+ friend bool operator==(const ContextCollection&, - const ContextCollection&) = default; - - // Adds `context` to the collection. @@ -67,7 +67,7 @@ struct QueryParams { QueryParams(const QueryParams& other); QueryParams& operator=(const QueryParams& other); @@ -43,3 +34,27 @@ diff -up chromium-122.0.6261.29/components/performance_manager/resource_attribut const QueryParams&) = default; // Resource types to measure. +diff -up chromium-123.0.6312.46/components/performance_manager/resource_attribution/context_collection.h.me chromium-123.0.6312.46/components/performance_manager/resource_attribution/context_collection.h +--- chromium-123.0.6312.46/components/performance_manager/resource_attribution/context_collection.h.me 2024-03-17 11:57:22.097161565 +0100 ++++ chromium-123.0.6312.46/components/performance_manager/resource_attribution/context_collection.h 2024-03-17 22:18:25.442101825 +0100 +@@ -28,7 +28,7 @@ class ContextCollection { + ContextCollection(const ContextCollection& other); + ContextCollection& operator=(const ContextCollection& other); + +- friend constexpr bool operator==(const ContextCollection&, ++ friend bool operator==(const ContextCollection&, + const ContextCollection&) = default; + + // Adds `context` to the collection. +diff -up chromium-123.0.6312.46/components/autofill/core/browser/metrics/log_event.h.me chromium-123.0.6312.46/components/autofill/core/browser/metrics/log_event.h +--- chromium-123.0.6312.46/components/autofill/core/browser/metrics/log_event.h.me 2024-03-16 23:38:10.437128249 +0100 ++++ chromium-123.0.6312.46/components/autofill/core/browser/metrics/log_event.h 2024-03-16 23:59:50.868080652 +0100 +@@ -57,7 +57,7 @@ struct IsRequired { + // This function is not defined and consteval. Therefore, any evaluation will + // fail and fail at compile time. + template +- consteval operator T(); // NOLINT ++ operator T(); // NOLINT + }; + + } // namespace internal diff --git a/SOURCES/chromium-123-el7-clang-build-failure.patch b/SOURCES/chromium-123-el7-clang-build-failure.patch new file mode 100644 index 00000000..4b04d7ad --- /dev/null +++ b/SOURCES/chromium-123-el7-clang-build-failure.patch @@ -0,0 +1,228 @@ +commit 57526b8dc45b2e6c67bba7306f1dde73b1f2910c +Author: sisidovski +Date: Tue Oct 24 09:32:49 2023 +0000 + + Remove unused items from the RaceNetworkRequest hashmap + + When the AutoPreload or the race-network-and-fetch-handler option in the + static routing API is enabled, network requests are dispatched and + URLLoaderFactories are held in a hashmap in ServiceWorkerGlobalScope. + Those are consumed inside the fetch handler when fetch(e.request) is + called. But if the fetch handler doesn't call fetch() e.g. fallback, + those hashmap items does not have a chance to be removed. + + This CL changes the hashmap items to be removed when the fetch event + finishes, and the URLLoaderFactory is still not consumed at that time. + This may loose the dedupe capability if fetch() is called later e.g. + setTimeout(() => fetch()), but it makes sense to prioritize keeping the + hashmap small. + + Change-Id: I51bdc9d5eb5185f2b5b4df6ee785715b1180c848 + Bug: 1492640 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4964840 + Reviewed-by: Minoru Chikamune + Commit-Queue: Yoshisato Yanagisawa + Reviewed-by: Yoshisato Yanagisawa + Cr-Commit-Position: refs/heads/main@{#1214064} + +diff -up chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc.me chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc +--- chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc.me 2024-03-18 10:34:27.604707632 +0100 ++++ chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc 2024-03-18 11:52:14.309983505 +0100 +@@ -46,7 +46,6 @@ + #include "services/network/public/cpp/cross_origin_embedder_policy.h" + #include "services/network/public/mojom/cookie_manager.mojom-blink.h" + #include "services/network/public/mojom/cross_origin_embedder_policy.mojom.h" +-#include "services/network/public/mojom/url_loader_factory.mojom-blink.h" + #include "third_party/blink/public/common/features.h" + #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" + #include "third_party/blink/public/mojom/notifications/notification.mojom-blink.h" +@@ -1097,10 +1096,6 @@ void ServiceWorkerGlobalScope::DidHandle + TRACE_ID_WITH_SCOPE(kServiceWorkerGlobalScopeTraceScope, + TRACE_ID_LOCAL(event_id)), + TRACE_EVENT_FLAG_FLOW_IN, "status", MojoEnumToString(status)); +- +- // Delete the URLLoaderFactory for the RaceNetworkRequest if it's not used. +- RemoveItemFromRaceNetworkRequests(event_id); +- + if (!RunEventCallback(&fetch_event_callbacks_, event_queue_.get(), event_id, + status)) { + // The event may have been aborted. Its response callback also needs to be +@@ -1500,7 +1495,6 @@ void ServiceWorkerGlobalScope::AbortCall + response_callback_iter->value->TakeValue().reset(); + fetch_response_callbacks_.erase(response_callback_iter); + } +- RemoveItemFromRaceNetworkRequests(event_id); + + // Run the event callback with the error code. + auto event_callback_iter = fetch_event_callbacks_.find(event_id); +@@ -1588,11 +1582,52 @@ void ServiceWorkerGlobalScope::StartFetc + + if (params->race_network_request_loader_factory && + params->request->service_worker_race_network_request_token) { +- InsertNewItemToRaceNetworkRequests( +- event_id, +- params->request->service_worker_race_network_request_token.value(), +- std::move(params->race_network_request_loader_factory), +- params->request->url); ++ auto insert_result = race_network_request_loader_factories_.insert( ++ String(params->request->service_worker_race_network_request_token ++ ->ToString()), ++ std::move(params->race_network_request_loader_factory)); ++ ++ // DumpWithoutCrashing if the token is empty, or not inserted as a new entry ++ // to |race_network_request_loader_factories_|. ++ // TODO(crbug.com/1492640) Remove DumpWithoutCrashing once we collect data ++ // and identify the cause. ++ static bool has_dumped_without_crashing_for_empty_token = false; ++ static bool has_dumped_without_crashing_for_not_new_entry = false; ++ if (!has_dumped_without_crashing_for_empty_token && ++ params->request->service_worker_race_network_request_token ++ ->is_empty()) { ++ has_dumped_without_crashing_for_empty_token = true; ++ SCOPED_CRASH_KEY_BOOL( ++ "SWGlobalScope", "empty_race_token", ++ params->request->service_worker_race_network_request_token ++ ->is_empty()); ++ SCOPED_CRASH_KEY_STRING64( ++ "SWGlobalScope", "race_token_string", ++ params->request->service_worker_race_network_request_token ++ ->ToString()); ++ SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", ++ insert_result.is_new_entry); ++ SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", ++ params->request->url.GetString().Utf8()); ++ base::debug::DumpWithoutCrashing(); ++ } ++ if (!has_dumped_without_crashing_for_not_new_entry && ++ !insert_result.is_new_entry) { ++ has_dumped_without_crashing_for_not_new_entry = true; ++ SCOPED_CRASH_KEY_BOOL( ++ "SWGlobalScope", "empty_race_token", ++ params->request->service_worker_race_network_request_token ++ ->is_empty()); ++ SCOPED_CRASH_KEY_STRING64( ++ "SWGlobalScope", "race_token_string", ++ params->request->service_worker_race_network_request_token ++ ->ToString()); ++ SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", ++ insert_result.is_new_entry); ++ SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", ++ params->request->url.GetString().Utf8()); ++ base::debug::DumpWithoutCrashing(); ++ } + } + + Request* request = Request::Create( +@@ -2805,71 +2840,12 @@ bool ServiceWorkerGlobalScope::SetAttrib + std::optional> + ServiceWorkerGlobalScope::FindRaceNetworkRequestURLLoaderFactory( + const base::UnguessableToken& token) { +- std::unique_ptr result = +- race_network_requests_.Take(String(token.ToString())); ++ mojo::PendingRemote result = ++ race_network_request_loader_factories_.Take(String(token.ToString())); + if (result) { +- race_network_request_fetch_event_ids_.erase(result->fetch_event_id); +- return std::optional< +- mojo::PendingRemote>( +- std::move(result->url_loader_factory)); ++ return result; + } + return std::nullopt; + } + +-void ServiceWorkerGlobalScope::InsertNewItemToRaceNetworkRequests( +- int fetch_event_id, +- const base::UnguessableToken& token, +- mojo::PendingRemote +- url_loader_factory, +- const KURL& request_url) { +- auto race_network_request_token = String(token.ToString()); +- auto info = std::make_unique( +- fetch_event_id, race_network_request_token, +- std::move(url_loader_factory)); +- race_network_request_fetch_event_ids_.insert(fetch_event_id, info.get()); +- auto insert_result = race_network_requests_.insert(race_network_request_token, +- std::move(info)); +- +- // DumpWithoutCrashing if the token is empty, or not inserted as a new entry +- // to |race_network_request_loader_factories_|. +- // TODO(crbug.com/1492640) Remove DumpWithoutCrashing once we collect data +- // and identify the cause. +- static bool has_dumped_without_crashing_for_empty_token = false; +- static bool has_dumped_without_crashing_for_not_new_entry = false; +- if (!has_dumped_without_crashing_for_empty_token && token.is_empty()) { +- has_dumped_without_crashing_for_empty_token = true; +- SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "empty_race_token", +- token.is_empty()); +- SCOPED_CRASH_KEY_STRING64("SWGlobalScope", "race_token_string", +- token.ToString()); +- SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", +- insert_result.is_new_entry); +- SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", +- request_url.GetString().Utf8()); +- base::debug::DumpWithoutCrashing(); +- } +- if (!has_dumped_without_crashing_for_not_new_entry && +- !insert_result.is_new_entry) { +- has_dumped_without_crashing_for_not_new_entry = true; +- SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "empty_race_token", +- token.is_empty()); +- SCOPED_CRASH_KEY_STRING64("SWGlobalScope", "race_token_string", +- token.ToString()); +- SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry", +- insert_result.is_new_entry); +- SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url", +- request_url.GetString().Utf8()); +- base::debug::DumpWithoutCrashing(); +- } +-} +- +-void ServiceWorkerGlobalScope::RemoveItemFromRaceNetworkRequests( +- int fetch_event_id) { +- RaceNetworkRequestInfo* info = +- race_network_request_fetch_event_ids_.Take(fetch_event_id); +- if (info) { +- race_network_requests_.erase(info->token); +- } +-} +- + } // namespace blink +diff -up chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h.me chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h +--- chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h.me 2024-03-18 10:26:14.905817501 +0100 ++++ chromium-123.0.6312.46/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h 2024-03-18 11:47:58.202198028 +0100 +@@ -623,14 +623,6 @@ class MODULES_EXPORT ServiceWorkerGlobal + // ServiceWorker.FetchEvent.QueuingTime histogram. + void RecordQueuingTime(base::TimeTicks created_time); + +- void InsertNewItemToRaceNetworkRequests( +- int fetch_event_id, +- const base::UnguessableToken& token, +- mojo::PendingRemote +- url_loader_factory, +- const KURL& request_url); +- void RemoveItemFromRaceNetworkRequests(int fetch_event_id); +- + Member clients_; + Member registration_; + Member<::blink::ServiceWorker> service_worker_; +@@ -776,17 +768,10 @@ class MODULES_EXPORT ServiceWorkerGlobal + + blink::BlinkStorageKey storage_key_; + +- struct RaceNetworkRequestInfo { +- int fetch_event_id; +- String token; +- mojo::PendingRemote +- url_loader_factory; +- }; + // TODO(crbug.com/918702) WTF::HashMap cannot use base::UnguessableToken as a + // key. As a workaround uses WTF::String as a key instead. +- HashMap> +- race_network_requests_; +- HashMap race_network_request_fetch_event_ids_; ++ HashMap> ++ race_network_request_loader_factories_; + + HeapMojoAssociatedRemote + remote_associated_interfaces_{this}; diff --git a/SOURCES/chromium-122-el7-default-constructor-involving-anonymous-union.patch b/SOURCES/chromium-123-el7-default-constructor-involving-anonymous-union.patch similarity index 69% rename from SOURCES/chromium-122-el7-default-constructor-involving-anonymous-union.patch rename to SOURCES/chromium-123-el7-default-constructor-involving-anonymous-union.patch index 6e3cdf82..9593ea70 100644 --- a/SOURCES/chromium-122-el7-default-constructor-involving-anonymous-union.patch +++ b/SOURCES/chromium-123-el7-default-constructor-involving-anonymous-union.patch @@ -22,3 +22,15 @@ diff -up chromium-122.0.6261.69/content/browser/interest_group/header_direct_fro HeaderDirectFromSellerSignals::Result::Result( std::optional seller_signals, +diff -up chromium-123.0.6312.46/third_party/pdfium/core/fpdfdoc/cpdf_defaultappearance.cpp.me chromium-123.0.6312.46/third_party/pdfium/core/fpdfdoc/cpdf_defaultappearance.cpp +--- chromium-123.0.6312.46/third_party/pdfium/core/fpdfdoc/cpdf_defaultappearance.cpp.me 2024-03-18 16:11:19.550329592 +0100 ++++ chromium-123.0.6312.46/third_party/pdfium/core/fpdfdoc/cpdf_defaultappearance.cpp 2024-03-18 16:12:51.124472676 +0100 +@@ -54,7 +54,7 @@ bool FindTagParamFromStart(CPDF_SimplePa + + } // namespace + +-CPDF_DefaultAppearance::CPDF_DefaultAppearance() = default; ++CPDF_DefaultAppearance::CPDF_DefaultAppearance() {} + + CPDF_DefaultAppearance::CPDF_DefaultAppearance(const ByteString& csDA) + : m_csDA(csDA) {} diff --git a/SOURCES/chromium-123-fstack-protector-strong.patch b/SOURCES/chromium-123-fstack-protector-strong.patch new file mode 100644 index 00000000..33a4142e --- /dev/null +++ b/SOURCES/chromium-123-fstack-protector-strong.patch @@ -0,0 +1,12 @@ +diff -up chromium-123.0.6312.46/build/config/compiler/BUILD.gn.fstack-protector-strong chromium-123.0.6312.46/build/config/compiler/BUILD.gn +--- chromium-123.0.6312.46/build/config/compiler/BUILD.gn.fstack-protector-strong 2024-03-15 11:46:34.542248116 +0100 ++++ chromium-123.0.6312.46/build/config/compiler/BUILD.gn 2024-03-15 11:59:02.970849847 +0100 +@@ -382,7 +382,7 @@ config("compiler") { + } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) { + if (current_os != "aix") { + # Not available on aix. +- cflags += [ "-fstack-protector" ] ++ cflags += [ "-fstack-protector-strong" ] + } + } + } diff --git a/SOURCES/chromium-122-missing-header-files.patch b/SOURCES/chromium-123-missing-header-files.patch similarity index 88% rename from SOURCES/chromium-122-missing-header-files.patch rename to SOURCES/chromium-123-missing-header-files.patch index aa6bd70d..f11142ea 100644 --- a/SOURCES/chromium-122-missing-header-files.patch +++ b/SOURCES/chromium-123-missing-header-files.patch @@ -99,28 +99,6 @@ diff -up chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_ #include #include #include -diff -up chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc ---- chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files 2024-02-07 19:52:34.000000000 +0100 -+++ chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc 2024-02-12 14:59:48.143415190 +0100 -@@ -14,6 +14,7 @@ - * limitations under the License. - */ - -+#include - #include "cpp/palettes/tones.h" - - #include "cpp/cam/cam.h" -diff -up chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h ---- chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files 2024-02-07 19:52:59.000000000 +0100 -+++ chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h 2024-02-12 14:59:48.143415190 +0100 -@@ -17,6 +17,7 @@ limitations under the License. - #define RUY_RUY_PROFILER_INSTRUMENTATION_H_ - - #ifdef RUY_PROFILER -+#include - #include - #include - #include diff -up chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc --- chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files 2024-02-07 19:54:45.000000000 +0100 +++ chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc 2024-02-12 14:59:48.143415190 +0100 diff --git a/SOURCES/chromium-122-no_matching_constructor.patch b/SOURCES/chromium-123-no_matching_constructor.patch similarity index 80% rename from SOURCES/chromium-122-no_matching_constructor.patch rename to SOURCES/chromium-123-no_matching_constructor.patch index 58efe907..4b29170b 100644 --- a/SOURCES/chromium-122-no_matching_constructor.patch +++ b/SOURCES/chromium-123-no_matching_constructor.patch @@ -82,37 +82,6 @@ diff -up chromium-122.0.6261.69/chrome/browser/enterprise/profile_management/pro // Extract domains and attributes from the command line switch. const base::CommandLine& command_line = -diff -up chromium-122.0.6261.69/chrome/browser/ui/autofill/autofill_context_menu_manager.cc.than chromium-122.0.6261.69/chrome/browser/ui/autofill/autofill_context_menu_manager.cc ---- chromium-122.0.6261.69/chrome/browser/ui/autofill/autofill_context_menu_manager.cc.than 2024-02-22 22:42:54.000000000 +0100 -+++ chromium-122.0.6261.69/chrome/browser/ui/autofill/autofill_context_menu_manager.cc 2024-02-24 13:13:44.159712774 +0100 -@@ -283,8 +283,8 @@ void AutofillContextMenuManager::Execute - AutofillManager& manager) { - auto& driver = static_cast(manager.driver()); - driver.browser_events().RendererShouldTriggerSuggestions( -- FieldGlobalId(driver.GetFrameToken(), -- FieldRendererId(params_.field_renderer_id)), -+ FieldGlobalId{driver.GetFrameToken(), -+ FieldRendererId(params_.field_renderer_id)}, - AutofillSuggestionTriggerSource::kManualFallbackPayments); - } - -diff -up chromium-122.0.6261.69/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.than chromium-122.0.6261.69/chrome/browser/ui/omnibox/chrome_omnibox_client.cc ---- chromium-122.0.6261.69/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.than 2024-02-22 22:42:55.000000000 +0100 -+++ chromium-122.0.6261.69/chrome/browser/ui/omnibox/chrome_omnibox_client.cc 2024-02-24 13:13:32.485503752 +0100 -@@ -474,10 +474,10 @@ void ChromeOmniboxClient::OnAutocomplete - alternative_nav_match); - - // Store the details necessary to open the omnibox match via browser commands. -- location_bar_->set_navigation_params(LocationBar::NavigationParams( -+ location_bar_->set_navigation_params(LocationBar::NavigationParams{ - destination_url, disposition, transition, match_selection_timestamp, - destination_url_entered_without_scheme, -- destination_url_entered_with_http_scheme)); -+ destination_url_entered_with_http_scheme}); - - if (browser_) { - auto navigation = chrome::OpenCurrentURL(browser_); -diff -up chromium-122.0.6261.69/chrome/browser/ui/safety_hub/menu_notification_service.cc.than chromium-122.0.6261.69/chrome/browser/ui/safety_hub/menu_notification_service.cc diff -up chromium-122.0.6261.69/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc.than chromium-122.0.6261.69/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc --- chromium-122.0.6261.69/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc.than 2024-02-22 22:42:55.000000000 +0100 +++ chromium-122.0.6261.69/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc 2024-02-24 13:13:32.486503770 +0100 @@ -205,27 +174,6 @@ diff -up chromium-122.0.6261.69/chrome/browser/ui/views/permissions/embedded_per + ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId}; return buttons; } -diff -up chromium-122.0.6261.69/chrome/browser/ui/web_applications/sub_apps_service_impl.cc.than chromium-122.0.6261.69/chrome/browser/ui/web_applications/sub_apps_service_impl.cc ---- chromium-122.0.6261.69/chrome/browser/ui/web_applications/sub_apps_service_impl.cc.than 2024-02-22 22:42:55.000000000 +0100 -+++ chromium-122.0.6261.69/chrome/browser/ui/web_applications/sub_apps_service_impl.cc 2024-02-24 13:13:44.159712774 +0100 -@@ -102,7 +102,7 @@ AddOptionsFromMojo( - ConvertPathToUrl(sub_app->manifest_id_path, origin)); - ASSIGN_OR_RETURN(GURL install_url, - ConvertPathToUrl(sub_app->install_url_path, origin)); -- sub_apps.emplace_back(std::move(manifest_id), std::move(install_url)); -+ sub_apps.emplace_back() = {std::move(manifest_id), std::move(install_url)}; - } - return sub_apps; - } -@@ -391,7 +391,7 @@ void SubAppsServiceImpl::ScheduleSubAppI - base::BindOnce( - [](webapps::ManifestId manifest_id, const webapps::AppId& app_id, - webapps::InstallResultCode result_code) { -- return SubAppInstallResult(manifest_id, app_id, result_code); -+ return SubAppInstallResult{manifest_id, app_id, result_code}; - }, - manifest_id) - .Then(install_results_collector)); diff -up chromium-122.0.6261.69/chrome/test/chromedriver/capabilities.cc.than chromium-122.0.6261.69/chrome/test/chromedriver/capabilities.cc --- chromium-122.0.6261.69/chrome/test/chromedriver/capabilities.cc.than 2024-02-22 22:42:56.000000000 +0100 +++ chromium-122.0.6261.69/chrome/test/chromedriver/capabilities.cc 2024-02-24 13:13:32.486503770 +0100 @@ -544,27 +492,6 @@ diff -up chromium-122.0.6261.69/net/dns/host_resolver_cache.cc.than chromium-122 Entry(std::move(result), source, secure, staleness_generation)); if (entries_.size() > max_entries_) { -diff -up chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/font_palette.h.than chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/font_palette.h ---- chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/font_palette.h.than 2024-02-22 22:43:25.000000000 +0100 -+++ chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/font_palette.h 2024-02-24 13:13:44.152712649 +0100 -@@ -96,7 +96,7 @@ class PLATFORM_EXPORT FontPalette : publ - Color::ColorSpace color_interpolation_space, - absl::optional hue_interpolation_method) { - return base::AdoptRef(new FontPalette( -- start, end, NonNormalizedPercentages(start_percentage, end_percentage), -+ start, end, NonNormalizedPercentages{start_percentage, end_percentage}, - normalized_percentage, alpha_multiplier, color_interpolation_space, - hue_interpolation_method)); - } -@@ -170,7 +170,7 @@ class PLATFORM_EXPORT FontPalette : publ - double normalized_percentage) { - double end_percentage = normalized_percentage * 100.0; - double start_percentage = 100.0 - end_percentage; -- return NonNormalizedPercentages(start_percentage, end_percentage); -+ return NonNormalizedPercentages{start_percentage, end_percentage}; - } - - double GetAlphaMultiplier() const { diff -up chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/palette_interpolation.cc.than chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/palette_interpolation.cc --- chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/palette_interpolation.cc.than 2024-02-22 22:43:25.000000000 +0100 +++ chromium-122.0.6261.69/third_party/blink/renderer/platform/fonts/palette_interpolation.cc 2024-02-24 13:13:44.152712649 +0100 @@ -1005,18 +932,6 @@ diff -up chromium-122.0.6261.69/content/browser/interest_group/interest_group_st } void DoGetDebugReportCooldowns( -diff -up chromium-122.0.6261.69/content/browser/interest_group/interest_group_auction.cc.me chromium-122.0.6261.69/content/browser/interest_group/interest_group_auction.cc ---- chromium-122.0.6261.69/content/browser/interest_group/interest_group_auction.cc.me 2024-02-25 00:20:33.535907981 +0100 -+++ chromium-122.0.6261.69/content/browser/interest_group/interest_group_auction.cc 2024-02-25 00:21:01.082402610 +0100 -@@ -501,7 +501,7 @@ bool SampleDebugReport( - ? DebugReportCooldownType::kShortCooldown - : DebugReportCooldownType::kRestrictedCooldown; - new_debug_report_lockout_and_cooldowns.debug_report_cooldown_map[origin] = -- DebugReportCooldown(now, cooldown_type); -+ DebugReportCooldown{now, cooldown_type}; - base::UmaHistogramEnumeration( - "Ads.InterestGroup.Auction.ForDebuggingOnlyCooldownType", cooldown_type); - diff -up chromium-122.0.6261.69/chrome/browser/ui/safety_hub/menu_notification_service.h.me chromium-122.0.6261.69/chrome/browser/ui/safety_hub/menu_notification_service.h --- chromium-122.0.6261.69/chrome/browser/ui/safety_hub/menu_notification_service.h.me 2024-02-25 15:34:16.140768445 +0100 +++ chromium-122.0.6261.69/chrome/browser/ui/safety_hub/menu_notification_service.h 2024-02-25 15:37:47.789665835 +0100 @@ -1114,3 +1029,336 @@ diff -up chromium-122.0.6261.69/chrome/browser/renderer_context_menu/render_view compose::ComposeManagerImpl::UiEntryPoint::kContextMenu); new_badge_tracker_.ActionPerformed("compose_menu_item_activated"); } else { +--- chromium-123.0.6312.46/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.me 2024-03-15 15:16:46.980123806 +0100 ++++ chromium-123.0.6312.46/chrome/browser/ui/omnibox/chrome_omnibox_client.cc 2024-03-15 15:18:39.024042560 +0100 +@@ -474,10 +474,10 @@ + alternative_nav_match); + + // Store the details necessary to open the omnibox match via browser commands. +- location_bar_->set_navigation_params(LocationBar::NavigationParams( ++ location_bar_->set_navigation_params(LocationBar::NavigationParams{ + destination_url, disposition, transition, match_selection_timestamp, + destination_url_entered_without_scheme, +- destination_url_entered_with_http_scheme, match.extra_headers)); ++ destination_url_entered_with_http_scheme, match.extra_headers}); + + if (browser_) { + auto navigation = chrome::OpenCurrentURL(browser_); +--- chromium-123.0.6312.46/content/browser/interest_group/interest_group_auction.cc.me 2024-03-15 15:16:47.004124431 +0100 ++++ chromium-123.0.6312.46/content/browser/interest_group/interest_group_auction.cc 2024-03-15 15:21:57.794229521 +0100 +@@ -565,7 +565,7 @@ + blink::features::kFledgeDebugReportRestrictedCooldown.Get() != + base::Milliseconds(0))) { + new_debug_report_lockout_and_cooldowns.debug_report_cooldown_map[origin] = +- DebugReportCooldown(now_nearest_next_hour, cooldown_type); ++ DebugReportCooldown{now_nearest_next_hour, cooldown_type}; + } + + return can_send_debug_report; +--- chromium-123.0.6312.46/chrome/browser/ui/autofill/autofill_context_menu_manager.cc.no_matching_constructor 2024-03-15 15:55:51.351878829 +0100 ++++ chromium-123.0.6312.46/chrome/browser/ui/autofill/autofill_context_menu_manager.cc 2024-03-15 16:19:48.862189463 +0100 +@@ -277,8 +277,8 @@ + AutofillManager& manager) { + auto& driver = static_cast(manager.driver()); + driver.browser_events().RendererShouldTriggerSuggestions( +- FieldGlobalId(driver.GetFrameToken(), +- FieldRendererId(params_.field_renderer_id)), ++ FieldGlobalId{driver.GetFrameToken(), ++ FieldRendererId(params_.field_renderer_id)}, + AutofillSuggestionTriggerSource::kManualFallbackPayments); + LogManualFallbackContextMenuEntryAccepted( + static_cast(manager), +--- chromium-123.0.6312.46/chrome/browser/ui/web_applications/sub_apps_service_impl.cc.no_matching_constructor 2024-03-13 20:35:40.000000000 +0100 ++++ chromium-123.0.6312.46/chrome/browser/ui/web_applications/sub_apps_service_impl.cc 2024-03-15 16:20:45.846919820 +0100 +@@ -107,7 +107,7 @@ + ConvertPathToUrl(sub_app->manifest_id_path, origin)); + ASSIGN_OR_RETURN(GURL install_url, + ConvertPathToUrl(sub_app->install_url_path, origin)); +- sub_apps.emplace_back(std::move(manifest_id), std::move(install_url)); ++ sub_apps.emplace_back() = {std::move(manifest_id), std::move(install_url)}; + } + return sub_apps; + } +@@ -439,7 +439,7 @@ + base::BindOnce( + [](webapps::ManifestId manifest_id, const webapps::AppId& app_id, + webapps::InstallResultCode result_code) { +- return SubAppInstallResult(manifest_id, app_id, result_code); ++ return SubAppInstallResult{manifest_id, app_id, result_code}; + }, + manifest_id) + .Then(concurrent.CreateCallback())); +--- chromium-123.0.6312.46/third_party/blink/renderer/platform/fonts/font_palette.h.no_matching_constructor 2024-03-13 20:35:57.000000000 +0100 ++++ chromium-123.0.6312.46/third_party/blink/renderer/platform/fonts/font_palette.h 2024-03-15 16:24:57.899540941 +0100 +@@ -96,7 +96,7 @@ + Color::ColorSpace color_interpolation_space, + std::optional hue_interpolation_method) { + return base::AdoptRef(new FontPalette( +- start, end, NonNormalizedPercentages(start_percentage, end_percentage), ++ start, end, NonNormalizedPercentages{start_percentage, end_percentage}, + normalized_percentage, alpha_multiplier, color_interpolation_space, + hue_interpolation_method)); + } +@@ -170,7 +170,7 @@ + double normalized_percentage) { + double end_percentage = normalized_percentage * 100.0; + double start_percentage = 100.0 - end_percentage; +- return NonNormalizedPercentages(start_percentage, end_percentage); ++ return NonNormalizedPercentages{start_percentage, end_percentage}; + } + + double GetAlphaMultiplier() const { +diff -up chromium-123.0.6312.46/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc.me chromium-123.0.6312.46/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc +--- chromium-123.0.6312.46/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc.me 2024-03-15 19:01:07.765832801 +0100 ++++ chromium-123.0.6312.46/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc 2024-03-15 19:01:52.918687742 +0100 +@@ -62,7 +62,7 @@ bool LightweightQuarantineBranch::Quaran + branch_size_in_bytes_ += usable_size; + PA_DCHECK(branch_size_in_bytes_ <= capacity_in_bytes); + +- slots_.emplace_back(slot_start, usable_size); ++ slots_.emplace_back() = {slot_start, usable_size}; + + // Swap randomly so that the quarantine list remain shuffled. + // This is not uniformly random, but sufficiently random. +diff -up chromium-123.0.6312.46/gpu/ipc/client/client_shared_image_interface.cc.me chromium-123.0.6312.46/gpu/ipc/client/client_shared_image_interface.cc +--- chromium-123.0.6312.46/gpu/ipc/client/client_shared_image_interface.cc.me 2024-03-16 18:43:17.863328507 +0100 ++++ chromium-123.0.6312.46/gpu/ipc/client/client_shared_image_interface.cc 2024-03-16 18:51:00.449277152 +0100 +@@ -106,8 +106,8 @@ scoped_refptr ClientS + AddMailbox(proxy_->CreateSharedImage(format, size, color_space, + surface_origin, alpha_type, usage, + debug_label)), +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +@@ -137,8 +137,8 @@ scoped_refptr ClientS + + return base::MakeRefCounted( + AddMailbox(mailbox), +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +@@ -165,8 +165,8 @@ scoped_refptr ClientS + CHECK(!buffer_handle.is_null()); + return base::MakeRefCounted( + AddMailbox(mailbox), +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), + GpuMemoryBufferHandleInfo(std::move(buffer_handle), format, size, + buffer_usage), +@@ -192,8 +192,8 @@ scoped_refptr ClientS + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), + GpuMemoryBufferHandleInfo(std::move(client_buffer_handle), format, size, + buffer_usage), +@@ -219,8 +219,8 @@ scoped_refptr ClientS + AddMailbox(proxy_->CreateSharedImage( + format, size, color_space, surface_origin, alpha_type, usage, + debug_label, std::move(buffer_handle))), +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +@@ -273,8 +273,8 @@ ClientSharedImageInterface::CreateShared + AddMailbox(proxy_->CreateSharedImage(format, size, color_space, + surface_origin, alpha_type, usage, + debug_label, std::move(handle))), +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + return shared_image_mapping; + } +@@ -296,10 +296,10 @@ scoped_refptr ClientS + buffer_format, plane, gpu_memory_buffer->GetSize(), color_space, + surface_origin, alpha_type, usage, debug_label, + gpu_memory_buffer->CloneHandle())), +- ClientSharedImage::Metadata( ++ ClientSharedImage::Metadata{ + viz::GetSinglePlaneSharedImageFormat(buffer_format), + gpu_memory_buffer->GetSize(), color_space, surface_origin, alpha_type, +- usage), ++ usage}, + GenUnverifiedSyncToken(), holder_); + } + +@@ -334,13 +334,13 @@ ClientSharedImageInterface::CreateSwapCh + return ClientSharedImageInterface::SwapChainSharedImages( + base::MakeRefCounted( + mailboxes.front_buffer, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + sync_token, holder_), + base::MakeRefCounted( + mailboxes.back_buffer, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + sync_token, holder_)); + } + +@@ -380,8 +380,8 @@ ClientSharedImageInterface::AddReference + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + sync_token, holder_); + } + +@@ -402,8 +402,8 @@ scoped_refptr ClientS + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +diff -up chromium-123.0.6312.46/gpu/command_buffer/client/shared_image_interface.cc.me chromium-123.0.6312.46/gpu/command_buffer/client/shared_image_interface.cc +--- chromium-123.0.6312.46/gpu/command_buffer/client/shared_image_interface.cc.me 2024-03-16 18:59:20.175882894 +0100 ++++ chromium-123.0.6312.46/gpu/command_buffer/client/shared_image_interface.cc 2024-03-16 19:03:05.001754609 +0100 +@@ -41,8 +41,8 @@ scoped_refptr SharedI + NOTREACHED(); + return base::MakeRefCounted( + Mailbox(), +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +diff -up chromium-123.0.6312.46/gpu/command_buffer/service/shared_image_interface_in_process.cc.me chromium-123.0.6312.46/gpu/command_buffer/service/shared_image_interface_in_process.cc +--- chromium-123.0.6312.46/gpu/command_buffer/service/shared_image_interface_in_process.cc.me 2024-03-16 19:06:32.102330155 +0100 ++++ chromium-123.0.6312.46/gpu/command_buffer/service/shared_image_interface_in_process.cc 2024-03-16 19:11:59.627008063 +0100 +@@ -238,8 +238,8 @@ SharedImageInterfaceInProcess::CreateSha + } + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +@@ -301,8 +301,8 @@ SharedImageInterfaceInProcess::CreateSha + } + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + +@@ -365,8 +365,8 @@ SharedImageInterfaceInProcess::CreateSha + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), GetGpuMemoryBufferHandleInfo(mailbox), holder_); + } + +@@ -481,8 +481,8 @@ SharedImageInterfaceInProcess::CreateSha + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), + GpuMemoryBufferHandleInfo(std::move(client_buffer_handle), format, size, + buffer_usage), +@@ -524,8 +524,8 @@ SharedImageInterfaceInProcess::CreateSha + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + } + SharedImageInterface::SharedImageMapping +@@ -589,8 +589,8 @@ SharedImageInterfaceInProcess::CreateSha + } + shared_image_mapping.shared_image = base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata(format, size, color_space, surface_origin, +- alpha_type, usage), ++ ClientSharedImage::Metadata{format, size, color_space, surface_origin, ++ alpha_type, usage}, + GenUnverifiedSyncToken(), holder_); + + return shared_image_mapping; +@@ -664,10 +664,10 @@ SharedImageInterfaceInProcess::CreateSha + + return base::MakeRefCounted( + mailbox, +- ClientSharedImage::Metadata( ++ ClientSharedImage::Metadata{ + viz::GetSinglePlaneSharedImageFormat(gpu_memory_buffer->GetFormat()), + gpu_memory_buffer->GetSize(), color_space, surface_origin, alpha_type, +- usage), ++ usage}, + GenUnverifiedSyncToken(), holder_); + } + +diff -up chromium-123.0.6312.46/content/browser/attribution_reporting/attribution_manager_impl.cc.me chromium-123.0.6312.46/content/browser/attribution_reporting/attribution_manager_impl.cc +--- chromium-123.0.6312.46/content/browser/attribution_reporting/attribution_manager_impl.cc.me 2024-03-17 00:42:31.183226211 +0100 ++++ chromium-123.0.6312.46/content/browser/attribution_reporting/attribution_manager_impl.cc 2024-03-17 00:55:56.689512430 +0100 +@@ -1507,7 +1507,7 @@ void AttributionManagerImpl::PrepareNext + RenderFrameHost::FromID(event.render_frame_id), + source_origin, destination_origin, &reporting_origin, + &can_bypass_cookie_check)) { +- need_to_check_cookie.emplace_back(url::Origin::Create(item.url), i); ++ need_to_check_cookie.emplace_back() = {url::Origin::Create(item.url), i}; + } else { + allowed.at(i) = can_bypass_cookie_check; + } +diff -up chromium-123.0.6312.46/content/browser/interest_group/interest_group_storage.cc.me chromium-123.0.6312.46/content/browser/interest_group/interest_group_storage.cc +--- chromium-123.0.6312.46/content/browser/interest_group/interest_group_storage.cc.me 2024-03-17 00:24:41.420837884 +0100 ++++ chromium-123.0.6312.46/content/browser/interest_group/interest_group_storage.cc 2024-03-17 00:26:40.273364638 +0100 +@@ -3993,7 +3993,7 @@ DoGetBiddingAndAuctionServerKeys(sql::Da + std::vector keys; + keys.reserve(key_protos.keys_size()); + for (auto& key_proto : *key_protos.mutable_keys()) { +- keys.emplace_back(std::move(*key_proto.mutable_key()), key_proto.id()); ++ keys.emplace_back() = {std::move(*key_proto.mutable_key()), key_proto.id()}; + } + return {expiration, keys}; + } diff --git a/SOURCES/chromium-123-python3-assignment-expressions.patch b/SOURCES/chromium-123-python3-assignment-expressions.patch new file mode 100644 index 00000000..bb0df8c4 --- /dev/null +++ b/SOURCES/chromium-123-python3-assignment-expressions.patch @@ -0,0 +1,27 @@ +diff -up chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py.me chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py +--- chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py.me 2024-02-23 12:04:45.451423995 +0100 ++++ chromium-122.0.6261.57/tools/json_to_struct/json_to_struct.py 2024-02-23 12:18:04.099824392 +0100 +@@ -124,7 +124,8 @@ def _GenerateH(basepath, fileroot, head, + f.write(u'#include \n') + f.write(u'\n') + +- if system_headers := schema.get(u'system-headers', []): ++ system_headers = schema.get(u'system-headers', []) ++ if system_headers: + for header in system_headers: + f.write(u'#include <%s>\n' % header) + f.write(u'\n') +diff -up chromium-123.0.6312.46/tools/metrics/histograms/expand_owners.py.me chromium-123.0.6312.46/tools/metrics/histograms/expand_owners.py +--- chromium-123.0.6312.46/tools/metrics/histograms/expand_owners.py.me 2024-03-18 14:40:57.871904209 +0100 ++++ chromium-123.0.6312.46/tools/metrics/histograms/expand_owners.py 2024-03-18 14:47:12.238907146 +0100 +@@ -209,8 +209,8 @@ def _ComponentFromDirmd(json_data, subpa + """ + dirmd = json_data.get('dirs', {}).get(subpath, {}) + # If a public Buganizer component is listed, return its component ID. +- if buganizer_component := dirmd.get('buganizerPublic', +- {}).get('componentId', ''): ++ buganizer_component = dirmd.get('buganizerPublic',{}).get('componentId', '') ++ if buganizer_component: + return buganizer_component + # If no component exists for the directory, or if METADATA migration is + # incomplete there will be no component information. diff --git a/SOURCES/chromium-123-rust-clap_lex.patch b/SOURCES/chromium-123-rust-clap_lex.patch new file mode 100644 index 00000000..61bd1943 --- /dev/null +++ b/SOURCES/chromium-123-rust-clap_lex.patch @@ -0,0 +1,133 @@ +diff -Nur chromium-123.0.6312.46/third_party/rust/chromium_crates_io/vendor/clap_lex-0.7.0/src/ext.rs.me chromium-123.0.6312.46/third_party/rust/chromium_crates_io/vendor/clap_lex-0.7.0/src/ext.rs +--- chromium-123.0.6312.46/third_party/rust/chromium_crates_io/vendor/clap_lex-0.7.0/src/ext.rs.me 2024-03-13 20:36:17.000000000 +0100 ++++ chromium-123.0.6312.46/third_party/rust/chromium_crates_io/vendor/clap_lex-0.7.0/src/ext.rs 2024-03-13 00:38:18.000000000 +0100 +@@ -2,9 +2,6 @@ + + pub trait OsStrExt: private::Sealed { + /// Converts to a string slice. +- /// +- /// The Utf8Error is guaranteed to have a valid UTF8 boundary +- /// in its `valid_up_to()` + fn try_str(&self) -> Result<&str, std::str::Utf8Error>; + /// Returns `true` if the given pattern matches a sub-slice of + /// this string slice. +@@ -183,7 +180,7 @@ + + impl OsStrExt for OsStr { + fn try_str(&self) -> Result<&str, std::str::Utf8Error> { +- let bytes = self.as_encoded_bytes(); ++ let bytes = to_bytes(self); + std::str::from_utf8(bytes) + } + +@@ -192,22 +189,22 @@ + } + + fn find(&self, needle: &str) -> Option { +- let bytes = self.as_encoded_bytes(); ++ let bytes = to_bytes(self); + (0..=self.len().checked_sub(needle.len())?) + .find(|&x| bytes[x..].starts_with(needle.as_bytes())) + } + + fn strip_prefix(&self, prefix: &str) -> Option<&OsStr> { +- let bytes = self.as_encoded_bytes(); ++ let bytes = to_bytes(self); + bytes.strip_prefix(prefix.as_bytes()).map(|s| { + // SAFETY: +- // - This came from `as_encoded_bytes` +- // - Since `prefix` is `&str`, any split will be along UTF-8 boundary +- unsafe { OsStr::from_encoded_bytes_unchecked(s) } ++ // - This came from `to_bytes` ++ // - Since `prefix` is `&str`, any split will be along UTF-8 boundarie ++ unsafe { to_os_str_unchecked(s) } + }) + } + fn starts_with(&self, prefix: &str) -> bool { +- let bytes = self.as_encoded_bytes(); ++ let bytes = to_bytes(self); + bytes.starts_with(prefix.as_bytes()) + } + +@@ -222,18 +219,13 @@ + fn split_once(&self, needle: &'_ str) -> Option<(&OsStr, &OsStr)> { + let start = self.find(needle)?; + let end = start + needle.len(); +- let haystack = self.as_encoded_bytes(); ++ let haystack = to_bytes(self); + let first = &haystack[0..start]; + let second = &haystack[end..]; + // SAFETY: +- // - This came from `as_encoded_bytes` +- // - Since `needle` is `&str`, any split will be along UTF-8 boundary +- unsafe { +- Some(( +- OsStr::from_encoded_bytes_unchecked(first), +- OsStr::from_encoded_bytes_unchecked(second), +- )) +- } ++ // - This came from `to_bytes` ++ // - Since `needle` is `&str`, any split will be along UTF-8 boundarie ++ unsafe { Some((to_os_str_unchecked(first), to_os_str_unchecked(second))) } + } + } + +@@ -243,6 +235,45 @@ + impl Sealed for std::ffi::OsStr {} + } + ++/// Allow access to raw bytes ++/// ++/// As the non-UTF8 encoding is not defined, the bytes only make sense when compared with ++/// 7-bit ASCII or `&str` ++/// ++/// # Compatibility ++/// ++/// There is no guarantee how non-UTF8 bytes will be encoded, even within versions of this crate ++/// (since its dependent on rustc) ++fn to_bytes(s: &OsStr) -> &[u8] { ++ // SAFETY: ++ // - Lifetimes are the same ++ // - Types are compatible (`OsStr` is effectively a transparent wrapper for `[u8]`) ++ // - The primary contract is that the encoding for invalid surrogate code points is not ++ // guaranteed which isn't a problem here ++ // ++ // There is a proposal to support this natively (https://github.com/rust-lang/rust/pull/95290) ++ // but its in limbo ++ unsafe { std::mem::transmute(s) } ++} ++ ++/// Restore raw bytes as `OsStr` ++/// ++/// # Safety ++/// ++/// - `&[u8]` must either by a `&str` or originated with `to_bytes` within the same binary ++/// - Any splits of the original `&[u8]` must be done along UTF-8 boundaries ++unsafe fn to_os_str_unchecked(s: &[u8]) -> &OsStr { ++ // SAFETY: ++ // - Lifetimes are the same ++ // - Types are compatible (`OsStr` is effectively a transparent wrapper for `[u8]`) ++ // - The primary contract is that the encoding for invalid surrogate code points is not ++ // guaranteed which isn't a problem here ++ // ++ // There is a proposal to support this natively (https://github.com/rust-lang/rust/pull/95290) ++ // but its in limbo ++ std::mem::transmute(s) ++} ++ + pub struct Split<'s, 'n> { + haystack: Option<&'s OsStr>, + needle: &'n str, +@@ -275,10 +306,7 @@ + /// + /// `index` must be at a valid UTF-8 boundary + pub(crate) unsafe fn split_at(os: &OsStr, index: usize) -> (&OsStr, &OsStr) { +- let bytes = os.as_encoded_bytes(); ++ let bytes = to_bytes(os); + let (first, second) = bytes.split_at(index); +- ( +- OsStr::from_encoded_bytes_unchecked(first), +- OsStr::from_encoded_bytes_unchecked(second), +- ) ++ (to_os_str_unchecked(first), to_os_str_unchecked(second)) + } diff --git a/SOURCES/chromium-122-typename.patch b/SOURCES/chromium-123-typename.patch similarity index 90% rename from SOURCES/chromium-122-typename.patch rename to SOURCES/chromium-123-typename.patch index 1fc8079d..aebbd189 100644 --- a/SOURCES/chromium-122-typename.patch +++ b/SOURCES/chromium-123-typename.patch @@ -88,55 +88,6 @@ diff -up chromium-122.0.6261.69/components/optimization_guide/core/model_quality return FeatureType::GetLoggingData(*log_ai_data_request_) ->mutable_quality_data(); } -diff -up chromium-122.0.6261.69/components/optimization_guide/core/tflite_model_executor.h.typename chromium-122.0.6261.69/components/optimization_guide/core/tflite_model_executor.h ---- chromium-122.0.6261.69/components/optimization_guide/core/tflite_model_executor.h.typename 2024-02-22 22:43:01.000000000 +0100 -+++ chromium-122.0.6261.69/components/optimization_guide/core/tflite_model_executor.h 2024-02-24 15:05:00.883592724 +0100 -@@ -241,7 +241,7 @@ class TFLiteModelExecutor : public Model - void SendForBatchExecution( - BatchExecutionCallback callback_on_complete, - base::TimeTicks start_time, -- ModelExecutor::ConstRefInputVector inputs) -+ typename ModelExecutor::ConstRefInputVector inputs) - override { - DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -263,7 +263,7 @@ class TFLiteModelExecutor : public Model - // Starts the synchronous execution of the model. Returns model outputs. - // Model needs to be loaded. Synchronous calls do not load or unload model. - std::vector> SendForBatchExecutionSync( -- ModelExecutor::ConstRefInputVector inputs) -+ typename ModelExecutor::ConstRefInputVector inputs) - override { - DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -421,7 +421,7 @@ class TFLiteModelExecutor : public Model - // executes it on the model execution thread. - void LoadModelFileAndBatchExecute( - BatchExecutionCallback callback_on_complete, -- ModelExecutor::ConstRefInputVector inputs) { -+ typename ModelExecutor::ConstRefInputVector inputs) { - DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - -@@ -438,7 +438,7 @@ class TFLiteModelExecutor : public Model - - // Batch executes the loaded model for inputs. - void BatchExecuteLoadedModel( -- ModelExecutor::ConstRefInputVector inputs, -+ typename ModelExecutor::ConstRefInputVector inputs, - std::vector>* outputs) { - DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -498,7 +498,7 @@ class TFLiteModelExecutor : public Model - // Unloads the model if needed. - void BatchExecuteLoadedModelAndRunCallback( - BatchExecutionCallback callback_on_complete, -- ModelExecutor::ConstRefInputVector inputs, -+ typename ModelExecutor::ConstRefInputVector inputs, - ExecutionStatus execution_status) { - DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -diff -up chromium-122.0.6261.69/components/supervised_user/core/browser/proto_fetcher.h.typename chromium-122.0.6261.69/components/supervised_user/core/browser/proto_fetcher.h diff -up chromium-122.0.6261.69/mojo/public/cpp/bindings/array_traits.h.typename chromium-122.0.6261.69/mojo/public/cpp/bindings/array_traits.h --- chromium-122.0.6261.69/mojo/public/cpp/bindings/array_traits.h.typename 2024-02-22 22:43:15.000000000 +0100 +++ chromium-122.0.6261.69/mojo/public/cpp/bindings/array_traits.h 2024-02-24 15:05:00.884592742 +0100 @@ -208,18 +159,6 @@ diff -up chromium-122.0.6261.69/base/allocator/partition_allocator/src/partition std::size_t count) { PA_CHECK(count <= std::numeric_limits::max() / sizeof(value_type)); -diff -up chromium-122.0.6261.69/base/functional/function_ref.h.me chromium-122.0.6261.69/base/functional/function_ref.h ---- chromium-122.0.6261.69/base/functional/function_ref.h.me 2024-02-24 17:59:35.119582549 +0100 -+++ chromium-122.0.6261.69/base/functional/function_ref.h 2024-02-24 18:00:27.107938399 +0100 -@@ -64,7 +64,7 @@ class FunctionRef; - template - class FunctionRef { - template ::RunType> -+ typename RunType = typename internal::MakeFunctorTraits::RunType> - static constexpr bool kCompatibleFunctor = - std::convertible_to, R> && - std::same_as, internal::TypeList>; diff -up chromium-122.0.6261.69/base/containers/heap_array.h.me chromium-122.0.6261.69/base/containers/heap_array.h --- chromium-122.0.6261.69/base/containers/heap_array.h.me 2024-02-24 18:02:34.463921568 +0100 +++ chromium-122.0.6261.69/base/containers/heap_array.h 2024-02-24 18:04:01.922850571 +0100 @@ -383,3 +322,85 @@ diff -up chromium-122.0.6261.69/components/supervised_user/core/browser/proto_fe CHECK(callback) << "Use base::DoNothing() instead of empty callback."; KeyType key = requests_in_flight_.Add(MakeFetcher(request)); requests_in_flight_.Lookup(key)->Start( +--- chromium-123.0.6312.46/components/optimization_guide/core/tflite_model_executor.h.orig 2024-03-13 20:35:44.000000000 +0100 ++++ chromium-123.0.6312.46/components/optimization_guide/core/tflite_model_executor.h 2024-03-15 15:45:47.067156826 +0100 +@@ -242,7 +242,7 @@ + void SendForBatchExecution( + BatchExecutionCallback callback_on_complete, + base::TimeTicks start_time, +- ModelExecutor::ConstRefInputVector inputs) ++ typename ModelExecutor::ConstRefInputVector inputs) + override { + DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +@@ -264,7 +264,7 @@ + // Starts the synchronous execution of the model. Returns model outputs. + // Model needs to be loaded. Synchronous calls do not load or unload model. + std::vector> SendForBatchExecutionSync( +- ModelExecutor::ConstRefInputVector inputs) ++ typename ModelExecutor::ConstRefInputVector inputs) + override { + DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +@@ -422,7 +422,7 @@ + // executes it on the model execution thread. + void LoadModelFileAndBatchExecute( + BatchExecutionCallback callback_on_complete, +- ModelExecutor::ConstRefInputVector inputs) { ++ typename ModelExecutor::ConstRefInputVector inputs) { + DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + +@@ -439,7 +439,7 @@ + + // Batch executes the loaded model for inputs. + void BatchExecuteLoadedModel( +- ModelExecutor::ConstRefInputVector inputs, ++ typename ModelExecutor::ConstRefInputVector inputs, + std::vector>* outputs) { + DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +@@ -499,7 +499,7 @@ + // Unloads the model if needed. + void BatchExecuteLoadedModelAndRunCallback( + BatchExecutionCallback callback_on_complete, +- ModelExecutor::ConstRefInputVector inputs, ++ typename ModelExecutor::ConstRefInputVector inputs, + ExecutionStatus execution_status) { + DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +--- chromium-123.0.6312.46/base/functional/function_ref.h.orig 2024-03-15 15:43:32.329786974 +0100 ++++ chromium-123.0.6312.46/base/functional/function_ref.h 2024-03-15 15:46:57.278813500 +0100 +@@ -64,7 +64,7 @@ + template + class FunctionRef { + template ::RunType> ++ typename RunType = typename internal::FunctorTraits::RunType> + static constexpr bool kCompatibleFunctor = + std::convertible_to, R> && + std::same_as, internal::TypeList>; +diff -up chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_property.h.me chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_property.h +--- chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_property.h.me 2024-03-16 22:55:01.387265478 +0100 ++++ chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_property.h 2024-03-16 22:55:18.752568310 +0100 +@@ -173,7 +173,7 @@ class ScriptPromiseProperty final + template + requires std::derived_from + static T DefaultPromiseResultValue() { +- return T(static_cast(0)); ++ return T(static_cast(0)); + } + + State state_ = kPending; +diff -up chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h.me chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h +--- chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h.me 2024-03-16 22:41:50.634510019 +0100 ++++ chromium-123.0.6312.46/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h 2024-03-16 22:54:51.215088087 +0100 +@@ -477,7 +477,7 @@ class ScriptPromiseResolverTyped : publi + + private: + using TypedResolver = +- ScriptPromiseTyped::InternalResolverTyped; ++ typename ScriptPromiseTyped::InternalResolverTyped; + }; + + } // namespace blink diff --git a/SOURCES/chromium-121-v8-c++20.patch b/SOURCES/chromium-123-v8-c++20.patch similarity index 98% rename from SOURCES/chromium-121-v8-c++20.patch rename to SOURCES/chromium-123-v8-c++20.patch index 3b3bb50f..a4682da1 100644 --- a/SOURCES/chromium-121-v8-c++20.patch +++ b/SOURCES/chromium-123-v8-c++20.patch @@ -385,16 +385,6 @@ diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_imp 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< }; diff --git a/SOURCES/chromium-122-workaround_clang_bug-structured_binding.patch b/SOURCES/chromium-123-workaround_clang_bug-structured_binding.patch similarity index 88% rename from SOURCES/chromium-122-workaround_clang_bug-structured_binding.patch rename to SOURCES/chromium-123-workaround_clang_bug-structured_binding.patch index 6526e6ab..998fbad7 100644 --- a/SOURCES/chromium-122-workaround_clang_bug-structured_binding.patch +++ b/SOURCES/chromium-123-workaround_clang_bug-structured_binding.patch @@ -51,19 +51,6 @@ diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree(); const auto container_writing_direction = constraint_space.GetWritingDirection(); -diff -up chromium-122.0.6261.69/content/common/service_worker/race_network_request_url_loader_client.cc.me chromium-122.0.6261.69/content/common/service_worker/race_network_request_url_loader_client.cc ---- chromium-122.0.6261.69/content/common/service_worker/race_network_request_url_loader_client.cc.me 2024-02-25 10:07:28.312646853 +0100 -+++ chromium-122.0.6261.69/content/common/service_worker/race_network_request_url_loader_client.cc 2024-02-25 10:11:07.018481980 +0100 -@@ -416,7 +416,8 @@ void ServiceWorkerRaceNetworkRequestURLL - } - - uint32_t num_bytes_to_consume = 0; -- auto [result, read_buffer] = BeginReadData(); -+ auto [r, read_buffer] = BeginReadData(); -+ auto result = r; - TRACE_EVENT_WITH_FLOW2( - "ServiceWorker", - "ServiceWorkerRaceNetworkRequestURLLoaderClient::ReadAndWrite", diff -up chromium-122.0.6261.69/chrome/browser/predictors/lcp_critical_path_predictor/prewarm_http_disk_cache_manager.cc.me chromium-122.0.6261.69/chrome/browser/predictors/lcp_critical_path_predictor/prewarm_http_disk_cache_manager.cc --- chromium-122.0.6261.69/chrome/browser/predictors/lcp_critical_path_predictor/prewarm_http_disk_cache_manager.cc.me 2024-02-25 18:03:51.654579579 +0100 +++ chromium-122.0.6261.69/chrome/browser/predictors/lcp_critical_path_predictor/prewarm_http_disk_cache_manager.cc 2024-02-25 18:12:45.144287750 +0100 @@ -77,3 +64,15 @@ diff -up chromium-122.0.6261.69/chrome/browser/predictors/lcp_critical_path_pred TRACE_EVENT_WITH_FLOW1( "loading", "PrewarmHttpDiskCacheManager::MaybeProcessNextQueuedJob", TRACE_ID_LOCAL(this), +--- chromium-123.0.6312.46/content/common/service_worker/race_network_request_url_loader_client.cc.orig 2024-03-15 15:37:58.201209354 +0100 ++++ chromium-123.0.6312.46/content/common/service_worker/race_network_request_url_loader_client.cc 2024-03-15 15:40:35.003250723 +0100 +@@ -639,7 +639,8 @@ + return std::nullopt; + } + +- auto [result, read_buffer] = BeginReadData(); ++ auto [r, read_buffer] = BeginReadData(); ++ auto result = r; + TRACE_EVENT_WITH_FLOW2( + "ServiceWorker", + "ServiceWorkerRaceNetworkRequestURLLoaderClient::ReadAndWrite", diff --git a/SPECS/chromium.spec b/SPECS/chromium.spec index 9b1bfe20..f3fbd184 100644 --- a/SPECS/chromium.spec +++ b/SPECS/chromium.spec @@ -303,7 +303,7 @@ %endif Name: chromium%{chromium_channel} -Version: 122.0.6261.128 +Version: 123.0.6312.58 Release: 1%{?dist} Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use Url: http://www.chromium.org/Home @@ -366,7 +366,7 @@ Patch101: chromium-108-el7-wayland-strndup-error.patch # Workaround for old clang # error: defaulting this default constructor would delete it after its first declaration -Patch102: chromium-122-el7-default-constructor-involving-anonymous-union.patch +Patch102: chromium-123-el7-default-constructor-involving-anonymous-union.patch # Work around old and missing headers on EPEL7 Patch103: chromium-110-epel7-old-headers-workarounds.patch @@ -393,7 +393,7 @@ Patch109: chromium-114-wireless-el7.patch Patch110: chromium-115-buildflag-el7.patch Patch111: chromium-122-el7-inline-function.patch Patch113: chromium-121-el7-clang-version-warning.patch -Patch114: chromium-120-el7-clang-build-failure.patch +Patch114: chromium-123-el7-clang-build-failure.patch # system ffmpeg # need for old ffmpeg 5.x on epel9 @@ -413,14 +413,14 @@ 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-122-no_matching_constructor.patch +Patch300: chromium-123-no_matching_constructor.patch Patch301: chromium-115-compiler-SkColor4f.patch # workaround for clang bug, https://github.com/llvm/llvm-project/issues/57826 -Patch302: chromium-122-workaround_clang_bug-structured_binding.patch +Patch302: chromium-123-workaround_clang_bug-structured_binding.patch # missing typename -Patch303: chromium-122-typename.patch +Patch303: chromium-123-typename.patch # error: invalid operands to binary expression Patch304: chromium-117-string-convert.patch @@ -434,35 +434,29 @@ Patch306: chromium-119-assert.patch # compiler errors on epel # revert it for old clang on rhel and f38 Patch307: chromium-121-v8-c++20-p1.patch -Patch308: chromium-121-v8-c++20.patch -Patch309: chromium-122-constexpr.patch +Patch308: chromium-123-v8-c++20.patch +Patch309: chromium-123-constexpr.patch # missing include header files -Patch310: chromium-122-missing-header-files.patch +Patch310: chromium-123-missing-header-files.patch # clang warnings Patch311: chromium-115-clang-warnings.patch # enable fstack-protector-strong -Patch312: chromium-119-fstack-protector-strong.patch +Patch312: chromium-123-fstack-protector-strong.patch -# upstream: libstdc++: fix static assertion in NodeUuidEquality -Patch313: chromium-122-static-assert.patch +# rust is old, function or associated item not found in `OsStr` +Patch313: chromium-123-rust-clap_lex.patch Patch314: chromium-122-clang16-buildflags.patch # assignment-expressions not suport in python < 3.8 on el 7/8 -Patch315: chromium-122-python3-assignment-expressions.patch +Patch315: chromium-123-python3-assignment-expressions.patch # add -ftrivial-auto-var-init=zero and -fwrapv Patch316: chromium-122-clang-build-flags.patch -# upstream: ibstdc++: do not require including unique_ptr in header -Patch317: chromium-122-unique_ptr.patch - -# build error -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. @@ -941,7 +935,7 @@ Requires: chromium-common%{_isa} = %{version}-%{release} %if 0%{?rhel} == 7 ExclusiveArch: x86_64 %else -%if 0%{?fedora} >= 40 +%if 0%{?fedora} > 40 ExclusiveArch: x86_64 aarch64 ppc64le %else ExclusiveArch: x86_64 aarch64 @@ -1166,7 +1160,7 @@ udev. %endif %if ! %{bundleffmpegfree} -%if 0%{?rhel} == 9 || 0%{?fedora} == 37 +%if 0%{?rhel} == 9 %patch -P115 -p1 -b .ffmpeg-5.x-duration %endif %patch -P116 -p1 -b .prop-codecs @@ -1189,7 +1183,7 @@ udev. %patch -P110 -p1 -b .buildflag-el7 %patch -P111 -p1 -b .inline-function-el7 %patch -P113 -p1 -b .el7-clang-version-warning -%patch -P114 -p1 -R -b .clang-build-failure +%patch -P114 -p1 -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 @@ -1217,19 +1211,20 @@ udev. %patch -P307 -p1 -R -b .v8-c++20 %patch -P308 -p1 -R -b .v8-c++20 %patch -P309 -p1 -b .constexpr -%patch -P313 -p1 -b .static-assert %patch -P314 -p1 -b .clang16-buildflag %endif %patch -P310 -p1 -b .missing-header-files %patch -P311 -p1 -b .clang-warnings %patch -P312 -p1 -b .fstack-protector-strong -%patch -P317 -p1 -b .unique_ptr.patch + +%if 0%{?rhel} && 0%{?rhel} < 10 +%patch -P313 -p1 -b .rust-clap_lex +%endif %if 0%{?rhel} >= 8 || 0%{?fedora} %patch -P316 -p1 -b .clang-build-flags %endif -%patch -P351 -p1 -b .mnemonic-error %if %{disable_bti} %patch -P352 -p1 -b .workaround_for_crash_on_BTI_capable_system @@ -1391,6 +1386,7 @@ export LANG=en_US.UTF-8 FLAGS=' -Wno-deprecated-declarations -Wno-unknown-warning-option -Wno-unused-command-line-argument' FLAGS+=' -Wno-unused-but-set-variable -Wno-unused-result -Wno-unused-function -Wno-unused-variable' FLAGS+=' -Wno-unused-const-variable -Wno-unneeded-internal-declaration -Wno-unknown-attributes' +FLAGS+=' -Wno-unknown-pragmas' %endif %if %{system_build_flags} @@ -2110,6 +2106,19 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %endif %changelog +* Wed Mar 20 2024 Than Ngo - 123.0.6312.58-1 +- update to 123.0.6312.58 + * High CVE-2024-2625: Object lifecycle issue in V8 + * Medium CVE-2024-2626: Out of bounds read in Swiftshader + * Medium CVE-2024-2627: Use after free in Canvas + * Medium CVE-2024-2628: Inappropriate implementation in Downloads + * Medium CVE-2024-2629: Incorrect security UI in iOS + * Medium CVE-2024-2630: Inappropriate implementation in iOS + * Low CVE-2024-2631: Inappropriate implementation in iOS + +* Fri Mar 15 2024 Than Ngo - 123.0.6312.46-1 +- update to 123.0.6312.46 + * Wed Mar 13 2024 Than Ngo - 122.0.6261.128-1 - upstream security release 122.0.6261.128 * High CVE-2024-2400: Use after free in Performance Manager