tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 244863e8ab21f9386112a2de0ef8558b7950040e
parent cb1eed4cb56955ed6bfa2faf710c97955ee29220
Author: Andreas Pehrson <apehrson@mozilla.com>
Date:   Tue, 11 Nov 2025 08:21:03 +0000

Bug 1931328 - Add a WaitFor specialization for MediaEventSource<void>. r=padenot

Differential Revision: https://phabricator.services.mozilla.com/D238748

Diffstat:
Mtesting/gtest/mozilla/WaitFor.h | 24++++++++++++++++++++++++
1 file changed, 24 insertions(+), 0 deletions(-)

diff --git a/testing/gtest/mozilla/WaitFor.h b/testing/gtest/mozilla/WaitFor.h @@ -192,6 +192,30 @@ inline auto TakeN(MediaEventSourceImpl<Lp, Args...>& aEvent, size_t aN) return holder->Ensure(__func__); } +using TakeNVoidPromise = MozPromise<size_t, bool, true>; + +template <ListenerPolicy Lp> +inline auto TakeN(MediaEventSourceImpl<Lp, void>& aEvent, size_t aN) + -> RefPtr<TakeNVoidPromise> { + using Storage = Maybe<size_t>; + using Promise = TakeNVoidPromise; + using Holder = media::Refcountable<MozPromiseHolder<Promise>>; + using Values = media::Refcountable<Storage>; + using Listener = media::Refcountable<MediaEventListener>; + auto values = MakeRefPtr<Values>(); + *values = Some(0); + auto listener = MakeRefPtr<Listener>(); + auto holder = MakeRefPtr<Holder>(); + *listener = aEvent.Connect( + AbstractThread::GetCurrent(), [values, listener, aN, holder]() { + if (++(values->ref()) == aN) { + listener->Disconnect(); + holder->Resolve(**values, "TakeN (void) listener callback"); + } + }); + return holder->Ensure(__func__); +} + /** * Helper that, given that canonicals have just been updated on the current * thread, will block its execution until mirrors and their watchers have