Fire dynamic overlay load observers in more cases b=419452 r+sr=jst a=beltzner

This commit is contained in:
neil@parkwaycc.co.uk 2008-02-27 01:46:03 -08:00
Родитель f858fa962a
Коммит e8e0a07e9e
1 изменённых файлов: 15 добавлений и 1 удалений

Просмотреть файл

@ -2992,6 +2992,7 @@ nsXULDocument::ResumeWalk()
if (! count)
break;
nsCOMPtr<nsIURI> overlayURI = mCurrentPrototype->GetURI();
nsCOMPtr<nsIURI> uri = mUnloadedOverlays[count-1];
mUnloadedOverlays.RemoveObjectAt(count-1);
@ -3005,8 +3006,21 @@ nsXULDocument::ResumeWalk()
continue;
if (NS_FAILED(rv))
return rv;
if (shouldReturn)
if (shouldReturn) {
if (mOverlayLoadObservers.IsInitialized()) {
nsIObserver *obs = mOverlayLoadObservers.GetWeak(overlayURI);
if (obs) {
// This overlay has an unloaded overlay, so it will never
// notify. The best we can do is to notify for the unloaded
// overlay instead, assuming nobody is already notifiable
// for it. Note that this will confuse the observer.
if (!mOverlayLoadObservers.GetWeak(uri))
mOverlayLoadObservers.Put(uri, obs);
mOverlayLoadObservers.Remove(overlayURI);
}
}
return NS_OK;
}
}
// If we get here, there is nothing left for us to walk. The content