Bug 1974407 - nsSyncLoadService::LoadDocument should use loadingDocument. r=smaug a=pascalc
Differential Revision: https://phabricator.services.mozilla.com/D255478
This commit is contained in:
committed by
pchevrel@mozilla.com
parent
8e03515d6c
commit
7611dc2923
@@ -280,16 +280,27 @@ nsSyncLoader::GetInterface(const nsIID& aIID, void** aResult) {
|
|||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
nsresult nsSyncLoadService::LoadDocument(
|
nsresult nsSyncLoadService::LoadDocument(
|
||||||
nsIURI* aURI, nsContentPolicyType aContentPolicyType,
|
nsIURI* aURI, nsContentPolicyType aContentPolicyType, Document* aLoaderDoc,
|
||||||
nsIPrincipal* aLoaderPrincipal, nsSecurityFlags aSecurityFlags,
|
nsIPrincipal* aLoaderPrincipal, nsSecurityFlags aSecurityFlags,
|
||||||
nsILoadGroup* aLoadGroup, nsICookieJarSettings* aCookieJarSettings,
|
nsILoadGroup* aLoadGroup, nsICookieJarSettings* aCookieJarSettings,
|
||||||
bool aForceToXML, ReferrerPolicy aReferrerPolicy, Document** aResult) {
|
bool aForceToXML, ReferrerPolicy aReferrerPolicy, Document** aResult) {
|
||||||
|
MOZ_ASSERT(!!aLoaderPrincipal != !!aLoaderDoc);
|
||||||
|
|
||||||
nsCOMPtr<nsIChannel> channel;
|
nsCOMPtr<nsIChannel> channel;
|
||||||
nsresult rv =
|
nsresult rv;
|
||||||
NS_NewChannel(getter_AddRefs(channel), aURI, aLoaderPrincipal,
|
if (aLoaderDoc) {
|
||||||
aSecurityFlags, aContentPolicyType, aCookieJarSettings,
|
MOZ_ASSERT(!aCookieJarSettings);
|
||||||
nullptr, // PerformanceStorage
|
rv = NS_NewChannel(getter_AddRefs(channel), aURI, aLoaderDoc,
|
||||||
aLoadGroup);
|
aSecurityFlags, aContentPolicyType,
|
||||||
|
nullptr, // PerformanceStorage
|
||||||
|
aLoadGroup);
|
||||||
|
} else {
|
||||||
|
rv = NS_NewChannel(getter_AddRefs(channel), aURI, aLoaderPrincipal,
|
||||||
|
aSecurityFlags, aContentPolicyType, aCookieJarSettings,
|
||||||
|
nullptr, // PerformanceStorage
|
||||||
|
aLoadGroup);
|
||||||
|
}
|
||||||
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (!aForceToXML) {
|
if (!aForceToXML) {
|
||||||
|
|||||||
@@ -48,9 +48,10 @@ class nsSyncLoadService {
|
|||||||
*/
|
*/
|
||||||
static nsresult LoadDocument(
|
static nsresult LoadDocument(
|
||||||
nsIURI* aURI, nsContentPolicyType aContentPolicyType,
|
nsIURI* aURI, nsContentPolicyType aContentPolicyType,
|
||||||
nsIPrincipal* aLoaderPrincipal, nsSecurityFlags aSecurityFlags,
|
mozilla::dom::Document* aLoaderDoc, nsIPrincipal* aLoaderPrincipal,
|
||||||
nsILoadGroup* aLoadGroup, nsICookieJarSettings* aCookieJarSettings,
|
nsSecurityFlags aSecurityFlags, nsILoadGroup* aLoadGroup,
|
||||||
bool aForceToXML, mozilla::dom::ReferrerPolicy aReferrerPolicy,
|
nsICookieJarSettings* aCookieJarSettings, bool aForceToXML,
|
||||||
|
mozilla::dom::ReferrerPolicy aReferrerPolicy,
|
||||||
mozilla::dom::Document** aResult);
|
mozilla::dom::Document** aResult);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -65,7 +65,8 @@ nsresult nsXMLPrettyPrinter::PrettyPrint(Document* aDocument,
|
|||||||
|
|
||||||
nsCOMPtr<Document> xslDocument;
|
nsCOMPtr<Document> xslDocument;
|
||||||
rv = nsSyncLoadService::LoadDocument(
|
rv = nsSyncLoadService::LoadDocument(
|
||||||
xslUri, nsIContentPolicy::TYPE_XSLT, nsContentUtils::GetSystemPrincipal(),
|
xslUri, nsIContentPolicy::TYPE_XSLT, nullptr,
|
||||||
|
nsContentUtils::GetSystemPrincipal(),
|
||||||
nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL, nullptr,
|
nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL, nullptr,
|
||||||
aDocument->CookieJarSettings(), true, ReferrerPolicy::_empty,
|
aDocument->CookieJarSettings(), true, ReferrerPolicy::_empty,
|
||||||
getter_AddRefs(xslDocument));
|
getter_AddRefs(xslDocument));
|
||||||
|
|||||||
@@ -36,10 +36,9 @@ Result<txXPathNode, nsresult> txParseDocumentFromURI(const nsAString& aHref,
|
|||||||
SyncOperationBehavior::eSuspendInput);
|
SyncOperationBehavior::eSuspendInput);
|
||||||
rv = nsSyncLoadService::LoadDocument(
|
rv = nsSyncLoadService::LoadDocument(
|
||||||
documentURI, nsIContentPolicy::TYPE_INTERNAL_XMLHTTPREQUEST_SYNC,
|
documentURI, nsIContentPolicy::TYPE_INTERNAL_XMLHTTPREQUEST_SYNC,
|
||||||
loaderDocument->NodePrincipal(),
|
loaderDocument, nullptr,
|
||||||
nsILoadInfo::SEC_REQUIRE_CORS_INHERITS_SEC_CONTEXT, loadGroup,
|
nsILoadInfo::SEC_REQUIRE_CORS_INHERITS_SEC_CONTEXT, loadGroup, nullptr,
|
||||||
loaderDocument->CookieJarSettings(), true,
|
true, loaderDocument->GetReferrerPolicy(), getter_AddRefs(theDocument));
|
||||||
loaderDocument->GetReferrerPolicy(), getter_AddRefs(theDocument));
|
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
aErrMsg.AppendLiteral("Document load of ");
|
aErrMsg.AppendLiteral("Document load of ");
|
||||||
|
|||||||
@@ -539,29 +539,24 @@ nsresult txSyncCompileObserver::loadURI(const nsAString& aUri,
|
|||||||
nsresult rv = NS_NewURI(getter_AddRefs(uri), aUri);
|
nsresult rv = NS_NewURI(getter_AddRefs(uri), aUri);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsIURI> referrerUri;
|
nsCOMPtr<nsPIDOMWindowInner> window =
|
||||||
rv = NS_NewURI(getter_AddRefs(referrerUri), aReferrerUri);
|
do_QueryInterface(mProcessor->GetParentObject());
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_TRUE(window, NS_ERROR_FAILURE);
|
||||||
|
nsCOMPtr<Document> loaderDoc = window->GetExtantDoc();
|
||||||
nsCOMPtr<nsIPrincipal> referrerPrincipal =
|
NS_ENSURE_TRUE(loaderDoc, NS_ERROR_FAILURE);
|
||||||
BasePrincipal::CreateContentPrincipal(referrerUri, OriginAttributes());
|
|
||||||
NS_ENSURE_TRUE(referrerPrincipal, NS_ERROR_FAILURE);
|
|
||||||
|
|
||||||
// This is probably called by js, a loadGroup for the channel doesn't
|
// This is probably called by js, a loadGroup for the channel doesn't
|
||||||
// make sense.
|
// make sense.
|
||||||
nsCOMPtr<nsINode> source;
|
nsCOMPtr<nsINode> source = mProcessor->GetSourceContentModel();
|
||||||
if (mProcessor) {
|
|
||||||
source = mProcessor->GetSourceContentModel();
|
|
||||||
}
|
|
||||||
dom::nsAutoSyncOperation sync(source ? source->OwnerDoc() : nullptr,
|
dom::nsAutoSyncOperation sync(source ? source->OwnerDoc() : nullptr,
|
||||||
dom::SyncOperationBehavior::eSuspendInput);
|
dom::SyncOperationBehavior::eSuspendInput);
|
||||||
nsCOMPtr<Document> document;
|
nsCOMPtr<Document> document;
|
||||||
|
|
||||||
rv = nsSyncLoadService::LoadDocument(
|
rv = nsSyncLoadService::LoadDocument(
|
||||||
uri, nsIContentPolicy::TYPE_XSLT, referrerPrincipal,
|
uri, nsIContentPolicy::TYPE_XSLT, loaderDoc,
|
||||||
nsILoadInfo::SEC_REQUIRE_CORS_INHERITS_SEC_CONTEXT, nullptr,
|
/* aLoaderPrincipal */ nullptr,
|
||||||
source ? source->OwnerDoc()->CookieJarSettings() : nullptr, false,
|
nsILoadInfo::SEC_REQUIRE_CORS_INHERITS_SEC_CONTEXT, nullptr, nullptr,
|
||||||
aReferrerPolicy, getter_AddRefs(document));
|
false, aReferrerPolicy, getter_AddRefs(document));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
rv = handleNode(document, aCompiler);
|
rv = handleNode(document, aCompiler);
|
||||||
|
|||||||
Reference in New Issue
Block a user