From 46ce50f74294dcbf432283cf4e66a2e7db79a19f Mon Sep 17 00:00:00 2001 From: Olli Pettay Date: Sat, 13 Jun 2015 02:34:52 +0300 Subject: [PATCH] Bug 1173215, don't set mChromeXHRDocURI when dealing with non-XHR documents, r=bz --- dom/base/nsDocument.cpp | 4 ++-- dom/base/test/test_XHRDocURI.html | 8 ++++++++ dom/html/HTMLSharedElement.cpp | 3 +-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index 20b8df1276f3..055af5dcde58 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -2277,7 +2277,7 @@ nsDocument::Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup) NS_GET_IID(nsIURI), getter_AddRefs(baseURI)); if (baseURI) { mDocumentBaseURI = baseURI; - mChromeXHRDocBaseURI = baseURI; + mChromeXHRDocBaseURI = nullptr; } } @@ -2359,7 +2359,7 @@ nsDocument::ResetToURI(nsIURI *aURI, nsILoadGroup *aLoadGroup, mOriginalURI = nullptr; SetDocumentURI(aURI); - mChromeXHRDocURI = aURI; + mChromeXHRDocURI = nullptr; // If mDocumentBaseURI is null, nsIDocument::GetBaseURI() returns // mDocumentURI. mDocumentBaseURI = nullptr; diff --git a/dom/base/test/test_XHRDocURI.html b/dom/base/test/test_XHRDocURI.html index f80e4c907836..f42223b25641 100644 --- a/dom/base/test/test_XHRDocURI.html +++ b/dom/base/test/test_XHRDocURI.html @@ -486,6 +486,14 @@ function runTest() { xhr.send(); yield undefined; + history.pushState({}, "pushStateTest", window.location.href + "/pushStateTest"); + ok(document.documentURI.indexOf("pushStateTest") > -1); + + var chromeDoc = SpecialPowers.wrap(document); + ok(chromeDoc.documentURI.indexOf("pushStateTest") > -1); + + history.back(); + SimpleTest.finish(); SpecialPowers.removePermission("systemXHR", document); yield undefined; diff --git a/dom/html/HTMLSharedElement.cpp b/dom/html/HTMLSharedElement.cpp index f35cc068bcb2..2790398830f8 100644 --- a/dom/html/HTMLSharedElement.cpp +++ b/dom/html/HTMLSharedElement.cpp @@ -175,10 +175,9 @@ SetBaseURIUsingFirstBaseWithHref(nsIDocument* aDocument, nsIContent* aMustMatch) // Try to set our base URI. If that fails, try to set base URI to null nsresult rv = aDocument->SetBaseURI(newBaseURI); - aDocument->SetChromeXHRDocBaseURI(newBaseURI); + aDocument->SetChromeXHRDocBaseURI(nullptr); if (NS_FAILED(rv)) { aDocument->SetBaseURI(nullptr); - aDocument->SetChromeXHRDocBaseURI(nullptr); } return; }