refactor: remove base::AdaptCallbackForRepeating patch (#48774)

refactor: remove base::AdaptCallbackForRepeating patch
This commit is contained in:
Shelley Vohr
2025-11-05 20:00:51 +01:00
committed by GitHub
parent 513a6ee80a
commit 1f78d2258c
7 changed files with 51 additions and 44 deletions

View File

@@ -59,7 +59,6 @@ webview_fullscreen.patch
extend_apply_webpreferences.patch
build_libc_as_static_library.patch
build_do_not_depend_on_packed_resource_integrity.patch
refactor_restore_base_adaptcallbackforrepeating.patch
logging_win32_only_create_a_console_if_logging_to_stderr.patch
fix_media_key_usage_with_globalshortcuts.patch
feat_expose_raw_response_headers_from_urlloader.patch

View File

@@ -1,40 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Charles Kerr <charles@charleskerr.com>
Date: Wed, 9 Jun 2021 14:28:08 -0500
Subject: refactor: restore base::AdaptCallbackForRepeating
Undo https://chromium-review.googlesource.com/c/chromium/src/+/2941842
to reinstate base::AdaptCallbackForRepeating(). It was removed to fix
https://bugs.chromium.org/p/chromium/issues/detail?id=730593 .
We use AdaptCallbackForRepeating() in about a dozen places. This patch
should be removed as soon as those have been updated. Patching because
every instance is a FTBFS that prevents testing any one instance's fix.
diff --git a/base/functional/callback_helpers.h b/base/functional/callback_helpers.h
index f1aa11fec7c0994ac19a26a02800f25de8f2f519..bbfdb3e4839ed96e4c6238235458a421c917411f 100644
--- a/base/functional/callback_helpers.h
+++ b/base/functional/callback_helpers.h
@@ -99,6 +99,22 @@ RepeatingCallback<void(Args...)> ForwardRepeatingCallbacks(
std::move(v));
}
+// Wraps the given OnceCallback into a RepeatingCallback that relays its
+// invocation to the original OnceCallback on the first invocation. The
+// following invocations are just ignored.
+//
+// Note that this deliberately subverts the Once/Repeating paradigm of Callbacks
+// but helps ease the migration from old-style Callbacks. Avoid if possible; use
+// if necessary for migration. TODO(tzik): Remove it. https://crbug.com/730593
+template <typename... Args>
+RepeatingCallback<void(Args...)> AdaptCallbackForRepeating(
+ OnceCallback<void(Args...)> callback) {
+ using Helper = internal::OnceCallbackHolder<Args...>;
+ return base::BindRepeating(
+ &Helper::Run, std::make_unique<Helper>(std::move(callback),
+ /*ignore_extra_runs=*/true));
+}
+
// Wraps the given OnceCallback and returns two OnceCallbacks with an identical
// signature. On first invokation of either returned callbacks, the original
// callback is invoked. Invoking the remaining callback results in a crash.