void TabParent::Destroy() { if (mIsDestroyed) { return; } // If this fails, it's most likely due to a content-process crash, // and auto-cleanup will kick in. Otherwise, the child side will // destroy itself and send back __delete__(). unused << SendDestroy(); const InfallibleTArray<PIndexedDBParent*>& idbParents = ManagedPIndexedDBParent(); for (uint32_t i = 0; i < idbParents.Length(); ++i) { static_cast<IndexedDBParent*>(idbParents[i])->Disconnect(); } if (RenderFrameParent* frame = GetRenderFrame()) { frame->Destroy(); } mIsDestroyed = true; ContentParent* cp = static_cast<ContentParent*>(Manager()); cp->NotifyTabDestroying(this); mMarkedDestroying = true; }