зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1300851 - Don't use expanded principals when creating the about:blank content viewer eagerly; r=bzbarsky
This commit is contained in:
Родитель
ed81ee1595
Коммит
67f68a06ad
|
@ -2162,6 +2162,7 @@ nsGlobalWindow::SetInitialPrincipalToSubject()
|
||||||
// We should never create windows with an expanded principal.
|
// We should never create windows with an expanded principal.
|
||||||
// If we have a system principal, make sure we're not using it for a content
|
// If we have a system principal, make sure we're not using it for a content
|
||||||
// docshell.
|
// docshell.
|
||||||
|
// NOTE: Please keep this logic in sync with nsWebShellWindow::Initialize().
|
||||||
if (nsContentUtils::IsExpandedPrincipal(newWindowPrincipal) ||
|
if (nsContentUtils::IsExpandedPrincipal(newWindowPrincipal) ||
|
||||||
(nsContentUtils::IsSystemPrincipal(newWindowPrincipal) &&
|
(nsContentUtils::IsSystemPrincipal(newWindowPrincipal) &&
|
||||||
GetDocShell()->ItemType() != nsIDocShellTreeItem::typeChrome)) {
|
GetDocShell()->ItemType() != nsIDocShellTreeItem::typeChrome)) {
|
||||||
|
|
|
@ -214,8 +214,15 @@ nsresult nsWebShellWindow::Initialize(nsIXULWindow* aParent,
|
||||||
// SetInitialPrincipalToSubject. This avoids creating the about:blank document
|
// SetInitialPrincipalToSubject. This avoids creating the about:blank document
|
||||||
// and then blowing it away with a second one, which can cause problems for the
|
// and then blowing it away with a second one, which can cause problems for the
|
||||||
// top-level chrome window case. See bug 789773.
|
// top-level chrome window case. See bug 789773.
|
||||||
|
// Note that we don't accept expanded principals here, similar to
|
||||||
|
// SetInitialPrincipalToSubject.
|
||||||
if (nsContentUtils::IsInitialized()) { // Sometimes this happens really early See bug 793370.
|
if (nsContentUtils::IsInitialized()) { // Sometimes this happens really early See bug 793370.
|
||||||
rv = mDocShell->CreateAboutBlankContentViewer(nsContentUtils::SubjectPrincipalOrSystemIfNativeCaller());
|
MOZ_ASSERT(mDocShell->ItemType() == nsIDocShellTreeItem::typeChrome);
|
||||||
|
nsCOMPtr<nsIPrincipal> principal = nsContentUtils::SubjectPrincipalOrSystemIfNativeCaller();
|
||||||
|
if (nsContentUtils::IsExpandedPrincipal(principal)) {
|
||||||
|
principal = nullptr;
|
||||||
|
}
|
||||||
|
rv = mDocShell->CreateAboutBlankContentViewer(principal);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
nsCOMPtr<nsIDocument> doc = mDocShell ? mDocShell->GetDocument() : nullptr;
|
nsCOMPtr<nsIDocument> doc = mDocShell ? mDocShell->GetDocument() : nullptr;
|
||||||
NS_ENSURE_TRUE(!!doc, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(!!doc, NS_ERROR_FAILURE);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче