PLDHashOperator AudioChannelService::WindowDestroyedEnumerator(AudioChannelAgent* aAgent, nsAutoPtr<AudioChannelAgentData>& aData, void* aPtr) { auto* data = static_cast<WindowDestroyedEnumeratorData*>(aPtr); MOZ_ASSERT(data); nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aAgent->Window()); if (window && !window->IsInnerWindow()) { window = window->GetCurrentInnerWindow(); } if (!window || window->WindowID() != data->mInnerID) { return PL_DHASH_NEXT; } AudioChannelService* service = AudioChannelService::GetAudioChannelService(); MOZ_ASSERT(service); service->UnregisterType(aData->mChannel, aData->mElementHidden, CONTENT_PROCESS_ID_MAIN, aData->mWithVideo); data->mAgents.AppendElement(aAgent); return PL_DHASH_REMOVE; }
PLDHashOperator AudioChannelService::WindowDestroyedEnumerator(AudioChannelAgent* aAgent, nsAutoPtr<AudioChannelAgentData>& aData, void* aPtr) { uint64_t* innerID = static_cast<uint64_t*>(aPtr); MOZ_ASSERT(innerID); nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aAgent->Window()); if (!window || window->WindowID() != *innerID) { return PL_DHASH_NEXT; } AudioChannelService* service = AudioChannelService::GetAudioChannelService(); MOZ_ASSERT(service); service->UnregisterType(aData->mChannel, aData->mElementHidden, CONTENT_PROCESS_ID_MAIN, aData->mWithVideo); return PL_DHASH_REMOVE; }