1616#include " nsITransport.h"
1717#include " nsIObserverService.h"
1818#include " nsThreadPool.h"
19- #include " mozilla/DelayedRunnable.h"
2019#include " mozilla/Services.h"
2120
2221namespace mozilla {
@@ -244,12 +243,6 @@ nsInputStreamTransport::OnInputStreamReady(nsIAsyncInputStream* aStream) {
244243// nsStreamTransportService
245244// -----------------------------------------------------------------------------
246245
247- nsStreamTransportService::nsStreamTransportService ()
248- : mScheduledDelayedRunnables(
249- " nsStreamTransportService.mScheduledDelayedRunnables" ),
250- mShutdownLock(" nsStreamTransportService.mShutdownLock" ),
251- mIsShutdown(false ) {}
252-
253246nsStreamTransportService::~nsStreamTransportService () {
254247 NS_ASSERTION (!mPool , " thread pool wasn't shutdown" );
255248}
@@ -269,25 +262,8 @@ nsresult nsStreamTransportService::Init() {
269262 return NS_OK;
270263}
271264
272- void nsStreamTransportService::OnDelayedRunnableCreated (
273- DelayedRunnable* aRunnable) {}
274-
275- void nsStreamTransportService::OnDelayedRunnableScheduled (
276- DelayedRunnable* aRunnable) {
277- MOZ_ASSERT (IsOnCurrentThread ());
278- auto delayedRunnables = mScheduledDelayedRunnables .Lock ();
279- delayedRunnables->AppendElement (aRunnable);
280- }
281-
282- void nsStreamTransportService::OnDelayedRunnableRan (
283- DelayedRunnable* aRunnable) {
284- MOZ_ASSERT (IsOnCurrentThread ());
285- auto delayedRunnables = mScheduledDelayedRunnables .Lock ();
286- MOZ_ALWAYS_TRUE (delayedRunnables->RemoveElement (aRunnable));
287- }
288-
289265NS_IMPL_ISUPPORTS (nsStreamTransportService, nsIStreamTransportService,
290- nsIEventTarget, nsIDelayedRunnableObserver, nsIObserver)
266+ nsIEventTarget, nsIObserver)
291267
292268NS_IMETHODIMP
293269nsStreamTransportService::DispatchFromScript (nsIRunnable* task,
@@ -377,31 +353,6 @@ nsStreamTransportService::Observe(nsISupports* subject, const char* topic,
377353 mPool ->Shutdown ();
378354 mPool = nullptr ;
379355 }
380-
381- // Because the DelayedRunnables are run by a thread pool, no guarantee is
382- // given to which thread they run or get released on. Releasing them on the
383- // thread pool or on the background target thus doesn't really matter. We are
384- // forced to do it on the background target after the thread pool has finished
385- // processing all events, since doing it on the thread pool would allow the
386- // shutdown task to race with scheduling new DelayedRunnables, possibly
387- // missing the cleanup of some of them.
388- nsTArray<RefPtr<DelayedRunnable>> delayedRunnables;
389- {
390- auto sdrs = mScheduledDelayedRunnables .Lock ();
391- std::swap (*sdrs, delayedRunnables);
392- MOZ_ASSERT (sdrs->IsEmpty ());
393- }
394- if (!delayedRunnables.IsEmpty ()) {
395- NS_DispatchBackgroundTask (
396- NS_NewRunnableFunction (
397- " nsStreamTransportService::mScheduledDelayedRunnables Cancel" ,
398- [delayedRunnables = std::move(delayedRunnables)] {
399- for (const auto & r : delayedRunnables) {
400- r->CancelTimer ();
401- }
402- }),
403- NS_DISPATCH_SYNC);
404- }
405356 return NS_OK;
406357}
407358
0 commit comments