mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 21:00:50 +00:00
Bug 1186810 (part 8) - Replace nsBaseHashtable::Enumerate() calls in dom/workers/ with iterators. r=khuey.
--HG-- extra : rebase_source : 622ce00f8ecfca3c1b6710bf77a0639a47c7bb3a
This commit is contained in:
parent
ce3c57710f
commit
e847fcd5ec
@ -1687,7 +1687,21 @@ RuntimeService::UnregisterWorker(JSContext* aCx, WorkerPrivate* aWorkerPrivate)
|
||||
parent->RemoveChildWorker(aCx, aWorkerPrivate);
|
||||
}
|
||||
else if (aWorkerPrivate->IsSharedWorker()) {
|
||||
mWindowMap.Enumerate(RemoveSharedWorkerFromWindowMap, aWorkerPrivate);
|
||||
AssertIsOnMainThread();
|
||||
|
||||
for (auto iter = mWindowMap.Iter(); !iter.Done(); iter.Next()) {
|
||||
nsAutoPtr<nsTArray<WorkerPrivate*>>& workers = iter.Data();
|
||||
MOZ_ASSERT(workers.get());
|
||||
|
||||
if (workers->RemoveElement(aWorkerPrivate)) {
|
||||
MOZ_ASSERT(!workers->Contains(aWorkerPrivate),
|
||||
"Added worker more than once!");
|
||||
|
||||
if (workers->IsEmpty()) {
|
||||
iter.Remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (aWorkerPrivate->IsDedicatedWorker()) {
|
||||
// May be null.
|
||||
@ -2160,32 +2174,6 @@ RuntimeService::AddAllTopLevelWorkersToArray(nsTArray<WorkerPrivate*>& aWorkers)
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
PLDHashOperator
|
||||
RuntimeService::RemoveSharedWorkerFromWindowMap(
|
||||
nsPIDOMWindow* aKey,
|
||||
nsAutoPtr<nsTArray<WorkerPrivate*> >& aData,
|
||||
void* aUserArg)
|
||||
{
|
||||
AssertIsOnMainThread();
|
||||
MOZ_ASSERT(aData.get());
|
||||
MOZ_ASSERT(aUserArg);
|
||||
|
||||
auto workerPrivate = static_cast<WorkerPrivate*>(aUserArg);
|
||||
|
||||
MOZ_ASSERT(workerPrivate->IsSharedWorker());
|
||||
|
||||
if (aData->RemoveElement(workerPrivate)) {
|
||||
MOZ_ASSERT(!aData->Contains(workerPrivate), "Added worker more than once!");
|
||||
|
||||
if (aData->IsEmpty()) {
|
||||
return PL_DHASH_REMOVE;
|
||||
}
|
||||
}
|
||||
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
void
|
||||
RuntimeService::GetWorkersForWindow(nsPIDOMWindow* aWindow,
|
||||
nsTArray<WorkerPrivate*>& aWorkers)
|
||||
|
@ -265,11 +265,6 @@ private:
|
||||
void
|
||||
AddAllTopLevelWorkersToArray(nsTArray<WorkerPrivate*>& aWorkers);
|
||||
|
||||
static PLDHashOperator
|
||||
RemoveSharedWorkerFromWindowMap(nsPIDOMWindow* aKey,
|
||||
nsAutoPtr<nsTArray<WorkerPrivate*> >& aData,
|
||||
void* aUserArg);
|
||||
|
||||
void
|
||||
GetWorkersForWindow(nsPIDOMWindow* aWindow,
|
||||
nsTArray<WorkerPrivate*>& aWorkers);
|
||||
|
Loading…
x
Reference in New Issue
Block a user