[tbb-commits] [tor-browser/esr24] Bug 982909 - Consistently use inner window when calling OpenJS. r=jst, r=mrbkap, a=lsblakk
mikeperry at torproject.org
mikeperry at torproject.org
Fri Aug 29 05:26:38 UTC 2014
commit cf2d009c8aba6ffd168d87efb99e0f684b71759d
Author: Olli Pettay <Olli.Pettay at helsinki.fi>
Date: Thu Mar 13 15:44:25 2014 -0400
Bug 982909 - Consistently use inner window when calling OpenJS. r=jst, r=mrbkap, a=lsblakk
---
content/html/document/src/nsHTMLDocument.cpp | 2 +-
dom/base/nsGlobalWindow.cpp | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/content/html/document/src/nsHTMLDocument.cpp b/content/html/document/src/nsHTMLDocument.cpp
index 6608154..6e3635f 100644
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -1416,7 +1416,7 @@ nsHTMLDocument::Open(JSContext* /* unused */,
NS_ASSERTION(nsContentUtils::CanCallerAccess(static_cast<nsIDOMHTMLDocument*>(this)),
"XOW should have caught this!");
- nsCOMPtr<nsIDOMWindow> window = GetWindow();
+ nsCOMPtr<nsIDOMWindow> window = GetInnerWindow();
if (!window) {
rv.Throw(NS_ERROR_DOM_INVALID_ACCESS_ERR);
return nullptr;
diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
index bc6ecc4..7b6707a 100644
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -426,6 +426,14 @@ nsGlobalWindow::DOMMinTimeoutValue() const {
} \
PR_END_MACRO
+#define NS_ENSURE_OUTER_WINDOW_OR_ACTIVE_DOCUMENT \
+ NS_ENSURE_TRUE(!IsInnerWindow() || \
+ (mOuterWindow && \
+ ((mOuterWindow->GetCurrentInnerWindow() == this) || \
+ (mOuterWindow->GetCurrentInnerWindow() && \
+ mOuterWindow->GetCurrentInnerWindow()->GetDoc() == mDoc))),\
+ NS_ERROR_NOT_INITIALIZED);
+
// CIDs
static NS_DEFINE_CID(kXULControllersCID, NS_XULCONTROLLERS_CID);
@@ -6425,6 +6433,7 @@ NS_IMETHODIMP
nsGlobalWindow::OpenJS(const nsAString& aUrl, const nsAString& aName,
const nsAString& aOptions, nsIDOMWindow **_retval)
{
+ NS_ENSURE_OUTER_WINDOW_OR_ACTIVE_DOCUMENT
return OpenInternal(aUrl, aName, aOptions,
false, // aDialog
false, // aContentModal
@@ -7742,6 +7751,7 @@ nsGlobalWindow::ShowModalDialog(const nsAString& aURI, nsIVariant *aArgs_,
const nsAString& aOptions, uint8_t aArgc,
nsIVariant **aRetVal)
{
+ NS_ENSURE_OUTER_WINDOW_OR_ACTIVE_DOCUMENT
FORWARD_TO_OUTER(ShowModalDialog, (aURI, aArgs_, aOptions, aArgc, aRetVal),
NS_ERROR_NOT_INITIALIZED);
More information about the tbb-commits
mailing list