diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 104852064ae..e6a93cdf94a 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -8134,6 +8134,15 @@ nsDocShell::EnsureScriptEnvironment() // Note that mScriptGlobal has taken a reference to the script // context, so we don't have to. + // Notify observers that we've created a new outer window. + // The matching notification for domwindowdestroyed is in + // nsGlobalWindow::~nsGlobalWindow(). + nsCOMPtr obsSvc = + do_GetService("@mozilla.org/observer-service;1"); + if (obsSvc) { + obsSvc->NotifyObservers(win, "domwindowcreated", nsnull); + } + return NS_OK; } diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index 11fc42adb27..0c41e69b91b 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -140,6 +140,7 @@ #include "nsCSSProps.h" #include "nsIURIFixup.h" #include "nsCDefaultURIFixup.h" +#include "nsIObserverService.h" #include "plbase64.h" @@ -349,6 +350,16 @@ nsGlobalWindow::nsGlobalWindow(nsGlobalWindow *aOuterWindow) nsGlobalWindow::~nsGlobalWindow() { + if (IsOuterWindow()) { + // Only notify about outer window destruction + nsCOMPtr obsSvc = + do_GetService("@mozilla.org/observer-service;1"); + if (obsSvc) { + obsSvc->NotifyObservers(NS_STATIC_CAST(nsPIDOMWindow*, this), + "domwindowdestroyed", nsnull); + } + } + if (!--gRefCnt) { NS_IF_RELEASE(gEntropyCollector); }