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-26 23:47:49 +00:00
Родитель 587498a020
Коммит 26bd04c613
1 изменённых файлов: 15 добавлений и 1 удалений

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

@ -2995,6 +2995,7 @@ nsXULDocument::ResumeWalk()
if (! count) if (! count)
break; break;
nsCOMPtr<nsIURI> overlayURI = mCurrentPrototype->GetURI();
nsCOMPtr<nsIURI> uri = mUnloadedOverlays[count-1]; nsCOMPtr<nsIURI> uri = mUnloadedOverlays[count-1];
mUnloadedOverlays.RemoveObjectAt(count-1); mUnloadedOverlays.RemoveObjectAt(count-1);
@ -3008,9 +3009,22 @@ nsXULDocument::ResumeWalk()
continue; continue;
if (NS_FAILED(rv)) if (NS_FAILED(rv))
return 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; return NS_OK;
} }
}
// If we get here, there is nothing left for us to walk. The content // If we get here, there is nothing left for us to walk. The content
// model is built and ready for layout. // model is built and ready for layout.